MySQL数据库的简介及select语句的执行流程

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 条件中。

           

     

          

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#0000FF格子衫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值