最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

MySQL約束類型及舉例介紹

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 20:23:22
文檔

MySQL約束類型及舉例介紹

MySQL約束類型及舉例介紹:約束 約束保證數(shù)據(jù)的完整性和一致性 約束分為表級(jí)約束和列級(jí)約束 約束類型包括:NOT NULL (非空約束),PRIMARY KEY(主鍵約束),UNIQUE KEY(唯一約束),DEFAULT(默認(rèn)約束),F(xiàn)OREIGN(外鍵約束) 1.主鍵約束 PRIMARY KEY 每張
推薦度:
導(dǎo)讀MySQL約束類型及舉例介紹:約束 約束保證數(shù)據(jù)的完整性和一致性 約束分為表級(jí)約束和列級(jí)約束 約束類型包括:NOT NULL (非空約束),PRIMARY KEY(主鍵約束),UNIQUE KEY(唯一約束),DEFAULT(默認(rèn)約束),F(xiàn)OREIGN(外鍵約束) 1.主鍵約束 PRIMARY KEY 每張

約束 

  • 約束保證數(shù)據(jù)的完整性和一致性
  • 約束分為表級(jí)約束和列級(jí)約束
  • 約束類型包括:NOT NULL (非空約束),PRIMARY KEY(主鍵約束),UNIQUE KEY(唯一約束),DEFAULT(默認(rèn)約束),F(xiàn)OREIGN(外鍵約束)
  • 1.主鍵約束

  • PRIMARY KEY
  • 每張數(shù)據(jù)表只能存在一個(gè)主鍵
  • 主鍵保證記錄的唯一性,主鍵的值不重復(fù)
  • 主鍵自動(dòng)為 NOT NULL
  • 舉例,創(chuàng)建一張student表,將學(xué)號(hào)設(shè)置為主鍵創(chuàng)建完表之后,通過SHWO COLUMNS FROM student查看表結(jié)構(gòu)

    CREATE TABLE student(
    id int PRIMARY KEY,
    stu_name varchar(20)
    );

    2.唯一約束

  • UNIQUE KEY
  • 唯一約束可以保證記錄的唯一性
  • 唯一約束的字段可以為空值(NULL)
  • 每張數(shù)據(jù)表可以存在多個(gè)唯一約束
  • 舉例,創(chuàng)建一個(gè)teacher表,id字段自增,tea_name唯一

    CREATE TABLE teacher(
    id int AUTO_INCREMENT PRIMARY KEY,
    tea_name varchar(20) NOT NULL UNIQUE KEY
    );

    3.默認(rèn)約束

  • DEFAULT
  • 當(dāng)插入記錄時(shí),如果沒有明確為字段賦值,則自動(dòng)賦予默認(rèn)值
  • 舉例,創(chuàng)建一張course表,默認(rèn)上課時(shí)間為40分鐘

    CREATE TABLE course(
    id int AUTO_INCREMENT PRIMARY KEY,
    cou_name varchar(20) NOT NULL UNIQUE KEY,
    time int DEFAULT 40
    );
    INSERT INTO course(cou_name) values('語文');

    4.非空約束

  • NOT NULL
  • 強(qiáng)制列不能為 NULL 值,約束強(qiáng)制字段始終包含值。
  • 這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。
  • 舉例,在 "Persons" 表創(chuàng)建時(shí)在 Id列、name列創(chuàng)建 not null 約束:

    create table Persons(
    id int not NULL,
    p_name varchar(20) not null, 
    deparment varchar(20),
    address varchar(20),
    telNum varchar(20)
    )
    DESC Persons;

    5.外鍵約束

  • FOREIGN KEY
  • 保持?jǐn)?shù)據(jù)的一致性,完整性
  • 實(shí)現(xiàn)1對(duì)1或1對(duì)n關(guān)系
  • 1.父表與子表必須使用相同的存儲(chǔ)引擎,而且禁止使用臨時(shí)表。
    2.數(shù)據(jù)表的存儲(chǔ)引擎只能是InnoDB
    3.外鍵列和參照列必須具有相似的數(shù)據(jù)類型。其中數(shù)字的長(zhǎng)度或是否有符號(hào)位必須相同;而字符的長(zhǎng)度則可以不同。
    4.外鍵列和參照列必須創(chuàng)建索引。如果外鍵列不存在索引的話,MySQL將自動(dòng)創(chuàng)建索引。

    CREATE TABLE school(
    id int AUTO_INCREMENT PRIMARY KEY,
    sname varchar(20) NOT NULL
    );
    CREATE TABLE student2(
    id int AUTO_INCREMENT PRIMARY KEY,
    sid int,
    FOREIGN KEY (sid) REFERENCES school(id)
    );

    外鍵約束的參照操作

  • CASCADE : 從父表刪除或更新且自動(dòng)刪除或更新子表中匹配的行
  • 父表中被引用的列刪除了某個(gè)數(shù)據(jù),子表中刪除對(duì)應(yīng)數(shù)據(jù)的行
  • CREATE TABLE student3(
    id int AUTO_INCREMENT PRIMARY KEY,
    sid int,
    FOREIGN KEY (sid) REFERENCES school(id) ON DELETE CASCADE
    );
  • SET NULL:從父表刪除或更新行,并設(shè)置子表的外鍵列為NULL。如果使用該項(xiàng),必須保證子表列沒有指定NOT NULL
  • 父表中刪除數(shù)據(jù),將子表中的引用設(shè)置為NULL
  • RESTRICT:拒絕對(duì)父表的刪除或更新操作
  • NO ACTION:標(biāo)準(zhǔn)SQL的關(guān)鍵字,在MySQL中與RESTRICT相同
  • 總結(jié)

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQL約束類型及舉例介紹

    MySQL約束類型及舉例介紹:約束 約束保證數(shù)據(jù)的完整性和一致性 約束分為表級(jí)約束和列級(jí)約束 約束類型包括:NOT NULL (非空約束),PRIMARY KEY(主鍵約束),UNIQUE KEY(唯一約束),DEFAULT(默認(rèn)約束),F(xiàn)OREIGN(外鍵約束) 1.主鍵約束 PRIMARY KEY 每張
    推薦度:
    標(biāo)簽: 例子 mysql 約束
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top