数据库系统概论(第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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

带上作弊器,我不得起飞

前言 过去,我们对人工智能既期待又害怕.人类的惰性希望人工智能可以帮助大家从大部分繁重的工作中解放出来,但又害怕它失控. 智能系统的好处 工作方面 自动化与效率提升&#xff1a;可以自动执行许多重复性和低技能的任务&#xff0c;如制造业中的装配、数据输入和办公室的客户…

原子变量原理剖析

一、原子操作 原子操作保证指令以原子的方式执行&#xff0c;执行过程不被打断。先看一个实例&#xff0c;如下所示&#xff0c;如果thread_func_a和thread_func_b同时运行&#xff0c;执行完成后&#xff0c;i的值是多少&#xff1f; // test.c static int i 0;void thread…

多表执行嵌套查询,减少笛卡尔积,防止内存溢出

问题&#xff1a;当涉及四个表的查询时&#xff0c;会产生大量的笛卡尔积导致内存溢出。 解决办法 &#xff1a;可以使用嵌套查询将多表的联合查询拆分为单个表的查询&#xff0c;使用resultmap中的association&#xff08;适合一对一&#xff09; 或 collection&#xff08;一…

医院消防设施设备管理系统

医院为人员密集场所&#xff0c;且多为各类病患及其陪护人员&#xff0c;一旦发生火灾&#xff0c;人员疏散逃生困难&#xff0c;容易造成较严重的生命与财产损失。为规范医院的消防设施设备管理&#xff0c;通过凡尔码系统对医院消防设施设备进行信息化管理&#xff0c;提高医…

MapReduce学习

目录 7.3 MapReduce工作流程 7.3.1 工作流程概述 7.3.2 MapReduce各个执行阶段 7.3.3 Shuffle过程详解 1. Shuffle过程简介&#xff08;过程分为Map端的操作和Reduce端的操作&#xff09; 2、Map端的Shuffle过程&#xff1a; 3、在Reduce端的Shuffle过程 7.4 实例分析&am…

使用supportFragmentManager管理多个fragment切换

android studio创建的项目就没有一个简单点的框架&#xff0c;生成的代码都是繁琐而复杂&#xff0c;并且不实用。 国内的页面一般都是TAB页面的比较多&#xff0c;老外更喜欢侧边菜单。 如果我们使用一个activity来创建程序&#xff0c;来用占位符管理多个fragment切换&…

五、Spring IoCDI ★ ✔

5. Spring IoC&DI 1. IoC & DI ⼊⻔1.1 Spring 是什么&#xff1f;★ &#xff08;Spring 是包含了众多⼯具⽅法的 IoC 容器&#xff09;1.1.1 什么是容器&#xff1f;1.1.2 什么是 IoC&#xff1f;★ &#xff08;IoC: Inversion of Control (控制反转)&#xff09;总…

Python逻辑控制语句 之 判断语句--if、if else 和逻辑运算符结合

逻辑运算符&#xff1a; and or not 1.案例一 需求&#xff1a; 1. 获取⽤户输⼊的⽤户名和密码 2. 判断⽤户名是 admin 并且密码是 123456 时, 在控制台输出: 登录成功! 3. 否则在控制台输出: 登录信息错误! # 需求&#xff1a; # 1. 获取用户输入的用户名和密码 # 2. 判断…

【折腾笔记】兰空图床使用Redis做缓存

前言 最近发现我部署在群晖NAS上的兰空图床程序在高并发的情况下会导致图片加载缓慢或出现图片加载失败的情况&#xff0c;于是我查阅了官方文档资料并进行了一系列的测试&#xff0c;发现兰空图床如果开启了原图保护功能&#xff0c;会非常的吃CPU的性能&#xff0c;尤其是在…

【Python游戏】猫和老鼠

本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、代码示例三、知识点梳理四、总结一、前言 本文介绍如何使用Python的海龟画图工具turtle,开发猫和老鼠游戏。 什么是Python? Python是由荷兰人吉多范…

【限免】线性调频信号的脉冲压缩及二维分离SAR成像算法【附MATLAB代码】

文章来源&#xff1a;微信公众号&#xff1a;EW Frontier QQ交流群&#xff1a;949444104 程序一 对线性调频信号进行仿真&#xff0c;输出其时频域的相关信息&#xff0c;并模拟回波信号&#xff0c; 对其进行脉冲压缩和加窗处理。 实验记录&#xff1a; 1.线性调频信号时…

从0构建一个录制UI测试工具

很多UI自动化测试工具都具备录制UI自动化测试的能力&#xff0c;例如playwright&#xff0c;可以通过playwright vscode插件完成录制&#xff0c;如下图所示&#xff0c;当选择录制脚本时&#xff0c;会打开一个浏览器&#xff0c;在浏览器中输入被测应用url&#xff0c;用户在…

C++:enum枚举共用体union

enum枚举 C继承C的枚举用法 (1)典型枚举类型定义&#xff0c;枚举变量定义和使用 (2)枚举类型中的枚举值常量不能和其他外部常量名称冲突&#xff1a; 举例1宏定义&#xff0c;举例2另一个枚举 // 定义一个名为Color的枚举类型 enum Color {RED, // 红色&#xff0c;默认值…

昇思25天学习打卡营第11天|SSD目标检测

1. 学习内容复盘 模型简介 SSD&#xff0c;全称Single Shot MultiBox Detector&#xff0c;是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上&#xff0c;SSD对于输入尺寸300x300的网络&#xff0c;达到74.3%mAP(mean Average Precision)…

JAVA毕业设计145—基于Java+Springboot+vue+uniapp的驾校预约小程序(源代码+数据库+15000字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvueuniapp的驾校预约小程序(源代码数据库15000字论文)145 一、系统介绍 本项目前后端分离&#xff0c;分为用户、教练、管理员三种角色 1、用户&#xff1a; …

ModuleNotFoundError: No module named ‘_sysconfigdata_x86_64_conda_linux_gnu‘

ModuleNotFoundError: No module named _sysconfigdata_x86_64_conda_linux_gnu 1.软件环境⚙️2.问题描述&#x1f50d;3.解决方法&#x1f421;4.结果预览&#x1f914; 1.软件环境⚙️ Ubuntu 20.04 Python 3.7.0 2.问题描述&#x1f50d; 今天发现更新conda之后&#xff0…

Redisson(分布式锁、限流)

注意Redisson是基于Redis的&#xff0c;所以必须先引入Redis配置&#xff08;参考SpringBoot集成Redis文章&#xff09; 1. 集成Redisson 引入依赖 <!-- 二选一,区别是第一个自动配置&#xff0c;第二个还需要手动配置也就是第二步自定义配置&#xff0c;注意版本号&…

Windows怎么实现虚拟IP

在做高可用架构时&#xff0c;往往需要用到虚拟IP&#xff0c;在linux上面有keepalived来实现虚拟ip的设置。在windows上面该怎么弄&#xff0c;keepalived好像也没有windows版本&#xff0c;我推荐一款浮动IP软件PanguVip&#xff0c;它可以实现windows上面虚拟ip的漂移。设置…

UE5材质之HLSL:深度

UE4/5的Custom节点&#xff1a;在VScode使用HLSL&#xff08;新手入门用&#xff09;_vscode写hlsl-CSDN博客 效果&#xff1a; 材质节点&#xff1a; 自定义节点代码&#xff1a; float3 rayStepViewDir*-1; float4 inputTexTexture2DSample(TexObject,TexObjectSampler,uv)…

JavaSE主要内容(全套超完整)

一、为什么选择Java&#xff08;Java的优势&#xff09; 1、应用面广&#xff1a; 相较于其他语言&#xff0c;Java的应用面可谓是非常广&#xff0c;这得益于他的跨平台性和其性能的稳定性。他在服务器后端&#xff0c;Android应用开发&#xff0c;大数据开发&#xf…