原文出处:https://blog.csdn.net/jianghao233/article/details/81180944

一、 基本查询

1. 字段(列)控制
1) 查询所有列
 SELECT * FROM 表名;
 SELECT * FROM emp;
 --> 其中“*”表示查询所有列

2) 查询指定列
 SELECT 列1 [, 列2, ... 列N] FROM 表名;
 SELECT empno, ename, sal, comm FROM 表名;

3) 完全重复的记录只一次
 当查询结果中的多行记录一模一样时,只显示一行。一般查询所有列时很少会有这种情况,但只查询一列(或几列)时,这总可能就大了!DISTINCT(去除重复)
 SELECT DISTINCT * | 列1 [, 列2, ... 列N] FROM 表名;
 SELECT DISTINCT sal FROM emp;
 --> 保查询员工表的工资,如果存在相同的工资只显示一次!

4) 列运算
 I 数量类型的列可以做加、减、乘、除运算
   SELECT sal*1.5 FROM emp;
   SELECT sal+comm FROM emp;

II 字符串类型可以做连续运算
   SELECT CONCAT('$', sal) FROM emp;

III 转换NULL值
   有时需要把NULL转换成其它值,例如com+1000时,如果com列存在NULL值,那么NULL+1000还是NULL,而我们这时希望把NULL当前0来运算。
   SELECT IFNULL(comm, 0)+1000 FROM emp;
   --> IFNULL(comm, 0):如果comm中存在NULL值,那么当成0来运算。

IV 给列起别名
   你也许已经注意到了,当使用列运算后,查询出的结果集中的列名称很不好看,这时我们需要给列名起个别名,这样在结果集中列名就显示别名了
   SELECT IFNULL(comm, 0)+1000 AS 奖金 FROM emp;
   --> 其中AS可以省略(空格即可)

2. 条件控制
1) 条件查询
  与前面介绍的UPDATE和DELETE语句一样,SELECT语句也可以使用WHERE子句来控制记录。
  * SELECT empno,ename,sal,comm FROM emp WHERE sal > 10000 AND comm IS NOT NULL;
  * SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 20000 AND 30000;
  * SELECT empno,ename,job FROM emp WHERE job IN ('经理', '董事长');

2) 模糊查询
  当你想查询姓张,并且姓名一共两个字的员工时,这时就可以使用模糊查询
  * SELECT * FROM emp WHERE ename LIKE '张_';
  --> 模糊查询需要使用运算符:LIKE,其中_匹配一个任意字符,注意,只匹配一个字符而不是多个。
  --> 上面语句查询的是姓张,名字由两个字组成的员工。

* SELECT * FROM emp WHERE ename LIKE '___'; /*姓名由3个字组成的员工*/

如果我们想查询姓张,名字是几个字都可以的员工时就要使用“%”了。
  SELECT * FROM emp WHERE ename LIKE '张%';
  --> 其中%匹配0~N个任意字符,所以上面语句查询的是姓张的所有员工。

SELECT * FROM emp WHERE ename LIKE '%阿%';
  --> 千万不要认为上面语句是在查询姓名中间带有阿字的员工,因为%匹配0~N个字符,

所以姓名以阿开头和结尾的员工也都会查询到。
  SELECT * FROM emp WHERE ename LIKE '%';
  --> 这个条件等同与不存在,但如果姓名为NULL的查询不出来!

二、排序

1) 升序
  SELECT * FROM  emp ORDER BY sal ASC;
  --> 按sal排序,升序!
  --> 其中ASC是可以省略的

2) 降序
  SELECT * FROM  emp ORDER BY comm DESC;
  --> 按comm排序,降序!
  --> 其中DESC不能省略

3) 使用多列作为排序条件
  SELECT * FROM WHERE emp ORDER BY sal ASC, comm DESC;
  --> 使用sal升序排,如果sal相同时,使用comm的降序排

三、聚合函数(都可以添加条件)
 
聚合函数用来做某列的纵向运算。
1) COUNT
  SELECT COUNT(*) FROM emp;
  --> 计算emp表中所有列都不为NULL的记录的行数
  SELECT COUNT(comm) FROM emp;
  --> 云计算emp表中comm列不为NULL的记录的行数

2) MAX
  SELECT MAX(sal) FROM emp;
  --> 查询最高工资

3) MIN
  SELECT MIN(sal) FROM emp;
  --> 查询最低工资
4) SUM
  SELECT SUM(sal) FROM emp;
  --> 查询工资合

5) AVG
  SELECT AVG(sal) FROM emp;
  --> 查询平均工资

四、分组查询

分组查询是把记录使用某一列进行分组,然后查询组信息。
  例如:查看所有部门的记录数。
  SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;
  --> 使用deptno分组,查询部门编号和每个部门的记录数
  SELECT job, MAX(SAL) FROM emp GROUP BY job;
  --> 使用job分组,查询每种工作的最高工资

组条件
  以部门分组,查询每组记录数。条件为记录数大于3
  SELECT deptno, COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*) > 3;

查询工资 > 30000 的职位

五、limit子句(方言,只适用于 MySQL)

LIMIT用来限定查询结果的起始行,以及总行数。
  例如:查询起始行为第5行,一共查询3行记录
  SELECT * FROM emp LIMIT 4, 3;
  --> 其中4表示从第5行开始,其中3表示一共查询3行。即第5、6、7行记录。

select * from emp limit 0, 5;

1. 一页的记录数:10行
  2. 查询第3页

select * from emp limit 20, 10;

(当前页-1) * 每页记录数
  (3-1) * 10

顺序:select / from /  where / group by / having / order by

练习:

1. 查询出部门编号为30的所有员工

select *from emp where deptno =30;

2. 所有销售员的姓名、编号和部门编号。

select ename,empno,deptno from emp where job ='销售员'

3. 找出奖金高于工资的员工。

select * from emp where comm>sal;

4. 找出奖金高于工资60%的员工。

select * from emp where comm>(sal * 0.6);

5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。

select * from emp where (deptno=10 AND job='经理') OR (deptno=20 AND job='销售员');

6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。

select * from emp where (deptno=10 AND job='经理') OR (deptno=20 AND job='销售员') OR (job not in ('经理','销售员') AND sal>=20000);

7. 有奖金的工种。

select DISTINCT job from emp where comm is not Null;

8. 无奖金或奖金低于1000的员工。

select * from emp where comm < 1000 OR comm is Null;

9. 查询名字由三个字组成的员工。

select * from emp where ename like '___'

10.查询2000年入职的员工。

select * from emp where hiredate like '2000%'

11. 查询所有员工详细信息,用编号升序排序

select * from emp order by empno  asc;

12. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序

select * from emp order by sal desc,hiredate asc;

13. 查询每个部门的平均工资

select deptno, AVG(sal) from emp group by deptno;

14. 查询每个部门的雇员数量。

select deptno, COUNT(1) from emp group by deptno;

15. 查询每种工作的最高工资、最低工资、人数

select job, MAX(sal), MIN(sal), COUNT(1) from emp group by job;

16. 显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于50000,输出结果按月工资的合计升序排列

select job, SUM(sal)  from emp group by job having SUM(sal)>50000 order by SUM(sal) asc;

--------------------- 
作者:姜皓 
来源:CSDN 
原文:https://blog.csdn.net/jianghao233/article/details/81180944 
版权声明:本文为博主原创文章,转载请附上博文链接!

DQL -- 数据查询语言(查询不会修改数据库表记录)相关推荐

  1. DQL -- 数据查询语言

    DQL -- 数据查询语言 查询不会修改数据库表记录! 一. 基本查询 1. 字段(列)控制 1) 查询所有列 SELECT * FROM 表名; SELECT * FROM emp; --> ...

  2. 数据库DQL数据查询语言

    文章目录 DQL数据查询语言 1.基础查询:SELECT子句和FROM子句 1.1 语法: 2. WHERE子句 2.1 使用AND"与"和OR"或"来连接多个 ...

  3. Mysql数据库——DQL数据查询语言

    DQL数据查询语言 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 执行顺序 实例 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 案例练习 小结 DQL,数据查询语言,用来查 ...

  4. MySQl数据库————DQL数据查询语言

    系列文章目录 文章目录 系列文章目录 前言 一.DQL 一.DQL数据查询语言 二.DQL单表查询 1.基本条件查询 2.多条件查询 3.范围查找 4.集合范围类查找 5.字符串模糊匹配 6.空值查询 ...

  5. DQL数据查询语言--select的巧妙用法

    DQL数据查询语言–select的巧妙用法 今天是周六,赶着这冬日的太阳,记下生活!记下经验! 巧用SQL的数据查询语句Select可以大大提高查询效率,针对测试开发都非常有用. DQL数据查询语言- ...

  6. php 批量修改表格数据,PHP批量修改数据库表前缀教程+代码

    有时候需要批量修改数据库表前缀,最简单的方法就是一个表一个表的手动修改,但是非常浪费时间.这里为大家分享一段自用的利用PHP批量修改数据库表前缀的方法,亲测可用,下面上代码. PHP修改表前缀代码&l ...

  7. 再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化

    原文:再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化 继上篇文章<绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来>发布后在博客园首页展示 ...

  8. 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...

    在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...

  9. MySQL数据库(3)_MySQL数据库表记录操作语句

    附: MYSQL5.7版本sql_mode=only_full_group_by问题1.查询当前sql_mode: select @@sql_mode2.查询出来的值为:set @@sql_mode ...

最新文章

  1. 转载: Qt 学习之路 2归档
  2. 部署RDS服务器实现密码修改功能
  3. 网络推广——网络推广专员在面对不同阶段网站优化各有妙计
  4. MySQL第12天:MySQL索引优化分析之性能优化案例实践
  5. python把list转成字典_python中将list转为dict
  6. [原创]css设置禁止中文换行
  7. Linux学习总结(18)——Linux使用init命令关机、重启、切换模式
  8. 解决idea中maven plugins标红的问题
  9. android看本地视频播放器下载,Android平台上5款最好的本地视频播放软件
  10. js-合并两个有序数组
  11. CodeForces - 735D Taxes (哥德巴赫猜想)
  12. Sphinx 自动化文档
  13. w3c 斐波纳契奇数求和算法挑战
  14. Maya---倒角命令
  15. in和exists的区别
  16. 中文 gbk gb2312 在线转换 编码码 对照表 自动转换 在线转换(推荐)
  17. Spring 初始化与 Bean 初始化
  18. 华为设置计算机,华为无线路由器
  19. 2022下半场,Plug and Play 最关心的金融科技创新趋势是?
  20. Android 黑马Topline《企业级项目实战教程》2022

热门文章

  1. Linux 进程资源分配,linux 进程管理和内存分配
  2. 【OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声
  3. oracle中orand使用,Postgres兼容Oracle研究——orafce调研
  4. 联想微型计算机启天e4300,戴尔轻薄商务本Latitude E4200/E4300开卖
  5. 带你一起学软件工程的专业英语!(IT行业、四六级党快记起来)《软件工程专业英语》第一单元:启动软件项目——单词、短语、名词缩写、难句、备忘录的基本格式样本(必备技能)
  6. python中的以简单例子解释函数参数、函数定义、函数返回值、函数调用
  7. SpringCloud介绍(一)
  8. 洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)
  9. zufeoj 分数线划定
  10. vue 中 created 和 mounted 钩子生命周期 问题