1. 基础查询

  (1) 查询整表

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

  (2) 选择性查询

  SELECT 列名,列名,列名 FROM 表名;

  (3) 去重查询

  SELECT DISTINCT 列名 FROM 表名;

  

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

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

  

  (5) 计算数值数据

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

  

  (6) 带修正的计算数据

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

  

  (7) 为列名起别名

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

  

2. 条件查询

  (1) 比较

  SELECT 列名 FROM 表名 WHERE 列名 > 条件值; -- 查询大于条件值的数据
  SELECT 列名 FROM 表名 WHERE 列名 < 条件值; -- 查询小于条件值的数据
  SELECT 列名 FROM 表名 WHERE 列名 >= 条件值; -- 查询大于等于条件值的数据
  SELECT 列名 FROM 表名 WHERE 列名 <= 条件值; -- 查询小于等于条件值的数据
  SELECT 列名 FROM 表名 WHERE 列名 = 条件值; -- 查询等于条件值的数据
  SELECT 列名 FROM 表名 WHERE 列名 <> 条件值; -- 查询不等于条件值的数据
  SELECT 列名 FROM 表名 WHERE 列名 != 条件值; -- 查询不等于条件值的数据,MySQL特有。

  (2) 范围

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

  (3) 空值

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

  (4) 逻辑运算符

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

  (5) 模糊查询

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

  

  

3. 排序查询

  (1) 基础排序

  SELECT 列名 FROM 表名 ORDER BY 列名;

  (2) 指定排列顺序

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

  

4. 聚合函数

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

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

  (1) 无视空值

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

  (2) 处理空值

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

5. 分组查询

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

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

  (1)普通分组

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

  

  (2) 限制分组

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

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

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

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

  

6. 分页查询

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

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

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

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

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

  

7. 多表查询

  (1) 问题描述

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

    

    

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

    

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

  (2) 内连接

    1) 隐式内连接

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

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

    

    2) 显式内连接

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

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

    

    3) 注意

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

  (3) 外连接

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

    1) 左外连接

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

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

    

    2) 右外连接

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

    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. C++ ifstream ofstream 注意事项

    很久没写C++,已经完全不会写了... 在使用ifstream读取一个二进制文件时,发现读取的内容和源文件不相同,导致数据解析失败,于是尝试把用ifstream读取的内容用ofstream写入另一个文 ...

  2. el-select 可选择可输入

    <el-select v-model="saveWardForm.wardCode" placeholder="" filterable @blur=&q ...

  3. 程序员与数据库打交道的JDBC知识概要

    1.JDBC全称:Java database connectivity,Java数据库连接. (1)           JDBC是一种用于执行SQL语句的Java API,为多种关系数据库提供多种统 ...

  4. css多行超出时,超出高度,显示省略号

    .layout display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;

  5. 安卓已过时的ProgressDialog对话框

    private ProgressDialog mDialog; private Handler mHandler; //初始化Handler //初始化 mDialog = new ProgressD ...

  6. 浅析Java中的集合

    先了解一下集合与数组的区别:数组是java中存储基本数据类型.引用类型的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合只能存储引用类型的数据,长度可变,可在多数情况下使用. 集 ...

  7. kernel源代码标记:mainline 、longterm、stable、linux-next、snapshot的含义

    mainline .longterm.stable.linux-next.snapshot这些名词,都是linux kernel source的标记名称,可以理解为代号. mainline mainl ...

  8. Window脚本学习笔记之BAT文件处理

    BAT文件处理 列出盘中特定文件名的文件: @echo offdir C:\*.jpg /b/s>.\CDatejpg.txt dir C:\*.png /b/s>.\CDatepng.t ...

  9. Unknown initial character set index '255' received from server. Initial client character 解决方法

    Unknown initial character set index '255' received from server. Initial client character set can be ...

  10. redis事务机制

    目录 一.事务的实现 1.multi——开启事务 2.命令入队列 3.exec——执行事务 4.DISCARD——放弃执行 5.错误处理 二.watch命令 redis官方文档:Redis trans ...