sql约束

2021-06-28 22:41发布

-- sql约束

/*

添加数据的时候给上限制条件

主键约束 primary key auto_increment

非空约束 not null

唯一约束 unique

默认值约束 default

*/

/*


主键约束。理论上每一张表都应该有一个主键,将一个字段设置为主键之后,该字段不能为空并且不能重复

主键一般都是附加项,以*id命令  user_id  uid,主键的作用就是确定每一条数据的唯一性

设置主键之后,维护起来比较麻烦,可以将主键交给mysql进行维护,设置主键自增auto_increment


自增的特点

1、只有int类型才能设置主键自增

2、初始值是1

3、每次在最大值自增1

4、已经出现过的主键不会再出现

*/

CREATE TABLE t2(

tid INT PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20)

);

-- 添加一条数据

INSERT INTO t2 VALUES (1,'赵云');

INSERT INTO t2 VALUES (1,'刘备'); -- 报错  主键是唯一的

INSERT INTO t2 VALUES (NULL,'关羽');

INSERT INTO t2(tname) VALUES ('武曌');

INSERT INTO t2 VALUES(7,'嬴政');

INSERT INTO t2 VALUES(NULL,'娜可露露');


DELETE FROM t2 WHERE tid = 8;-- 删除主键8

INSERT INTO t2 VALUES(NULL,'狄仁杰');


-- 测试其他约束

/*

UNIQUE 唯一约束 约束能力没有主键那么强 还是可以为空的,一般用来约束用户名、手机号、邮箱

not null 非空约束   

default 默认值约束   如果该字段没有添加值,使用默认值进行填充,如果添加了值,添加的值会覆盖默认值

*/

CREATE TABLE `user`(

uid INT PRIMARY KEY AUTO_INCREMENT,

uname VARCHAR(20) UNIQUE,

sex VARCHAR(20) NOT NULL,

hobby VARCHAR(20) DEFAULT '健身'

);

INSERT INTO `user`VALUES(NULL,'娜可露露','女','偷??');

INSERT INTO `user`VALUES(NULL,'娜可露露','女','偷龙')-- 错误  张三已存在

INSERT INTO `user`VALUES(NULL,'公孙离','女','唱歌');

INSERT INTO `user`VALUES(NULL,'马可波罗',NULL,'真伤');-- 错误  sex 不能为null

INSERT INTO `user`VALUES(NULL,'亚瑟','男',NULL);

INSERT INTO `user`VALUES(NULL,'张飞','男',DEFAULT);