约束
对表中的数据进行限定
1.非空约束(not null)
??在创建表的时候,进行约束
???CREATE TABLE stud( ??NAME VARCHAR(12) NOT NULL, ??id INT ????);
删除非空约束:
???ALTER TABLE stud MODIFY NAME VARCHAR(20);#消除约束??ALTER TABLE stud MODIFY NAME VARCHAR(20) NOT NULL;#添加约束
2.唯一约束(UNIQUE)
CREATE TABLE stude( id INT, tel VARCHAR(11) UNIQUE );
ALTER TABLE stude MODIFY tel VARCHAR(11) UNIQUE;#添加唯一约束ALTER TABLE stude DROP INDEX tel;#去除唯一约束
3.主键约束(primary key)
??主键:非空,唯一。用于多表联立。
??在建表时添加主键(非空,唯一)
??CREATE TABLE stude( id INT primary key , tel VARCHAR(11) UNIQUE );
??删除主键:
??? ??alter table stude drop primary key;?
??添加主键:
????alter table stude modify id int primary key;
??自动增长id,配合int类型的主键使用
??????CREATE TABLE stude( ??????id INT primary key auto_increment, ??????tel VARCHAR(11) UNIQUE ??????);
??设置完第一个数据后,insert into中的主键就可以为NULL了
??删除自动增长
????alter table stu modify id int;
??添加自动增长
????alter table stude modify id int auto_increment;
4.外键约束(CONSTRAINT)
??从表内容不能直接删除,也不能修改。
??修改可用 update department set id=10 where id=1;
??解决两列数据重复冗余(如男性 全是 18岁 )
??新建表时增加外键:
????[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
??create table employee(
??id int primary key auto_increment,
??name varchar(20),
??age int,
??dep_id int, -- 外键对应主表的主键
??-- 创建外键约束
??constraint emp_depid_fk foreign key (dep_id) references department(id)
??)
??已有表增加外键:
????ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);
??外键约束-级联??ON update CASCADE
????修改从表,使得主表的数据直接更新
????添加外键时,设置级联
??????constraint emp_depid_fk foreign key (dep_id) references
??????department(id) on update cascade on update cascade
??????)
????删除级联
????constraint emp_depid_fk foreign key (dep_id) references
??????department(id) on update cascade on delete cascade
??????)