# MySQL建表约束 # 主键约束===================================================== # 唯一确定一张表的一条记录,可以使得字段 不重复 且 不为空 create table test_primary( id int(10) primary key ,# 创建主键约束 name varchar(20) ); # 联合主键/复合主键(多个字段作为主键) # 只要主键多个字段加起来不重复即可 create table test_primary_2( id int, name varchar(20), pwd varchar(20), primary key (id, name) ); insert into test_primary_2 (id, name, pwd) values (1,'tom','123'); insert into test_primary_2 (id, name, pwd) values (1,'bob','321'); # 自增约束===================================================== # 自动生成 auto_increment 标记的字段 # 一般用于生成id #建表 create table test3( id int primary key auto_increment,#自增约束 name varchar(20) ); #插入数据 insert into test3 (name) values ('法外狂徒'); insert into test3 (name) values ('张三'); # 外键约束===================================================== # 涉及到两张表 # 例子 #班级表 create table classes( id int primary key auto_increment , name varchar(20) ); # 学生表 create table student( id int , name varchar(20), class_id int, #学生表的外键为class_id,引用自 classes 表的id字段 foreign key (class_id) references classes(id) ); #插入数据 insert into classes (name)values ('一班'); insert into classes (name)values ('二班'); insert into classes (name)values ('三班'); insert into classes (name)values ('四班'); insert into student (id, name, class_id) values (1001,'张三',1); insert into student (id, name, class_id) values (1002,'张三',2); insert into student (id, name, class_id) values (1003,'张三',3); insert into student (id, name, class_id) values (1004,'张三',4); #无法插入,因为有未见约束,classes表中没有 5 这个id insert into student (id, name, class_id) values (1005,'李四',5); #无法删除,因为被引用了 delete from classes where classes.id = 4; desc classes; desc student; # 唯一约束===================================================== # 约束字段的值不能重复 create table user_1( id int, name varchar(20) ); # 约束字段 'name' 必须唯一 alter table user_1 add unique (name); desc user_1; # modify 改变字段属性 alter table user_1 modify name varchar(30) unique ; desc user_1; # 删除唯一约束 alter table user_1 drop index name; desc user_1; # 非空约束===================================================== #修饰的字段不能为空 create table user_2( id int, name varchar(20) not null # 属性不能为空 ); # 改变字段结构属性不为空 # alter table user_2 modify name varchar(20) not null; desc user_2; # 默认约束===================================================== # 插入字段时没有传值绘制用的默认值; create table user_3( id int auto_increment, name varchar(20) , age int default 10, #不传年龄默认使用10 primary key (id) ); insert into user_3 (name) values ('test'); desc user_3;