MySQL-数据库(6)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文主要讲解了部分关系数据理论,以及关系查询出林和查询优化的相关问题。并介绍了批量修改数据库引擎的方法。

本文主要讲解了部分关系数据理论,以及关系查询出林和查询优化的相关问题。
并介绍了批量修改数据库引擎的方法。

6.关系数据理论

一对一,外键唯一,外键加unique约束
一对多,二张表,多的表加外键
多对多,三张表,关系表两个外键

规范化

数据库范式

实体 现实世界中客观存在并可以被区别的事物 比如“一个学生”、“一本书”
属性 “实体所具有的某一特性”,可以看作是“表的一列” 比如说,“性别”是“人”的一个属性
元组 表中的一行就是一个元组
分量 元组的某个属性值
表中可以唯一确定一个元组的某个属性(或者属性组)。如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码
全码 如果一个码包含了所有的属性,这个码就是全码
主属性 一个属性只要在任何一个候选码中出现过,这个属性就是主属性
非主属性 没有在任何候选码中出现过,这个属性就是非主属性
外码 一个属性(或属性组),它不是码,但是它别的表的码,它就是外码

函数依赖:自变量x确定后,相应的函数值y也就唯一确定了。
完全函数依赖:,对于任何一个X的真子集,都不能推出Y,则称Y对X 完全函数依赖。
部分函数依赖:X的真子集可以推出Y。

for example: 是完全函数依赖, 是部分函数依赖。因为 .

1NF(第一范式):每一个分量是不可分的数据项 [有主键,字段不可再分]
2NF(第二范式):不产生部分函数依赖
3NF(第三范式):不产生传递依赖
BCNF:

  • 所有非主属性对每一个码都是完全函数依赖
  • 所有主属性对每一个不包含它的码也是完全函数依赖
  • 没有任何属性完全函数依赖于非码的任何一组属性
只有一个候选码且满足了 3NF则一定属于BCNF
关系模式C(Cno,Cname,Pcno) 只有一个码,没有任何属性对Cno部分依赖或传递依赖,所以 .且Cno是唯一决定C的因素,所以 .

关系模式S(Sno,Sname,Sdept,Sage) 假设Sname也具有唯一性,那么S就有两个码,这两个码都由单个属性组成。其他属性不存在对码的部分依赖或传递依赖,所以.且除了Sno、Sname外没有其他决定因素,所以

7.数据库设计

7.5物理结构设计

关系模式存取方法选择

数据库管理系统一般提供多种存取方法,常用的存取方法为索引方法和聚簇方法。
B+树索引hash索引是经典的存取方法。

聚簇:为了提高某个属性(或属性组)的查询速度,把这个或这些属性上具有相同值的元组集中存放在连续的物理块中称为聚簇。这些属性(或属性组)称为聚簇码。

for example:要查询信息系所有学生名单,该信息系有500名学生,在极端情况下,这500名学生所对应的数据元组分布在500个不同的物理块上,尽管对学生关系已按所在系建立索引,由索引可以很快找到信息系学生的元组标识,避免了全表扫描,然而在由元组标识去访问数据块时就要存放500个物理块,执行500次I/O操作。如果将同一系的学生元祖集中存放,则每读一个物理块可以得到多个满足查询条件的元组,从而显著减少了访问磁盘的次数。

一个数据可以建立多个聚簇,一个关系只能加入一个聚簇

9.关系查询处理和查询优化

9.1查询处理

一般情况下,当选择率较低时,基于索引的选择算法要优于全表扫描算法。但在选择率较高或者要查找的元组均匀的分布在要查找的表中,这时基于索引的选择算法性能不如全表扫描算法。(因为除了对表的扫描操作,还要加上对B+树索引的扫描操作,对于每一个检索码,从B+树根节点到叶子结点路径上的每一个节点都要执行一次I/O操作。)

9.2查询优化

见书上例题【例9.3】P280

有选择和连接操作时,应先选择,后连接。(笛卡尔积消耗贼大)

9.3代数优化

启发式法则:

  • 选择运算尽可能先做
  • 把投影运算和选择运算同时进行
  • 把投影同其前或后的双目运算结合起来
  • 把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算
  • 找出公共子表达式

批量修改数据库引擎

参考链接
Navicat默认数据库引擎为MYISAM,所以添加外键的时候需要将数据库的引擎设置为INNODB,但是这个时候你建的表很多的话,很难一个一个修改,所以需要批量修改数据库的引擎。

-- 查询数据库表引擎   mei_tuan是用到的数据库   复制过去直接改数据库名字即可
select * from information_schema.tables 
where table_schema = 'mei_tuan'
and engine='MYISAM';

-- 生成批量修改的sql语句
USE mei_tuan;
SELECT GROUP_CONCAT(CONCAT('ALTER TABLE',TABLE_NAME,' ENGINE=INNODB; ') SEPARATOR '')
FROM information_schema.TABLES AS t
WHERE TABLE_SCHEMA='mei_tuan'
AND TABLE_TYPE = 'BASE TABLE'
AND ENGINE = 'MyISAM';

image.png

CSV导入数据库
知乎参考链接
链接

-- 查看权限
show global variables like 'local_infile';
-- 开启权限
set global local_infile='ON';


-- 管理员信息表
LOAD DATA LOCAL INFILE 'D:\\tbs\\administer.csv' INTO TABLE administer
FIELDS TERMINATED by ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES -- 忽略表头,即表头不插入
(col1,col2,...);  --指定字段

-- FIELDS TERMINATED  指定分隔符

常见问题:
1.导入的路径名称不能有中文 , 路径是D:\\tbs\\administer.csv或者D:/tbs/administer.csv

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
13 4
|
10天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
49 2
|
13天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
56 4
|
8天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
43 0
|
9天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
38 0
|
18天前
|
存储 监控 关系型数据库
MySQL并发控制与管理:优化数据库性能的关键
【10月更文挑战第17天】MySQL并发控制与管理:优化数据库性能的关键
78 0
|
18天前
|
存储 SQL 关系型数据库
MySQL Workbench支持哪些数据库引擎
【10月更文挑战第17天】MySQL Workbench支持哪些数据库引擎
15 0
|
SQL Java 数据库连接
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
188 0
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
139 0
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
|
存储 SQL 关系型数据库
MySQL---数据库从入门走向大神系列(五)-存储过程
MySQL---数据库从入门走向大神系列(五)-存储过程
138 0
MySQL---数据库从入门走向大神系列(五)-存储过程