溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL數(shù)據(jù)庫(kù)怎么給表設(shè)置約束

發(fā)布時(shí)間:2022-03-10 08:59:57 來(lái)源:億速云 閱讀:213 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下MySQL數(shù)據(jù)庫(kù)怎么給表設(shè)置約束的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

    一、PK(主鍵約束)

    1、什么是主鍵?

    • 在了解主鍵之前,先了解一下什么是關(guān)鍵字

    • 關(guān)鍵字:在表中具有唯一性的字段,比如一個(gè)人的身份證號(hào),學(xué)號(hào)。一個(gè)表中可以有多個(gè)關(guān)鍵字。

    • 主鍵也叫主關(guān)鍵字,就是由一個(gè)或多個(gè)關(guān)鍵字組成的,并且可以通過(guò)主鍵獲得整個(gè)表的信息。比如訂單表,通過(guò)訂單編號(hào)可以獲取到訂單中的姓名,商品,價(jià)格等信息。

    注意:關(guān)鍵字不一定是主鍵,主鍵一定是關(guān)鍵字

    特點(diǎn):主鍵不能為空,具有唯一性不能重復(fù)。一個(gè)表要么只有一個(gè)主鍵,要么沒(méi)有主鍵,不可以有多個(gè)主鍵。

    2、怎么設(shè)置主鍵?

    方法一:在創(chuàng)建表時(shí)設(shè)置主鍵

    -- 建立User表
    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    -- 在這里設(shè)置id為主鍵
    PRIMARY KEY(User_id)
    )
    CREATE TABLE Users(
    -- 也可以在字段中直接設(shè)置主鍵
    User_id int NOT NULL PRIMARY KEY,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18)
    )

    以上兩種方式都可以創(chuàng)建主鍵,效果一樣。

    方法二:創(chuàng)建表時(shí)沒(méi)有設(shè)置主鍵,后續(xù)在表中設(shè)置主鍵

    • 首先建一個(gè)沒(méi)有設(shè)置主鍵的表

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18)
    )
    • 然后再設(shè)置主鍵

    原理是向創(chuàng)建表時(shí)的代碼中添加 PRIMARY KEY(User_id)
    跟方法一中的第一個(gè)原理一樣

    ALTER TABLE user ADD PRIMARY KEY(User_id)

    原理是向User_id 字段中添加 PRIMARY KEY
    跟方法一中的第二個(gè)原理一樣

    ALTER TABLE users MODIFY User_id INT PRIMARY KEY;

    二、FK(外鍵約束)

    1、什么是外鍵

    • 外鍵又叫外關(guān)鍵字,代表兩個(gè)表直接的聯(lián)系。一張表的外鍵一定是另一張表的主鍵,以另一個(gè)關(guān)系的外鍵作主關(guān)鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。

    • 比如訂單表中包含了商品ID,用戶ID兩個(gè)外鍵。其中商品ID是商品信息表的主鍵,用戶ID是用戶表的主鍵。

    注意:一個(gè)表中的外鍵可以有多個(gè),也可以沒(méi)有。

    2、怎么設(shè)置外鍵

    方法一:創(chuàng)建表時(shí)設(shè)置外鍵約束

    在前面設(shè)置主鍵的基礎(chǔ)上來(lái)舉例,前面創(chuàng)建了一個(gè)用戶表,那么現(xiàn)在創(chuàng)建一個(gè)訂單表。

    CREATE TABLE dingdan(
    DDid INT PRIMARY KEY NOT NULL,
    User_id INT NOT null,
    DDname VARCHAR(20) NOT NULL,
    -- 設(shè)置約束關(guān)系,dingdan表中的User_id 與 user表中的User_id表示的是同一個(gè)數(shù)據(jù)
    constraint fk FOREIGN KEY(User_id) REFERENCES user(User_id)
    )

    方法二:創(chuàng)建表時(shí)沒(méi)有設(shè)置主鍵,后續(xù)在表中設(shè)置主鍵

    alter table student add constraint stfk foreign key(stid) references teacher(tid)

    注意:建立了主外鍵關(guān)系后,主表中的數(shù)據(jù)不能隨意刪除。比如訂單中有一條數(shù)據(jù)包含了某個(gè)用戶,那么用戶表中就不能把該用戶的信息刪除,否則會(huì)報(bào)錯(cuò)。

    三、unique(唯一約束)

    1、什么是唯一約束?

    某個(gè)字段如果設(shè)置了唯一約束,那么該字段要么不寫,要寫就不能重復(fù)。

    2、如何設(shè)置唯一約束

    還是創(chuàng)建一個(gè)用戶表,這次表中多了郵箱字段。設(shè)置郵箱不能重復(fù)

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_Email VARCHAR(40) UNIQUE
    )

    四、not null(非空)

    意思就是這個(gè)字段不能為空

    接著上面唯一約束來(lái)寫,這里規(guī)定郵箱不僅不能重復(fù)而且不能為空

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

    五、default(默認(rèn)值)

    意思就是這個(gè)字段如果你不寫,那么會(huì)默認(rèn)給你一個(gè)值繼續(xù)上面的User表來(lái)寫,在這里添加一個(gè)性別字段,如果你不寫性別那么默認(rèn)為男

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

    六、auto_increment(自增)

    自增就是自動(dòng)遞增,也就是說(shuō)如果你在這個(gè)字段沒(méi)有填寫數(shù)據(jù),系統(tǒng)會(huì)自動(dòng)根據(jù)上一條數(shù)據(jù)加1

    一般用在ID,編號(hào)

    將用戶表中的ID設(shè)為自增

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

    注意:第一個(gè)數(shù)據(jù)如果不填,默認(rèn)會(huì)給一個(gè)值。所以即便ID是主鍵,也可以不填數(shù)據(jù)

    以上就是“MySQL數(shù)據(jù)庫(kù)怎么給表設(shè)置約束”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI