1. 基础查询

  (1) 查询整表

  1.   SELECT * FROM 表名; -- 不推荐使用"*",不方便阅读

  (2) 选择性查询

  1.   SELECT 列名,列名,列名 FROM 表名;

  (3) 去重查询

  1.   SELECT DISTINCT 列名 FROM 表名;

  

  (4) 带多列名的去重查询

  1.   SELECT DISTINCT 列名,列名 FROM 表名; /* 和单列名去重查询区别,
        要同时满足多个列名组合起来的非独一性才能算重复,两个结果完全一样才算重复 */

  

  (5) 计算数值数据

  1.   SELECT 列名,列名,列名 + 列名 FROM 表名; -- 注意,NULL加任何值都为NULL。数值可以加减乘除取余。

  

  (6) 带修正的计算数据

  1.   SELECT 列名,列名,列名 + IFNULL(列名,指定数据) FROM 表名; /*如果遇到指定列中为NULL,
  2.     那么将NULL设置为指定数据 */

  

  (7) 为列名起别名

  1.   SELECT 列名 AS '别名', 列名 AS '别名' FROM 表名; -- AS 是可以用空格来替代

  

2. 条件查询

  (1) 比较

  1.   SELECT 列名 FROM 表名 WHERE 列名 > 条件值; -- 查询大于条件值的数据
  2.   SELECT 列名 FROM 表名 WHERE 列名 < 条件值; -- 查询小于条件值的数据
  3.   SELECT 列名 FROM 表名 WHERE 列名 >= 条件值; -- 查询大于等于条件值的数据
  4.   SELECT 列名 FROM 表名 WHERE 列名 <= 条件值; -- 查询小于等于条件值的数据
  5.   SELECT 列名 FROM 表名 WHERE 列名 = 条件值; -- 查询等于条件值的数据
  6.   SELECT 列名 FROM 表名 WHERE 列名 <> 条件值; -- 查询不等于条件值的数据
  7.   SELECT 列名 FROM 表名 WHERE 列名 != 条件值; -- 查询不等于条件值的数据,MySQL特有。

  (2) 范围

  1.   SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 条件值1 AND 条件值2; /*
  2.     查询大于等于条件值1~小于等于条件值2的数据 */
  3.   SELECT 列名 FROM 表名 WHERE 列名 IN (条件值1,条件值2); /*
  4.     查询列名和集合中的条件值匹配的数据 */

  (3) 空值

  1.   SELECT 列名 FROM 表名 WHERE 列名 IS NULL; /* 查询指定列为NULL的数据。
  2.     NULL很特殊,不能结合运算符。 */
  3.   SELECT 列名 FROM 表名 WHERE 列名 IS NOT NULL; -- 查询指定列不为NULL的数据。

  (4) 逻辑运算符

  1.   SELECT 列名 FROM 表名 WHERE 列名=条件值 AND 列名=条件值; -- 同时符合所有条件的值被查询
  2.   SELECT 列名 FROM 表名 WHERE 列名=条件值 OR 列名=条件值; -- 符合任一条件的值都被查询
  3.   SELECT 列名 FROM 表名 WHERE 列名 NOT IN (条件值1,条件值2); /*
  4.     查询除了条件值外任何数据,NOT后面任何条件都取反 */

  (5) 模糊查询

  1.   SELECT 列名 FROM 表名 WHERE 列名 LIKE '条件值%'; -- 类似于通配符,"%"代表任意个数字符
  2.   SELECT 列名 FROM 表名 WHERE 列名 LIKE '条件值_'; /* 类似于通配符,"_"代表任意个数字符,
        这两种排列可以混合放置到任何位置 */

  

  

3. 排序查询

  (1) 基础排序

  1.   SELECT 列名 FROM 表名 ORDER BY 列名;

  (2) 指定排列顺序

  1.   SELECT 列名 FROM 表名 ORDER BY 列名 排序方式 , 列名 排序方式; /*
  2.     组合排序,前面的列名 排序方式优先级高,在相同的条件下,判断下一级的数据优先级 */
  3.   SELECT 列名 FROM 表名 ORDER BY 列名 ASC; -- 升序,也是默认的排序方式
  4.   SELECT 列名 FROM 表名 ORDER BY 列名 DESC; -- 降序

  

4. 聚合函数

  聚合函数就是将纵向数据作为整体进行运算,给出结果。

  但是计算时是排除NULL空值的,尽量不要计算包含空值的列,会导致结果与预期偏差。

  (1) 无视空值

  1.   SELECT COUNT(列名) FROM 表名; -- 计算一列数据的非空个数
  2.   SELECT MAX(列名) FROM 表名; -- 计算一列数据的非空最大值
  3.   SELECT MIN(列名) FROM 表名; -- 计算一列数据的非空最小值
  4.   SELECT SUM(列名) FROM 表名; -- 计算一列数据的非空数之和
  5.   SELECT AVG(列名) FROM 表名; -- 计算一列数据的非空数平均值

  (2) 处理空值

  1.   SELECT COUNT(IFNULL(列名,替换值)) FROM 表名; -- 计算一列数据的个数

5. 分组查询

  分组查询的原理就是将指定的列相同的内容进行分组,然后对分组后的指定数据进行聚合计算。

  要查询的数据必须要有共性的,否则非共性的数据查询出来是无意义的。

  (1)普通分组

  1.   SELECT 列名,聚合函数(列名) FROM 表名 GROUP BY 分组列名;

  

  (2) 限制分组

  带有数据限定的分组,使用 WHERE 和 HAVING 对结果前后进行处理。

  1.   SELECT 列名,聚合函数(列名) FROM 表名 WHERE 列名 运算符 条件值
  2.    GROUP BY 分组列名 HAVING 列名/聚合函数(列名) 运算符 条件值;

  WHERE 子句是分组前将数据进行处理;HAVING 子句是分组处理后对结果进行处理。

  因为 WHERE 是分组前处理原始数据,故不可处理聚合函数;而 HAVING 两种数据都可以处理。

  

6. 分页查询

  将查询出来的数据分为多组显示,指定每组的开始数据索引和每页显示多少数据完成。

  每页开始的索引计算公式是:每页开始索引 = (当前页码 - 1) * 每页显示条数。

  第一页开始索引是从 0 开始的,每页开始索引是按照查询出的数据的序号排的。

  注意:LIMIT 子句是MySQL的特有语句,其他数据库软件实现分页也有不同的语句。

  1.   SELECT 列名 FROM 表名 LIMIT 每页开始索引,每页几条数据;

  

7. 多表查询

  (1) 问题描述

    假设目前有两张表,员工表和部门表。想要查询员工的部门,就需要将两张表结合起来查询。

    

    

    如果单纯的用 SELECT * FROM dept,emp; 查询,则会查询出错误的结果。这种结果叫做"笛卡尔积"。

    

    使用正确的多表查询语句就可以消除查询结果中无用的数据。

  (2) 内连接

    1) 隐式内连接

    使用 WHERE 语句,判断两表对应字段的数据匹配来完成查询。

  1.     SELECT 表名.列名 FROM 表名,表名 WHERE 表名.列名 运算符 表名.列名;

    

    2) 显式内连接

    使用 INNER JOIN ON ,显式的匹配合适数据,与 WHERE 效果一样。

  1.     SELECT 表名.列名 FROM 表名 INNER JOIN 表名 ON 表名.列名 运算符 表名.列名;

    

    3) 注意

    要查询的数据在哪些表中;查询的条件是什么;需要那些字段(列)的数据。

  (3) 外连接

    外连接为了解决部分数据在内连接时数据不合法的问题。

    1) 左外连接

    查询左表所有数据和右表和左表的交集数据。这个常用,因为左右表的位置调换就可以实现右外连接。

  1.     SELECT 表名.列名 FROM 表名 LEFT OUTER JOIN 表名 ON 表名.列名 运算符 表名.列名;

    

    2) 右外连接

    查询右表所有数据和左表和右表的交集数据。

  1.     SELECT 表名.列名 FROM 表名 RIGHT OUTER JOIN 表名 ON 表名.列名 运算符 表名.列名;

    

  (4) 子查询

    1) 基础概念

    SELECT 查询出来的数据可以成为另一个 SELECT 的源数据来进行查询,这个称为嵌套查询,也叫子查询。

    例:查询最高工资的员工和他的全部信息。

    

    2) 单行单列子查询

    子查询可以作为条件,使用运算符进行判断筛选。

    3) 多行单列子查询

    子查询的结果变得多了起来,但是还是一种属性,可以当作一个集合来使用。

    例如:查询"财务部"和"市场部"的员工信息。

    

    4) 多行多列子查询

    此时子查询出来的结果就是一张临时表(虚拟表),此时就可以将这个子查询作为一张表进行多表查询。

    注意:要使用临时表中的数据,需要给这个虚拟表起一个别名,方便使用。

    例如:查询入职日期晚于2010-01-01的员工信息和部门。

    

DQL:查询表中数据的更多相关文章

  1. DQL 查询表中的数据

    DQL 查询表中的数据:查询语句(最复杂的语句)不会对数据库中的数据进行修改,只是一种显示数据的方式 语法格式: select 字段列表 from 表名列表 where 条件列表 group by 分 ...

  2. mysql去重查询表中数据

    1.distinct select count(distinct CName) from teble select count(CName) from (select distinct CName f ...

  3. sqlite数据库 adb 从配置到查询表中数据全过程-----献给初学的自己

    1.   E:\Android\android-sdk-windows\platform-tools[将adb.exe文件的路径放到path中,设置环境变量] 2.  adb -s emulator ...

  4. Oracle游标-循环查询表中数据(表名),并执行

    Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount ); --定义一个游标变量 curs ...

  5. oracle 查询表中数据行(row)上最后的DML时间

    在这介绍Oracle 10G开始提供的一个伪列ORA_ROWSCN,它又分为两种模式一种是基于block这是默认的模式(块级跟踪):还有一种是基于row上,这种模式只能在建里表时指定ROWDEPEND ...

  6. vue学习(十四) 条件搜索框动态查询表中数据 数组的新方法

    //html <div id="app"> <label> 名称搜索关键字: <input type="text" clasa=& ...

  7. Oracle中查询表中数据的上次更新时间

    目前找到的是以下方式,但是这种方式在表的数据量比较大的时候效率会比较慢. select to_char(scn_to_timestamp(max(ora_rowscn)),'YYYY-MM-DD HH ...

  8. (笔记)Mysql命令select from:查询表中的数据(记录)

    select from命令用来查询表中的数据. 1) 查询所有行命令格式: select <字段1, 字段2, ...> from < 表名 > where < 表达式 ...

  9. SQL分类之DQL:查询表中的记录

    DQL:查询表中的记录 select * from 表名: 1.语法 select  字段列表from 表名列表where  条件列表group by 分组字段having 分组之后的条件order ...

随机推荐

  1. 安装mysql采坑记录

    安装之前彻底卸载之前的mysql,再次安装,初始化数据库那一步失败. 再次彻底卸载mysql,把原先的安装路径的文件夹删除,文件夹路径:C:\ProgramData,再次安装,成功. 总结:重装mys ...

  2. Unity 自定义"=="操作符 [翻译来源blogs.unity3d,2014/05]

    主要内容来源 https://blogs.unity3d.com/cn/2014/05/16/custom-operator-should-we-keep-it/ 在我们代码里,如果有这样的代码: i ...

  3. background 背景图片 --css3

    background 1.设置背景平铺background-repeat round :图片会进行缩放后平铺space : 图片会进行平铺,中间留下空白空间 注:当滚动行为设为fixed,round和 ...

  4. socket基本用法

    socket介绍 1.什么是socket socket是应用层与传输层中间的一个软件抽象层,它是一组接口.它把TCP/IP这些复杂的协议统一封装起来 这样我们只要知道如何使用socket就好,就已经符 ...

  5. Hibernate-validate工具类,手动调用校验返回结果

    引言:在常见的工程中,一般是在Controller中校验入参,校验入参的方式有多种,这里介绍的使用hibernate-validate来验证,其中分为手动和自动校验,自动校验可以联合spring,使用 ...

  6. 如何在SAP Kyma的控制台里扩展新的UI

    方法是创建一个新的resource,类型为ClusterMicroFrontend. 使用命令行kubectl get ClusterMicroFrontend查看这些UI扩展: 最后自定义的UI出现 ...

  7. 4.闭锁 CountDownLatch

    /*CountDownLatch 闭锁*/ CountDownLatch 是一各同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待 闭锁可以延迟线程的进度 直到 其到达终 ...

  8. vue组件间的传值方式及方法调用汇总

    1.传值 a.父组件传子组件 方法一: 父页面: <myReportContent v-if="contentState==1" :paramsProps='paramsPr ...

  9. tr 命令详细介绍

    tr用来从标准输入中对字符进行操作,主要用于删除文件中指定字符.字符转换.压缩文件字符. 我们可以用:tr --help查看一下系统详细介绍 [root@bqh-118 scripts]# tr -- ...

  10. 【问题】Difference between ">/dev/null 2>&1" and "2>&1 >/dev/null"

    https://www.unix.com/shell-programming-and-scripting/125947-difference-between-dev-null-2-1-2-1-dev- ...