SQL數據庫約束、默認和規則


數據的完整性

實體完整性 又稱為行完整性,即數據庫中的所有行都具有一個非空且沒有重復的主鍵值

MSSQL中通過唯一索引、PRIMARY KEY約束、UNIQUE約束、INDENTITY屬性等來強制主鍵的唯一性

域完整性  又叫列完整性,以保證列數據的輸入具有正確的數據類型、格式和有效的數據范圍

強制域有效性可以通過限制數據類型、CHECK約束和規則、FOREIGN KEY、DEFAULT、NOTNULL定義

參照完整性 又叫引用完整性,旨在保證主表和從表數據的一致性,通過FOREIGN KEY和CHECK約束實現

用戶定義完整性  用戶定義的不屬於以上完整性的特點那個規則

SQL數據庫約束、默認和規則

1)約束 CONSTRAINT

實現約束的五種方式:

(1) CHECK約束

[CONSTRAINT 約束名] CHECK (邏輯表達式)

CREATE TABLE 成績

(

學號 char(8) NOT NULL,

CONSTRAINT ck_cj CHECK (成績>=0 and 成績<=100)

)

ALTER TABLE 成績

ADD CONSTRAINT ck_cj (成績>=60 and 成績<=100)

ALTER TABLE 成績

DROP CONSTRAINT ck_cj

(2)PRIMARY KEY約束

[CONSTRAINT 約束名] PRIMARY KEY [CLUSTERED] [NONLUSTERED]

CREATE TABLE 學生

(

學號 char(8) NOT NULL CONSTRAINT pl_xs PRIMARY KEY CLUSTERED

)

ALTER TABLE 學生

ADD CONSTRAINT pk_xs PRIMARY KEY CLUSTERED(學號)

(3)FOREIGN KEY約束 references

[CONSTRAINT 約束名] FOREIGH KEY    (從表外鍵) PEFERENCES 主表 (主表外鍵)

CREATE TABLE 成績

(

學號 char(8) NOT NULL FOREIGN KEY REFERENCES 學生 (學號)

)

(4)UNIQUE約束

[CONSTRAINT 約束名] UINQUE [CLUSTERED\NONCLUSTERED](列名...)

CREATE TABLE 職工

(

身份證號 char(18) NULL CONSTRAINT uni_sfz UNIQUE

)

(5)DEFAULT約束

[CONSTRAINT 約束名] DEFAULT 默認約束值 FOR 列名

CREATE TABLE 學生

(

性別 char(2) DEFAULT '男'

)

 默認[DEFAULT]

默認是一種數據庫對象,可以綁定在一列或者多列上,作用與DEFAULT約束相似,在插入數據行時,為沒有指定數據的列提供實現定義的默認值

 

創建默認對象

CREATE DEFAULT 默認對象名 AS 默認值

USE 學生成績

CREATE DEFAULT sex_mr AS '男'

 

綁定默認對象

sp_bindefault [@defname=] '默認對象名' [@objname] '綁定的列名'

use 學生成績

go

exec sp_bindefault 'sex_mr','學生.性別'

刪除綁定

sp_unbindefault [@objname=] '綁定的列名'

use 學生成績

go

exec sp_unbindefault '學生.性別'  

刪除默認對象

DROP DEFAULT 默認對象名

use 學生成績

go

drop default sex_mr

規則(RULE)

規則也是一種數據庫對象,可以綁定在一列或多列上,作用與CHECK約束相似,在插入數據行時,指定接收的數據值的范圍

創建規則

CREATE RULE 規則名 AS 規則條件

USE 學生成績

go

create rule cj_rl as @cj>=0 and @cj<=100

綁定規則

sp_bindrule [@rulename=] '規則對象名' [@objname] '綁定的列名'

use 學生成績

go

exec sp_bindrule 'cj_rl','成績.成績'

刪除規則

sp_unbindrule [@objname=] '綁定的列名'

use 學生成績

go

exec sp_unbindrule '成績.成績'

刪除規則對象

DROP RULE 規則對象名

use 學生成績

go

drop rule cj_rl


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM