数据库断⾔SQLver语⾔,ASSERTION
初中物理知识点总结断⾔
在SQL中可以使⽤数据定义语⾔中的CREATE ASSERTION语句,通过声明性断⾔(declarative asrtions)来指定更具⼀般性的约束。可以定义涉及多个表或聚集操作的⽐较复杂的完整性约束。
断⾔创建以后,任何对断⾔中所涉及关系的操作都会触发关系数据库管理系统对断⾔的检查,任何使断⾔不为真值的操作都会被拒绝执⾏。创建断⾔的语句格式
CREATE ASSERTION <;断⾔名> <CHECK⼦句>
每个断⾔都被赋予⼀个名字,<CHECK⼦句>中的约束条件与WHERE⼦句的条件表
达式类似。
[例1]限制数据库课程最多60名学⽣选修。
我也很想他CREATE ASSERTION_ASSE_SC_DB_NUM
凶残的近义词>欢乐颂应勤CHECK(60>=(SELECT count(*)#*此断⾔的谓词涉及聚集操作count的SQL语句*
FROM Cour,SC
WHERE SCO=COURSEO AND COURSEAME ='数据库')
每当学⽣选修课程时,将在SC表中插⼊⼀条元组(Sno, Cno, NULL), ASSE_SC_ DB_ NUM断⾔被触发检查。如果选修数据库课程的⼈数已经超过60⼈,CHECK⼦句返回值为“假”,对SC表的插⼊操作被拒绝。
[例2]限制每⼀门课程最多60名学⽣选修。
CREATE ASSERTION ASSE SC CNUMI
CHECK(60>=ALL(SELECT count()#此断⾔的谓词,涉及聚集操作count
FROM SC
#和分组函数group by的SQL语句
GROUP by cno )
);
[例3]限制每个学期每⼀门课程最多60名学⽣选修。
张曼玉身高
#⾸先修改SC表的模式,增加⼀个“学期(TERM)”的属性。淀粉和面粉
ALTER TABLE SC ADD TERM DATE;#先修改SC表,增加TERM属性,它的类型是DATE
笔记本电脑好
#然后定义断⾔:
CREATE ASSERTIONASSE SC CNUM2雪兰
CHECK(60>=ALL(lect count(*)from SC group by cno,TERM ));