SQL SERVER 2约束的创建,删除,重命名

删除有依赖列

的时候提示我依赖于DF__CourseSelect__ID__48CFD27E无法删除,这种情况先删除约束DF__CourseSelect__ID__48CFD27E
再删除列即可

ALTER TABLE CourseSelection 
DROP constraint DF__CourseSelect__ID__48CFD27E
DROP COLUMN ID 

文档

创建表的时候添加约束

在这里插入图片描述

len获取字符串长度

不是汉子占两个内种

SELECT len(NAME) FROM Student s 

between

ADD CONSTRAINT NAME CHECK(len(NAME) between 0 and 6)

在这里插入图片描述

添加约束

ADD CONSTRAINT 约束名称 约束语句

ALTER TABLE Student 
ADD CONSTRAINT NAME_CHECk CHECK(len(NAME) < 6)

删除约束

DROP CONSTRAINT 定义的约束名

ALTER TABLE Student 
--ADD CONSTRAINT NAME_CHECk CHECK(len(NAME) < 6)
DROP CONSTRAINT NAME_CHECk

sys.objects

SELECT 
*
FROM sys.objects o 

在这里插入图片描述

查看当前表中有哪些约束

SELECT 
name,SCHEMA_NAME(schema_id),type_desc
FROM sys.objects o 
WHERE parent_object_id = (OBJECT_ID('dbo.Student'))
AND type IN ('C','F', 'PK')

在这里插入图片描述
OBJECT_ID获取id,也可用于判断数据库中是否有某表
(OBJECT_ID('dbo.Student'))获取Student表的id
WHERE parent_object_id = (OBJECT_ID('dbo.Student'))选择父级是Student表的约束,也就是约束属于Student表 从所有的变量中父级id是Student的集合,就是student表中的约束集合
AND type IN ('C','F', 'PK')是筛选 c -> CHECK F-> FOREIGN KEY constraint PK -> PRIMARY KEY constraint
更多OBJECT_ID相关
object-id docs

查看约束信息(ID,type,name)

查看结合上面student表中的约束NAME可以用(OBJECT_ID(‘dbo.NAME’))查看ID

(OBJECT_ID('dbo.NAME'))

如图
在这里插入图片描述
同理

(OBJECT_ID('dbo.Student'))

就是查看dbo下面Student表的ID
结构
在这里插入图片描述

约束重命名

sp_rename 'dbo.NAME','C_NAME'

在这里插入图片描述

在这里插入图片描述

--ALTER TABLE Student 
--ADD CONSTRAINT NAME_CHECk CHECK(len(NAME) < 6)
--DROP CONSTRAINT NAME_CHECk
--add constraint UQ_fClassId_A unique(NAME)
--EXEC sys.sp_helpconstraint @objname = 'Student'
--INSERT INTO Student (NAME,SEX)
--VALUES(N'北斗',N'女')
--添加约束
--ALTER TABLE Student 
--ADD CONSTRAINT NAME CHECK(len(NAME) < 6)
--DROP CONSTRAINT NAME
--ADD CONSTRAINT NAME CHECK(len(NAME) between 0 and 6)
--创建复合索引
--CREATE INDEX index_NAME ON Student (ID DESC,NAME DESC)
--删除索引
--DROP INDEX index_NAME ON Student
--重命名
--EXEC sp_rename 'Student.index_NAME','NEW_IX_NAME','INDEX'
--ALTER TABLE CourseSelection 
--drop constraint DF__CourseSelect__ID__48CFD27E
--DROP COLUMN ID  

--ALTER TABLE CourseSelection 
--ADD ID CHAR(16) NOT NULL DEFAULT (SUBSTRING(cast(RAND() AS char(18)),3,16))
--ADD CONSTRAINT CS_P_ID PRIMARY KEY (ID)

--DEFAULT (SUBSTRING(cast(RAND() AS char(18)),3,16)) FOR ID

--注释
--INSERT INTO Student (NAME)
--VALUES(N'大卫')

/*
SELECT 
cs.CourseID AS 课程ID,
COUNT(*) AS 选择人数,
(SELECT c2.NAME FROM Course c2 WHERE c2.ID = cs.CourseID)AS 课程名称
FROM CourseSelection cs 
GROUP BY cs.CourseID
*/
/*JOIN Course c 
ON c.ID =cs.CourseID*/

猜你喜欢

转载自blog.csdn.net/printf_hello/article/details/114867634