數(shù)據(jù)庫(kù)用SQL語(yǔ)言建表,什么是完整性約束?請(qǐng)問(wèn)如何寫(xiě)出各種完整性約束?
一、數(shù)據(jù)的完整性
實(shí)體完整性
實(shí)體完整性簡(jiǎn)單的說(shuō),就是將表中的每一行看作一個(gè)實(shí)體。實(shí)體完整性要求表的標(biāo)示符列或主鍵的完整性。可以通過(guò)建立唯一索引、PRIMARY KEY約束、UNIQUE約束,以及列的IDENTITY屬性來(lái)實(shí)施實(shí)體完整性。
域完整性
域完整性是指給定列的輸入有效性。要求表中指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類(lèi)型、格式和有效的數(shù)據(jù)范圍。強(qiáng)制域有效性的方法有:限制類(lèi)型(通過(guò)數(shù)據(jù)類(lèi)型)、格式(通過(guò) CHECK 約束和規(guī)則)或可能值的范圍。域完整性通過(guò) FOREIGN KEY 約束、CHECK 約束、DEFAULT 定義、NOT NULL 定義和規(guī)則來(lái)實(shí)現(xiàn)。
引用完整性
引用完整性又稱參照完整性。引用完整性維持被參照表和參照表之間的數(shù)據(jù)一致性,他通過(guò)主鍵(PRIMARY KEY)約束和外鍵(FOREIGN KEY)約束來(lái)實(shí)現(xiàn)。
用戶定義完整性
二、約束操作
與表相關(guān)的約束
在SQL 2008中,常用有6種約束,分別是NOT NULL,UNIQUE,PRIMARY KEY,FOREIGN KEY,DEFAULT和CHECK.
--添加主鍵約束(即primary key約束)
alter table goods add constraint pk_gid primary key(gid)
--1.刪除主鍵約束
alter table goods drop pk_gid
--添加唯一約束(即unique約束)
alter table goods add constraint uq_gname unique(gname)
--刪除唯一約束:仿1.
--添加缺省約束(即default約束)
alter table goods add constraint def_gtel default 0000-00000000 for gtel
--刪除缺省約束:仿1.
--添加檢查約束(即check約束)
alter table goods add constraint ck_gprice check(gprice>500)
--刪除check約束:仿1.
--創(chuàng)建表2
create table g_p
(
wno int identity(1,1) primary key,
gno int
)
--添加外鍵約束(即foreign key約束)
alter table g_p
add constraint fk_gno
foreign key(gno) references goods(gid)
--刪除外鍵約束:仿1.
--使用newid()
select newid()--生成全球唯一的ID號(hào)
create table customer
(
custID uniqueidentifier not null default newid(),
customer char(30) not null
)
insert customer values(newid(),\''\''accp\''\'')--向customer中插入信息
-----------------------------------慢慢研究----
數(shù)據(jù)庫(kù)用SQL語(yǔ)言建表,什么是完整性約束,這個(gè)書(shū)本上會(huì)有相應(yīng)的講解,然后也有例題。
SQL數(shù)據(jù)庫(kù)語(yǔ)言是一種非常嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言,用完整性來(lái)約束,那么寫(xiě)出完整性約束,的前提條件是你得會(huì)數(shù)據(jù)庫(kù)語(yǔ)言不會(huì)你不出來(lái)
在SQL中,列級(jí)完整性約束和表級(jí)完整性約束分別分為幾種情況?請(qǐng)列舉。
建表的同時(shí)通常還可以定義與該表有關(guān)的完整性約束條件,這些完整性約束回條件被存入系統(tǒng)的數(shù)據(jù)字典中,當(dāng)用答戶操作表中數(shù)據(jù)時(shí)由DBMS自動(dòng)檢查該操作是否違背這些完整性約束條件.如果完整性約束條件涉及到該表的多個(gè)屬性列,則必須定義在表級(jí)上,否則既可以定義在列級(jí)也可以定義在表級(jí).
例1 建立一個(gè)“學(xué)生”表Student,它由學(xué)號(hào)Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個(gè)屬性組成.其中學(xué)號(hào)不能為空,值是唯一的,并且姓名取值也唯一.
CREATE TABLE Student
(Sno CHAR(5)NOT NULL UNIQUE,/*列級(jí)完整性約束條件,Sno取值唯一,
Sname CHAR(20)UNIQUE,不許取空值*/
Ssex CHAR(1),
Sage INT,
Sdept CHAR(15));
常用完整性約束:
主碼約束:PRIMARY KEY
唯一性約束:UNIQUE
非空值約束:NOT NULL
參照完整性約束
以下哪些是sql語(yǔ)句完整性約束?
A. auto_incrementrnB. primary keyrnC. foreign keyrnD. unique先要知道完整性約束的定義:
更新數(shù)據(jù)庫(kù)時(shí),表中不能出現(xiàn)不符合完整性要求的記錄,以回保證為用答戶提供正確、有效的數(shù)據(jù)。實(shí)現(xiàn)該目的最直接的方法,是在編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),對(duì)每個(gè)更新操作都進(jìn)行完整性檢查。但這種檢查往往是復(fù)雜、重復(fù)、低效的。
SQL把各種完整性約束作為數(shù)據(jù)庫(kù)模式定義的一部分,由數(shù)據(jù)庫(kù)管理系統(tǒng)維護(hù),這樣即可有效防止對(duì)數(shù)據(jù)庫(kù)的意外破壞,提高了完整性檢測(cè)的效率,又減輕了編程人員的負(fù)擔(dān)。
SQL Server支持三種完整性約束:
1、實(shí)體完整性
2、參照完整性(或引用完整性)
3、用戶自定義完整性
B。主鍵 、C 外鍵 、D聯(lián)合主鍵
這三個(gè)都屬于實(shí)體完整性約束
B、C 肯定是
D不確定
A應(yīng)該不是
答案是B/C/D
sql中表達(dá)完整性約束的規(guī)則主要有哪幾種
1、實(shí)體完整性:規(guī)來(lái)定表的每自一行在表中是惟一的實(shí)體。
2、域完整性:是指表中的列必須滿足某種特定的數(shù)據(jù)類(lèi)型約束,其中約束又包括取值范圍、精度等規(guī)定。
3、 參照完整性:是指兩個(gè)表的主關(guān)鍵字和外關(guān)鍵字的數(shù)據(jù)應(yīng)一致,保證了表之間的數(shù)據(jù)的一致性,防止了數(shù)據(jù)丟失或無(wú)意義的數(shù)據(jù)在數(shù)據(jù)庫(kù)中擴(kuò)散。
4、用戶定義的完整性:不同的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對(duì)某個(gè)特定關(guān)系數(shù)據(jù)庫(kù)的約束條件,它反映某一具體應(yīng)用必須滿足的語(yǔ)義要求。
擴(kuò)展資料
完整性約束的類(lèi)型介紹:
1、與表有關(guān)的約束:是表中定義的一種約束。可在列定義時(shí)定義該約束,此時(shí)稱為列約束,也可以在表定義時(shí)定義約束,此時(shí)稱為表約束。
2、域(Domain)約束:在域定義中被定義的一種約束,它與在特定域中定義的任何列都有關(guān)系。
3、斷言(Assertion):在斷言定義時(shí)定義的一種約束,它可以與一個(gè)或多個(gè)表進(jìn)行關(guān)聯(lián)。
關(guān)系的完整性約束通常包括域完整性,實(shí)體完整性、參照完整性和用戶定義完整性。回
1、域完整性,是保答證數(shù)據(jù)庫(kù)字段取值的合理性,是最簡(jiǎn)單、最基本的約束。
2、實(shí)體完整性,作用是指在傳輸、存儲(chǔ)信息或數(shù)據(jù)的過(guò)程中,確保信息或數(shù)據(jù)不被未授權(quán)的篡改或在篡改后能夠被迅速發(fā)現(xiàn)。
3、參照完整性,作用是定義建立關(guān)系之間聯(lián)系的主關(guān)鍵字與外部關(guān)鍵字引用的約束條件。關(guān)系數(shù)據(jù)庫(kù)中通常都包含多個(gè)存在相互聯(lián)系的關(guān)系,關(guān)系與關(guān)系之間的聯(lián)系是通過(guò)公共屬性來(lái)實(shí)現(xiàn)的。
4、用戶定義完整性作用是根據(jù)應(yīng)用環(huán)境的要求和實(shí)際的需要,對(duì)某一具體應(yīng)用所涉及的數(shù)據(jù)提出約束性條件。
擴(kuò)展資料:
關(guān)系完整性模型
關(guān)系完整性模型中常用的關(guān)系操作包括:選擇、投影、連接、并、交、差等查詢操作和增加、刪除、修改操作兩大部分。查詢的表達(dá)能力是其中最重要的部分。
關(guān)系操作的的特點(diǎn)是集合操作方式,即操作對(duì)象和結(jié)構(gòu)都是集合。這種操作方式也為一次一集合的方式。相應(yīng)地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式則為一次一記錄的方式。
參考資料來(lái)源:
百度百科-關(guān)系完整性約束
百度百科-實(shí)體完整性
sql約束性分為實(shí)體完整性,參照完整性,用戶定義完整性,刪除約束
實(shí)體完整性
1.建表時(shí)定義主鍵
Create table 表名
(
Sno int identity(1,1),
Sname nvarchar(20),
--設(shè)置主鍵
Primary key (Sno)
)
2.添加主鍵
alter table 表名
add constraint PK_表名_Sno
primary key(id)
參照完整性
1.建表時(shí)定義外鍵
create table 表名
(
sno int identity(1,1) primary key,
cno int not null,
foreign key(cno) References
表名2(Cno)
on Delete cascade --級(jí)聯(lián)刪除
on update cascade --級(jí)聯(lián)更新
-- on delete on action 刪除管制
)
2.添加外鍵
alter table 表名
add constraint FK_表名_表名2
Foreign key(cid) references 表名2(cid)
用戶定義完整性
非空約束
alter table 表名
alter column name varchar(20) not null
2.唯一約束
alter table 表名
add constraint UQ_表名_列名 unique(列)
3.檢查約束
alter table 表名
add constraint CK_表名_列名 check(age>5)
4.默認(rèn)約束
alter table 表名
add constraint DF_表名_列名 default('男')
for gender
刪除約束 --刪除約束
alter table 表名 drop constraint DF_表名_列
實(shí)體完整性:又稱行完整性,要求在表中不能存在完全相同的行,而內(nèi)且每行都要具有一個(gè)非容空且又不重復(fù)的主鍵值。
參照完整性:又稱引用完整性,指表間的規(guī)則,作用于有關(guān)聯(lián)的兩個(gè)或兩個(gè)以上的表,通過(guò)使用主鍵和外鍵(或唯一鍵)之間的關(guān)系,使表中的鍵值在相關(guān)表中保持一致。
用戶自定義完整性:指針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。
SQL語(yǔ)句設(shè)計(jì) 在添加完整性約束check時(shí)候,提示錯(cuò)誤。
實(shí)體完整性:not
null,
unique
和
primary
key
參照完整性:foreign
key
的級(jí)聯(lián)操作策略(級(jí)聯(lián)更新回、級(jí)聯(lián)刪除、置空)
用戶答定義:check約束
在sql
server2000中,無(wú)論實(shí)體的、參照的還是用戶定義的都視為是一種約束constraint,所以都可以采用constraint的定義形式。
具體語(yǔ)法規(guī)則自己參考一下聯(lián)機(jī)文檔或google一下就可以,敲起來(lái)太費(fèi)勁了。
相關(guān)推薦:
公職人員離婚(公職人員離婚會(huì)受到哪些影響)
離婚辦理分戶(離婚后如何辦理戶口分戶)
離婚租房分戶(離婚后租房住戶口怎么辦)
取保候?qū)忛_(kāi)戶籍證明嗎(取保候?qū)徯枰獞艏C明嗎)
離婚女方搬家(在離婚之后 女方需要把戶口遷出去嗎)