• 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语句的完整语法:

            

    1. SELECT
    2. DISTINCT<select_list>
    3. FROM<left_table>
    4. <join_type> JOIN <right_table>
    5. ON <join_condition>
    6. WHERE <where_condition>
    7. GRUOP BY <group_by_list>
    8. HAVING <having_conidtion>
    9. ORDER BY <order_by_condition>
    10. LIMIT <limit_number>
    11. -- 其执行顺序如下:
    12. FROM
    13. <表名> # 笛卡尔积
    14. ON
    15. <筛选条件> # 对笛卡尔积的虚表进行筛选
    16. JOIN <JOIN,LEFT JOIN,RIGHT JOIN...>
    17. <JOIN> # 指定JOIN,用于添加数据到ON之后的虚表中,例如LEFT JOIN会将左表的剩余数据添加到虚表中
    18. WHERE
    19. <WHERE条件> # 对上述虚表进行筛选
    20. GROUP BY
    21. <分组条件> # 分组
    22. <SUM()等聚合函数> # 用于HAVING子句进行判断,在书写上这类聚合函数是写在HAVING判断里面的
    23. HAVING
    24. <分组筛选> # 对分组后的结果进行聚合筛选
    25. SELECT
    26. <返回数据列表> # 返回的单列必须在GROUP BY子句中,聚合函数除外
    27. DISTINCT
    28. # 数据除重
    29. ORDER BY
    30. <排序条件> # 排序
    31. LIMIT
    32. <行数限制>

    (2)需要注意的几点:

    •   GROUP BY 条件中,每个列必须是有效列,不能是聚合函数。
    •   NULL 值也会作为一个分组返回。
    •   除了聚合函数,SELECT 子句中的列必须在 GROUP BY 条件中。

               

         

              

  • 相关阅读:
    网络规模与性能优化的一篇随笔
    JAVA-GUI工具的编写-----请求篇
    计算机毕设之基于数据可视化的智慧社区内网平台python+django+mysql(含开题+源码+部署教程)
    通达信软件编程写一段抄底的源代码
    057_末晨曦Vue技术_处理边界情况之强制更新($forceUpdate)与通过 v-once 创建低开销的静态组件
    达索系统3DEXPERIENCE WORKS 2024 Fabrication新功能
    nodejs+mysql+vscode网上图书商城销售管理系统vue
    IDEA下载与安装,保姆级教程
    PAT甲级打卡-1005-1010
    VMware和Debian下载
  • 原文地址:https://blog.csdn.net/weixin_54535063/article/details/126165040