数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

一、概念模型

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
Entity 实体 Relationship 关系

二、系统模式

1、概念

Schema 模式 Instance 实例
“学生选课数据库”模式:学生、课程和学生选课3个关系模式组成
学生表:Student(Sno ,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno ,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno ,Grade)

2、三级模式

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
模式(逻辑模式):
全体数据的逻辑结构和特征的描述
数据库系统模式结构的中心

外模式(子模式/用户模式):
局部数据的逻辑结构和特征的描述
外模式是模式的子集
外模式(1)———>应用(N)

内模式(物理模式):
数据物理结构和存储方式的描述
记录的存储方式(顺序、堆、hash)
索引的组织方式(B+树、Bitmap、hash)

三、关系数据库

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
Domain 域 Tuple 元组 Key 码
关系模式(Relation Schema):
R(U,D,DOM,F)

1、关系完整性

实体完整性(Entity Integrity)
关系的主属性不能取空值(空、Null、无意义)

参照完整性(Referential Integrity)
关系与关系之间的引用(外码只可取空值或已存在的值)

用户定义完整性(User-defined Integrity)
用户定义的约束条件(唯一、非空、限定范围)

2、关系代数

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

选择σ(Selection)

查询信息系(IS系)全体学生:
σ Sdept=‘IS’ (Student)

查询信息系年龄小于20岁的学生:
σ Sdept='IS’∧Sage<20(Student)

投影π(Projection)

查询CS系的学生姓名:
π SnameSdept=‘CS’(Student))

查询没有选过课的学号:
π Sno(Student)- π Sno(SC)

连接⋈(Join)☆☆☆

等值连接(Equijoin) θ为“=”的连接运算称为等值连接
自然连接(Natural Join) 两关系中相同属性组等值连接(去掉重复列)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
悬浮元组(Dangling Tuple)
R与S自然连接时,S中不存在与R中公共属性相等的元组,这些被舍弃的元组就是悬浮元组;为了保留这些元组,就需要使用外连接。

外连接(Outer Join)
悬浮元组保存在结果关系中,其他属性上置为NULL

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

左外连接(Left Outer Join)
只保留左边关系R中的悬浮元组

右外连接(Right Outer Join)
只保留右边关系S中的悬浮元组
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

除运算÷(Division)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

四、SQL语言

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

1、模式的定义

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

CREATE

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

DROP

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

2、基本表的定义

CREATE

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

ALTER

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

DROP

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

3、索引的定义

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

五、数据查询

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

1、单表查询

DISTINCT

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

BETWEEN

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

IN

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

LIKE

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

IS NULL

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

ORDER BY

不写默认为ASC升序
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

聚集函数

存在组的时候分别作用于组上,不存在组的时候作用于整体
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

GROUP BY☆☆☆

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

HAVING☆☆☆

WHERE子句作用于基表或视图,选择满足条件的元组
HAVING短语作用于组,选择满足条件的组

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

综合

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

2、连接查询

等值连接(列值有冗余)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

自然连接(无冗余)

通过确定列数列名来除去冗余部分
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

自身连接

与自身连接,通过给表起别名实现
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

外连接☆☆☆

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

多表连接

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

3、嵌套查询

带有IN谓词的子查询

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

带有比较运算符的子查询

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

带有ANY或ALL谓词的子查询

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

带有EXISTS谓词的子查询☆☆☆

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
↑↑↑该例可以这样理解:
筛选出一个学生,没有一个Course表中的课程不在SC表中该学生选修的课里
意思就是该学生选修了所有Course表中的课程。
↓↓↓同理:
筛选出一个学生,学号为201215122的学生选修的课程没有一个不在该学生选修的课程里
意思就是该学生至少选修了所有201215122学生选修的课程。
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

4、集合查询

并(UNION)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

交(INTERSECT)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

差(EXCEPT)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

5、空值处理

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

六、数据更新

1、插入元组(INSERT)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

2、插入子查询结果(INSERT + SELECT)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

3、修改数据(UPDATE)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

4、删除数据(DELETE)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

七、视图

视图的特点:
①虚拟的表,从一个或多个表(或视图)中导出的虚表
②只存放定义,不存放具体数据
③会随着表中的数据变化而变化

1、建立视图(CREATE)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
WITH CHECK OPTION语句保证修改视图时仍满足选择条件

2、删除视图(DROP)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)

3、更新视图(UPDATE)

数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)
对视图的更新会被转换成对表的更新

但一些视图是不可更新的,例如:
数据库系统学习笔记(基本概念、关系代数、SQL、数据查询、数据更新、视图)