文章目录
删除有依赖列
的时候提示我依赖于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*/