当前位置:网站首页>MySQL数据库的简介及select语句的执行流程
MySQL数据库的简介及select语句的执行流程
2022-08-08 15:53:00 【#0000FF格子衫】
1,mysql数据库:
mysql数据库作为一款Ocral公司旗下的数据库产品,是一款开源的关系型数据库管理系统,由瑞典的MySQL AB公司开发。SQL(Structured Query Language, 结构化查询语言) 是用来操作关系型数据库的语言,使用SQL可以对数据库和表进行添加,删除,修改和查询等操作。
优点 : (1)性能卓越服务稳定,很少异常宕机
(2)开放源代码无版权限制,自主性强,使用成本低
(3)社区比较活跃,问题可以比较快在社区解决
(4)支持多种操作系统,提供多种API接口,基本上可以兼容市面上大部分的编程语言。
缺点:
(1) 安全系统,复杂而非标准,只有调用mysqladmin来重读用户权限才会发生改变。
(2)MySQL不允许调试储存过程,开发和维护存储比较困难。
(3)MySQL不支持热备份
2,MySQL数据库的内部基础结构:
MySQL由连接层,SQL接口,解析层,优化器,缓存,存储引擎等组成,大致分成三层:MySQL Server层,存储引擎层和文件系统层。而MySQL Server层又包括连接层和SQL层。
(1)连接层
应用程序通过接口(例如Java中的ODBC , JDBC)来连接MySQL,最先处理的就是连接层。连接层包括通信协议,线程处理,用户密码认证三部分。
(2)SQL层
是MySQL的核心,主要包括权限判断,查询缓存,解析器,预处理,查询优化器,缓存和执行计划。
(3)存储核引擎层
Pluggable Starage Enginess属于储存核心层。MySQL独有的,主要负责MySQL中数据的储存和提取。
(4)文件系统层
文件储存层主要是将数据库中的数据存储在操作系统的文件系统上,并完成与储存引擎的交互。
3.数据库部分专业术语:
DBMS: 数据库管理系统,是位于操作系统与用户之间的一种操作和管理数据库的软件,关系型数据库通过RDBMS进行管理。
DateBase:数据库,是一个用来储存和管理数据的仓库。它的存储空间很大,并且有一定的存储规则。通过由行和列组成的二维表来管理数据。
Management:管理系统,是一个软件,我们可以通过它来进行数据的插入(insert),查询(query),修改(modify),删除(delete)表中的数据。
4.数据库设计之E—R图
E-R图是设计数据库的工具之一,用于构建数据库的概念模型。实体,属性和关系是设计数据库的基本要素。
(1)实体:实体是指现实世界中客观存在并可以相互区分的对象或实物。
(2)属性: 就是实体的特征。
(3)关系:两个实体或更多实体之间的对应关系。分为一对一,一对多,多对一,多对多。
5.数据库设计的三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系型数据库中的关系必须满足一定的要求,即满足不同的范式。
一共有六大范式,我们四,五,六在实际开发中,、很少用,所以我们主要了解一下前三大范式。
(1)第一范式
第一范式(1NF):用来确保每列的原子性,要求每列(或者每个属性值)都是不可再分的最小数据单元(也称为最小的原子单元)。
(2)第二范式
第二范式(2NF):在第一范式的基础上更进一层,要求表中的每列都和主键相关,即要求实体的唯一性。如果一个表满足第一范式,并且除了主键以外的其他列全部都依赖于该主键,那么该表满足第二范式。
(3) 第三范式
第三范式(3NF):在第二范式的基础上更进一层,第三范式是确保每列都和主键列直接相关,而不是间接相关,即限制列的冗余性。如果一个关系满足第二范式,并且除了主键以外的其他列都依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式。
6.select语句的执行流程
(1)select语句的完整语法:
SELECT
DISTINCT<select_list>
FROM<left_table>
<join_type> JOIN <right_table>
ON <join_condition>
WHERE <where_condition>
GRUOP BY <group_by_list>
HAVING <having_conidtion>
ORDER BY <order_by_condition>
LIMIT <limit_number>
-- 其执行顺序如下:
FROM
<表名> # 笛卡尔积
ON
<筛选条件> # 对笛卡尔积的虚表进行筛选
JOIN <JOIN,LEFT JOIN,RIGHT JOIN...>
<JOIN表> # 指定JOIN,用于添加数据到ON之后的虚表中,例如LEFT JOIN会将左表的剩余数据添加到虚表中
WHERE
<WHERE条件> # 对上述虚表进行筛选
GROUP BY
<分组条件> # 分组
<SUM()等聚合函数> # 用于HAVING子句进行判断,在书写上这类聚合函数是写在HAVING判断里面的
HAVING
<分组筛选> # 对分组后的结果进行聚合筛选
SELECT
<返回数据列表> # 返回的单列必须在GROUP BY子句中,聚合函数除外
DISTINCT
# 数据除重
ORDER BY
<排序条件> # 排序
LIMIT
<行数限制> (2)需要注意的几点:
- GROUP BY 条件中,每个列必须是有效列,不能是聚合函数。
- NULL 值也会作为一个分组返回。
- 除了聚合函数,SELECT 子句中的列必须在 GROUP BY 条件中。
边栏推荐
- 【愚公系列】华为云云数据库MySQL的体验流程|【华为云至简致远】
- 使用pymongo,将MongoDB生成的ObjectId类型数据与字符串之间的相互转化
- firewall高级配置
- CS231n:6 训练神经网络(二)
- Jingdong T9 pure hand type 688 pages of god notes, SSM framework integrates Redis to build efficient Internet applications
- LED显示屏在会议室如何应用
- 抓住时代趋势,网赚新逻辑:平台+个人模式超清晰解读(附产品评测)
- What is low-code development?Is everyone really optimistic about low-code development?
- leetcode/delete the nth node from the bottom of the linked list
- 京东T9纯手打688页神笔记,SSM框架整合Redis搭建高效互联网应用
猜你喜欢
随机推荐
快速排序(C语言版)
返回分页查询分类并统计多对多关系表中各分类下的应用数量
Streamsets Data Collector 3.12
EasyExcel导入校验必填项不能为空
如何选择ui设计机构
【服务器数据恢复】Ext4文件系统fsck后mount不上并报错的数据修复案例
Take you to play with the "Super Cup" ECS features and experiment on the pit [HUAWEI CLOUD is simple and far]
Node简介
bzoj2816 [ZJOI2012] Network
IBM3650M4的ESXI主机报警“其他主机硬件对象的状态”
vs2只运行项目中的一个文件
PayPal无差别封号潮,被围剿的站群模式还能玩多久?如何避免shopify封店
leetcode 31. 下一个排列(实现next_permutation 函数)
全志V853芯片Tina下RTSP环境搭建方法
Is the current safe and reliable domestic futures account opening process?
【有奖征文 第13期】至简致远,“云”响世界,大胆秀出你的华为云技术主张,高额激励等你拿
跟我一起来学弹性云服务器ECS【华为云至简致远】
深度学习-神经网络原理1
JS Adder (DOM)
大佬们,这个测试demo只能获取到全量数据,不能获取增量,我的mysql 已经开启了row模式的bi









