今日学习总结3.2
一、约束条件
1.unsigned(非负)
create table t1 (id int unsigned);
2.zerofill(零填充)
create table t2 (id int zerofill);
insert into t2 values(1);
insert into t2 values (1111);
create table t3 (id int);
3.default(默认)
create table t4(id,int,gender enum(‘male’,‘female’)default ‘male’);
4.unique(唯一)
create table t1(id int,ip varchar(16));
单唯一:
create table t2 (id,int,ip varchar(16)unique);
多唯一:
create table t3 (id,int,ip varchar(16),port int,unique(ip,port));
5.not null
create table t1 (id int,name varchar(16)not null);
6.主键(primary key)
1.在数据控制上面,主键相当于非空且唯一
id int primary key ==== id not null unique
2.InnoDB存储引擎要求每一张表必须有一个主键,之前的InnoDB存储引擎也没有指定主键,但是表也
成功创建了,为什么?
因为ImmoDB引擎有一个默认的主键,而这个默认主键只是帮助我们把表创建成功,并且是隐藏的
主键,不能用。
主键的另外一个只要作用是:可以帮助我们提高查询速度
3.以后我们自己创建表的时候,主动指定主键
结论:id int primary key
7.auto_ increment
自增,可以理解为配合主键使用
id int primary key auto_increment unsigend 最终版本
create table t1(id int primary key auto_increment ,name varchar(16));
二、外键
1.三种情况
一对多,多对多,一对一
2.如何判断表关系?
一对多的判断
以图书表和出版社表为例
1.站在两张表的角度,分别问一个问题,一本图书能不能有多个出版社?不能
2.一个出版社能不能出多个图书?能
结论:如果一个能,一个不能,那么表关系就是一对多
针对一对多的关系,外键字段建立在多的一方
多对多的判断
以图书表和作者表为例
1.站在图书表角度:一个图书能否由多个作者写?能
2.站在作者表角度:一个作者能否写多本书?能
结论:如果两边都可以,那么,表关系就是多对多
针对多对多关系,外键字段不建在任何一方,而是建立在第三张表里
一对一的判断
以作者表和作者详情表为例
1.站在作者表角度:一个作者能否有多个作者详细?不能
2.站在作者详情表角度:一个作者详情表能否有多个作者?不能
结论:两边都不能,那就是一对一,或者没有关系,针对一对一关系,外键字段建立在任何一方都可
以,推荐建立在使用频率比较高的一张表
3.SQL语句实现
一对多关系
1.在创建表关系的时候,先创建基础字段
2.再创建外键关系
3.先创建没有外键的一张表
4.录入数据的时候先录入没有外键的一张表

多对多关系

一对一的关系

三、级联更新级联删除


浙公网安备 33010602011771号