1 实体完整性
所谓实体完整性是指:若属性A(A是一个或一组)是基本关系R的主属性,则A不能取空值。
hint:所谓空值就是“不知道”或者“不存在”的值;主码中的属性被称为主属性。
2参照完整性
现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体中的联系都是用关系来描述的。
所谓参照完整性是指:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应(基本关系R与S不一定是不同的关系),则对于R中每个元祖在F上的值必须为:
①或者取空值
②或者等于S中某个元组的主码值
附:数据库常见面试题(附sql代码)
================分割线===========================
use school; create table Student( Sno char(11) primary key, Sname char(20) unique not null, Ssex char(2) ); create table Teacher( Tno char(5) primary key, Tname char(20) not null ); create table Course( Cno char(4) primary key, Cname char(40) unique not null, Tno char(5), foreign key(Tno) references Teacher(Tno) ); create table SC( Sno char(11), Cno char(4), Score smallint, primary key(Sno,Cno), foreign key(Sno) references Student(Sno), foreign key(Cno) references Course(Cno) #表级完整性约束 ); group by,order by,having三个同时使用的顺序 group by > having > order by
================分割线===========================
tb_grade
SET SQL_SAFE_UPDATES=0; delete from tb_grade; insert into tb_grade values('张三','语文',81); insert into tb_grade values('张三','数学',75); insert into tb_grade values('李四','语文',76); insert into tb_grade values('李四','数学',90); insert into tb_grade values('王五','语文',81); insert into tb_grade values('王五','数学',100); insert into tb_grade values('王五','英语',90); SELECT distinct name FROM tb_grade a WHERE name NOT IN (SELECT name FROM tb_grade WHERE tb_grade.grade < 80) 该语句的思路是:查询每科成绩都大于80分的学生的姓名,也就是说只要有一科分数小于80分的就不满足条件