四、SQL命令-DQL(数据查询语言)第一部分之基础应用

SQL命令-DQL

  • DQL(数据查询语言)主要用于进行数据表中数据的查询

基本语法

  • SELECT 属性1,属性2,.... FROM 表名;
  • 例子:SELECT empno,ename,jobno,hiredate FROM insane_emp;
  • 通配符*,代表所有,可以使用*代表查询表中所有列
    • 例子:SELECT * FROM insane_emp;

运算

  • 使用SELECT语句进行数据查询时,还可以进行算术运算、限定查询、排序、分组等控制
  1. 算术运算
  • 能够在SELECT语句查询的结果基础上进行相应的数学运算
  • 例子:SELECT sal+100 FROM insane_job;

限定查询

  • 在使用SELECT语句进行查询时,使用WHERE子句,就能查询出满足条件的记录,而不是表中的所有记录
  • 例子:SELECT * FROM insane_emp WHERE empno=20161001;
  • WHERE子句也可以使用多个限定条件
  • 在WHERE子句中设置的限定条件,一般由各种运算符组成MySQL中常用的运算符有几类:数学运算符、比较运算符、逻辑运算符
  1. 比较运算符:


    image.png
  2. 特殊的比较运算符:


    image.png

    image.png
  • 通配符%代表若干个字符,通配符_代表一个字符
  1. 逻辑运算符:


    image.png

    image.png
  • 逻辑运算符 ! 在使用的时候一定要注意不能省略后面括号
  • 运算符优先级:数学运算符>比较运算符>逻辑运算符

去除重复

  • 使用DISTINCT关键字能够将查询到的结果集中重复的记录去除
  • 例子:SELECT DISTINCT hiredate FROM insane_emp;

设置别名

  • 设置别名使用AS关键字可以在查询时设置属性(列)的别名,不过AS可以省略
  • 例子:SELECT empnoAS '员工号',ename AS '员工姓名' FROM insane_emp;

排序

  • 使用ORDER BY子句可以将SELECT查询到的结果集按照指定属性排序,默认采用升序(ASC)排序方式,也可以使用降序(DESC)
  • 例子:SELECT * FROM insane_emp ORDER BY deptno;
  • 同样,排序时也可以指定多个属性排序
  • 当多属性排序方式有冲突时,按照指定先后顺序排序

分组统计

  • 使用GROUP BY子句可以对查询结果按指定属性进行分组统计
  • 例如:查询公司内各个部门员工人数
    • SELECT COUNT(deptno) FROM insane_emp GROUP BY deptno;
  • 一般分组GROUP BY子句和聚合函数一起使用,常用的聚合函数有:COUNT()、AVG()、SUM()、MAX()、MIN()、GROUP_CONCAT()

聚合函数

  1. 计数函数COUNT
  • 统计表中某个属性对应的记录数
  • 例子:SELECT COUNT(empno) FROM insane_emp;
  1. 求平均值函数AVG
  • 统计表中某个属性对应的平均值
  • 例子:SELECT AVG(sal) FROM insane_job;
  1. 求和函数SUM
  • 统计表中某个属性的汇总值(和)
  • 例子:SELECT SUM(sal) FROM insane_job;
  1. 最大值函数MAX
  • 统计表中某个属性的最大值
  • 例子:SELECT MAX(sal) FROM insane_job;
  1. 最小值函数MIN
  • 统计表中某个属性的最小值
  • 例子:SELECT MIN(sal) FROM insane_job;
  1. 列值拼接函数GROUP_CONCAT
  • 将表中某个属性的所有值拼接到同一个结果中,默认值与值之间用逗号分隔,也可以使用SEPARATOR关键字指定分隔符
  • 例子:SELECT GROUP_CONCAT(jobname SEPARATOR '+') FROM insane_job;

需要注意的是:
1.在SELECT命令中使用分组时,SELECT关键字后只能使用聚合函数和GROUP BY子句后出现的属性2.聚合函数不能直接在WHERE子句中使用

分组统计-Having

  • 和分组GROUP BY子句经常一起使用的还有HAVING子句
  • HAVING子句为分组统计进一步设置统计条件,效果和WHERE子句类似
  • 它们的区别是:
    1. WHERE子句在查询前限定查询条件
    2. HAVING子句在分组后进行进一步限定
    • 例如:查询公司内各个部门员工人数,并返回部门员工人数大于2人的部门编号
    • SELECT COUNT(*),deptno FROM insane_emp GROUP BY deptno HAVING COUNT(deptno)>2;
  • 分组同样可以基于多个属性
    • 例如:查询公司内各个部门不同职位的员工人数
    • SQL语句:SELECT deptno,jobno,COUNT(empno) FROM insane_emp GROUP BY deptno,jobno;

限定结果

  • 使用LIMIT子句可以限定查询返回的记录数
  • 例如:查询数据表中前两条记录
    -SQL语句:SELECT * FROM insane_emp LIMIT 2;`
  • LIMIT子句后面可以有一个参数,也可以有两个参数
    1. 如果有一个参数,该参数表示从表开始位置查询对应的记录数量
    2. 如果有两个参数,那么第一个参数表示起始位置与第一行的偏移量,第二个参数表示查询的数量
    • 例子:SELECT * FROM insane_emp LIMIT 2,3;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:1.mysql是一种关系型数据库 2.大小写不敏感 3.字符串用单引号,若字符串里有单引号,则...
    孙浩j阅读 1,345评论 0 2
  • 查询语句语法: 1 基本查询(Select…From) 1.1 全表和特定列查询 1.2 列别名 1.3 算术运算...
    Rex_2013阅读 571评论 0 0
  • 1、DQL(数据查询语言)主要用于进行数据表中数据的查询 基本语法:SELECT 属性1,属性2,…. FROM ...
    熊大呀阅读 1,026评论 0 0
  • 学习目的 掌握Mysl常用的查询语句 掌握数据查询在实际开发中的应用 一.Mysql数据查询(DQL) DQL概念...
    从前的小余儿阅读 298评论 0 0
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,087评论 2 7