数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习
一、概念模型
Entity 实体 Relationship 关系
二、系统模式
1、概念
Schema 模式 Instance 实例
“学生选课数据库”模式:学生、课程和学生选课3个关系模式组成
学生表:Student(Sno ,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno ,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno ,Grade)
2、三级模式
模式(逻辑模式):
全体数据的逻辑结构和特征的描述
数据库系统模式结构的中心
外模式(子模式/用户模式):
局部数据的逻辑结构和特征的描述
外模式是模式的子集
外模式(1)———>应用(N)
内模式(物理模式):
数据物理结构和存储方式的描述
记录的存储方式(顺序、堆、hash)
索引的组织方式(B+树、Bitmap、hash)
三、关系数据库
Domain 域 Tuple 元组 Key 码
关系模式(Relation Schema):
R(U,D,DOM,F)
1、关系完整性
实体完整性(Entity Integrity)
关系的主属性不能取空值(空、Null、无意义)
参照完整性(Referential Integrity)
关系与关系之间的引用(外码只可取空值或已存在的值)
用户定义完整性(User-defined Integrity)
用户定义的约束条件(唯一、非空、限定范围)
2、关系代数
选择σ(Selection)
查询信息系(IS系)全体学生:
σ Sdept=‘IS’ (Student)
查询信息系年龄小于20岁的学生:
σ Sdept='IS’∧Sage<20(Student)
投影π(Projection)
查询CS系的学生姓名:
π Sname(σSdept=‘CS’(Student))
查询没有选过课的学号:
π Sno(Student)- π Sno(SC)
连接⋈(Join)☆☆☆
等值连接(Equijoin) θ为“=”的连接运算称为等值连接
自然连接(Natural Join) 两关系中相同属性组等值连接(去掉重复列)
悬浮元组(Dangling Tuple)
R与S自然连接时,S中不存在与R中公共属性相等的元组,这些被舍弃的元组就是悬浮元组;为了保留这些元组,就需要使用外连接。
外连接(Outer Join)
悬浮元组保存在结果关系中,其他属性上置为NULL
左外连接(Left Outer Join)
只保留左边关系R中的悬浮元组
右外连接(Right Outer Join)
只保留右边关系S中的悬浮元组
除运算÷(Division)
四、SQL语言
1、模式的定义
CREATE
DROP
2、基本表的定义
CREATE
ALTER
DROP
3、索引的定义
五、数据查询
1、单表查询
DISTINCT
BETWEEN
IN
LIKE
IS NULL
ORDER BY
不写默认为ASC升序
聚集函数
存在组的时候分别作用于组上,不存在组的时候作用于整体
GROUP BY☆☆☆
HAVING☆☆☆
WHERE子句作用于基表或视图,选择满足条件的元组
HAVING短语作用于组,选择满足条件的组
综合
2、连接查询
等值连接(列值有冗余)
自然连接(无冗余)
通过确定列数列名来除去冗余部分
自身连接
与自身连接,通过给表起别名实现
外连接☆☆☆
多表连接
3、嵌套查询
带有IN谓词的子查询
带有比较运算符的子查询
带有ANY或ALL谓词的子查询
带有EXISTS谓词的子查询☆☆☆
↑↑↑该例可以这样理解:
筛选出一个学生,没有一个Course表中的课程不在SC表中该学生选修的课里
意思就是该学生选修了所有Course表中的课程。
↓↓↓同理:
筛选出一个学生,学号为201215122的学生选修的课程没有一个不在该学生选修的课程里
意思就是该学生至少选修了所有201215122学生选修的课程。
4、集合查询
并(UNION)
交(INTERSECT)
差(EXCEPT)
5、空值处理
六、数据更新
1、插入元组(INSERT)
2、插入子查询结果(INSERT + SELECT)
3、修改数据(UPDATE)
4、删除数据(DELETE)
七、视图
视图的特点:
①虚拟的表,从一个或多个表(或视图)中导出的虚表
②只存放定义,不存放具体数据
③会随着表中的数据变化而变化
1、建立视图(CREATE)
WITH CHECK OPTION语句保证修改视图时仍满足选择条件
2、删除视图(DROP)
3、更新视图(UPDATE)
对视图的更新会被转换成对表的更新
但一些视图是不可更新的,例如: