1. 程式人生 > 其它 >今日學習總結3.2

今日學習總結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.錄入資料的時候先錄入沒有外來鍵的一張表

      

    多對多關係

      

    一對一的關係

      

三、級聯更新級聯刪除