美文网首页
DQL数据查询 总结 & 实例 - SQL

DQL数据查询 总结 & 实例 - SQL

作者: RayRaymond | 来源:发表于2020-04-17 15:16 被阅读0次
DQL总结

列控制

查询所有列

SELECT * FROM 表名

查询指定列 Where

SELECT 列名 FROM 表名 WHERE ...

去重查询 DISTINCT

完全重复记录只显示一次

SELECT DISTINCT 列名 FROM 表名
去重查询

列运算

列运算并不会修改原始数据

1. 数量类型的列可以加减乘除

无法转换成数字的类型会按0计算

SELECT *,AGE+1 FROM STU;
数量类型列运算

2. IFNULL 转换NULL

任何东西 + NULL 都为 NULL

SELECT *,AGE+NUMBER FROM STU;
任何东西 `+ NULL` 都为 `NULL`
SELECT *,AGE+IFNULL(NUMBER,0) FROM STU;
`IFNULL` 转换`NULL`值

3. 字符串类型的列可以连续运算 CONCAT

SELECT CONCAT(... , ...) FROM ...
SELECT CONCAT(EDUCATION, '-', NAME) FROM STU
CONCAT

4. 重命名列 AS

SELECT CONCAT(EDUCATION, '-', NAME)  AS '教育+姓名' FROM STU;

AS 可以省略

SELECT NAME 姓名, GENDER 性别 FROM STU;

条件查询

1. 条件控制 WHERE

类似IF语句

SELECT NAME 姓名,INCOME 收入 FROM STU 
WHERE EDUCATION = 'pg' AND GENDER = 'MALE';
WHERE 语句

2. 模糊查询 LIKE

  • 长度一定 用_
# 查5字姓名
SELECT NAME 姓名 FROM STU 
WHERE NAME LIKE '_____';
长度一定,模糊查询
  • 长度不定 用%
# 查J开头姓名
SELECT NAME 姓名 FROM STU 
WHERE NAME LIKE 'J%';
长度不定,模糊查询

排序 ORDER BY

1. 升序 ASC

SELECT * FROM STU 
ORDER BY AGE ASC;

ASC 可以省略

2. 降序 DESC

SELECT * FROM STU 
ORDER BY AGE DESC;

3. 多列做条件

SELECT * FROM STU 
ORDER BY AGE ASC, INCOME DESC;

先用 AGE 升序排列,AGE 相同时用 INCOME 降序


聚合函数 - 纵向查询

纵向查询

结合应用

SELECT COUNT(*) 人数, SUM(INCOME) 工资总和, AVG(SAL) 销售平均 FROM STU ;
聚合函数

分组查询 GROUP BY

分组查询
  • 直接分组查询
select income,count(*) from stu group by income;
group by
  • 分组前条件 WHERE
select education,count(*) from stu 
where gender = 'male' group by education;
  • 分组后设置条件 HAVING
select education,count(*) 
from stu group by education having count(*)>1;
  • Group by 代替 distinct
    1. 当对系统的性能高并数据量大时使用group by
    2. 当对系统的性能不高时使用数据量少时两者皆可
    3. 尽量使用group by
select distinct salary 
from salaries 
where to_date='9999-01-01' 
order by salary desc;
select salary 
from salaries 
where to_date='9999-01-01' 
GROUP BY SALARY
order by salary desc;

LIMIT 语句

限定查询结果的起始行和总行数。

select * from stu limit 0,5;

每页8行记录 查P17数据:(当前页-1)* 每页记录数


JOIN 语句

join

Join / inner join

如果表中有至少一个匹配,则返回行

left join

即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN

即使左表中没有匹配,也从右表返回所有的行

FULL JOIN

只要其中一个表中存在匹配,则返回行

on 和 where 条件的区别

  1. on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
  2. where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

Reference

[1] SQL 连接(JOIN)
[2] 数据库SQL实战
[3] SQL-exercises w3resource

相关文章

  • DQL数据查询 总结 & 实例 - SQL

    列控制 查询所有列 查询指定列 Where 去重查询 DISTINCT 完全重复记录只显示一次 列运算 列运算并不...

  • SQL基础概念

    SQL分类 DQL(数据查询语言):查询语句,凡是select都是DQL DML(数据操作语言):insert d...

  • SQL语句

    SQL语句主要分为四类 DQL(数据查询语言): 查询语句,凡是select语句都是DQL。 DML(数据操作语言...

  • SQL语句基础

    SQL:结构化查询语言 SQL语言分类 DDL:数据定义语言。 DML:数据操作语言。 DQL:数据查询语言。 数...

  • 《数据库系统概论》笔记 3 -- SQL 基本功能

    3.1 SQL 概述 3.1.1 SQL 的特点 综合统一 将数据定义语言(DML)、数据查询语言(DQL)、数据...

  • 第一周:SQL进阶总结

    1、学习内容 SQL语句主要分为: DQL:数据查询语言,用于对数据进行查询,如select DML:数据操作语言...

  • SQl--DQL之简单查询(1)

    SQL语言的分类 DQL(Data. Query Language):数据查询语言select DML(Date ...

  • GreenDao

    1.SQL语句分类 DDL数据定义语言DML数据操作语言DCL数据控制语言DQL数据查询语言 2.SQL语句 ①创...

  • 基础篇-语法/数据类型/运算符/常用函数

    sql分类 SQL语言共分为三大类:数据操纵语言DML(数据查询语言DQL),数据定义语言DDL,数据控制语言DC...

  • MySQL

    SQL语言分类 DQL 数据查询语言 DML 数据操作语言 DCL 数据控制语言 DDL 数据定义语言 DTL 数...

网友评论

      本文标题:DQL数据查询 总结 & 实例 - SQL

      本文链接:https://www.haomeiwen.com/subject/mgtrvhtx.html