首頁 > 資料庫 > mysql教程 > MySQL資料庫怎麼給表格設定約束

MySQL資料庫怎麼給表格設定約束

王林
發布: 2023-06-01 15:55:30
轉載
2295 人瀏覽過

    一、PK(主鍵約束)

    1、什麼是主鍵?

    • 在了解主鍵之前,先了解什麼是關鍵字

    • 關鍵字:在表中具有唯一性的字段,例如一個人的身分證號,學號。一個表格中可以有多個關鍵字。

    • 主鍵是一個或多個關鍵字的組合,透過主鍵可以取得整張表的訊息,有時也被稱為主關鍵字。以訂單表為例,可以透過訂單編號取得訂單的收貨人姓名、商品資訊及價格等相關資訊。

    注意:關鍵字不一定是主鍵,主鍵一定是關鍵字

    #特點:主鍵不能為空,具有唯一性不能重複。一個表要麼只有一個主鍵,要麼沒有主鍵,不可以有多個主鍵。

    2、怎麼設定主鍵?

    方法一:建立表格時設定主鍵

    -- 建立User表
    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    -- 在这里设置id为主键
    PRIMARY KEY(User_id)
    )
    登入後複製
    CREATE TABLE Users(
    -- 也可以在字段中直接设置主键
    User_id int NOT NULL PRIMARY KEY,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18)
    )
    登入後複製

    以上兩種方式都可以建立主鍵,效果一樣。

    方法二:建立表格時沒有設定主鍵,後續在表中設定主鍵

    • #先建一個沒有設定主鍵的表格

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18)
    )
    登入後複製
    • 然後再設定主鍵

    原則是將PRIMARY KEY(User_id)
    跟方法一中加入建立表格時的程式碼的第一個原理一樣

    ALTER TABLE user ADD PRIMARY KEY(User_id)
    登入後複製

    原理是在User_id 欄位中加入PRIMARY KEY
    跟方法一中的第二個原理一樣

    ALTER TABLE users MODIFY User_id INT PRIMARY KEY;
    登入後複製

    二、FK(外鍵約束)

    1、什麼是外鍵

    • 外鍵又叫外關鍵字,代表兩個表直接的聯繫。一張表的外鍵一定是另一張表的主鍵,以另一個關係的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。

    • 例如訂單表包含了商品ID,使用者ID兩個外鍵。其中商品ID是商品資訊表的主鍵,使用者ID是使用者表的主鍵。

    注意:一個表格中的外鍵可以有多個,也可以沒有。

    2、怎麼設定外鍵

    方法一:建立表格時設定外鍵約束

    在前面設定主鍵的基礎上來舉例,前面建立了一個使用者表,那麼現在就建立一個訂單表。

    CREATE TABLE dingdan(
    DDid INT PRIMARY KEY NOT NULL,
    User_id INT NOT null,
    DDname VARCHAR(20) NOT NULL,
    -- 设置约束关系,dingdan表中的User_id 与 user表中的User_id表示的是同一个数据
    constraint fk FOREIGN KEY(User_id) REFERENCES user(User_id)
    )
    登入後複製

    方法二:建立表時沒有設定主鍵,後續在表中設定主鍵

    alter table student add constraint stfk foreign key(stid) references teacher(tid)
    登入後複製

    注意:建立了主外鍵關係後,主表中的資料不能隨意刪除。如果某個使用者的資訊已包含在訂單資料中,那麼在刪除該使用者的資訊時會導致錯誤發生,因此需要保留該使用者的資訊。

    三、unique(唯一約束)

    1、什麼是唯一約束?

    某個欄位如果設定了唯一約束,那麼該欄位要不是不寫,要寫就不能重複。

    2、如何設定唯一限制

    或是建立一個使用者表,這次表中多了郵件信箱欄位。設定郵箱不能重複

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_Email VARCHAR(40) UNIQUE
    )
    登入後複製

    四、not null(非空)

    意思就是這個欄位不能為空

    接著上面唯一約束來寫,這裡規定信箱不只不能重複而且不能為空

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_Email VARCHAR(40) UNIQUE not null
    )
    登入後複製

    五、default(預設值)

    意思就是這個欄位如果你不寫,那麼會預設給你一個值繼續上面的User表來寫,在這裡添加一個性別字段,如果你不寫性別那麼默認為男

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_gender enum('男','女') default '男'
    )
    登入後複製

    六、auto_increment(自增)

    #自增就是自動遞增,也就是說如果你在這個字段沒有填寫數據,系統會自動根據上一條數據加1

    一般用在ID,編號

    將用戶表中的ID設為自增

    CREATE TABLE User(
    User_id int auto_increment,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_gender enum('男','女') default '男'
    )
    登入後複製

    注意:第一個資料如果不填,預設會給一個值。所以即便ID是主鍵,也可以不填資料

    以上是MySQL資料庫怎麼給表格設定約束的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:yisu.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板