码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL语句


    目录

    一、常用查询

    二、高级SQL语句

    1、按关键字排序

    单字段排序

    按分数降序排列

    结合条件过滤

    多字段排序

    查询学生信息先按兴趣id升序排列,相同分数的,id按升序排列 

    区间判断及查询不重复记录

     嵌套/多条件 

     对hobbyid进行分组查询,并显示最大的id

    按hobbyid相同的分组,计算相同的个数 

    结合order by 把统计的id数量进行降序排列 

    结合where语句,筛选分数大于等于80的分组,计算学生个数按降序排列 

    3、限制结果条目

    查询所有信息显示前4行记录

    从第4行开始,往后显示3行内容 

    结合order by 语句,按id的大小升序排列显示前三行 

     显示后三行并倒序排列

    4、设置别名

    列别名设置

    表别名设置 

    查询info表的记录数量,以number显示 

    不用as也可以显示别名 

    利用as,将查询的数据导入到另外一个表内 

    也可以加入where语句判断 

    查询名字里是 l 和 s 中间有一个字符的记录 

    查询名字中间有 an 的数据 

    查询 name 中名字以i结尾,i 前面有四个字符

     ​编辑


    一、常用查询

    (增、删、改、查)对MySQL数据库的查询,除了基本的查询外,有时间需要对查询结果集进行处理。列如只取10条数据、对查询结果进行排序或分组等等。

    二、高级SQL语句

    1、按关键字排序

    1. create table info (id int,name varchar(10) primary key not null ,score decimal(5,2),address varchar(20),hobbid int(5));
    2. insert into info values(1,'liuyi',80,'beijing',2);
    3. insert into info values(2,'wangwu',90,'shengzheng',2);
    4. insert into info values(3,'lisi',60,'shanghai',4);
    5. insert into info values(4,'tianqi',99,'hangzhou',5);
    6. insert into info values(5,'jiaoshou',98,'laowo',3);
    7. insert into info values(6,'hanmeimei',10,'nanjing',3);
    8. insert into info values(7,'lilei',11,'nanjing',5);

    单字段排序

    按分数排序(默认升序)

    select * from info1 order by score;   (asc默认省略)
    

     

    按分数降序排列

    select * from info1 order by score desc;
    

     

    结合条件过滤

    select * from info1 where address=’nanjing’ order by score;
    

     

    多字段排序

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

    查询学生的信息并按照兴趣id升序排序,相同分数的按照id降序排序

    select * from info1 order by hobbyid,id desc;
    

    查询学生信息先按兴趣id升序排列,相同分数的,id按升序排列 

     

    select * from info1 order by hobbyid,id;
    

    区间判断及查询不重复记录

    AND/OR(且/或的使用)

    1. select * from info1 where id>2 and id<5; #与
    2. select * from info1 where id>2 or id<5; #且

     

     嵌套/多条件 

    1. select * from info1 where id>2 or (id>3 and id <5);
    2. select * from info1 where score <70 or (score >90 and score <100);

     

    1. 查看分数大于70 小于等于95的数据
    2. select * from info1 where score > 70 and score <=90;

    1. 查看分数小于70 或者大于90的数据,按降序显示
    2. select * from info1 where score < 70 or score >90 order by score desc;

     

     

    distinct 查询不重复记录
    select distinct 字段 from 表名﹔
    distinct 必须放在最开头
    distinct 只能使用需要去重的字段进行操作
    distinct 去重多个字段时,含义是:几个字段同时重复时才能被过滤,会默认按左边第一个字段为依据。

    select distinct address from info1; 查看address有多少种

     对hobbyid进行分组查询,并显示最大的id

    select hobbyid,max(id) from info1 group by hobbyid;
    

    按hobbyid相同的分组,计算相同的个数 

    select count(name),hobbyid from info1 group by hobbyid;
    

    结合order by 把统计的id数量进行降序排列 

    select count(id),hobbyid from info1 group by hobbyid order by count(id) desc;
    

    结合where语句,筛选分数大于等于80的分组,计算学生个数按降序排列 

    select count(name),score from info1 where score >= 80 group by hobbyid order by count(name) desc;
    

    3、限制结果条目

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

     

    1. select 字段,聚合函数 from 表名 (where 字段名(匹配) 数值) group by 字段名;
    2. SELECT column1, column2, ... FROM table_name LIMIT [offset,] number

    查询所有信息显示前4行记录

    select * from info1 limit 4;
    

    从第4行开始,往后显示3行内容 

    select * from info1 limit 3,3;
    

    结合order by 语句,按id的大小升序排列显示前三行 

    select id,name from info1 order by id limit 3;
    

     显示后三行并倒序排列

    select id,name from info1 order by id desc limit 3;
    

    4、设置别名

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

    使用场景
    1、对复杂的表进行查询的时候,别名可以缩短查询语句的长度
    2、多表相连查询的时候(通俗易懂、减短 sql 语句)
     

     

    1. 对于列的别名:SELECT column_name AS alias_name FROM table_name;
    2. 对于表的别名:SELECT column_name(s) FROM table_name AS alias_name;

    列别名设置

    select name as 姓名,score as 成绩 from info;
    

    表别名设置 

    select i.name as xingming,i.score as chengji from info1 as i;
    

    查询info表的记录数量,以number显示 

    select count(*) as number from info1;
    

    不用as也可以显示别名 

    select count(*) number from info1;
    

    利用as,将查询的数据导入到另外一个表内 

    1. create table class2 as select * from info1;
    2. 或
    3. create table class2 (select * from info1);

    也可以加入where语句判断 

    create table class3 as select * from info1 where score >=60;
    

     

    5、通配符查询
    通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。通常通配符都是跟 LIKE(模糊查询)一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:

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

    查询名字是 l 开头的数据
     

    select id,name from info1 where name like 'l%';
    

    查询名字里是 l 和 s 中间有一个字符的记录 

    select id,name from report where name like 'l_s%'
    

    查询名字中间有 an 的数据 

    select id,name from info1 where name like '%an%';
    

    查询 name 中名字以i结尾,i 前面有四个字符

    select id,name from info1 where name like '____i';
    

     

    通配符 % 和 _ 不仅可以单独使用,也可以组合使用, 

     

  • 相关阅读:
    现在国内最牛逼的 Spring CloudAlibaba全栈操作手册,不接受反驳
    python编程小知识tips 20220720
    51单片机学习:步进电机实验
    IIS系统结构
    【小沐学Unity3d】3ds Max 骨骼动画制作(CAT、Character Studio、Biped、骨骼对象)
    编译和链接
    el-table的border属性失效问题解决方案
    Java百题大战
    Go 语言学习技巧和编程思维
    《开源软件的影响力》
  • 原文地址:https://blog.csdn.net/Liqi23/article/details/128178146
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号