zoukankan      html  css  js  c++  java
  • MySQL入门

    1.什么是MySQL

      MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

      数据库的本质是一个文件系统  数据库 中记录是有行有列的数据库就是关系型数据库 原生数据中 Oracle MySQL强大 ,不过一般使用MySQL数据库。

     

    2.为什么要使用MySQL

      1. 由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
      2. MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择
      3. 首先究正你的一个印象:MySQL功能也很强大,只是对于可视化界面操作工具少,所以给很我初学者造成难上手的印象。
      4.它的优点还有:开源,免费,支持非WINDOWS操作系统(并且运行速度比在WINDOWS上还要快),速度快,二次开发(除有需要特定应用,一般是不需要二次开发的)。
      5. 大公司更注重版权,开发人员也不能随便用盗版,所以,如果全部用正版数据库,肯定增加成本的。

     

    3.什么是数据库

      数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以通过SQL对数据库中的数据进行增加,修改,删除及查询操作。

    4.SQL语句

      1. DDL 定义语句 create alter drop
      2. DML 操控语句 insert delete update 
      3. DCL 控制语句 grant 创建用户 
      4. DQL 查询记录  select from where 

      

      4.1 sql语句示范

        查看表

        1. 查看数据库中的所有表:show tables;

        2. 查看表结构:desc 表名;

        删除表

        drop table 表名;

        修改表

        1. alter table 表名 add 列名 类型(长度) 约束; --修改表添加列.

        2. alter table 表名 modify 列名 类型(长度) 约束; --修改表修改列的类型长度及约束.

        3. alter table 表名 change 旧列名 新列名 类型(长度) 约束; --修改表修改列名.

        4. alter table 表名 drop 列名; --修改表删除列.

        5. rename table 表名 to 新表名; --修改表名

        6. alter table 表名 character set 字符集; --修改表的字符集

        新增

        1. insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列

        2. insert into 表 values (值1,值2,值3..); --向表中插入所有列

        3. insert into 表 (列名1,列名2,列名3..) values select (列名1,列名2,列名3..) from 表

        4. insert into 表 values select * from 表

        修改
        1. update 表名 set 字段名=值,字段名=值;

        2. update 表名 set 字段名=值,字段名=值 where 条件;

        删除
        delete from 表名 [where 条件];

        分组

        select  cid,count(*) from product group by cid  select查出的列(聚合函数除外)必须出现在group by 中

    5.sql的执行顺序

      3.1 from

        第一步就是选择出from关键词后面跟的表,这也是sql执行的第一步:表示要从数据库中执行哪张表。

         实例说明:在这个例子中就是首先从数据库中找到表T

      3.2 join on 

         join是表示要关联的表,on是连接的条件。通过from和join on选择出需要执行的数据库表T和S,产生笛卡尔积,生成T和S合并的临时中间表Temp1。on:确定表的绑定关系,通过on产生临时中间表Temp2.

         实例说明:找到表S,生成临时中间表Temp1,然后找到表T的id和S的id相同的部分组成成表Temp2,Temp2里面包含着T和Sid相等的所有数据

      3.3 where

         where表示筛选,根据where后面的条件进行过滤,按照指定的字段的值(如果有and连接符会进行联合筛选)从临时中间表Temp2中筛选需要的数据,注意如果在此阶段找不到数据,会直接返回客户端,不会往下进行.这个过程会生成一个临时中间表Temp3。

         实例说明:在temp2临时表集合中找到T表的name="Yrion"的数据,找到数据后会成临时中间表Temp3,temp3里包含name列为"Yrion"的所有表数据

      3.4 group by 

         group by是进行分组,对where条件过滤后的临时表Temp3按照固定的字段进行分组,产生临时中间表Temp4,这个过程只是数据的顺序发生改变,而数据总量不会变化,表中的数据以组的形式存在

         实例说明:在temp3表数据中对mobile进行分组,查找出mobile一样的数据,然后放到一起,产生temp4临时表。

      3.5 select

         对分组聚合完的表挑选出需要查询的数据,如果为*会解析为所有数据,此时会产生中间表Temp6

         实例说明:在此阶段就是对temp5临时聚合表中S表中的id进行筛选产生Temp6,此时temp6就只包含有s表的id列数据,并且name="Yrion",通过mobile分组数量大于2的数据

      3.6 order by 

         会根据Temp7进行顺序排列或者逆序排列,然后插入临时中间表Temp8,这个过程比较耗费资源

         实例说明:这段会将所有temp7临时表中的数据按照创建时间(create_time)进行排序,这个过程也不会有列或者行损失

      3.7 limit

         limit对中间表Temp8进行分页,产生临时中间表Temp9,返回给客户端。

         实例说明:在temp7中排好序的数据,然后取前五条插入到Temp9这个临时表中,最终返回给客户端

    6.常用的的执行顺序

        1. FROM : 对FROM左边的表和右边的表计算笛卡尔积,产生虚表VT1;
        2. ON : 对虚拟表VT1进行ON筛选,只有那些符合条件的行才会被记录在虚拟表VT2中;
        3. JOIN :如果是OUT JOIN,那么将保留表中(如左表或者右表)未匹配的行作为外部行添加到虚拟表VT2中,从而产生虚拟表VT3;
        4. WHERE :对虚拟表VT3进行WHERE条件过滤,只有符合的记录才会被放入到虚拟表VT4;
        5. GROUP BY:根据GROUP BY子句中的列,对虚拟表VT4进行分组操作,产生虚拟表VT5;
        6. CUBE|ROLLUP:对虚拟表VT5进行CUBE或者ROLLUP操作,产生虚拟表VT6;
        7. HAVING :对虚拟表VT6进行 HAVING 条件过滤,只有符合的记录才会被插入到虚拟表VT7中;
        8. SELECT :执行SELECT操作,选择指定的列,插入到虚拟表VT8中;
        9. DISTINCT :对虚拟表VT8中的记录进行去重,产生虚拟表VT9;
        10. ORDER BY :将虚拟表VT9中的记录按照进行排序操作,产生虚拟表VT10;
        11. LIMIT :取出指定行的记录,产生虚拟表VT11,并将结果返回。

     

     

  • 相关阅读:
    初试kafka消息队列中间件一 (只适合初学者哈)
    3月22日 html(三)css样式表
    3月20日html(二) 图片热点,网页划分,表单
    3月19日 html(一) html基础内容
    3月18日 全部练习题(一)
    3月18日 全部练习题(二)
    3月15日
    3月13日 函数
    3月13日 冒泡排序
    3月12日 数组
  • 原文地址:https://www.cnblogs.com/HouGuangJun/p/12257677.html
Copyright © 2011-2022 走看看