SQL 约束
约束用于规定表中的数据规则。如果存在违反约束的行为,行为将会被终止。
语法
1 2 3 4 5
| CREATE TABLE table_name { column1 data_type(size) constraint_name, column2 data_type(size) constraint_name, ... };
|
约束与含义
| 约束名 |
含义 |
| NOT NULL |
指某列不能存储NULL值 |
| UNIQUE |
指某列的每行必须有唯一值 |
| PRIMARY KEY |
保证某列有唯一标识 |
| FOREIGN KEY |
一个表中数据匹配另一个表中数据的参照完整性 |
| CHECK |
列中的数据符合指定条件 |
| DEFAULT |
没有给列赋值时的默认值 |
| INDEX |
用于快速访问数据库表中的数据 |
NOT NULL
在默认情况下,表的列接收NULL值。NOT NULL强制该列不接受NULL值。
语法
1 2
| ALTER TABLE table_name MODIFY column1 daya_type NOT NULL;
|
1 2
| ALTER TABLE table_name MODIFY column1 daya_type NULL;
|
UNIQUE
UNIQUE用于约束一个或多个列中的值均是唯一的,即不能有重复值存在。
- UNIQUE与PRIMARY KEY的区别在于,UNIQUE允许列中有NULL值,而PRIMARY KEY 不允许 NULL值。
语法
1 2 3 4 5
| CREATE TABLE table_name { column1 data_type(size) constraint_name, column2 data_type(size) constraint_name, UNIQUE(column1) };
|
1 2 3 4 5 6
| CREATE TABLE table_name { column1 data_type(size) constraint_name, column2 data_type(size) constraint_name, column3 data_type(size) constraint_name, CONSTRAINT constraint_name UNIQUE (column1, column2) };
|
1 2
| ALTER TABLE table_name ADD UNIQUE (column1);
|
1 2
| ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column1, column2);
|
1 2
| ALTER TABLE table_name DROP INDEX constraint_name;
|
PRIMARY KEY
PRIMARY KEY 唯一标识数据库表中的每条记录。
语法
1 2 3 4 5 6 7
| CREATE TABLE table_name { column1 data_type(size) constraint_name, column2 data_type(size) constraint_name, column3 data_type(size) constraint_name, PRIMARY KEY(column3) ... };
|
1 2
| ALTER TABLE table_name ADD PRIMARY KEY (column1);
|
1 2
| ALTER TABLE table_name DROP PRIMARY KEY;
|
FOREIGN KEY
FOREIGN KEY 指外键。一个表中的FOREIGN KEY指向另一个表中的UNIQUE KEY。
语法
1 2 3 4 5 6 7 8
| CREATE TABLE table_name2 { column1 data_type(size) constraint_name, column2 data_type(size) constraint_name, column3 data_type(size) constraint_name, column4 data_type(size) constraint_name, PRIMARY KEY(cloumn1), FOREIGN KEY(column2) REFERENCES table_name1(column2) };
|
1 2 3
| ALTER TABLE table_name2 ADD FOREIGN KEY (column1) REFERENCES table_name1(column1);
|
1 2
| ALTER TABLE table_name2 DROP FOREIGN KEY foreign_key_name;
|
CHECK
CHECK用于限制列中值的范围。
语法
1 2 3 4 5 6
| CREATE TABLE table_name { column1 data_type(size) constraint_name, column2 data_type(size) constraint_name, column3 data_type(size) constraint_name, CHECK (column1>0) };
|
1 2
| ALTER TABLE table_name ADD CHECK (column1>0);
|
1 2
| ALTER TABLE table_name DROP CHECK constraint_name;
|
DEFAULT
DEFAULT约束用于向列中插入默认值。
语法
1 2 3
| CREATE TABLE table_name{ column1 data_type(size) DEFAULT default_value };
|
1 2
| ALTER TABLE table_name ALTER COLUMN column1 SET DEFAULT default_value;
|
1 2
| ALTER TABLE table_name ALTER COLUMN column1 DROP DEFAULT;
|
适用场景
设置当前日期为默认日期
设置0为默认值
设置“开启”为默认状态
CREATE INDEX
CREATE INDEX 用于在表中创建索引,在不访问整个表的情况下,索引可以帮助数据库应用程序更快地检索数据。
语法
1 2
| CREATE INDEX index_name ON table_name(column_name);
|
1 2
| CREATE INDEX index_name ON table_name(column_name1, column_name2);
|