MySQL基本查询语言

2024-08-30 01:36

本文主要是介绍MySQL基本查询语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本查询语言的结构

最简单的查询语句:
select...from....
一个完整的普通查询语句结构如下:
select [distinct].....from....[where....][group by .....][having.....][order by.....][limit.....]

查询语句的执行顺序

1. 先执行from子句:基于表进行查询操作
2. 再执行where子句:进行条件筛选或者条件过滤
3. 再执行group by子句:对剩下的数据进行分组查询。
4. 再执行having子句:分组后,再次条件筛选或过滤
5. 然后执行select子句:目的是选择业务需求的字段进行显示
6. 再执行order by子句:对选择后的字段进行排序
7. 最后执行limit子句:进行分页查询,或者是查询前n条记录

别名的用法

在select语句中,可以对表或者是列起别名操作。在使用汉字作为列别名时,可以加单双引号,也可不加。表别名不能加单双引号。

reg:
select name 姓名,
(year(now())-year(birth))  年龄 
from test1 t;

reg:
select e.empno 员工编号,e.ename,e.job,mgr '领导编号',hiredate,sal,comm,deptno from emp  e;

where子句的使用

作用:用于条件筛选或过滤

1)关系表达式: >,>=,<,<=,=,!=,<>
2)多条件连接符: and,or, [not] between ..and..
3)集合操作: [not] in (set), 

    >all(set), <all(set), >any(set), <any(set)
    注意:mysql不支持简单的集合查询操作,但是支持子查询,是针对于all和any集合操作来说的。
4)模糊查询: like
   _:占位符,表示匹配任意一个字符
   %:表示匹配任意N个字符,大于等于0.
   
reg:查询工资大于1600的所有员工的编号,姓名,职位,工资
   select empno,ename,job,sal from emp where sal>1600
reg:查询工资大于1600并且小于2500的所有员工的编号,姓名,职位,工资
   select empno,ename,job,sal from emp where sal>1600 and sal<2500;
   select empno,ename,job,sal from emp where sal between 1600 and 2500;
reg:查询10,20号部门的所有员工的信息。
   select * from emp where deptno not in (10,20);
reg:查询不是10号部门中姓名第二个字符是m的员工信息。
   select * from emp where deptno<>10 and ename like '_m%';

order by子句

用于查询排序的,通常放置在一个查询语句的最后部分。
语法: order by colName [asc|desc] [,colName [asc|desc]] 
      asc:升序, 默认情况就是升序 
      desc:降序
reg:查询员工表中的所有员工信息,按照工资降序排序
     select * from emp order by sal desc;
     
reg:查询员工表中的所有员工信息,按照工资降序排序,如果相同,再按照奖金升序排序
     select * from emp order by sal desc,comm asc;

group by子句

1.需求:
    有的时候,需要分组统计一些,最大值,最小值,平均值,和,总数之类的这样的信息,此时需要分组查询。

2.聚合函数:也叫分组函数
    - count(): 统计每组满足的记录总数 
    - max():统计每组满足条件的最大值 
    - min():统计每组满足条件的最小值  
    - avg():统计每组满足条件的平均值 
    - sum():统计每组满足条件的总和。

     注意:
     - 所有的聚合函数,都会忽略字段为null的那条记录。
    - count(*),不会忽略null值所在的行记录,即通常用于统计总行数。

3. 在分组查询时,只有分组字段可以写在select子句中,其他不是分组的字段,不应该写在select子句中,无意义
    
    多字段进行分组:
    A B 字段组合情况下:组的数组最多为 m*n
    
    1 a   1001
    1 b   1002
    2 b
    2 c
    3 a
    3 b
    1 a   1003
    1 b   1004

4. 聚合函数处理null值,可以使用ifnull(colName, value).
  - ifnull(colName,value): 如果colName对应的值不为空,就使用本身的值,如果为null,使用value.
  
  
# 案例:查询每个部门中的每种职位的最高工资,最低工资,工资之和
select deptno,job ,max(sal),min(sal),sum(sal) from emp group by job,deptno;

# 案例: 查询所有员工的平均工资,平均奖金 使用ifnull函数
select avg(ifnull(sal,0)),avg(ifnull(comm,0)) from emp;

having子句

只能使用在分组查询子句后面。起到再过滤的作用。

# 查询部门平均工资大于1000部门号,平均工资。
select deptno,avg(ifnull(sal,0)),max(sal) avg_sal from emp group by deptno having avg(ifnull(sal,0)) >1000;# 查询每种职位的最高工资大于1500的职位、最高工资,平均工资,平均奖金。
select job,max(sal),avg(ifnull(sal,0)),avg(ifnull(comm,0)) from emp group by job having max(sal)>1500;
去重查询

有的时候,我们需要查询表中有那些不同的数据。不需要重复出现,此时可以使用distinct关键字进行去重处理

注意:distinct关键字只能放在select关键字之后。
比如: 查询有那些部门号

分页查询

- 需求:当一页的数据量过大时,我们可以进行分页显示操作。注意:分页查询时,一般都要进行先排序,再分页。
- 关键字limit.
- 语法:limit m[,n];
  m 表示从第几条记录开始查询,
  n表示要查询的记录数目。 

  注意:mysql的记录index从0开始。

  一个参数的含义:limit n
  表示从0开始查询n条记录


案例1:每页5条记录,查询第二页的数据。
select empno,ename from emp limit 5,5;

案例2:查询第page页的数据, 每页大小为pageSize。limit的写法如下:
limit (page-1)*pageSize , pageSize

这篇关于MySQL基本查询语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119425

相关文章

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分