文章目录
- 1.主键约束:primary key 自增:auto_increment
- 2.唯一约束:unique
- 3.非空约束:not null
- 4.默认约束:default _______
- 5.外键约束:foreign key
- 6.检查约束:check
1.主键约束:primary key 自增:auto_increment
代码示例:
create table abc(
id int primary key auto_increment
);
测试:
insert into abc values(null);
insert into abc values(null);
insert into abc values(null);
select * from abc;
主键特点:唯一且不能为空,通常情况下,每张表都会有它的主键。
自增特点:设置主键自增策略后,数据库会在表中保存一个自增的变量值,初始值为1,当需要id值的时候,不需要我们指定值,数据库会从自增自动获取一个id值,作为主键插入到表中,每次用完后都会自增1。
2.唯一约束:unique
代码示例:
create table test(
id int primary key auto_increment,
username varchar(50) unique
);
测试:
insert into test values(null,'lisi');
insert into test values(null,'lisi');
select * from test;
唯一约束特点:
如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。
3.非空约束:not null
代码示例:
代码示例:
create table user(
id int primary key auto_increment,
password varchar(50) not null
);
测试:
insert into user values(null,null);
insert into user values(null,123);
非空约束特点:
如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。
4.默认约束:default _______(下划线为设置的默认值)
代码示例:
CREATE TABLE h(
id INT PRIMARY KEY AUTO_INCREMENT,#主键自增
sex VARCHAR(10) DEFAULT '男' #默认约束
)
默认约束特点:
默认约束的字段值默认为默认约束的设置值。
5.外键约束:foreign key
代码示例:
案例(用主键连接两个表,使两个表产生关系):
(主表)
CREATE TABLE tb_user(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
)
(子表)
CREATE TABLE tb_user_addr(
user_id INT PRIMARY KEY,
addr VARCHAR(20),
#当前子表的主键为主表的主键
FOREIGN KEY(user_id) REFERENCES tb_user(id)
)
注释:1、两表id值必须保持一致(tb_user为主表:子表id必须取自主表id),否则报错。
2、想删除主表里的信息,必须先删除子表里的数据。
作用:避免存储重复的数据。
:设置id为外键后,主表中存在的id,子表中不能重复出现。
(即:增加外键后,子表中出现的id的值必须是取自主表中已经存在的id值)
6.检查约束:check(几乎不用)
代码示例:
例:CREATE TABLE i(
id INT(12),
age INT,
CHECK(age>18 AND age<200)
)
检查约束作用:
设置检查约束的字段值,如左侧示例代码:age的值必须大于18,小于200,否则报错。
(提示:现在检查约束已经用的很少了,我在发布之前在SQLyog上特意测试过代码,发现检查约束几乎可以说是毫无约束效果可言,大概是我现在用的版本高了一点的原因,换个低版本说不定可以测试出来效果,可惜我没有这个耐心,大概这也是。。嗯,和大佬的区别这就体现出来了吗?!
不过有兴趣的朋友可以测试一下。
且以上内容仅供参考。
完。)