• mysql高阶语句


    目录

    1.按关键字进行排序

    2.区间判断查询 and/or(和/或 )

    3、对结果进行分组

    4、限制结果条目

    5、设置别名 as

    6、通配符

    7、子查询

    连接查询

    内连接

    左连接

    右连接


    对于MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 例如只取 10 条数据、对查询结果进行排序或分组等等。

    1.按关键字进行排序

    使用ORDER BY语句来实现排序,排序可针对一个或多个字段。

    ASC:升序,默认排序方式。

    DESC:降序。

    order by 语句用来实现排序的,ASC是按照升序排序,是默认的排序方式。

    DESC 是按降序进行排列 ,当然order by前面可以使用 where字句查询结果进一步过滤。

    语法:

    1. 按分数排序,默认不指定是升序排列
    2. select id,name,score from class order by score;

    1. 降序
    2. select id,name,score from class order by score desc;

    1. 还可以结合where进行条件过滤,查询学生信息先按兴趣id降序排列,相同分数的,id也按降序排列
    2. select id,name,hobbid from class order by hobbid desc,id desc;
    3. 注:order by之后的第一个参数只有在出现相同值时,第二个字段才有意义,否则第二个字段无效。

    2.区间判断查询 and/or(和/或 )

    1. 查询分数大于60并且小于等于90的数据
    2. select * from class where score >60 and score <=90;

    1. 查询分数大于70或小于等于90的数据
    2. select * from class where score >70 or score <=90;

    1. 查询不重复的爱好
    2. select distinct hobbid from class;

    3、对结果进行分组

    查询sql结果 对结果 进行分组GROUP BY来实现 group by通常都是结合聚合函数一起使用。

    1. 按hobbid相同的分组,计算相同分数的学生个数
    2. select count(name),hobbid from class group by hobbid

    1. 显示数据总数量
    2. select count(*) number from class;

    4、限制结果条目

    1. 查询所有信息显示前4行记录
    2. select * from class limit 3;

    1. 按id的大小倒序排列显示第4行往后显示3行内容
    2. select * from class order by id desc limit 3,3;

    5、设置别名 as

    mysql查询的时候,表和字段做一个别名,原因主要是表和列的字段比较长。

    as还可以在创建表的时候插入其他表的数据,也可以克隆表,但没有主键及约束。

    1. 列别名设置
    2. select name as 姓名,score as 成绩 from class;

    1. 创建t1表,将class表的查询记录全部插入t1
    2. create table www as select name,score from class;

     

    6、通配符

    %:表示零或多个字符。

    1. 查询名字是l开头的记录
    2. select id,name from class where name like 'l%';

    1. 查询名字中间有i的记录
    2. select id,name from class where name like '%i%';

    7、子查询

    子查询就是内查询或者嵌套查询,是指在一个查询语句里面还嵌套另一个查询的语句。

    语法:

    in 将主表和子表进行关联/连接,用来判断某个值是否在给定结果集中。

    in 通常结合子查询来进行使用

    not in 取反

    exists 判断 如果是否为空 ,如果不为空,则返回 true,否则反之 false。

    1. 以www表中的名字查询class
    2. select id,name,score from class where name in (select name from www);

    1. id大于4的分数变为87
    2. update class set score=87 where id in (select id from eee where id>4);

    连接查询

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

    内连接

    两张或多张表中同时符合某种条件的数据记录的组合。

    select * from test1 inner join test2 on a_name=b_name;

    内连查询:通过inner join 的方式将两张表指定的相同字段的记录行输出出来。

    左连接

    左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。

    select * from test1 left join test2 on a_name=b_name;

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

    右连接

    右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配。

    select * from test1 right join test2 on a_name=b_name;

    在右连接的查询结果集中,除了符合匹配规则的行外,还包括右表中有但是左表中不匹配的行,这些记录在左表中以 NULL 补足。。

  • 相关阅读:
    fastspar微生物相关性推断
    Java面试前需要了解的东西
    【小程序】页面跳转
    黑马头条:app端文章查看
    Atom CMS SQL注入漏洞 (CVE-2022-25488)
    想加一个当信用分低于50分时
    【云原生之Docker实战】使用Docker部署mBlog微博系统
    js手写红绿灯(带优化版)
    高阶数据结构:二叉搜索树
    C专家编程 第2章 这不是Bug,而是语言特性 2.4 少做之过
  • 原文地址:https://blog.csdn.net/ffdtj/article/details/132661470