数据库系统概论(第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.rhkb.cn/news/361733.html

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

相关文章

【Linux】线程Thread

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ ​ 线程概述 …

【C语言】解决C语言报错:Double Free

文章目录 简介什么是Double FreeDouble Free的常见原因如何检测和调试Double Free解决Double Free的最佳实践详细实例解析示例1&#xff1a;重复调用free函数示例2&#xff1a;多次释放全局变量指针示例3&#xff1a;函数间传递和释放指针 进一步阅读和参考资料总结 简介 Doub…

nuget 包修改默认存放路径

平时使用 nuget packages 时&#xff0c;都是下载包文件到本地。 默认是在C盘&#xff0c;时间一久容量会高达几十个G&#xff0c;这样会拖慢系统运行效率。 这时需要修改包的下载位置。 打开nuget 包配置文件&#xff1a;Nuget.config 路径在 C:\Users\{UserName}\AppData…

网约车停运损失费:2、协商过程

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…

鸿蒙开发Ability Kit(程序框架服务):【FA模型切换Stage模型指导】 配置文件差异

配置文件的差异 FA模型应用在[config.json文件]中描述应用的基本信息&#xff0c;一个应用工程中可以创建多个Module&#xff0c;每个Module中都有一份config.json文件。config.json由app、deviceConfig和module三部分组成&#xff0c;app标签用于配置应用级别的属性&#xff…

探索 JQuery EasyUI:构建简单易用的前端页面

介绍 当我们站在网页开发的浩瀚世界中&#xff0c;眼花缭乱的选择让我们难以抉择。而就在这纷繁复杂的技术海洋中&#xff0c;JQuery EasyUI 如一位指路明灯&#xff0c;为我们提供了一条清晰的航线。 1.1 什么是 JQuery EasyUI&#xff1f; JQuery EasyUI&#xff0c;简单来…

从写下第1个脚本到年薪40W,我的测试开发心路历程!

对于任何职业来说&#xff0c;薪资始终都会是众多追求的重要部分。前几年测试行业还是风口&#xff0c;但是随着不断新鲜血液的加入&#xff0c;再加上就业大环境不好&#xff0c;企业也都在“降本增效”。目前内卷也是越来越激烈。不得不承认当下的现状&#xff0c;已经不仅仅…

Cadence计算器函数leafValue

与getData结合使用 leafValue( getData(“/output” ?result “dc”) 转自eetop https://bbs.eetop.cn/thread-931912-1-1.html

DM达梦数据库数学函数整理

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

期货交易记录20240626

文章目录 期货交易系统构建第一步、选品第二步、心态历练第三步、开仓纪律第四步、持仓纪律第五步、接下来的计划 2024年6月26号&#xff0c;开始写期货交易的第四篇日记。 交易记录&#xff1a;做了一笔纯碱的多单&#xff0c;在回撤了400个点左右后&#xff0c;看到企稳信号后…

记录正则提取文章

收到了个word版的电子书&#xff0c;需要拆分并转换为md存储到数据库中&#xff0c;便于搜索&#xff0c;记录下用正则提取文章的过程 word原文中有目录&#xff0c;可提取出目录后&#xff0c;在正文中根据目录来正则提取文章 正则的多行匹配 在匹配大量文章的时候&#xff…

Power BI 占比函数

1&#xff0c;普通层级结构占比 占比1 DIVIDE([sum_qty], CALCULATE([sum_qty],ALLSELECTED(Item[ITEM_CODE]))) //按照line为一个整理展示数据占比2 SWITCH( true(),ISINSCOPE(Item[ITEM_CODE]),DIVIDE([sum_qty], CALCULATE([sum_qty],ALLSELECTED(Item[ITEM_CODE]))), IS…

石油化工厂为什么要用专业防爆手机?

防爆手机之所以必须使用专业设计的产品&#xff0c;主要是出于安全考虑&#xff0c;以防止在易燃易爆环境中因手机使用不当引发爆炸事故。以下几点详细解释了使用专业化工防爆手机的必要性&#xff1a; 本质安全设计&#xff1a;顶坚专业防爆手机采用了本质安全&#xff08;本安…

植物大战僵尸杂交版技巧大全(附下载攻略)

《植物大战僵尸杂交版》为策略游戏爱好者带来了全新的挑战和乐趣。如果你是新手玩家&#xff0c;可能会对游戏中的植物和僵尸感到困惑。以下是一些实用的技巧&#xff0c;帮助你快速掌握游戏并享受其中的乐趣。 技巧一&#xff1a;熟悉基本玩法 游戏的基本玩法与原版相似&…

Java学习笔记(多线程):CompetableFuture

本文是自己的学习笔记&#xff0c;主要参考资料如下 https://www.cnblogs.com/dolphin0520/p/3920407.html JavaSE文档 https://blog.csdn.net/ThinkWon/article/details/102508721 1、Overview2、重要参数3、主要方法3.1、创建实例&#xff0c;获取返回值3.2、线程执行顺序相关…

Linux系统安装Lua语言及Lua外部库

安装Lua Lua语言是一种轻量级、高效且可扩展的脚本语言&#xff0c;具有简洁易学的语法和占用资源少的特点。它支持动态类型&#xff0c;提供了丰富的表达式和运算符&#xff0c;同时具备自动垃圾回收机制和跨平台性。Lua语言易于嵌入到其他应用程序中&#xff0c;并可与其他语…

查询DBA_TEMP_FILES报错,删除临时表空间报错ORA-60100

SYMPTOMS 查询DBA_TEMP_FILES报错如下图 ORA-01157: cannotidentify/ock data fle 201 -see DBWR trace fle ORA-01110: data fle 20 1: D:APPADMINISTRATORIORADATA MARTIDATAFILE 01157,00000-"cannotidentify/ock data fle %s -see DBWR trace fle"*Cause: The b…

安卓免费短剧大全v1.0.2/全部无需VIP实时更新全平台短剧

在当今社会&#xff0c;时间成为了许多人最为宝贵的资源。忙碌的工作与繁重的日常事务&#xff0c;常常让我们难以拨出时间沉浸于长篇大幅的影视作品中。对于那些热爱剧情、渴望在生活中点缀一抹戏剧色彩的朋友们而言&#xff0c;这无疑是一种挑战。 然而&#xff0c;随着免费…

高通安卓12-在源码中查找应用的方法

1.通过搜索命令查找app 一般情况下&#xff0c;UI上看到的APP名称会在xml文件里面定义出来&#xff0c;如 搜索名字为WiGig的一个APP 执行命令 sgrep "WiGig" 2>&1|tee 1.log 将所有的搜索到的内容打印到log里面 Log里面会有一段内容 在它的前面是这段内…

尚品汇-(七)

&#xff08;1&#xff09;在网关中实现跨域 全局配置类实现 包名&#xff1a;com.atguigu.gmall.gateway.config 创建CorsConfig类 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsWebFilter(){// cors跨域配置对象CorsConfiguration configuration…