在SQLServer中,有3種不同類型的約束。
創(chuàng)新互聯(lián)公司長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為赤峰林西企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站制作,赤峰林西網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
1、實(shí)體約束
實(shí)體約束是關(guān)于行的,比如某一行出現(xiàn)的值就不允許出現(xiàn)在其他行,例如主鍵。
2、域約束
域約束是關(guān)于列的,對于所有行,某一列有那些約束,例如CHECK約束。
3、參照完整性約束
如果某列的值必須與其他列的值匹配,那就意味著需要一個參照完整性約束,例如外鍵。
sysconstraints 這個表
其中id表示擁有該約束的表ID,
status表示是哪種約束
位圖指示狀態(tài)。可能的值包括:
1 = PRIMARY KEY 約束。
2 = UNIQUE KEY 約束。
3 = FOREIGN KEY 約束。
4 = CHECK 約束。
5 = DEFAULT 約束。
16 = 列級約束。
32 = 表級約束。
colid嘛,是表示約束列的ID
主鍵約束
SELECT
tab.name AS [表名],
idx.name AS [主鍵名稱],
col.name AS [主鍵列名]
FROM
sys.indexes idx
JOIN sys.index_columns idxCol
ON (idx.object_id = idxCol.object_id
AND idx.index_id = idxCol.index_id
AND idx.is_primary_key = 1)
JOIN sys.tables tab
ON (idx.object_id = tab.object_id)
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id);
唯一約束
SELECT
tab.name AS [表名],
idx.name AS [約束名稱],
col.name AS [約束列名]
FROM
sys.indexes idx
JOIN sys.index_columns idxCol
ON (idx.object_id = idxCol.object_id
AND idx.index_id = idxCol.index_id
AND idx.is_unique_constraint = 1)
JOIN sys.tables tab
ON (idx.object_id = tab.object_id)
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id);
外鍵約束
select
oSub.name AS [子表名稱],
fk.name AS [外鍵名稱],
SubCol.name AS [子表列名],
oMain.name AS [主表名稱],
MainCol.name AS [主表列名]
from
sys.foreign_keys fk
JOIN sys.all_objects oSub
ON (fk.parent_object_id = oSub.object_id)
JOIN sys.all_objects oMain
ON (fk.referenced_object_id = oMain.object_id)
JOIN sys.foreign_key_columns fkCols
ON (fk.object_id = fkCols.constraint_object_id)
JOIN sys.columns SubCol
ON (oSub.object_id = SubCol.object_id
AND fkCols.parent_column_id = SubCol.column_id)
JOIN sys.columns MainCol
ON (oMain.object_id = MainCol.object_id
AND fkCols.referenced_column_id = MainCol.column_id)
Check約束
SELECT
tab.name AS [表名],
chk.name AS [Check約束名],
col.name AS [列名],
chk.definition
FROM
sys.check_constraints chk
JOIN sys.tables tab
ON (chk.parent_object_id = tab.object_id)
JOIN sys.columns col
ON (chk.parent_object_id = col.object_id
AND chk.parent_column_id = col.column_id)
如果不指定的話,默認(rèn)約束名是 約束簡寫_表名
主鍵(Primary Key)約束:如 PK_表名
唯一(Unique Key)約束:如 UQ_表名
默認(rèn)(Default Key)約束:如 DF_表名
檢查(Check Key)約束:如 CK_表名
外鍵(Foreign Key)約束:如 FK_表名
例如表名是TEST 那相應(yīng)的默認(rèn)約束名稱 為 XX_表名
1.約束主要有一下幾種:
NOT NULL : 用于控制字段的內(nèi)容一定不能為空(NULL)。
UNIQUE : 控件字段內(nèi)容不能重復(fù),一個表允許有多個 Unique 約束。
PRIMARY KEY: 也是用于控件字段內(nèi)容不能重復(fù),但它在一個表只允許出現(xiàn)一個。
FOREIGN KEY: FOREIGN KEY 約束用于預(yù)防破壞表之間連接的動作,F(xiàn)OREIGN KEY 約束 2. 也能防止非法數(shù)據(jù)插入外鍵列,因為它必須是它指向的那個表中的值之一。
CHECK: 用于控制字段的值范圍。
DEFAULT: 用于設(shè)置新記錄的默認(rèn)值。
3. not null : 用于控制字段的內(nèi)容一定不能為空(NULL)。
用法 :Create table MyTable
(
id varchar(32) not null,
name varchar (32)
)
4. Primary Key :也是用于控件字段內(nèi)容不能重復(fù),但它在一個表只允許出現(xiàn)一個。
在Sql Server、Orcale、MS Access 支持的添加Primary Key語法:
Create table myTB1
(
id nvarchar(32) not null primary key,
name nvarchar(32)
)
1、首先,打開sqlserver軟件,右鍵點(diǎn)擊要設(shè)計的表選擇設(shè)計,選中一列右鍵設(shè)置主鍵,該列就設(shè)置成了主鍵了,刪除主鍵同理,設(shè)置好了前面有一把鑰匙。
2、設(shè)置唯一鍵和索引鍵也是右鍵選中的列(空白的地方也行),點(diǎn)擊‘索引/鍵’。
3、這里注意,剛剛選擇的列不是在那個選中的列上設(shè)置,而是以整個表來設(shè)置的,因此能看到剛才設(shè)置的主鍵。
4、現(xiàn)在不是改信息而是新建一個,點(diǎn)擊添加。
5、然后點(diǎn)擊列,出來隱藏的省略號,再點(diǎn)擊它。
6、選擇要設(shè)置的列,后面可以設(shè)置排序。
7、再點(diǎn)擊類型可以設(shè)置唯一鍵/索引/列存儲索引,選擇需要設(shè)置的。
8、最后就設(shè)置完成了,點(diǎn)擊保存,到此就完成了。
分享題目:sqlserver約束名,sql server約束名
標(biāo)題URL:http://jinyejixie.com/article32/dsesopc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站收錄、企業(yè)建站、品牌網(wǎng)站設(shè)計、網(wǎng)站改版、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)