mysql - 約束(constraint)


mysql - 約束(constraint)

約束實際上就是表中數據的限制條件,目的就是為了保證表中的記錄完整和有效。

約束種類

非空約束(not null)
唯一性約束(unique)
主鍵約束(primary key) PK
外鍵約束(foreign key) FK
檢查約束(目前MySQL不支持、Oracle支持)

非空約束:

mysql> create table t_user(
    -> id int(10),
    -> name varchar(32) not null
    -> );
Query OK, 0 rows affected (0.08 sec)

唯一性約束:

unique約束的字段,具有唯一性,不可重復,但可以為null

  1. 列級約束

    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128) unique
        -> );
    Query OK, 0 rows affected (0.03 sec)
    
  2. 表級約束,可以給多個字段聯合約束(表示兩個或以上的字段同時與另一條記錄相等,則報錯)

    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128),
        -> unique(name,email)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    

    表級約束可以給約束起名字(方便以后通過這個名字來刪除這個約束)

    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128),
        -> constraint t_user_email_unique unique(email)
        -> );
    Query OK, 0 rows affected (0.06 sec)
    

主鍵

一張表應該有主鍵字段,如果沒有,表示該表無效
主鍵值:是當前行數據的唯一標識、是當前行數據的身份證號
即使表中兩行記錄相關數據相同,但由於主鍵值不同,所以也認為是兩行不同的記錄

  1. 單一主鍵:給一個字段添加主鍵約束(列級定義)
    mysql> create table t_user(
        -> id int(10) primary key,
        -> name varchar(32)
        -> );
    Query OK, 0 rows affected (0.07 sec)
    
  2. 復合主鍵(表級定義)
    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128) unique,
        -> primary key(id,name)
        -> );
    Query OK, 0 rows affected (0.05 sec)
    
    

主鍵約束與“not null unique”區別

給某個字段添加主鍵約束之后,該字段不能重復也不能為空,效果和"not null unique"約束相同,但是本質不同。
鍵約束除了可以做到"not null unique"之外,還會默認添加"索引——index"

文章來源:https://xulinjie.blog.csdn.net/article/details/79655073


免責聲明!

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



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