linux MySQL高阶语句

MySQL高级语句可以用在查询复合语句,可以更好的完成需求,主要采用嵌套和通配符方式。

目录

一、MySQL高级语言

  1.order by排序

  2.group by分组

  3.limit 

  4.as 别名

  5.通配符

     6.子查询

  7.exists和in

二、视图

三、null值

四、连接

五、总结

 

 

 

 

 

一、MySQL高级语言

  1.order by排序  

      ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。SELECT 语句中如果没有指定具体的排序方式,则默认按 ASC方式进行排序。
      DESC 是按降序方式进 行排列。当然 ORDER BY 前面也可以使用 WHERE 子句对查询结果进一步过滤。   

      

      原表 :

       (1)默认顺序排序

        默认正序排列

       (2)倒叙排列

     (3)条件排序   

       (4)双层排序

        先按照id进行倒叙排列,在按照hobbid进行倒叙排序。

     (5)条件双层排序

      先按照条件找到address为nanjing的,按照id进行正序排列,在按照score正序排列

     (6)简单区间判断

      and和or(并且和或)

      and

     or

     (7)条件嵌套区间

    

       (8) 查询不重复记录

        distinct查询不重复字段

   2.group by分组

    计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN)

    (1)count计数

      address属性有7各字段

     (2)count计数分组

      按照hobbid重复的分为一组,每组多少个

     (3)条件count计数分组

      先筛选出成绩大于50的,在进行分组  

       (4)count分组排序

        先进行分组,在进行排序

     3.limit前几行

      (1)limti前3行

       (2)显示第三行到第五行

       (3)查询排序后的前三行

       (4)查询排序后三行

   4.as别名

    在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者 多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性

    不使用as也是可以,默认加as

    (1)打印属性别名的表

       (2)无as别名

       (3)as复制表

        同样是没有key属性

     (4)条件判断复制

  5.通配符    

    通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:

    %:百分号表示零个、一个或多个字符 *
    _:下划线表示单个字符 .

    (1)查询指定开头未知位数

     (2)查询指定位数

      查询指定位数l开头,后跟三位

     (3)查询中间字符

     (4)组合使用%_

      查询第二位是a的未知位数

  

 

     6.子查询

   子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。

    (1)子查询当hobbid大于2

   (2)子查询score大于50

   (3)查询name从student查,id从a表查

   (4)先查数据作为表

    7.in

       (1)查询成绩大于50的

     (2)添加数据

     (3)修改数据

     (4)大批量修改数据

 

       id大于3的全部修改

     (5)删除数据

       id大于3的全部删除

   8.not in

     (1)查询id不是1的数据

     (2)添加数据

 

     (3)更新数据

        将id不为1的成绩改为99

 

     (4)删除数据

        删除除id为1的数据

 

  9.exists

    这个关键字在子查询时,主要用于判断子查询的结果集是否为空。如果不为空, 则返回 TRUE;反之,则返回 FALSE

    (1)判断id是否有大于1的,有返回所有数据,统计个数

     (2)判断id没有小于1的,返回空表

二、视图

    1.视图概念  

      数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了真实数据的映射
      视图可以理解为镜花水月/倒影,动态保存结果集(数据)

      视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视      图是基本表的抽象和在逻辑意义上建立的新关系。

    2.功能

      简化查询结果集、灵活查询、可以针对不同用户呈现不同结果集、相对有更高的安全性
      本质而言视图是一种select(结果集的呈现)

    3.应用场景

      视图适合于多表连接浏览时使用!不适合增、删、改
      而存储过程适合于使用较频繁的SQL语句,这样可以提高执行效率!

    4.视图和表的区别和联系       

      ①、视图是已经编译好的sql语句。而表不是

      ②、视图没有实际的物理记录。而表有。
        show table status\G

      ③、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改

      ④、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

      ⑤、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

      ⑥、视图的建立和删除只影响视图本身,不影响对应的基本表。(但是更新视图数据,是会影响到基本表的)

    5.创建视图

      (1)创建视图    

       (2)查看表结构

     (3)查看表状态

 

     (4)查询视图

     (5)多表创建视图

       从多张表提取数据,创建视图

     (6)修改原表数据

        视图数据会变

        修改原表数据

     视图数据也变化

     (7)修改视图数据

        修改视图数据

     原表也发生变化

 

  

 三、null值

  1.null值

    在 SQL 语句使用过程中,经常会碰到 NULL 这几个字符。通常使用 NULL 来表示缺失 的值,也就是在表中该字段是没有值的。如果在创建表时,限制某些字段不为空,则可以使用 NOT NULL 关键字,不使用则默认可以为空。在向表内插入记录或者更新记录时,如果该字段没有 NOT NULL 并且没有值,这时候新记录的该字段将被保存为 NULL。需要注意 的是,NULL 值与数字 0 或者空白(spaces)的字段是不同的,值为 NULL 的字段是没有 值的。在 SQL 语句中,使用 IS NULL 可以判断表内的某个字段是不是 NULL 值,相反的用 IS NOT NULL 可以判断不是 NULL 值。

    2.null值与空值的区别

    空值长度为0,不占空间,NULL值的长度为null,占用空间
    is null无法判断空值
    空值使用"=“或者”<>"来处理(!=)
    count()计算时,NULL会忽略,空值会加入计算

   3.验证null和空值

    (1)先查看表结构可以为null

     可以看到null不被计算

     (2)添加空值

     会被计算

   (3)可以查询到null值数据

     (4)查询不为空的数据

 

 

四、连接

  1.连接概念

    MySQL 的连接查询,通常都是将来自两个或多个表的记录行结合起来,基于这些表之间的 共同字段,进行数据的拼接。首先,要确定一个主表作为结果集,然后将其他表的行有选择 性的连接到选定的主表结果集上。

 

  2.连接分类

    (1)内连接:显示相同内容

    (2)左连接:显示左表和相同部分

    (3)右连接:显示右表和相同部分

  3.主连接

    使用inner join连接,一般在from之后

    显示两表name相同部分数据

 

  4.左连接   

    左连接也可以被称为左外连接,在 FROM 子句中使用 LEFT JOIN 或者 LEFT OUTER JOIN 关键字来表示。左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。

   

左连接中左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为 NULL。

 

 

  5.右连接

  右连接也被称为右外连接,在 FROM 子句中使用 RIGHT JOIN 或者 RIGHT OUTER JOIN 关键字来表示。右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配

     只显示右表所有数据和相同数据

 五、总结

    MySQL数据库高级语句可以完成排序,分组,通配符,子程序,视图。可以更好的完成管理数据库需求。

posted @ 2023-07-19 16:51  纸签  阅读(20)  评论(0编辑  收藏  举报