-- 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);