库的四个概念
- 数据Data
- 数据库Database:长期存储的大量数据集合
- 数据库管理系统DBMS:位于用户和操作系统之间的数据管理软件
- 数据库系统
数据管理的三个阶段
人工管理(不独立依赖程序)-文件系统(独立性差)-数据库系统
人工管理 | 人工管理 | 人工管理 |
---|---|---|
不独立依赖程序 | 独立性差 | 物理,逻辑独立 |
面向某一应用程序 | 某一应用 | 现实世界 |
数据模型
现实世界→概念模型(ER图)→逻辑模型(关系表)→物理模型
ER图
- 实体E 矩形
- 属性 椭圆形
- 实体联系R 菱形 1:1,1:n,n:m
数据模型
层次模型,网状模型,关系模型
层次模型
pass
网状模型
pass
关系模型
- 关系 对应的表
- 元组 一行
- 属性 一列
- 主码 key 候选码中的一个码,唯一确定一个元组
完整性
实体完整性,参照完整性,用户定义完整性
数据库结构
三模式
内模式-模式-外模式(多个)
- 内模式:数据物理结构和存储方式
- 模式:逻辑模式,全体逻辑结构和特征的描述,所有数据视图
- 外模式:局部数据的逻辑结构和特征,是与某一应用有关数据逻辑表示和视图。是模式的子集
两级映射
外模式/模式 保证数据逻辑独立性
模式/内模式 保证数据物理独立性
关系三类约束
实体完整性
关系主属性不能为空
参照完整性
应该值得是关系中的外键
可以为空值,或者为某个元组的主码
用户定义完整性
针对性的约束,反应某一具体应用所涉及的数据必须满足的语义要求
关系代数
并:∪
差:−
交:∩
笛卡尔积:×
选取:σ
投影:π
自然连接:⋈
除:÷
象集
理解:一个属性的一个值,对应另一个属性值的集合
x1 | z1 |
---|---|
x1 | z2 |
x1 | z3 |
x2 | z2 |
x2 | z3 |
x1的象集 {z1,z2,z3}
x2的象集{z2,z3}
并
R∪S
RS都具有相同数量n的属性
R
A | B |
---|---|
a1 | b2 |
a2 | b2 |
S
A | B |
---|---|
a3 | b1 |
a2 | b2 |
R∪S
A | B |
---|---|
a1 | b2 |
a2 | b2 |
a3 | b1 |
差
R-S=R-R∩S
A | B |
---|---|
a1 | b2 |
交
R∩S
A | B |
---|---|
a2 | b2 |
笛卡尔积
R×S
R.A | R.B | S.A | S.B |
---|---|---|---|
a1 | b2 | a3 | b1 |
a1 | b2 | a2 | b2 |
a2 | b2 | a3 | b1 |
a2 | b2 | a2 | b2 |
选择
选择关系中的某一行
σA=a2 (R)
A | B |
---|---|
a2 | b2 |
投影
选择关系中的某一列
πA(R)
A | |
---|---|
a1 | |
a2 |
连接
R
A | B | C |
---|---|---|
a1 | b1 | 5 |
a1 | b2 | 6 |
a2 | b3 | 8 |
a2 | b4 | 12 |
S
B | E |
---|---|
b1 | 3 |
b2 | 7 |
b3 | 10 |
b3 | 2 |
b5 | 2 |
等值连接
R⋈S(R.B=S.B)
A | R.B | C | S.B | E |
---|---|---|---|---|
a1 | b1 | 5 | b1 | 3 |
a1 | b2 | 6 | b2 | 7 |
a2 | b3 | 8 | b3 | 10 |
a2 | b3 | 12 | b3 | 2 |
自然连接
R⋈S
A | B | C | E |
---|---|---|---|
a1 | b1 | 5 | 3 |
a1 | b2 | 6 | 7 |
a2 | b3 | 8 | 10 |
a2 | b3 | 12 | 2 |
外连接
A | B | C | E |
---|---|---|---|
a1 | b1 | 5 | 3 |
a1 | b2 | 6 | 7 |
a2 | b3 | 8 | 10 |
a2 | b4 | 8 | 2 |
a2 | b4 | 12 | NULL |
NULL | b5 | NULL | 2 |
左外连接
同属性,以左边为基本,右边没有的填null
A | B | C | E |
---|---|---|---|
a1 | b1 | 5 | 3 |
a1 | b2 | 6 | 7 |
a2 | b3 | 8 | 10 |
a2 | b3 | 8 | 2 |
a2 | b4 | 12 | NULL |
右外连接
A | B | C | E |
---|---|---|---|
a1 | b1 | 5 | 3 |
a1 | b2 | 6 | 7 |
a2 | b3 | 8 | 10 |
a2 | b3 | 8 | 2 |
NULL | b5 | null | 2 |
除
就是象集包含另外一个关系的全部就。。。
举个栗子吧
R
A | B |
---|---|
2 | 4 |
3 | 1 |
3 | 3 |
S
B | |
---|---|
1 | |
3 |
R÷S
A | |
---|---|
3 |
SQL
SQL功能 | 动词 |
---|---|
数据查询 | SELECT |
数据定义 | CREATE,DROP,ALTER |
数据操纵 | INSERT,UPDATE,DELETE |
数据控制 | GRANT,REMOVE |
数据定义
对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式(数据库) | create schema(database) | drop schema(database) | |
表 | create table | drop table | alter table |
视图 | create view | drop view | |
索引 | create index | drop index | alter index |
student
1 | create table student( |
course
1 | create table course( |
sc
1 | create table sc( |
修改表/删除表
1 | alter table student alter column sage int; |
索引
create[unique] [cluster] index <索引名> on student(sno)
1 | create unique index stusno on student(sno); |
查询
- select语句:指定要显示的属性列
- from:指定查询的对象(表,视图)
- where:指定查询条件
- group by:对查询结果分组
- having:只有满足指定条件组才会输出
- order by:对查询列值 升序,或降序
select单表查询
1 | --等价于选择全部 select * |
举个栗子
1 | -- 查询学生总人数 |
group by
1 | --- 查询各课程选课人数 |
连接查询
等值连接,非等值连接
1 | -- 多表查询,相当于等值连接 |
自连接
1 | -- 查询每一门课的课程名,和先修课名称 |