一:约束
1:约束是什么:指的是除了数据类型以外额外添加的约束。
2:为什么要使用约束:为了保证数据的合法性,完整性。
3:分类:
①:not null 非空约束:数据不能为空
例:create table t1(id int,name char(10) not null);
insert into t1 values(1,null);
②:default 默认值约束:可以指定字段的默认值
例:create table t1(id int,name char(10) default ''xxx'');
insert into t1(id) values(1);
③:unique 唯一性约束:该字段的值不能重复,如:手机号码,身份证
例:create table t1(idcard char(18) unique,name char(10));
insert into t1 value(''111'',''xxx'');
insert into t1 value(''112'',''yyy'');
insert into t1 value(''112'',''yyy'');
unique其实是一种索引,索引作为一种数据结构,主要用于提高查询效率。
可以为空,并且一张表中可以有多个唯一约束。
④:primary key 主键约束:用于唯一标识表中一条记录,并且不能为空。也就是说从约
束的角度来看,主键约束和非空加唯一约束没有区别。
语法案例:create table stu (stuid int primary key,name char(10));
#create table stu (stuid int unique not null,name char(10));
insert into stu value(1,''xxx'');
insert into stu value(1,''yyy'');
有主键和没有主键的区别:
1:无法区分两个相同记录
2:有主键则意味着有索引,效率更高
3:可以建立关联关系
⑤:auto_increment 自动增长约束:其作用是通常搭配主键字段使用,可以自动为数据分配主键。
如何分配:添加一条就自动加1,计数从1开始。
语法案例:create table t1(id int primary key auto_increment,name char(10));
insert into t1(name) values(''xxx''),(''yyy''),(''zzz'');
修改自动增长的起始位置:
alter table t1 auto_increment = 7;
⑥:foreign key 外键约束:专门用于为表和表之间建立物理关联/联系。
添加外键约束时,被关联的表需要先被创建,主表先插入,从表后插入。
外键加上以后,主表中的数据在删除和更新时,都会受到限制,解决方案就是
语法案例:
先创建部门表
create table dept(id int primary key auto_increment,name char(10),manager char(10));
再创建员工表
create table emp(id int primary key auto_increment,name char(10),dept_id int,foreign key(dept_id) references dept(id));
为外键添加级联操作。而级联操作指的就是同步更新和删除。
语法:在创建外键时,后面添加 on update cascade 同步更新
:在创建外键时,后面添加 on delete cascade 同步删除
二:表之间的关联关系
两个表之间能产生的关系有哪些:
1.多对一
2.一对一
3.多对多