SQL Server資料完整性

來源:互聯網
上載者:User

標籤:style   blog   color   ar   sp   for   資料   div   on   

我們在學習資料庫的過程中,經常會聽到兩個概念:資料冗餘和資料完整性。資料冗餘是指資料庫中存在一些重複的資料,資料完整性是指資料庫中的資料能夠正確反應實際情況,我們說,為了效能著想,資料庫中允許有一些資料冗餘,但是要保持資料的完整性。資料完整性=可靠性+準確性,這裡我們要清楚以下幾點:•          資料存放在表中•          “資料完整性的問題大多是由於設計引起的”•          建立表的時候,就應當保證以後資料輸入是正確的       ——錯誤的資料、不符合要求的資料不允許輸入 本質而言,保證資料的完整性 = 實施完整性條件約束 完整性包括1.      實體完整性a)        資料行不能存在重複2.      值域完整性a)        實現了對輸入到特定列的數值的限制3.      參考完整性a)        要求子表中的相關項目必須在主表中存在b)        如果建立了主表和子表的關係,則:                                       i.              子表中的相關項目的資料,在主表中必須存在;                                     ii.              主表中相關項目的資料更改了,則子表對應的資料項目也應當隨之                                    iii.                     更改;                                   iv.              在刪除子表之前,不能夠刪除主表;4.      自訂完整性 實際上,SQL Server建立表的過程是規定資料列的屬性的過程,同時也是實施資料完整性(包括實體完整性、參考完整性和值域完整性等)保證的過程。建立表包括選擇欄位名稱、資料類型、定義是否為空白、設定預設值、主鍵和外鍵關係、檢查約束等。表中沒有合適的列作為主鍵,可以建立識別欄位。 SQL Server中存在五種約束:•          約束的目的:確保表中資料的完整型•          常用的約束類型:–         主鍵約束(Primary Key Constraint):要求主鍵列資料唯一,並且不允許為空白–         唯一約束(Unique Constraint):要求該列唯一,允許為空白,但只能出現一個空值。–         檢查約束(Check Constraint):某列取值範圍限制、格式限制等,如有關年齡的約束–         預設約束(Default Constraint):某列的預設值,如我們的男性學員較多,性別預設為“男”–         外鍵約束(Foreign Key Constraint):用於兩表間建立關係,需要指定引用主表的那列 添加約束的文法:ALTER TABLE 表名 ADD CONSTRAINT 約束名  約束類型  具體的約束說明q       約束名的取名規則推薦採用:約束類型_限制欄位q       主鍵(Primary Key)約束:如 PK_stuNoq       唯一(Unique Key)約束:如 UQ_stuIDq       預設(Default Key)約束:如 DF_stuAddressq       檢查(Check Key)約束:如 CK_stuAgeq       外鍵(Foreign Key)約束:如 FK_stuNo 下面我們來給前面建立的學員資訊表stuInfo添加約束: /*添加主鍵約束(stuNo作為主鍵)*/ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)/*添加唯一約束(因為每人的社會安全號碼全國唯一)*/ALTER TABLE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID)/*添加預設約束(如果地址不填,預設為“地址不詳”)*/ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT (‘地址不詳‘) FOR stuAddress/*添加檢查check約束,要求年齡只能在15-40歲之間*/ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)/*添加外鍵約束(主表stuInfo和從表stuMarks建立關係,關聯欄位為stuNo)*/ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo  FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)GO 如果錯誤地添加了約束,我們還可以刪除約束刪除約束的文法ALTER TABLE 表名  DROP CONSTRAINT 約束名例如:刪除stuInfo表中地址預設約束ALTER  TABLE  stuInfo  DROP  CONSTRAINT  DF_stuAddress OK,有了完整性條件約束,資料完整性就有了保障,資料庫中的資料也就能夠正確地反應實際情況了。那我們上面又提到了一個主從表的概念,有人可能不太明白,下面文章我們再來介紹一下。

 

SQL Server資料完整性

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.