什么是SQL里面的约束条件?

什么是SQL里面的约束条件?,第1张

约束是SQL Sever自动强制数据库完整的方式,约束定义了列中允许的取值。在SQL Sever中提供五种类型的完整性约束。1、NULL/NOT NULL 约束;2、UNIQUE约束(唯一约束);3、PRIMARY KEY 约束(主键约束);4、FOREIGN KEY 约束(外键约束)5、CHECK 约束\x0d\x0a例如:1、create table s(Sno char(6) not null,\x0d\x0a Sname char(10))\x0d\x0a 2、create table s(Sno char(6) ,\x0d\x0a Sname char(10) unique)\x0d\x0a 3、create table s(Sno char(6) primary key,\x0d\x0a Sname char(10))\x0d\x0a 4、create table SC(Sno char(6) not null foreign key references S(Sno))\x0d\x0a 5、create table SC(Sno char(6),\x0d\x0a Cno char(6),\x0d\x0a Score double check(Score>=0 and Score 回答于 2022-11-16

主键约束

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)

示例:

CREATE TABLE AA (

BB INT UNIQUE

)

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)

WHERE

tab.name = 'AA'

结果:

表名 约束名称 约束列名

AA UQ__AA__3214B5C34460231C BB


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6632559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存