• MySQL常用高级语句


    SQL高级语句

    DISTINCT

    不显示重复的内容

    语法:SELECT DISTINCT “字段” FROM “表名”;

    select distinct name from lk1;
    
    • 1

    在这里插入图片描述

    SELECT

    显示表格中一个或数个栏位的所有资料

    语法:SELECT “字段” FROM “表名”;

    select * from lk1;  #查看表格详细信息
    select name from lk1; #按要求查看指定一个字段内容
    select name,sex from lk1; #按要求查看多个字段内容
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    WHERE

    条件查询

    语法:SELECT “字段” FROM “表名” WHERE “条件”;

    select * from 表名 where 需求;
    
    • 1

    在这里插入图片描述

    AND OR

    代表且、或、和的意思

    语法:SELECT “字段” FROM “表名” WHERE “条件1” {[AND|OR] “条件2”};

    select * from 表名 where 需求1 or(需求2 and 需求3);
    
    • 1

    在这里插入图片描述

    order by

    按关键字排序

    语法:SELECT “字段” FROM “表名” [WHERE “条件”] ORDER BY “字段” [ASC, DESC];

    #ASC 是按照升序进行排序的,是默认的排序方式。

    #DESC 是按降序方式进行排序。

    select id,name,score from info order by score desc; # 讲查看到的成绩按降序排列
    select id,name,score from info order by score; #不加desc 则默认为升序
    
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述
    order by还可以结合where进行条件过滤,筛选地址是杭州的学生按分数降序排列

    select name,score from info where address='hangzhou' order by score desc;
    
    • 1

    在这里插入图片描述
    ORDER BY 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再按照第二个字段进行排序,ORDER BY 后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定
    但order by 之后的第一个参数只有在出现相同值时,第二个字段才有意义

    LIKE

    匹配一个模式来找出我们要的资料

    语法:SELECT “栏位” FROM “表名” WHERE “字段” LIKE {模式};

    select * from info where name like 'li%';# 以li开头的所有名字
    select *from info where name like '%si%'; #名字中包含si的名字
    select *from info where name like 'liuy_'; # 以liuy开头并且后面仅有一个字符的名字
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    count(*)

    显示当前表的总字段数量

    select count(*) as number from info;
    显示当前表的总字段数,以number显示
    
    • 1
    • 2

    在这里插入图片描述

    BETWEEN

    显示两个值范围内的资料

    语法:SELECT “字段” FROM “表名” WHERE “栏位” BETWEEN ‘值1’ AND ‘值2’;

    select * from info where score between 80 and 100;
    
    • 1

    在这里插入图片描述

    IN

    显示已知的值的内容

    语法:SELECT “字段” FROM “表名” WHERE “栏位” IN (‘值1’, ‘值2’, …);

    select * from info where score in (10,11,98);
    
    
    • 1
    • 2

    在这里插入图片描述

    AS

    此外,AS 还可以作为连接语句的操作符。
    创建LK2表,将info表的查询记录全部插入LK2表

    create table lk2 as select * from info;
    1、创建了一个新表t1 并定义表结构,插入表数据(与info表相同)
    2、但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键,那么附表的:default字段会默认设置一个0
    相似:
    克隆、复制表结构
    create table lk2 (select * from info);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    limit

    limit 限制输出的结果记录
    在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)。有时候仅 需要返回第一行或者前几行,这时候就需要用到 LIMIT 子句

    select * from info limit 3,3;
    
    • 1

    在这里插入图片描述

    通配符

    通常通配符都是跟 LIKE 一起使用的
    在这里插入图片描述

    子查询

    子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。
    PS: 子语句可以与主语句所查询的表相同,也可以是不同表
    子查询不仅可以在 SELECT 语句中使用,在 INERT、UPDATE、DELETE 中也同样适用。在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套。

    select name,score from info where id in (select id from info where score >80);
    主语句:select name,score from info where id
    子语句(集合)select id from info where score >80
    子语句中的sql语句是为了,最后过滤出一个结果集,用于主语句的判断条件
    in: 将主表和子表关联/连接的语法
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    多表查询

    IN 用来判断某个值是否在给定的结果集中,通常结合子查询来使用

    当表达式与子查询返回的结果集中的某个值相等时,返回 TRUE,否则返回 FALSE。 若启用了 NOT 关键字,则返回值相反。需要注意的是,子查询只能返回一列数据,如果需 求比较复杂,一列解决不了问题,可以使用多层嵌套的方式来应对。 多数情况下,子查询都是与 SELECT 语句一起使用的

    查询分数大于80的记录

     select name,score from info where id in (select id from info where score>80);
    
    • 1

    在这里插入图片描述

    EXISTS

    用来测试内查询有没有产生任何结果,类似布尔值是否为真

    如果有的话,系统就会执行外查询的SQL语句,若是没有的话,那整个SQL语句就不会产生任何结果

    语法:SELECT “字段” FROM “表格1” WHERE EXISTS (SELECT * FROM “表格2” WHERE “条件”);

    select name,xueke from info where name in (select name from test1 where score=10);
    select name,xueke from info where name in (select name from test1 where score=100);
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    [SS528V100 22AP30 Hi3531DV200开发注意事项]
    github双重身份验证2FAs扫码
    EFLK日志平台(filebeat-->kafka-->logstash-->es-->kiabana)
    Node.js的入门及模块化
    LLMs 奖励剥削 RLHF: Reward hacking
    java 身份证号码验证
    Python数据分析实战-实现卡方检验(附源码和实现效果)
    【springboot进阶】使用aop + 注解方式,简单实现spring cache功能
    Laravel Octane 和 Swoole 协程的使用分析
    解决laravel-wechat获取JS配置异常的问题
  • 原文地址:https://blog.csdn.net/LIUKANGYYDS/article/details/128171686