SQL 约束
- 约束是用来限制表的数据,相当于规则的意思,就比如我违反了规则,他就会阻止我进行操作导致报错.
- 在建表的可以创建约束,在创建表之后也可以
常见的约束有六种:
- not null:指某列的值不能为空
- unique:指表中的某列的值是唯一的
- check:指表中的某一列值要符合指定的条件
- default:指没有在某列插入数据时就填充已设定的指值
- primary key(主键):主键的值不可重复,也不可为空,表示唯一标识,一个表不能有多个主键,但可以创建复合主键
- foreign key(外键):建立不问表之间的关联关系,一个表的外键匹配另一个表的主键的值
实例:
假设有emp表,有a列和b列
NOT NULL:
创建NOT NULL约束
- 在创建表时设置
CREATE TABLE emp(
a int not NULL,
b int not NULL
);
- 创建表之后设置
alter table emp modify a int not null;
删除NOT NULL约束
- 可以通过修改字段的属性
alter table emp modify a int(20);
- 通过把字段属性的非空约束改为null
alter table emp modify a int null;
- 通过查看索引来删除对应的索引
1.(查看索引)show index from emp;
2.(删除对应的索引)alter table emp drop index a;
UNIQUE:
创建UNIQUE约束
- 在创建表时
CREATE TABLE emp (
a int not NULL,
b int not NULL,
unique (a)
);
- 在创建表之后
alter table emp add unique (a,b);
- 多个列unique的定义,命名unique约束名
alter table emp add constraint in_dex UNIQUE (a,b)(删除唯一索引)
删除UNIQUE约束
alter table table_name drop index index_name(删除创建唯一约束)
alter table table_name drop constraint index_neme(删除唯一索引)
CHECK:(CHECK 约束用于限制列中的值的范围)
创建CHECK约束
- 在创建表时
CREATE TABLE emp(
a int NOT NULL,
b varchar(255) NOT NULL,
CHECK (a>0) #——————对应的这个列的值必须大于0
)
- 在创建表之后
alter table emp add check (a>0);
命名 CHECK 约束,并定义多个列的 CHECK 约束
alter table add constraint che_ck CHECK (a>0 AND b>10);
删除CHECK约束
alter table emp drop check a;
alter table emp drop constraint che_ck;(删除创建的约束名)
DEFAULT:
注意:该约束用于向列中插入默认值
如果没有规定其他的值,那么会将默认值添加到所有的新记录
创建DEFAULT约束
- 在创建表时
CREATE TABLE emp(
a int NOT NULL,
b varchar(255) DEFAULT 'Sandnes' #这里的默认值要看该列的类型是什么,我定义的类型是字符串,所以要在默认值后就要加上单引号
)
注:default后面也可以跟一些函数,就比如日期类型的函数
- 在创建表之后
alter table emp alter a set default 'result'
删除CHECK约束
alter table emp alter a drop default
PRIMARY KEY:
主键一个表不能有多个,也不能有包含null的值
创建PRIMARY KEY约束
- 在创建表时
CREATE TABLE emp(
a int NOT NULL,
b varchar(255) NOT NULL,
PRIMARY KEY (a)
)
需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束
CREATE TABLE emp(
a int NOT NULL,
b varchar(255) NOT NULL,
constraint pk_a_b primary key (a,b)
);
- 在创建表之后
alter table emp add primary key (a);
删除PRIMARY KEY约束
alter table emp drop primary key
alter table emp drop constraint pk_a_b;(删除定义的多个主键约束)
FOREIGN KEY:
这里该大家说下抱歉,我是写到最后才发现我有好长时间没写这个外键约束了,有些还记得,我在写这个的时候不知道怎么去给大家表达,非常抱歉哈。
这里我推荐一个讲的好的老师
完结
大家有看我的文章有啥出错或者有问题的欢迎指出 哈哈哈哈