数据库MYSQL

源自笔记 部分格式不兼容

整体难点

3章关系模型

5关系数据库标准语言SQL

7关系数据库理论

8数据库系统的设计

第一章

重点

基本概念;数据库、DBMS(database management system)

NOSQL和NewSQL都是数据库的类型,但是它们有一些区别。NOSQL是泛指非关系型数据库,主要代表有MongoDB、Redis、CouchDB等。而NewSQL则是一种新方式的关系数据库,意在整合RDBMS所提供的ACID事务特性(即原子性、一致性、隔离性和可持久性),以及NoSQL提供的横向可扩展性 。

云数据库是一种基于云计算技术的数据库服务,它可以提供更高效、更可靠、更安全的数据处理和管理服务。

因此,NOSQL NewSQL 云数据库都属于云数据库的一种类型。

数据库系统的三级模式结构

外模式 (用户级数据库) 局部数据的逻辑结构和特征的描述

模式(概念级数据库)全体数据的逻辑结构和特征的描述

内模式(物理级数据库)数据物理结构和储存结构的描述

0be5d5ced751434f9b26f51102e69a57.png

名词解释

Database (DB):长期存储在计算机内、有组织的、统一管理的相关数据的集合。

数据库管理系统:DataBase Management System (DBMS)是位于用户与操作系统之问的一层数据管理软件.

数据库系统 (DataBase System):是采用数据库技术的计算机系统。

DBA 数据库管理员 DataBase Adminisrator

外模式(External Schema)也称子模式或用户模式,是把现实世界中的信息按照不同用户的观点抽象为多个逻辑数据结构,每个逻辑结构称为一个视图,描述了每个用户关心的数据,即数据库用户看见和使用的局部数据的逻辑结构和特征的描述。

模式(Schema)也称概念模式或逻辑模式,它是数据库中全体数据的逻辑结构和特征的描述。

内模式(Internal Schema)也称存储模式,它是数据物理结构和存储结构的描述。

外模式到模式的映射:定义了该外模式与模式之间的对应关系。当模式改变时,由数据库管理系统对各个外模式/模式的映射作相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻辑独立性.

模式到内模式的映射:定义了数据全局逻辑结构与存储结构之问的对应关系。当数据库的存储结构改变了,由数据库管理系统对模式/内模式映射作相应改变,可以使模式保持不变,从而保证了数据的物理独立性。

使用数据库系统的好处

可以高效且条理分明地存储数据,使人们能够更加迅速和方便地管理数据。数据库可结构化存储大量的数据信息,方便用户进行有效的检索和访问 。此外,数据库可有效地保持数据信息的一致性、完整性,降低数据冗余,使得储存数据所占用的空间较少。

数据管理技术的发展过程

人工管理数据阶段、文件管理数据阶段和数据库管理阶段 .

在人工管理阶段,数据主要存储在纸带、磁带等介质上,或者直接通过手工来记录。

文件系统是一种将数据组织成文件的方式,每个文件都有自己的元数据和地址空间。文件系统提供了一种独立于应用程序的数据访问方式,但是由于文件系统不支持多用户同时访问同一个文件,因此它不能满足多个用户对同一组数据进行访问的需求。

数据库管理系统(DBMS)是一种专门用于管理数据库的软件系统。DBMS提供了一种统一的数据访问方式,使得多个用户可以同时访问同一个数据库中的数据。DBMS还提供了一定程度的并发控制机制,以保证多个用户之间不会发生冲突。DBMS是现代企业信息化建设中不可或缺的一部分 。

文件系统的缺点

1)松散包装,关系映射中没有ACID(原子性,一致性,隔离性,持久性)操作,这意味着无法保证数据的完整性和一致性;

2)安全性低,由于文件可以保存在用户应该提供写入权限的文件夹中,因此很容易出现安全问题并引发麻烦,例如黑客攻击;

3)不适合大规模数据存储 。

在数据库系统阶段,数据管理的特点

数据结构化:采用复杂的数据模型表示数据结构,使得不同数据之间的联系得以表示和描述。

数据独立性:数据独立性较高,数据结构分为用户的局部逻辑结构、整体逻辑结构和物理结构三级,使得应用程序与数据之间的耦合度降低。

数据共享性:数据库系统为用户提供方便的用户接口,可以使用查询语言、终端命令或程序方式操作数据,使得不同用户能够共享数据。

数据控制功能:数据库系统提供数据控制功能,包括数据库的恢复、并发控制、数据完整性和数据安全性,以保证数据库中数据是安全的、正确的和可靠的。

灵活的数据操作:对数据的操作不一定以记录为单位,还可以数据项为单位,增加了系统的灵活性。

总的来说,数据库系统阶段的数据管理具有结构化、独立性、共享性、控制功能和灵活性等特点。

文件系统和数据库系统的联系和区别

文件系统和数据库系统都是用来管理数据的技术,但是它们的应用场景和使用方法都有所不同。

文件系统以文件为单位存储数据,而数据库系统以记录和字段为单位存储数据;

文件系统中的程序和数据有一定的联系,而数据库系统中的程序和数据分离;

文件系统用操作系统中的存取方法对数据进行管理,而数据库系统用DBMS统一管理和控制数据;文件系统实现以文件为单位的数据共享,而数据库系统实现以记录和字段为单位的数据共享 。

数据的物理独立性

是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。而数据的逻辑独立性是指应用程序与逻辑结构相互独立,逻辑结构改变,应用程序不用变 。

数据库的三级模式结构

是指数据库系统是由外模式、模式和内模式三级抽象模式构成,这是数据库系统的体系结构或总结构。其中,模式是数据库中全体数据的逻辑结构和特征的描述,外模式是用户能够看见和使用的局部数据的逻辑结构和特征的描述,内模式是数据在数据库内部的表示方式 。

该结构的好处

是可以使得用户不必关心数据库内部的实现细节,而只需要关注其所使用的数据即可。同时,该结构也有利于保护数据库的安全性,因为用户可以针对不同层次的模式设置不同的访问权限 。

数据库系统的应用架构

有很多种,其中比较常见的有:单用户结构、主从式结构、分布式结构、客户-服务器、浏览器应用服务器/数据库服务器等。

数据库管理系统(DBMS)的主要功能

包括:1) 数据定义,提供数据定义语言DDL,供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束;2) 数据操纵,提供数据操作语言DML,供用户实现对数据的追加、删除、更新、查询等操作;3) 数据库的运行管理,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性 。

常用的数据库管理系统

Oracle MySQL SQLite 高斯开源

第二章:信息的三种世界与数据模型

第三章:关系模型

  • 超键(SuperKey):在一个关系中,可唯一地标识元组的一个属性或属性集合。
  • 候选键 (Candidate Key):能唯一标识一个关系的元组而又不含有多余的属性的一个属性或属性集合。
  • 如果关系的全部属性构成关系的候选键,则称为全键(All-Key)。
  • 构成候选键的诸属性称为主属性(Prime Attribute)。
  • 不包含在任意候选键中的属性称为非主属性(Non-Prime Attribute)。
  • 主键 (Primary Key/PK):有时一个关系中有多个侯选键,此时可以选择一个作为插入,删除或检索元组的操作变量。被选用的候选键称为主键。每一个关系都有一个并且只有一个主键
  • 外键(Foreign Key/FK):是指关系R中的属性A不是关系R的主键,但A是另一个关系S的主键,则属性A就是关系R的外键。其中R是参照关系,S是被参照关系。
  • 外键在关系R中的取值有两种可能:或为空值,或必须是被参照关系S中已有的属性值。
  • 外键值是否允许为空值,主要依赖于应用环境的语义。
  • 唯一键(UNIQUE KEY ):属性取值为唯一的,但可以存空值

候选键一定是超键

外键

第一范式:关系数据库中表的每一列(分量)都是不可分割的基本数据项(原子性),同一列中不能有多个值,即关系模型不允许含有多值属性,并且属性的类型必须是简单类型


关系模型

选择运算

$$
\sigma
$$

往往能选出一行 如下例子


投影运算

$$
\pi
$$


这个又能选出一列


连接运算

自然连接要注意! 表示两者共有的属性都要相等

分析过程:

先判断有几个属性,相加列数即可,注意B同时出现再R和S,要用R.B和S.B进行区分

第一个R与S (C<E)的连接运算 找到C<E的运算即可 (笛卡尔积)

第二个R与S(R.B=S.B)的连接运算,找到对应相等的即可

第三个 由于两者共有元素位B 所以跟第二个一样,自然运算同样也是笛卡尔积 注意了

总结:

$$
\pi是查找信息(最后返回的目标),\sigma是判断的目标
$$

公式解释

$$
\pi_{要查的对象}(\sigma_{要判断属性的条件,比如pid=’p01′}(表的范围))
$$

某个元素的象集,就是含有这个元素 的其他元素组成的集合 例如这里ABC的a1的象集,{(b1,c2),(b2,c3),(b2,c1)}

每一步运算尽量保证唯一性,

因为多余的属性会造成干扰,

如果直接将products自然连接orders后再自然连接customers 会导致city成为除了id之外的第二限制,即最终得到的结果除了cid相同,city也是相同的,这是多余的条件

写作这种类型的思路:

关键信息 :没有 产品p02 顾客编号 姓名

所有的顾客的cid和cname 用投影暂存 ;

$$
\pi_{cid,cname}(Customers)-\pi_{cid,cname}(\sigma_{pid=’p02′}(Orders\infty Customers))
$$

思路(找共同点 然后求同存异 ) 被除数很重要 既要瞻前又要顾后

拓展的关系代数运算

运用

练习:外连接 左外连接 右外连接 有几个 10个 D

第四章:MYSQL上机

第四章重难点

创建数据库

利用图形可视化工具 新建即可

利用SQL语句 –在文件里 create database name;

快捷键:ctrl+enter==启动

备份数据库

用可视化工具

用 data export

用SQL语言

转到mysqldump.exe所在文件夹 打开后

cmd

 mysqldump -u root -p mysqlname >path

数据库的导入

图形化工具

data import

sql语言

 mysql -u root -p databasename< path

MySQL的管理工具

1-5、DBCBA

MySQL的组件结构

连接层、Server层和引擎层

连接层

连接器

Server层

查询缓存
分析器
优化器
执行器

引擎层

第五章 关系数据库标准语言——SQL

本大章节的示例数据库sales Tabels

表agents customers products orders

第五章重点:

  • SQL的数据查询
  • 视图、索引
  • SQL的数据控制功能
  • 存储过程
  • 函数

难点:

  • 关系除法转换为SQL

5MYSQL概述

这章的意义是通过mysql的语法 简要讲述sql语言 ,要注意不同的DBMS有不同的限制

windows中,关键字是不区分大小写的,而在LINUX系统中是要区分的

数据查询:SELECT

数据定义:CREATE,DROP,ALTER

数据操纵:INSERT,UPDATAE,DELETE

数据控制:GRANT,REMOVE

5.1SQL语言的基本概念

1、数据类型

(1)系统数据类型
  • 定点类型
  • 浮点类型
  • 位值类型
  • 日期和时间类型
  • 字符串类型
  • enum类型
  • SET类型

2、表达式

3、运算符

<=>MySQL特有的,相当于等号, 与一般的等号区别在,这个<=>可以让空值与空值作比较

SQL中是三值逻辑 ,除了真假还有第三值unknown

在SQL语言中,逻辑真值除了真和假,还有第三个值unknown,因此这种逻辑体系被称为三值逻辑。在三值逻辑中,NULL表示缺失的值或遗漏的未知数据,不是某种具体类型的值。数据表中的NULL值表示该值所处的字段为空,值为NULL的字段没有值。

4、SQL语法规则与规定

5.2SQL的数据定义功能

SQL的数据定义语句主要包括

  • 创建数据库
  • 创建表
  • 创建视图
  • 创建索引

数据库的创建和删除

1、数据库的创建
 create database 数据库名字
2、数据库的删除
 drop datebase 数据库名字
3、数据库的还原

基本表的创建、修改、删除

1、基本表的创建
 #创建顾客表
 create table customers{
 cid nvarchar(255) not null primary key,
 cname nvarcharr(255),
 city nvarchar(255),
 [discnt]float,
 check([discnt]>0),
 }
 #创建产品表
 create table products{
 pid nvarchar(255)not null,
 pname nvarchar(255),
 city nvarchar(255),
 quantity float,
 [price]float,
 primary key (pid),
 }
 #创建代理商表agents
 create table agents{
 aid nvarchar(255)not null,
 aname nvarchar(255),
 city nvarchar(255),
 [percent]float,
 primary key (aid),
 }
表的分类
创建表

基本操作

创建表的示例:

复制表

基本表结构的修改

添加列

删除列表更名:删除约束

基本表的删除

练习题:

选D

选B5.3SQL的数据查询功能

简单查询 select * from customers; #表示查询customers里面所有的数据

消除取值重复的行加“distinct” 使得查询的值是唯一的,去重查询需要计算的一步

totalqty==total quantity合计先乘法后累加常用的查询条件单个条件查询将关系代数表达成SQL语句

确定范围取等是BETWEEN MIN AND MAX不取等是 NOT BETWEEN MIN AND MAX(但是是取两边!!!)

如果想不取等且取到中间,就用where 和 and 两个判断条件 爽 用where 连接条件

三值逻辑这里值得一提的是,当city=NULL的时候,where not ()里面的返回值为空,不会包含进去,无论是where还是where not

多个条件查询

抽象 AND运算1>0>NULL

OR运算符

模糊查询(有点类似浏览器检索里的星号,这里是百分号)%是0-任意个 类似于浏览器的‘*’检索_下划线 是单个字符 转义字符有特殊字符的查询肯定就有转义字符 类似cppWHERE cname NOT LIKE ‘__\%% ‘;第一个\%表示“%本身”,第二个“%”表示0-任意个数的字符模糊搜索的代价需要耗费更长的时间

空值的处理

用sql特有 <=> 来查询NULL

聚合函数(关键字的运用)

*表示最长,这个有6行,count city表示数city数量,这个有5行distinct city表示不同的city distinct 独特的 关键字 之前用到过 有3行这里的as是可选的 如果有列名为avgprice 的列 就可以用 as 将其储存在该列select 关键字(sth) as column from 表

查询结果排序

查询结果分组

HAVING子句一定是在GROUP BY 之后

BD回首看去A是先组合再去筛60分,这已是不可能C没用group by 不能用having

,通常在使用 GROUP BY 子句后,使用 HAVING 子句进行进一步的筛选和计算。 HAVING 子句允许你筛选已经分组的数据,通常基于聚合函数的结果来进行条件判断。以下是一个使用 GROUP BYHAVING 子句的例子:假设你有一个销售订单的数据库,包含以下表格:

  • orders 表格包含订单信息,其中有两个列:product_id(产品ID)和 quantity(数量)。

  •  sqlCopy codeCREATE TABLE orders (    order_id INT,    product_id INT,    quantity INT );  INSERT INTO orders (order_id, product_id, quantity) VALUES     (1, 101, 5),     (2, 101, 3),     (3, 102, 2),     (4, 103, 4),     (5, 102, 6);现在,你想找出每种产品的总销售量,并只显示销售量超过5的产品。你可以使用 GROUP BYHAVING 来实现: sqlCopy codeSELECT product_id, SUM(quantity) AS total_sales FROM orders GROUP BY product_id HAVING SUM(quantity) > 5;在这个查询中,首先我们使用 GROUP BY 将订单按 product_id 分组,然后使用 SUM 函数计算每个分组的销售总量。接着,我们使用 HAVING 子句筛选出销售总量大于5的产品。查询结果将为你提供销售总量超过5的产品及其对应的销售总量。这个示例展示了如何使用 GROUP BYHAVING 子句来进行分组计算并筛选分组的结果。 GROUP BY 用于分组,而 HAVING 用于条件筛选。


    连接查询

    关系代数与SQL语言的转化

    两个表连接的直观理解 (两个表共有的列名 相等 比如这里可能会出现city)

    内部用一次投影运算的原因是要过滤掉city的影响

    上例有重要的别名思想

    且用小于符号 筛掉了重复的对象 筛掉自己 和反序的重复

    且少见地用到了笛卡尔积 表示所有的有序对

    关系代数?

    $$
    \pi_{cid}(\sigma_{pid=’p01′}(Customers)\and\sigma_{pid=’p07′}(Customers))
    $$

    内连接

    外连接

    左外连接

     select c.cid,c.cname,o.pid,o.qty
     from customers c left outer join orders o on c.cid=o.cid;
     select c.cid,c.cname,o.pid,o.qty 
     from customers c left outer join orders o using(cid);
     ​

    自然连接

    两张表都有的属性都应该相同

    左右外连接的例题

    嵌套查询

    示例

    外层查询Sname 从student表中 条件是Sno==??

    而这个条件又用内层查询表示

    Select Sno 从sc表中 where cno=‘c2’ cno为c2的sno 就是这个sname的sno

    这样可以理解 最外和最里的代表了结果和根本条件

    带有in谓词的子查询

    最外面的是目标 customer的cid 最里面的是根本的条件

    代理商要住在那两个城市

    两种不同的in 表示

    not in 的举例

    没有人订购过的产品名称

    目标是产品名称 条件是没有人订购的

    select pname from orders

    where pid not in (select pid from orders)

    带有比较运算符的子查询

    思路 查询目标是 顾客的cid 条件是 其折扣值小于最大的折扣值

    实际操作

    select cid from customer

    where discnt < ??

    这里表示最大的折扣值要查一遍 用到了max?

    select cid from customers

    where discnt< (select max(discnt) from customers);

    select cid from customers

    where discnt<max(discnt)

    为什么要对max再次查询

    第一个查询:

     sqlCopy codeselect cid from customers
     where discnt < (select max(discnt) from customers);

    这个查询首先从”customers”表中选择了所有满足条件”discnt < (select max(discnt) from customers)”的”cid”值。子查询”(select max(discnt) from customers)”用于计算”customers”表中”discnt”列的最大值,然后将这个最大值与每一行的”discnt”值进行比较,从而选择满足条件的行。这个查询是合法的,因为子查询只返回一个标量值(最大的折扣值)。

    第二个查询:

     sqlCopy codeselect cid from customers
     where discnt < max(discnt);

    这个查询尝试在”customers”表中选择所有满足条件”discnt < max(discnt)”的”cid”值。然而,这个查询是不合法的,因为在”where”子句中使用”max(discnt)”会导致错误。“max(discnt)”是一个聚合函数,它计算”discnt”列的最大值,但它不是一个标量值,而是一个聚合结果。在”where”子句中,你不能直接与聚合函数进行比较,因为不清楚它是一个标量值还是一个集合值。

    如果你想在第二个查询中使用最大的折扣值作为比较条件,你可以首先计算最大值,然后将其与每一行的”discnt”值进行比较,类似于第一个查询的方式:

     sqlCopy codeselect cid from customers
     where discnt < (select max(discnt) from customers);

    总之,第一个查询是正确的,因为它使用子查询计算最大值并将其与每一行的值进行比较,而第二个查询是错误的,因为它直接在”where”子句中使用了聚合函数。

    带有量化比较谓词的子查询

    什么意思噢

    嵌套查询的例子

    聚合函数不是一个标量值 要用select 获取其标量值

    select adi from agents

    where percent =

    select(min(percent)from agents)

    量化比较谓词表

    感觉意义很小 可以用 聚合函数 来实现的 同时量化谓词 <= all(select …) 也有 类似 聚合函数的语法限制

    量化谓词 例题

    能看懂 ’<> ‘ == ‘!=’

    some 某一个

    all 所有

    用exists 相关子查询 嵌套 表示 既…又…

    例子:表示既…又…

    可以用 交集 嵌套查询 来表示

    select cid

    from orders

    where product_id =‘p1’ and cid in

    {

    select cid

    from orders

    where product_id = ‘p07’

    }

    not exists 类似关系代数的除法

    怪例:

     SELECT student_id, student_name
     FROM students s
     WHERE NOT EXISTS (
         SELECT *
         FROM courses c
         WHERE NOT EXISTS (
             SELECT *
             FROM student_courses sc
             WHERE sc.student_id = s.student_id
             AND sc.course_id = c.course_id
         )
     );

    集合查询

    实例:

    交运算
    差运算 (很多都不支持)
    差运算举例

    复杂查询

    5.4数据操作功能

    插入数据

    插入子查询结果

    一次插入多行

    从文件中加载数据

    更新数据(修改数据update)

    示例

    删除

    多表删除

    5.5视图

    视图到底有什么用呢?

    视图介绍

    with check option的作用
    对于第一种没有使用with check option 参数的情况
    对于第二种使用了with check option 参数的情况

    在这个情况下,第一句插入语句将成功执行,而第二句插入语句将失败。

    第一句插入语句是插入到cust1视图,该视图没有启用”WITH CHECK OPTION”。因此,即使插入的行中的discnt值为16,也不会触发检查约束,因此插入会成功。

    第二句插入语句是插入到cust2视图,该视图启用了”WITH CHECK OPTION”。这意味着插入操作会检查插入的行是否满足视图的过滤条件,即discnt < 15。插入的行中的discnt值是12,满足视图的过滤条件,所以插入操作会成功。

    因此,第一句和第二句插入语句都会成功执行。

    只读视图、可更新视图、可插入视图

    只读视图(不可更新)
    可插入视图

    可插入视图的例子

    查看视图

    查看视图创建信息

    修改视图和视图的删除

    5.6索引

    简述

    优点
    缺点

    mysql索引类型

    根据索引用途划分,逻辑上分五类

    1、普通索引

    2、唯一索引

    3、主键索引

    4、空间索引

    5、全文索引

    根据索引列数目划分

    1、单列索引:在表中的单个字段上创建索引

    2、组合索引:也称为复合索引或多列索引,是在表的多个字段上创建一个索引。

    从索引存储结构划分

    B+Tree索引、Hash索引

    对于大数据来说 上百万的数据 是会提高很多速度

    从数据存储和索引键值逻辑关系划分:

    聚集(聚簇)索引、非聚集(聚簇)索引

    一个基本表最多只能建一个聚集索引

    最左前缀原则

    when use index?

    5.7 SQL的数据控制功能

    数据库安全性控制

    1、用户标识与鉴别
    mysql用户认证
    mysql用户管理

    1、不指定密码默认没有

    2、create user 也得有 数据库的权限才行

    3、用create user语句会在系统自身的mysql数据库的user表中添加一条新记录,类似于数据库的表

    4、新建用户默认权限较少

    5、若两个用户同名而不同主机名,也是可以的



    修改用户口令

    set password for ‘username ‘@’localhost’ = ‘..’

    alter user ‘username’@’localhost’ identified by ‘..’


    重命名用户账号

    删除用户

    rename user ‘user‘@’localhost’ to ‘….’@’host’

    drop user …

    mysql角色管理

    角色 可以理解成权限组 比如管理员角色 、协助者、观察者等等

    创建角色

    代码实现

    角色和用户比较

    1、为用户分配角色 分配并激活才起作用

    2、激活角色


    2、存取控制

    存储控制策略

    mysql的权限管理
    数据控制语言(DCL)
    授权GRANT

    分为自主存取控制和强制存取控制

    一般来说是自主存取控制 强制存取控制几乎见不到 是专用的

    the revoke statement
    撤销授权

    3、视图

    用户SQLUser1只能查询orders表顾客c001的订购信息

    1、创建视图 create view view_orders as select 。。。。。

    2、对视图定义存取权限

    4、审计(mysql社区版没有这个功能)

    5、加密存储

    5.8 SQL程序设计

    5.8.1 变量的定义和使用

    一、局部变量(必须在语句块中使用)

    二、用户变量

    三、系统变量(分为全局变量和会话变量)

    5.8.2 流程控制语句

    1、IF 语句

    2、CASE

    3、LOOP

    4、LEAVE 这个要跟loop配套使用 相当于跳出循环的flag 常常跟if一起

    5、iterate

    等价于continue

    6、Repeat until

    7、while

    5.9 存储过程

    存储过程的优点

    模块化程序设计

    提高性能

    减少流量

    可作为安全机制

    存储过程的缺点

    内存使用量压力

    不适合复杂逻辑

    难调试存储过程

    创建存储过程

    类似于编写一个函数 in和out 相当于提供参数

    example

    大概意思是可以分段分等级,把人为意义上的分类转换成数字分类

    也可以使用case when

    while do 举例

    mysql使用存储过程返回表

    存储过程的管理

    显示存储过程的源码

    删除存储过程

    修改存储过程

    5.10 函数(重点)

    存储过程和函数的区别

    ???

    1、返回类型不同

    2、作为的成分不同

    3、加载时间不同

    函数的使用

    mysql支持两种函数类型

    系统函数

    用户定义函数

    系统函数类型

    1、控制流程函数

    2、字符串函数

    修改函数和删除函数

    5.11 游标

    游标的使用方法

    定义 打开 推进 关闭

    具体使用过程

    mysql的异常处理


    第六章 数据库保护

    主要内容

    6.1数据完整性控制

    6.2事件

    6.3事务

    6.4并发控制

    6.5数据库的恢复

    重、难点

    重点 :触发器、事务、隔离性

    难点 :触发器、事务

    6.1数据完整性控制

    数据库的完整性是指数据的正确性和相容性

    完整性分类:1、实体完整性 2、参照完整性 3、用户定义的完整性

    实体完整性

    参照完整性

    用户定义的完整性

    触发器

    触发器的缺点

    建立触发器

    验证触发器

    6.2事件

    MySQL事件

    创建一个周期性执行的时间

    6.3事务

    事务 是作为单个逻辑工作单元执行的一系列操作

    模拟实现转账

    事务的ACID特性

    6.4并发控制

    脏读

    不可重复读

    幻象读

    6.4.2并发控制

    6.4.3封锁

    锁的类型

    一级封锁协议

    三个级别的封锁协议

    二级封锁协议

    三级封锁协议

    三级封锁协议

    6.4.4死锁

    死锁的预防

    死锁的诊断与解决

    死锁的解决

    6.4.5事务调度的可串行性

    串行调度策略,正确的调度

    不可串行化的调度

    d、可串行化的调度

    6.4.5事务调度的可串行性

    两端锁协议

    6.4.7MySQL的锁

    6.5数据库的恢复

    本技术内容仅供学习和交流使用,如有疑问请联系qq2014160588并注明来意。请确保在使用过程中遵守相关法律法规。任何因使用本技术内容而导致的直接或间接损失,作者概不负责。用户需自行承担因使用本技术内容而产生的所有风险和责任。请勿将本技术内容用于任何非法用途。
    上一篇
    下一篇