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