一、绪论
1、基本概念
数据:数据库中存储的基本对象,与其语义是不可分的
数据库(DB):长期储存
在计算机内,有组织
,可共享
的数据集合
数据库管理系统(DBMS):核心组件
数据库系统(DBS):计算机系统中引入数据库后的系统
2、数据库系统的组成
计算机硬件、软件、数据库、有关人员
3、发展过程
手工阶段——人工管理阶段——文件系统阶段——数据库系统阶段
4、数据库系统的三级模式结构
模式(逻辑模式、概念模式):反映数据库的整体观
外模式(子模式、用户模式):反映数据库的用户观、与用户有关
内模式(物理模式、存储模式):反映数据库的存储观
一个数据库只有一个逻辑模式
逻辑模式与外模式的关系一对多
外模式与应用的关系一对多
一个数据库只有一个内模式
5、两级映射
外模式/逻辑模式映射:保证数据的逻辑独立性
逻辑模式/内模式映射:保证数据的物理独立性
二、关系数据库
1、数据模型
数据模型是现实的模拟
应满足的要求:
较真实的模拟现实世界、容易被人理解、便于在计算机上实现
分为三个层次:
概念数据模型:
ER模型,与具体的DBMS无关
逻辑数据模型:
关系模型等,用于具体的DBMS的实现
物理数据模型:
与物理存储的介质有关
2、基本概念介绍
2.1域
相当于一个值域,一列属性的取值范围
2.2域的基数
域中包含值得个数
2.3元组
一行数据
2.4属性
一列元素
2.5码
2.5.1候选码
具有唯一性(根据候选码可以唯一的确定一个元组)、不可约性(没有任何一个真子集具有唯一性)
无论添加任何元组都可保证唯一性
2.5.2全码
候选码包含所有属性
2.5.3主码
从多个候选码中选出一个称作主码
2.5.4超码
候选码与其他属性的组合,具有唯一性,不具有不可约性
2.6关系模式
R(U,D,dom,F)
R:关系名,U:属性组,D:域,dom:属性向域的映像,F:依赖关系
2.7常用的关系操作
2.7.1选择
2.7.2投影
2.7.3连接
2.7.4除
2.7.5并
2.7.6交
2.7.7差
2.7.8数据更新
插入,更新,删除
三、SQL语言
1、概述
1.1、结构化查询语言
1.2、特点:
综合统一、面向集合的操作方式、高度非过程化…
2、DDL(数据定义语言)
操作对象 | 创建 | 删除 | 修改 | 说明 |
---|---|---|---|---|
模式 | create schema | drop schema | 必须拥有DBA权限或者create schema权限 | |
表 | create table | drop table | alter table | |
视图 | create view | drop view | ||
索引 | create index | drop index |
cascade
:级联,全部删除
restrict
:若有意定义的下属的数据库对象,解决该删除操作
3、DML(数据操纵语言)
3.1、select相关
select 想要显示的属性
from 查询的表
where 查询条件
group by (分组依据)
having 分组后的查询条件
order by 升序(ASC,默认为升序)/降序(DESC)
聚集函数 | 说明 | |
---|---|---|
count() | 计数 | 遇到空值时,除count(*)外都跳过空值,只处理非空值 |
max() | 最大值 | |
min() | 最小值 | |
sum() | 求和 | |
avg() | 求平均值 |
补充:列名和聚集函数
列名不允许与聚集函数一起混合使用,除“使用group by子句后,select子句的列表名称中只能出现分组属性和聚集函数”
3.2、distinct
消除取值重复的行
# eg.
select distinct sno # distinct对整行生效
from sc
where grade > 90
3.3、常用的查询条件
查询条件 | 谓词 | 说明 |
---|---|---|
比较 | =,>,<,<=,>=,<> | |
确定范围 | between … and … ,not between … and … | |
确定集合 | in,not in | |
空值 | in null ,is not null | |
多重条件 | and ,or ,not | |
字符匹配 | like , not like | _表示匹配一个字符;%表示匹配任意多个字符 |
# 字符匹配换码字符
select Cno,Ccredit
from Course
where Cname like '%DB#_Design%'
escape'#' # 表示'#'为换码字符
3.4、连接查询
3.5、嵌套查询
子查询不能使用 order by子句
3.6、插入
# 插入单个数据
insert into 表名(属性组)
values ();
# 插入子查询的结果
insert into 表名(属性组)
子查询
# eg.
insert into Deptage(Sdept,Avgage)
select Sdept,AVG(Sage)
from student
group by Sdept;
3.7、删除
delete
from 表名
where 删除条件
# 带子查询的
delete
from 表名
where 子查询
3.8、更新
update 表名
set 修改的值 # eg. Sage = Sage + 1
where 修改条件
# 带子查询的
update 表名
set 修改的值 # eg. Sage = Sage + 1
where 子查询
4、DCL(数据控制语言)
权限分配,见四、五章
5、TCL(事务控制语言)
见十、十一章
6、视图
1、概论
虚表,只存放视图的定义,不存放数据
create view 视图名
as
查询条件
# eg.
create view cs_s(sno,sname,grade)
as
select student.sno,sname,grade
from student,sc
where sdept = 'CS'
and student.sno = sc.sno
and sc.cno = 1
删除、修改类似对表的操作