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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【List集合排序】

List集合排序Demo import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor;import java.util.*;/*** list order demo*/ public class ListOrderDemo {public static void main(String[] args) {List<String> lis…

Nginx和CDN运用

一.Web缓存代理 1.工作机制 代替客户机向网站请求数据&#xff0c;从而可以隐藏用户的真实IP地址。将获得的网页数据&#xff08;静态Web元素&#xff09;保存到缓存中并发送给客户机&#xff0c;以便下次请求相同的数据时快速响应。 2.代理服务器的概念 代理服务器是一个位…

操作系统期末复习真题四

一、前言&#x1f680;&#x1f680;&#x1f680; 小郑在刷题的过程中帮大家整理了一些常见的考试题目&#xff0c;以及易于遗忘的知识点&#xff0c;希望对大家有所帮助。 二、正文☀️☀️☀️ 1.OS的不确定性是指(ABC)。 A.程序的运行次序不确定 B.程序多次运行的时间不…

MySQL之如何定位慢查询

1、如何定位慢查询 1.1、使用开源工具 调试工具&#xff1a;Arthas 运维工具&#xff1a;Promethuss、Skywalking 1.2、MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数&#xff08;long_query_time&#xff0c;单位&#xff1a;秒&#xff0c;默认10秒&#x…

ONLYOFFICE 桌面编辑器 8.1使用体验分享

目录 编辑器市场现状与用户选择 ONLYOFFICE桌面编辑器概览和功能 ONLYOFFICE桌面编辑器概览 功能丰富的PDF编辑器 演示文稿编辑器的创新 文档编辑的灵活性 电子表格的高级功能 语言和本地化 用户界面和体验 媒体播放 云服务和本地处理 跨平台支持 总结 在线亲身体…

【后端面试题】【中间件】【NoSQL】ElasticSearch 节点角色、写入数据过程、Translog和索引与分片

中间件的常考方向&#xff1a; 中间件如何做到高可用和高性能的&#xff1f; 你在实践中怎么做的高可用和高性能的&#xff1f; Elasticsearch节点角色 Elasticsearch的节点可以分为很多种角色&#xff0c;并且一个节点可以扮演多种角色&#xff0c;下面列举几种主要的&…

SpringBoot使用Spark的DataFrame API

什么是Spark&#xff1f; Apache Spark是一个开源的分布式计算系统&#xff0c;它提供了一个快速和通用的集群计算平台。Spark 能够处理大规模数据&#xff0c;支持多种编程语言&#xff0c;如Scala、Java和Python&#xff0c;并且具有多种高级功能&#xff0c;包括SQL查询、机…

论文浅尝 | 通过基于动态文档知识图谱增强的大语言模型故事理解

笔记整理&#xff1a;许方舟&#xff0c;天津大学硕士&#xff0c;研究方向为知识图谱 链接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/21286 1. 动机 基于大型 Transformer 的语言模型在需要叙事理解的各种任务上取得了令人难以置信的成功&#xff0c;包括…

填报志愿选专业是兴趣重要还是前景重要?

进行专业评估&#xff0c;找到一个适合自己的专业是一件非常困难的事情。在进行专业选择时&#xff0c;身上理想化色彩非常严重的人&#xff0c;会全然不顾及他人的劝阻&#xff0c;义无反顾的以兴趣为主&#xff0c;选择自己热爱的专业。一些较多考虑他人建议&#xff0c;能听…

Golang | Leetcode Golang题解之第206题反转链表

题目&#xff1a; 题解&#xff1a; func reverseList(head *ListNode) *ListNode {if head nil || head.Next nil {return head}newHead : reverseList(head.Next)head.Next.Next headhead.Next nilreturn newHead }

cuda编码入门学习笔记

在日常深度学习和科学计算中,使用图形处理器(GPU)进行加速是一个常见的做法。CUDA (Compute Unified Device Architecture) 是英伟达公司提供的用于GPU编程的平台和编程模型。同时它是一种并行计算模型,允许开发人员使用标准C语言对GPU进行编程。CUDA的核心思想是将任务分解为…

Linux开发讲课20--- QSPI

SPI 是英语 Serial Peripheral interface 的缩写&#xff0c;顾名思义就是串行外围设备接口&#xff0c;一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xff0c;为 PCB 的布局上节省空间…

20240629在飞凌的OK3588-C开发板的Linux R4系统下使用i2cdetect确认I2C总线

rootok3588:/# i2cdetect -y -r 0 rootrk3588-buildroot:/# i2cdetect -l rootrk3588-buildroot:/# i2cdetect -F 0 20240629在飞凌的OK3588-C开发板的Linux R4系统下使用i2cdetect确认I2C总线 2024/6/29 15:37 在CAM1、CAM2挂载OV13850。 在CAM3、CAM4和CAM5挂载OV5645了。 in…

AI大模型技术在音乐创造的应用前景

大模型技术在音乐创作领域具有广阔的应用前景&#xff0c;可以为音乐家、作曲家和音乐爱好者提供以下方面的帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 音乐创作辅助&#xff1a;大模型可以帮助音乐家和作曲家生成旋律、和声…

利用微信开放标签<wx-open-launch-weapp>在H5中跳转微信小程序报错完美的解决方案

一、报错&#xff1a; [WXTAG] [JSCORE] The slot <template> or <script type"text/wxtag-template"> of <wx-open-launch-weapp> is missing 二、源码 官方源代码如下&#xff0c;<script type"text/wxtag-template"></sc…

02.Linux下安装FFmpeg

目录 一、下载FFmpeg的编译源码 二、编译源码 三、ffmpeg工具结构解析 1、bin目录 2、include库 3、lib库 四、注意事项 五、可能出现的一些问题 1、某些工具未安装/版本过久 2、缺少pkg-config工具 3、缺少ffmplay FFmpeg 是一个开源的跨平台音视频处理工具集&…

快速修复mfc100u.dll丢失解决方案

相连文章&#xff1a;SecureCRT的安装破解 [详细过程2024] 有小伙伴向我反馈在打开SecureFX注册机之后显示【mfc100u.dll找不到】重装之后也没有用&#xff0c;这个是因为Microsoft Visual C的运行时组件和库出现了错误&#xff0c;直接选择重新安装就可以 出现这种情况的原因…

基于51单片机的密码锁Proteus仿真

文章目录 一、密码锁1.题目要求2.思路3.仿真图3.1 未仿真时3.2 初始界面3.3 输入密码界面3.4 开锁成功界面3.5 修改密码界面3.6 输入密码错误界面 4.仿真程序4.1 矩阵按键4.2 液晶显示16024.3 存储模块2402 二、总结 一、密码锁 1.题目要求 以51单片机为核心&#xff0c;设计…

OFDM的基本原理

OFDM技术使用相互正交的子载波组成多载波传输数据&#xff0c;此时不存在子载波间干扰和符号间干扰。设采样间隔为 &#xff0c;正交子载波可以表示为 基带信号a(n)采用矩形脉冲&#xff0c;则OFDM信号用公式可以表示 OFDM信号的N个采样点数据 可以用IFFT简化上述计算&#xf…

01:PCB板的介绍

PCB板的介绍 1、PCB的层叠结构1.1&#xff1a;单层板1.2&#xff1a;2层板1.3&#xff1a;4层板 2、封装简介 在1936年&#xff0c;奥地利人&#xff08;保罗爱斯勒&#xff09;使用箔膜技术&#xff0c;发明了第一个印刷电路板&#xff08;PCB板&#xff09;。使用减去法实现的…