DQL(数据查询语言)

一、基本查询

1.字段(列)控制
1)查询所有列
SELECT * FROM 表名;
->"*"表示查询所有列

2)查询指定列
SELECT 列1 [, 列2,..., 列n] FROM 表名;

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

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

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

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

4.给列起别名
一般在使用列运算后,会得到一个新的列,我们可以给这个列起一个别名
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;
->查询emp表列empno, ename, sal, comm其中sal大于10000且comm不为NULL的记录。
*SELECT empno, ename, sal FROM emp WHERE sal BETWEEN 20000 AND 30000;
->查询emp表列empno, ename, sal其中sal在20000到30000之间的记录。
SELECT empno, ename, job FROM emp WHERE job IN ('经理', '董事长');
->查询emp表列empno, ename, job其中job在('经理', '董事长')集合中的记录。

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

如果想查询姓张,名字几个字都可以的员工可以使用'%'。
*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 WHERE emp ORDER BY sal ASC;
->按sal升序排序
->其中ASC可以省略
2.降序
SELECT * FROM WHERE 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;

五、limit子句

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

MySQL学习笔记4——DQL的更多相关文章

  1. MySql学习笔记(一)之DQL常用查询

    MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前, ...

  2. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  3. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  4. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  5. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  6. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  7. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  8. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  9. MySQL学习笔记-数据库文件

    数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...

随机推荐

  1. AcWing 791. 高精度加法 解题记录

    题目地址 https://www.acwing.com/problem/content/description/793/ 题目描述给定两个正整数,计算它们的和. 输入格式共两行,每行包含一个整数. 输 ...

  2. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) E. Arson In Berland Forest 二分 前缀和

    E. Arson In Berland Forest The Berland Forest can be represented as an infinite cell plane. Every ce ...

  3. python-12-字典的嵌套与int快速排序

    前言 字典的增删改查我们都有一定的认识与了解啦,但是字典也可以嵌套列表.字典.元组等数据结构. 一.字典的嵌套 1.修改.添加 dic = { "name": ["lin ...

  4. vue中的父子组件相互调用

    vue中的父子组件相互调用: 1.vue子组件调用父组件方法:子组件:this.$emit('xx'); 父组件:定义yy方法,并在引用子组件时传参,如@xx="yy" 2.vue ...

  5. pyEcharts安装及使用指南(最新)

    pyEcharts安装及使用指南(最新): 网上资料大多数是0.5X的版本, 这里我给出我的0.5版本连接https://www.cnblogs.com/dgwblog/p/11811562.html ...

  6. 基于python的selenium常用操作方法(1)

    1 selenium定位方法    Selenium提供了8种定位方式. ·         id ·         name ·         class name ·         tag ...

  7. 黄聪:php一句代码让http跳转https

    //其他框架请加到入口某共公加载的文件中 //方法一 https状态 if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off'){ Head ...

  8. createscope

    /// <summary> /// Creates a new <see cref="IServiceScope"/> that can be used t ...

  9. SQL server已经设置为单用户模式,还是无法做分离、属性设置等操作

    https://www.cnblogs.com/xingyunqiu/p/10336938.html SQL server已经设置为单用户模式,Sql server还原失败数据库正在使用,无法获得对数 ...

  10. Winform中怎样获取项目图片资源并转换为Image对象

    场景 DevExpress的TreeList怎样给树节点设置图标: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10274554 ...