約束名sql
㈠ sql中的幾種約束的創建與刪除
約束的目的就是確保表中的數據的完整性。
常用的約束類型如下:
主鍵約束:(Primary Key constraint) 要求主鍵列唯一,並且不允許為空
唯一約束:(Unique Constraint) 要求該列唯一,允許為空,但只能出現一個空值
檢查約束:(Check Constraint) 某列取值范圍限制、格式限制等。如有關年齡的限制
默認約束:(Default Constraint) 某列的默認值,如我們的男性學員比較多,性別默認為男
外鍵約束:(Foreign Key Constraint) 用於在兩表之間建立關系,需要指定引用主表的哪一列
一、添加約束
在創建表時,我們可以在欄位後添加各種約束,但一般不這樣混用,推薦將添加約束和建表的語句分開編寫。
添加約束的語法如下:
Code:
Alter Table 表名
Add Constraint 約束名 約束類型 具體的約束類型
上述語法標識修改某個表,添加某個約束,其中約束名的命名規則推薦採用"約束類型_約束欄位"這樣的形式。
Code:
---添加主鍵約束
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
---添加檢查約束
Alter Table stuInfo
Add Constraint CK_stuAge check(stuAge between 15 and 40)
---添加外鍵約束
Alter Table stuMarks
Add Constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)
二、刪除約束
如果錯誤的添加了約束,則可以刪除約束
刪除約束的語法如下:
Code:
Alter Table 表名
Drop Constraint 約束名
附加:在創建表的時候同時添加約束的寫法:
Code:
use stuDB
go
if exists(select * from Sysobjects where name = 'stuInfo')
drop table stuInfo
go
create table stuInfo
(
stuName varchar(20) not null primary key(stuName)
,stuID int not null unique(stuID)
,stuAddress varchar(20) not null default('地址不詳')
,stuAge int not null check(stuAge between 15 and 40)
)
㈡ SQL在建立約束時,給約束取得名字是干什麼用怎麼用約束名字存在哪裡了
給約束取名字, 目的是將來你可以比較容易的刪除掉.
否則你要自己去查詢數據字典表.
例如下面的例子.
唯一約束的名字, 是 t_123, 那麼當我不需要這個約束的時候
如果我知道名字, 那麼可以直接去刪除掉.
--創建測試表.
CREATETABLEtest_123(
idINT,
valueVARCHAR(10)
);
GO
--創建UNIQUE約束.
ALTERTABLEtest_123
ADDCONSTRAINTt_123UNIQUE(value);
GO
--刪除UNIQUE約束.
ALTERTABLE[test_123]
DROPCONSTRAINT[t_123];
GO
如果我不知道約束的名字, 那麼我需要去查詢數據字典表
SELECT
tab.nameAS[表名],
idx.nameAS[約束名稱],
col.nameAS[約束列名]
FROM
sys.indexesidx
JOINsys.index_columnsidxCol
ON(idx.object_id=idxCol.object_id
ANDidx.index_id=idxCol.index_id
ANDidx.is_unique_constraint=1)
JOINsys.tablestab
ON(idx.object_id=tab.object_id)
JOINsys.columnscol
ON(idx.object_id=col.object_id
ANDidxCol.column_id=col.column_id);
查詢到約束名稱以後, 在刪除掉這個約束.
以上 SQL 語句, SQL Server 2008 Express 下測試通過。
其他資料庫, 由於 數據字典表不同, 因此語句也就不同了。
㈢ sqlserver資料庫里怎麼查找一個表裡的約束,要查出 約束名、列名、約束類型用sql語句查詢
主鍵約束
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)
㈣ SQL怎麼自定義約束
語法: ALTER TABLE 表名 ADD CONSTRAINT約束名約束類型 具體的約束聲明
約束名的取名規則推薦採用:約束類型_約束列,當然你也可以不這么命名,這樣單純是比較方便
如:主鍵(Primary Key)約束:PK_UserId
唯一(Unique key)約束: UQ_UserCardId
默認(Default Key)約束 DF_UserPasswd
檢查(Check Key)約束 CK_Gender
外鍵(Foreign Key)約束: FK_SortId
--以上加棕色段是我定義表中的列名稱
打個比方:add constraint PK_UserId PRIMARY KEY (UserId)
--PK_UserId 是自定義約束名 , PRIMARY KEY 是約束類型, (UserId)是具體的約束聲明
㈤ SQL server語句所有的約束條件
1、主鍵約束(Primary Key constraint):要求主鍵列數據唯一,並且不允許為空。
2、唯一約束(Unique constraint):要求該列唯一,允許為空,但只能出現一個空值。
3、檢查約束(Check constraint):某列取值范圍限制,格式限制等,如有關年齡、郵箱(必須有@)的約束。
4、默認約束(Default constraint):某列的默認值,如在資料庫里有一項數據很多重復,可以設為默認值。
5、外鍵約束(Foreign Key constraint):用於在兩個表之間建立關系,需要指定引用主表的哪一列。
(5)約束名sql擴展閱讀:
對於存在外鍵約束的表,如果進行刪除非空的外鍵,可能會出現錯誤。 如果在 FOREIGN KEY 約束的列中輸入非 NULL 值,則此值必須在被引用的列中存在,否則將返回違反外鍵約束的錯誤信息。
列級 FOREIGN KEY 約束的 REFERENCES 子句僅能列出一個引用列,且該列必須與定義約束的列具有相同的數據類型。表級 FOREIGN KEY 約束的 REFERENCES 子句中引用列的數目必須與約束列列表中的列數相同。每個引用列的數據類型也必須與列表中相應列的數據類型相同。
㈥ sql約束名是什麼
constraint 約束名字
用法:
alt table 表名
add constraint 約束名 約束類型 (約束內容)
㈦ sql 約束名
SQL 約束(Constraints)
SQL 約束用於規定表中的數據規則。
如果存在違反約束的數據行為,行為會被約束終止。
約束可以在創建表時規定(通過 CREATE TABLE 語句),或者在表創建之後規定(通過 ALTER TABLE 語句)。