SQL資料完整性

來源:互聯網
上載者:User

標籤:刪除   auto   name   主鍵約束   插入   建表   有一個   預設值   ble   

1.資料的完整性1. 什麼是資料的完整性

保證使用者輸入的資料儲存到資料庫中是正確的

2.添加資料完整性

在建立表的時候給表添加約束

3.完整性分類

實體完整性、值域完整性、參考完整性

?

?

2.完整性的分類1.實體完整性
  • 表中的一行(一條記錄)代表一個實體 (entity)

  • 實體完整性的作用:標記每一行資料不重複。行級約束

  • 約束類型:

    • 主鍵約束(primary key):

      • 每個表中要有一個主鍵,資料唯一,且不能為null

      • 建立主鍵的方式:

        • create table pe(ID BIGINT PRIMARY key, name VARCHAR(50));
        • create table pe2(ID BIGINT, name VARCHAR(50), PRIMARY KEY(ID));
        • 聯合主鍵:兩個欄位資料同時相同時,才違反聯合主鍵約束。 create table stu2(ID BIGINT,snum BIGINT, name VARCHAR(50), PRIMARY KEY(ID, snum));

        • 更改表結構,設定主鍵:ALTER TABLE student ADD CONSTRAINT PRIMARY KEY(sid);

    • 唯一約束

      • 指定列的資料不能重複,可以為空白值
      • CREATE TABLE table1(id int PRIMARY KEY, name VARCHAR(50) UNIQUE); name不能重複
    • 自動成長列

      • 指定列的資料自動成長,即使資料刪除,依然繼續增長

      • CREATE TABLE table1(  id int PRIMARY KEY auto_increment,  name varchar (20) UNIQUE);

?

2.值域完整性

使用:限制此儲存格的資料正確,不對照此列的其他儲存格比較

域,代表目前的儲存格

值域完整性約束:

  • 資料類型:數值、日期、字串

  • 非空約束(not null) CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null);

  • -- 預設值約束 (default)CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null,sex char(1) default '男')-- 設定預設值為 男

    ?

    ?

    ?

3. 參照完整性

什麼是參照完整性

  • 指表與表之間的一種對應關係
  • 通常情況下可以通過設定兩張表之間的主鍵、外鍵關係,或者編寫兩表的觸發器來實現。
  • 有對應參照完整性的兩張表,在對他們進行資料插入、更新、刪除的過程中,系統都會將被修改表格與另一張對應表格繼續對照,從而阻止一些不正確的資料操作

資料庫的主鍵和外鍵類型要一致

兩個表必須是 InnoDB 類型

設定參照完整性後,外鍵當中的內值,必須得是主鍵當中的內容

-- 設定外鍵CREATE TABLE score(    sid int PRIMARY KEY score int,    CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id));-- score 設定外鍵,score 裡的sid 關聯 stu 裡的 id
-- 設定外鍵alter table score add CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id);
-- 多對多關聯建立CREATE TABLE teach(tid int PRIMARY KEY, name VARCHAR(50));CREATE TABLE stu(sid int PRIMARY KEY, name VARCHAR(50));CREATE TABLE tea_stu_rel(tid int, sid int);ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(tid) REFERENCES teach(tid);ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(sid) REFERENCES stu(sid);

為什麼要將表拆分:避免冗餘資料

SQL資料完整性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.