数据库系统概论(第5版教材)

第一章 绪论

1、**数据(Data)**是描述事物的符号记录;

2、数据库系统的构成:数据库 、数据库管理系统(及其开发工具) 、应用程序和数据库管理员;

3、数据库是长期存储在计算机内、有组织、可共享的大量数据的集合;

4、数据库系统的特点:数据结构化、数据共享性高和冗余度低、数据独立性高和统一的数据控制功能;

5、**实体:**客观存在并且可以相互区别的事物;

**码:**唯一标识实体的属性集;

6、数据模型的重要组成要素: 数据结构、数据操作和数据的完整性约束条件;

7、**E-R图:**用矩形表示实体、椭圆形表示关系、椭圆表示属性;

8、关系模型:关系:一个关系对应一张表;

元组:表中的一行为一个元组;

属性:表中的一列为一个属性;

9、三级模式间存在两种映射:逻辑模式与外模式间,逻辑模式与内模式间

10、数据库中模式/内模式映象是唯一的;


第二章 关系数据库

1、关系模式是 、关系是值;

关系模型的三个组成部分分别是:++++数据结构++++ 、++++数据操作++++ 和++++数据完整性规则++++。

2、关系的三类完整性约束:实体完整性和参照完整性,用户定义的完整性;

3、逻辑运算和关系运算:

选择:在关系R中选择满足给定条件的诸元组 σF(R) ---R为表名,

F为条件 σSdept = 'IS' (Student)

投影:从R中选择出若干属性列组成新的关系πA(R) --- R为表名,A属性列 πSdept(Student)

连接: 连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组

等值连接:从关系R与S中选取A、B属性值相等 的那些元组,为R.B和S.B;

自然连接:R和S具有相同的属性组B , 表中只列一个B;

自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

4、

① 等值连接要求相等的分量,但不一定是公共属性,而自然连接要求相等的分量必须是公共属性

② 等值连接不做投影运算,而自然连接要把重复的属性去掉

③ 自然连接一定是等值连接,但等值连接不一定是自然连接。

5、自然连接的含义:R和S具有相同的属性组B


第三章数据库的基本操作

1、数据库的基本操作:

创建数据库 CREATE DATABASE<数据库文件名>;

查看数据库 SHOW DATABASES ;

打开数据库 USE <数据库文件名>;

修改数据库参数 ALTER DATABASE|SCHEMA [数据库文件名];

删除数据库 DROP DATABASE<数据库文件名>;

2、表结构:

3、表的基本操作

①创建表

CREATE TABLE [IF NOT EXISTS] <表名> [(<字段名> <数据类型> [完整性约束条件][,...])] ;

IF NOT EXISTS:避免重复创建

完整性约束条件:主键PRIMARY KEY()、外键FOREIGN KEY()、索引、唯一性UNIQUE(),NULL值等

②查看表

SHOW TABLES ; DESC <表名>

③修改表

ALTER TABLE <表名> {

**ADD \<新字段名\> \<数据类型\>** \[\<完整性约束条件\>\]\[,...\]

|[ADD INDEX [索引名](索引字段,...)]

|[MODIFY COLUMN <字段名> <新数据类型>[<完整性约束条件>]]

|[DROP {COLUMN <字段名>| <完整性约束名>}[,...]]

|DROP INDEX <索引名>

|RENAME [AS] <新表名> };

④删除表

DROP TABLE [IF EXISTS] <表名> [,<表名>...];

4、 表数据操作

①添加数据

INSERT INTO <表名> [<字段名>[,...]]

VALUES (<常量>[,...]);

②更新数据

UPDATE <表名> SET <字段名> =<表达式>[,...] [WHERE <条件>];

③删除数据

DELETE FROM <表名> [WHERE<条件>];

删除表中所有记录 也可以用truncate table语句:truncate table <表名>;

④查看数据

SELECT * FROM <表名>;

5、索引

①索引的建立

CREATE [UNIQUE|FULLTEXT|SPATIAL]INDEX <索引名称> [USING index_type] ON <表名> (索引字段[ASC|DESC][,...]);

②索引的删除

DROP INDEX <索引名> ON <表名>;

ALTER TABLE <表名> DROP INDEX <索引名> ;

6、MySQL中的索引有:主索引、全文索引、惟一索引、普通索引

①简单查询

SELECT <查询项>

FROM <查询来源 数据表/视图> [

WHERE <条件表达式>] [

GROUP BY <分组表达式>] [

HAVING <分组条件表达式>] [

ORDER BY <排序项>] [

LIMIT <限制结果行数>] [

UNION <合并查询 其他查询语句>];

②连接查询

FROM <表名1> [别名1] , <表名2> [别名2] [,...] WHERE <连接条件表达式>

例:select a.*,b.* from student a,sc b where a.sno=b.sno;

FROM <表名1> [别名1] INNER JOIN <表名2> [别名2] ON <连接条件表达式>


第四章 数据库安全性

1、授权与回收

①GRANT语句的一般格式:

GRANT <权限>[,<权限>]...

ON \<对象类型\> \<对象名\>

TO <用户>[,<用户>]...

WITH GRANT OPTION\]; 语义:将对指定操作对象的指定操作权限授予指定的用户 ②REVOKE语句的一般格式为: **REVOKE** \<权限\>\[,\<权限\>\]... \[ON \<对象类型\> \<对象名\>

FROM <用户>[,<用户>]...;

授予的权限可以由DBA或其他授权者用REVOKE语句收回

2、角色的创建 CREATE ROLE <角色名>


第五章 数据库完整性

1、关系模型的实体完整性 CREATE TABLE中用PRIMARY KEY定义

2、关系模型的参照完整性 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码

REFERENCES短语指明这些外码参照哪些表的主码


第六章 关系数据理论

1、各种范式之间存在联系:

1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF

2、

1NF:

如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF

2NF:

若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。

3NF:

若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码

BCNF:

若R∈BCNF,所有非主属性对每一个码都是完全函数依赖; 所有的主属性对每一个不包含它的码,也是完全函数依赖;没有任何属性完全函数依赖于非码的任何一组属性;等价于:每一个决定属性因素都包含码。

将一个关系从1NF规范到2NF,目的是消除**++++非主属性对键的部分函数依赖++++**,

若进一步规范到3NF,目的是消除**++++非主属性对键的传递函数依赖++++**。


第七章 数据库设计

1、数据库设计的基本步骤

①**需求分析:**是整个设计过程的基础 (1)信息需求分析 (2)操作需求分析

②**概念结构设计:**将需求分析的结果用一种工具进行形式化的定义和描述,是整个DB设计的关键。如:E-R图。

③**逻辑结构设计:**概念模型→数据模型,根据需求分析和概念设计的结果,选择合适的数据模型,并选用某一设计方法构造一数据库模式。

**④物理设计:**选择合适的物理结构。 包括存储结构和存取方法

**⑤实施阶段:**根据逻辑设计和物理设计建立数据库;编制和调试应用程序;试运行;

⑥DB运行和维护阶段:根据运行记录对DB进行评价 根据评价对DB调整和修改

2、E_R图转换为关系模式,实质就是将实体和联系转换为关系模式

3、过程化SQL的基本结构是块。所有的SQL程序都是由块组成的,一般由三部分组成:声明部分,可执行部分,错误处理部分。

4、块结构

块结构如下所示:

[DECLARE]

/* 声明部分 -- 这部分包括PL/SQL变量,常量,游标, 用户自定义异常等的定义 */

BEGIN

/* 可执行部分 -- 这部分包括SQL语句及过程化的语句,这部分是程序的主体 */ [EXCEPTION]

/* 错误处理部分 -- 这部分包括错误处理语句*/

END;

5、DECLARE部分

语法如下:

变量名 [CONSTANT] 数据类型 [NOT NULL][:= | DEFAULT] 表达式]

说明: 1.声明常量时必须加关键字CONSTANT,常量在声明时必须初始化,否则在编译时会出错。

变量赋值

1.直接赋值 变量名 := 常量或表达式; 例如:v_num NUMBER:=5;

2.通过SELECT..INTO赋值 SELECT 字段 INTO 变量名

6、流程控制

语法如下:

IF 条件1 THEN

语句体1;

ELSIF 条件2 THEN 语句体2;

...

ELSE 语句体n;

END IF;

注意: 每个IF语句以相应的END IF语句结束; IF语句后必需有THEN语句,IF...THEN后不跟语句结束符";"; 一个IF语句最多只能有一个ELSE语句。 IF条件语句最多只能执行一个条件分支,执行之后跳出整个语句块。
循环语句的基本形式有以下三种。

(1)简单循环 其语法如下:

LOOP

循环体;

EXIT退出语句;\] //满足退出条件,退出循环 END LOOP; EXIT退出语句的语法如下: a.IF 条件表达式 THEN EXIT; END IF; b.EXIT WHEN 条件表达式; (2)WHILE循环 语法如下: WHILE 条件表达式 LOOP 循环体; END LOOP; 说明: 当while条件表达式为TRUE时,执行循环体中的内容,如果结果为FALSE,则结束循环。 】 (3)FOR循环 语法如下: FOR counter IN \[REVERSE\] start_range..end_range LOOP 循环体; END LOOP; 说明: FOR循环的循环次数是固定的; counter是一个隐式声明的变量,不用在DECLARE中定义。 start_range和end_range指明了循环的次数。 REVERSE表示循环变量从最大值向最小值叠代。

7、创建存储过程:

在MySQL系统中,可以使用CREATE PROCEDURE语句创建存储过程。

其语法格式如下:

CREATE PROCEDURE <存储过程名称>

([IN|OUT|INOUT] 参数 数据类型[,...])

AS

BEGIN

过程体;

END;

相关推荐
csdn_aspnet4 分钟前
用 MySQL 玩转数据可视化:从底层数据到 BI 工具的桥接
数据库·mysql·信息可视化·bi
wb0430720110 分钟前
一次jvm配置问题导致的数据库连接异常
服务器·jvm·数据库·后端
酷酷的崽79810 分钟前
搭载cpolar,让PostgreSQL数据库远程访问超丝滑
数据库·postgresql
API开发17 分钟前
apiSQL 迁移至已有 PostgreSQL 数据库指南
数据库·postgresql·api开发·postgrest·接口开发工具·api管理软件
学掌门20 分钟前
从数据库到可视化性能,5个大数据分析工具测评,python只排倒数
数据库·python·数据分析
编程小风筝21 分钟前
Django REST framework实现安全鉴权机制
数据库·安全·django
secondyoung21 分钟前
队列原理与实现全解析
c语言·数据库·mysql·算法·队列
05大叔27 分钟前
微服务Day01 MP
数据库·oracle
Jan123.30 分钟前
深入理解数据库事务与锁机制:InnoDB实战指南
数据库·学习
wWYy.31 分钟前
详解redis(6):数据结构string、list
数据库·redis·缓存