今日学习总结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.录入数据的时候先录入没有外键的一张表

      

 

     多对多关系

      

 

     一对一的关系

      

 

 三、级联更新级联删除

   

 

 

    

    

 

 

    

posted @ 2022-03-02 20:39  晨昏xcf  阅读(33)  评论(0)    收藏  举报