数据库系统概论(第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\|SPATIALINDEX <索引名称> 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;

相关推荐
swordbob7 分钟前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql
牛油果子哥q21 分钟前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
十五年专注C++开发23 分钟前
MySql中各种功能用sql语句实现总结
数据库·sql·mysql
数据库小学妹40 分钟前
AI时代数据库怎么选?多模融合、数据统一存储与选型实战指南
数据库·人工智能·经验分享·ai
Albert Edison1 小时前
【Redis】Centos7.9 安装 Redis 5 教程
数据库·redis·缓存
云计算磊哥@1 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
小二·1 小时前
Redis 内存溢出(OOM)排查与恢复实战
数据库·redis·bootstrap
pqk6V6Vep1 小时前
Redis 分布式锁进阶第一篇讲解
数据库·redis·分布式
giaz14n9X2 小时前
Redis 分布式锁进阶第六十一篇
数据库·redis·分布式
是一个Bug2 小时前
MongoDB:像搭积木一样存数据
数据库·mongodb