域是一组具有相同数据类型的值的集合。 笛卡尔积:所有域的所有取值的一个组合,不能重复。 笛卡尔积的表示方法 笛卡尔积可表示为一个二维表 表中的每行对应一个元组,表中的每列对应一个域。 属性:关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute),n目关系必有n个属性。 候选码(Candidate key):若关系中的某一属性组的值(可以是多个属性)能唯一地标识一个元组,则称该属性组为候选码。 主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)。 主属性:候选码的诸属性称为主属性(Prime attribute)。
关系代数运算:并、差、交、笛卡尔积、投影、选择、连接、除, 选择、投影、并、差、笛卡尔基是5种基本操作 关系操作的特点 集合操作方式:操作的对象和结果都是集合,一次一集合的方式 ;高度非过程化:只要指出“做什么”,不需要描述“怎么做”。 关系代数:关系数据库的一种抽象的查询语言,用对关系的运算来表达查询。 投影:从关系R中取若干列组成新的关系(从列的角度)。 连接操作:从两个关系的广义笛卡尔积中选择属性间满足一定条件的元组。 若R和S具有相同的属性组,且连接的运算符θ为“=”,并且在连接的结果中去掉重复的属性组,这种连接称为自然连接。 查询至少选修了一门其直接先行课为5号课程的学生姓名 πSname(σCpno=’5’(Course ?? SC ??Student))
查询选修了全部课程的学生号码和姓名。πSno,Cno(SC)÷πCno(Course) ?? πSno,Sname (Student) 实体完整性和参照完整性: 关系模型必须满足的完整性约束条件 称为关系的两个不变性,应该由关系系统自动支持 设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码 。例1:学生关系的“专业号”与专业关系的主码“专业号”相对应 “专业号”属性是学生关系的外码; 表和视图:表是在数据库中存放的实际关系。视图是为了用户查询方便或根据数据安全的需要而建立的虚表。 触发器:一种特殊类型的存储过程,当表中发生特殊事件时执行。触发器主要用于保证数据的完整性。 (6) 约束:约束规则用于加强数据完整性。
SQL(Structured Query Language):结构化查询语言 SQL的功能:数据定义(DDL)、数据操纵(DML)、数据控制(DCL) 视图:从一个或几个基本表导出的表,数据库中只存放视图的定义而不存放视图对应的数据,视图是一个虚表, 用户可以在视图上再定义视图。 对 From 子句中的各关系,作笛卡尔积(×);对 Where 子句中的逻辑表达式进行选择(σ)运算,找出符合条件的元组;根据 Select 子句中的属性列表,对上述结果作投影( π)操作 . 使用列别名改变查询结果的列标题: SELECT Sname NAME,’Year of Birth: ’ BIRTH, 2007-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student; 指定DISTINCT关键词,去掉表中重复的行 SELECT DISTINCT Sno FROM SC; 确定集合 IN,NOT IN ;字符匹配 LIKE,NOT LIKE ;空 值 IS NULL,IS NOT NULL; WHERE Sname LIKE ‘__阳%’ 使用换码字符将通配符转义为普通字符,查询以”DB_”开头,且倒数第3个字符为 i的课程的详细情况。
SELECT * FROM Course WHERE Cname LIKE ‘DB_%i_ _’ ESCAPE ’ \ ‘; ORDER BY Grade DESC;降序,asc升序 查询学生总人数。 SELECT COUNT(*) FROM Student;、 查询选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC; 查询学生200215012选修课程的总学分数:SELECT SUM(Ccredit) FROM SC, Course WHER Sno=’200215012’ AND SC.Cno=Course.Cno; 求各个课程号及相应的选课人数。 SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno; 查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) >3; HAVING短语与WHERE子句的区别: 作用对象不同 WHERE子句作用于基表或视图,从中选择满足条件的元组 HAVING短语作用于组,从中选择满足条件的组。 UNION:将多个查询结果合并起来时,系统自动去掉重复元组。 UNION ALL:将多个查询结果合并起来时,保留重复组:SELECT * FROM Student WHERE Sdept= ‘CS’ UNION SELECT * FROM Student WHERE Sage<=19 查询选修课程1的学生集合与选修课程2的学生集合的交集:SELECT Sno FROM SC WHERE Cno=’ 1 ’ INTERSECT SELECT Sno FROM SC WHERE Cno=’2 ‘; 际上是查询既选修了课程1又选修了课程2的学生 SELECT Sno FROM SC WHERE Cno=’ 1 ’ AND Sno IN (SELECT Sno FROM SC WHERE Cno=’ 2 ‘); 不相关子查询:SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname= ‘ 刘晨 ’); 相关子查询:SELECT Sno, Cno FROM SC x WHERE Grade >=( SELECT AVG(Grade) FROM SC y WHERE y.Sno=x.Sno ) ; 从外层查询中取出SC的一个元组x,将元组x的Sno值(200215121)传送给内层查询。 查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄 :SELECT Sname,Sage FROM Student WHERE Sage < ANY (SELECT Sage FROM Student WHERE Sdept= ’ CS ‘) AND Sdept <> ‘CS ’ ; SQL的数据定义功能: 模式定义(drop schema)、表定义、视图和索引(index)的定义 定义模式实际上定义了一个命名空间 在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。