一起来学SQL(三)

xiaoxiao2021-02-28  24

SQL高级特性(续)

创建

CREATE DATABASE

CREATE DATABASE 用于创建数据库。

SQL CREATE DATABASE 语法 CREATE DATABASE database_name

CREATE TABLE

CREATE TABLE 语句用于创建数据库中的表。

SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, …. )

SQL 约束

约束用于限制加入表的数据的类型。

NOT NULL

NOT NULL 约束强制列不接受 NULL 值。 NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

下面的 SQL 语句强制 “Id_P” 列和 “LastName” 列不接受 NULL 值: CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

SQL Unique

UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

在MySQL CREATE TABLE Persons( Id_P int NOT NULL, UNIQUE (Id_P)

p.s. 当表已被创建时,如需在 “Id_P” 列创建 UNIQUE 约束(MySQL / SQL Server / Oracle / MS Access): ALTER TABLE Persons ADD UNIQUE (Id_P)

如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束: MySQL / SQL Server / Oracle / MS Access: ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

撤销 UNIQUE 约束 MySQL: ALTER TABLE Persons DROP INDEX uc_PersonID

PRIMARY KEY & FOREIGN KEY

PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。

FOREIGN KEY 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。 上一篇给出的例子 “Persons” 表中的 “Id_P” 列是 “Persons” 表中的 PRIMARY KEY。 “Orders” 表中的 “Id_P” 列是 “Orders” 表中的 FOREIGN KEY。

MySQL: CREATE TABLE Orders ( Id_O int NOT NULL, PRIMARY KEY (Id_O), FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) ) 需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束 CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

CHECK

CHECK 约束用于限制列中的值的范围。 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

CREATE TABLE Orders ( CHECK (Id_P>0) )

DEFAULT

DEFAULT 约束用于向列中插入默认值。 如果没有规定其他的值,那么会将默认值添加到所有的新记录。

CREATE TABLE Orders ( City varchar(255) DEFAULT ‘Sandnes’ )

修改表

CREATE INDEX

CREATE INDEX 语句用于在表中创建索引。 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

索引 用户无法看到索引,它们只能被用来加速搜索/查询。 注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

SQL CREATE INDEX 语法 在表上创建一个简单的索引,允许使用重复的值: CREATE INDEX index_name ON table_name (column_name) p.s. “column_name” 规定需要索引的列。 SQL CREATE UNIQUE INDEX 语法 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。 CREATE UNIQUE INDEX index_name ON table_name (column_name)

e.g.1、以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC: CREATE INDEX PersonIndex ON Person (LastName DESC) 2、希望索引不止一个列,在括号中列出这些列的名称,用逗号隔开: CREATE INDEX PersonIndex ON Person (LastName, FirstName)

DROP

DROP INDEX DROP INDEX 命令删除表格中的索引

ALTER TABLE table_name DROP INDEX index_name 不同的数据库会有所不同

DROP TABLE DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):

DROP TABLE 表名称

DROP DATABASE DROP DATABASE 语句用于删除数据库:

DROP DATABASE 数据库名称

TRUNCATE TABLE 仅仅除去表内的数据,但并不删除表本身(仅仅删除表格中的数据):

TRUNCATE TABLE 表名称

ALTER TABLE

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

SQL ALTER TABLE 语法 表中添加列: ALTER TABLE table_name ADD column_name datatype 删除表中的列: ALTER TABLE table_name DROP COLUMN column_name

p.s.某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。

改变数据类型 ALTER TABLE table_name ALTER COLUMN column_name datatype

AUTO INCREMENT

我们通常希望在每次插入新记录时,自动地创建主键字段的值。 我们可以在表中创建一个 auto-increment 字段。

用于 MySQL 的语法 下列 SQL 语句把 “Persons” 表中的 “P_Id” 列定义为 auto-increment 主键: CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, )

转载请注明原文地址: https://www.6miu.com/read-1000292.html

最新回复(0)