MySQL 列級約束和表級約束


一,六大約束

  • NOT NULL 非空
  • PRIMARY KEY 主鍵
  • UNIQUE 唯一
  • CHECK 檢查約束,MySQL 不支持,語法不報錯但無效果
  • FOREIGN KEY 外鍵.限制兩表關系,通常在從表引入外鍵約束,引入主表中某列的值,保證從表該字段的值必須來源於主表關聯列的值
  • DEFAULT 默認值/系統設定值

二,表級約束和列級約束的定義:

  • 表級約束:對多個數據列建立的約束,稱為表級約束表級約束只能在列定義后聲明
  • 列級約束:對一個數據列建立的約束,稱為列級約束列級約束既可以在列定義時聲明,也可以在列定義后聲明
 ps:簡單來理解的話就是列級約束針對的是單列,表級約束針對的是整個表,如此引伸出來
六大約束都可在列級約束使用,但外鍵無效果(外鍵是約束兩個表之間的關系)
顯而易見,非空和默認不可在表級約束中使用

三,添加約束的時機:

  • 創建表時:

  #創建主表,實驗外鍵

  CREAT  TABLE  IF  NOT  EXISTS  major(

        id INT,

        major_name varchar(20)

  );

  #創建從表,實驗表級/列級約束

  CREAT  TABLE  IF  NOT  EXISTS  students(

        #添加表級約束,直接在類型后添加即可

        id INT PRIMARY KEY,

        student_name VARCHAR(20),

        sex CHAR(1),

        age INT DEFAULT 18,

        majorid INT,

      

        #添加表級約束,直接添加在列創建結束后

        CONSTRAINT pk PRIMARY KEY(id).#主鍵,constraint用來命名,不加也可以

        CONSTRAINT fk_student_majory FOREIGN KEY(majorid) REFERENCES major(id)#外鍵

  );

  • 修改表時:

  #添加非空,其他列級約束可仿照此方法

  ALTER  TABLE  students  MODIFY  COLUMN  student_name  VARCHAR(20)  NOT  NULL;  

  #添加外鍵,其他表級約束也可使用同樣方法添加
   ALTER  TABLE  students ADD  FOREIGN  KEY(majorid)  REFERENCES  major(id) ;
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM