说在前面
这篇文章是我在修《数据库原理》时做的笔记,转载请注明来源。
请复制:本文来自瀚可,转载请注明来源。https://hankzhangcn.gitee.io/2020/05/06/数据库原理复习/
第一章 绪论
1.1 数据库系统概述
1.1.1 四个基本概念
数据
数据库中存储的基本对象
定义
描述事务的符号记录
种类
文本,图像,音视频,档案记录等
特点
与其语义密不可分,如93.
必须指出是人数?还是长度?
数据库
长期存在计算机,有组织,可共享的大量数据集合
DBMS
是系统软件(大型的软件系统)
功能
- 提供数据定义语言(ddl,如SQL)来定义数据库中的数据对象
 - 数据的组织、储存、管理。
 - 数据操作(增改查删)
 - 事务管理运行管理。
 - 数据库的建立和维护
 
DBS
在计算机系统中引入数据库后有:
- 数据库
 - DBMS
 - 应用工具
 - 数据库管理员DBA
 
1.1.2 数据管理技术的产生和发展
暂略
1.1.3 特点
暂略
第二章
暂略
第三章 关系数据库标准语言SQL
概述
| 章节 | 要点 | 
|---|---|
| 3.1 SQL概述 | × | 
| 3.2 学生-课程数据库 | × | 
| 3.3 数据定义 | ⭐ | 
| 3.4 数据查询 | ⭐ | 
| 3.5 数据更新 | - | 
| 3.6 视图 | |
| 3.7 小结 | 
3.1 SQL概述
3.1.1 SQL 的产生与发展
略
3.1.2 SQL的特点
| 特点 | 解释 | 
|---|---|
| 综合统一 | |
| 高度非过程化 | //只要提出“做什么”,无须了解存取路径 | 
| 面向集合的操作方式 | |
| 以同一种语法结构提供多种使用方式 | //可独立,可嵌入(c,c++等) | 
| 语言简洁,易学易用 | 
| 动词 | |
|---|---|
| 数据定义 | Create、drop、ALTER | 
| 数据查询 | select | 
| 数据操纵 | Insert、delete、update | 
| 数据控制 | Grant、revoke | 
3.1.3 SQL的基本概念
三级结构
图暂略
基本表
- 本身独立存在的表
 - SQL中一个关系就对应一个基本表
 - 一个(或多个)基本表对应一个存储文件
 - 一个表可以带若干索引
 
储存文件
- 逻辑结构组成了数据库的内模式
 - 物理结构是任意的,对用户透明
 
视图
- 数据库中只存放视图的定义而不存放视图对应的数据视图是一个虚表
 - 从一个或几个基本表导出的表
 - 用户可以在视图上再定义视图
 
3.2 S-C表
学生-课程模式 S-C :    
- 学生表:
Student- (Sno,Sname,Ssex,- Sage,Sdept) - 课程表:
Course(Cno,- Cname,Cpno,Ccredit) - 学生选课表:
SC(Sno,Cno,Grade) 
3.3 数据定义
| 操 作 对 象 | 操 作 方 式 | ||
|---|---|---|---|
| 创 建 | 删 除 | 修 改 | |
| 数据库 | CREATE DATABASE | 
DROP DATABASE | 
ALTER DATABASE | 
| DATABASE | |||
| 模式 | CREATE SCHEMA | 
DROP SCHEMA | 
|
| SCHEMA | |||
| 表 | CREATE TABLE | 
DROP TABLE | 
ALTER TABLE | 
| TABLE | |||
| 视 图 | CREATE VIEW | 
DROP VIEW | 
|
| VIEW | |||
| 索 引 | CREATE INDEX | 
DROP INDEX | 
|
| INDEX | 
3.3.1 数据库
| 操作 | 方法 | 
|---|---|
| 查看所有的数据库 | show databases; | 
| 创建s_t数据库 | CREATE  DATABASE  s_t; | 
| 选择数据库 | use s_t; | 
| 删除数据库 | DROP  DATABASE  s_t | 
3.3.2 模式
创建一个模式
并且可以在概念上将其看作是包含表、视图和权限定义的对象。
| 操作 | 方法 | 
|---|---|
| 创建模式 | CREATE SCHEMA <模式名> AUTHORIZATION <用户名> | 
[例1]
定义一个学生-课程模式S_T
1  | CREATE SCHEMA ‘S_T’ AUTHORIZATION WANG  | 
为用户WANG定义了一个模式S_T
[例2]
1  | CREATE SCHEMA AUTHORIZATION WANG  | 
<模式名>隐含为用户名WANG
如果没有指定<模式名>,那么<模式名>隐含为<用户名>
在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
1  | CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]  | 
[例3]
MySQL不支持
1  | CREATE SCHEMA TEST AUTHORIZATION ZHANG  | 
为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1。
删除模式
1  | DROP SCHEMA <模式名> <CASCADE|RESTRICT>  | 
CASCADE(级联)
- 删除模式的同时把该模式中所有的数据库对象全部删除
 
RESTRICT(限制)
- 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该- 删除语句的执行。
 - 当该模式中没有任何下属的对象时才能执行。
 
3.3.3 基本表的定义、删除与修改
定义基本表
1  | CREATE TABLE <表名>  | 
有5类约束
- 主关键字约束(
Primary) - 外关键字约束(
Foreign) - 唯一性约束(
Unique) - 检查约束(
Check) - 默认约束(
Default) 
[例5]
建立“学生”表Student,学号是主码,姓名取值唯一。
1  | CREATE TABLE Student(  | 
[例6]
建立一个“课程”表Course
1  | CREATE TABLE Course(  | 
[例7]
建立一个“学生选课”表SC
1  | CREATE TABLE SC(  | 
修改基本表
1  | ALTER TABLE <表名>  | 
[例8]
向Student表增加“入学时间”列,其数据类型为日期型。
1  | ALTER TABLE Student ADD S_entrance DATE  | 
不论基本表中原来是否已有数据,新增加的列一律为空值。
[例9]
将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
1  | ALTER TABLE Student ALTER COLUMN Sage INT  | 
[例10]
增加课程名称必须取唯一值的约束条件。
1  | ALTER TABLE Course ADD UNIQUE(Cname)  | 
删除基本表
1  | DROP TABLE <表名>[RESTRICT| CASCADE]  | 
[例11]
删除Student表
1  | DROP TABLE Student CASCADE  | 
基本表定义被删除,数据被删除
表上建立的索引、视图、触发器等一般也将被删除 
[例12]
若表上建有视图,选择RESTRICT时表不能删除	
1  | CREATE VIEW IS_Student  | 
如果选择CASCADE时可以删除表,视图也自动被删除 
1  | DROP TABLE Student CASCADE  | 
3.3.4 索引的建立与删除
索引目的
- 加快查询
 
关于方法
- B+树索引具有动态平衡的优点
 - HASH索引具有查找速度快的特点
 - 用B+树,还是HASH索引 则由具体的RDBMS来决定。
 
建立索引
1  | CREATE [UNIQUE INDEX <索引名>  | 
UNIQUE:相当于增加了一个UNIQUE约束。CLUSTER:聚簇索引。有主键就用主键,如果没有就用唯一非空,还没有就会自动建立一个。
一些提示
- 在最经常查询的列上建立聚簇索引以高查询效率
 - 一个基本表上最多只能建立一个聚簇引
 - 聚簇索引的适用范围
 - 很少对基表进行增删操作
 - 很少对其中的变长列进行修改操作
 - 经常更新的列不宜建立聚簇索引
 - 用<次序>指定索引值的排列次序
升序:ASC;降序:DESC;缺省值:ASC 
删除索引
1  | DROP INDEX <索引名>  | 
[例13]
1  | CREATE CLUSTER INDEX Stusname  | 
在Student表的Sname列上建立一个聚簇索引
[例14]
为学生-课程数据库中的Student,Course,SC三个表建立索引。
1  | CREATE UNIQUE INDEX Stusno ON Student(Sno)  | 
Student表按学号升序建唯一索引Course表按课程号升序建唯一索引SC表按学号升序和课程号降序建唯一索引
[例15]
删除Student表的Sname索引
1  | DROP INDEX Sname on student;  |