DQL数据查询语言–select的巧妙用法

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

  • DQL数据查询语言--select的巧妙用法
    • 1 完整的SELECT查询语句
    • 2 查询所有数据
    • 3 条件查询
    • 4 模糊查询
    • 5 统计查询
    • 6 分组查询
    • 7 排序查询
    • 8 分页查询
    • 9 去重查询
    • 10 连接查询

1 完整的SELECT查询语句

SELECT 字段名 / * / 表达式 / 函数调用
FROM 表1,表2,…
WHERE 分组前的过滤条件
GROUP BY 分组字段
HAVING 分组后的过滤条件
ORDER BY 字段名  排序规则(ASC / DESC)

下面以药品管理系统(DrugManagementSystem)中的药品信息表(Drug)为例,表明SELECT查询语句实际用法。

2 查询所有数据

查询所有数据,是针对不知道表中字段,也不清楚查看表结构的情况使用的,为避免增加查询过程的不必要的消耗(CPU、内存等),尽量查询所需字段的数据。

--查看Drug表的结构
sp_help Drug--查询Drug表的所有数据
SELECT * FROM Drug--查询Drug表中多个字段DrugName, DrugPrice, …的所属列数据
SELECT DrugName, DrugPrice, … FROM Drug--给字段取别名后(AS可省略),查询Drug表中多个字段DrugName, DrugPrice, …的所属列数据
SELECT DrugName AS 药品名称, DrugPrice 药品价格, … FROM Drug--查询多张表Drug, Price,…中所有字段
SELECT * FROM Drug, Price,…  --查看前n行数据
SELECTE TOP n FROM Drug

3 条件查询

条件查询的语法:WHERE 分组前的过滤条件 ;其中分组前的过滤条件可以是如下表达方式:

  • (1)关系运算:>、>= 、< 、<= 、= 、<>
  • (2)确定范围:BETWEEN … AND
  • (3)确定集合:IN(IN中的数值越多,产生的消耗就越大,能用BETWEEN就尽量不用IN)
  • (4)字符匹配:LIKE
  • (5)空值判断:IS NULL、IS NOT NULL(考虑到对NULL的判断会致使引擎放弃使用索引而进行全表查询,尽量避免使用NULL)
  • (6)逻辑操作:NOT、AND、OR(如果限制条件中有字段没有索引,则尽量少用OR,使用UNION或UNION ALL来代替OR)
  • (7)合并查询:UNION、UNION ALL、INTERSECT、MINUS(尽量用UNION ALL来代替UNION,因为UNION需要将结果集合后再进行唯一性过滤,这会增加CUP运算,加大资源的消耗和延迟,但是UNION ALL的使用前提是 2个结果集合没有相重复的数据)
  • (8)注意:条件查询前,先确定WHERE中字段的参数类型,避免和实际传入的参数类型不一致
--单条件查询
SELECT * FROM Drug WHERE DrugName = ‘健胃消食片’--多条件查询,并关系
SELECT * FROM Drug WHERE DrugName = ‘健胃消食片’ AND DrugPrice = 12--多条件查询,或关系
SELECT * FROM Drug WHERE DrugName = ‘健胃消食片’ OR DrugPrice = 12--范围查询
SELECT * FROM Drug WHERE DrugPrice >= 12 AND DrugPrice <= 22--范围查询
SELECT * FROM Drug WHERE DrugPrice BETWEEN 12 AND 22

4 模糊查询

模糊查询的语法:字段名 like ‘匹配字符串’ ;其中匹配字符串可以是如下表达方式:

  • %:0个或者多个字符(任意个字符)
  • _:任意一个字符
  • [ ]:在范围内的一个字符
  • [^]:不在范围内的一个字符
--查询DrugName以“消食片”结尾的药品
SELECT * FROM Drug WHERE DrugName LIKE ‘%消食片’--查询DrugName中间含有“消食”的药品
SELECT * FROM Drug WHERE DrugName LIKE ‘%消食%’--查询DrugName以“消食”开头的药品
SELECT * FROM Drug WHERE DrugName LIKE ‘消食%’--已知DrugCode是6个字符,查询出DrugCode以‘A0000’开头的药品信息
SELECT * FROM Drug WHERE DrugCode LIKE ‘A0000_’--只能表示一个字符,表示字符范围以A、B、C结尾前面的任意
SELECT * FROM Drug WHERE DrugCode LIKE ‘%[A-C]’

5 统计查询

统计查询,即用多行函数(组函数、聚集函数)来根据一列或多列对结果进行查询。

  • COUNT( ) 统计记录条数
  • MAX( ) 求最大值
  • MIN( ) 求最小值
  • SUM( ) 求总和
  • AVG( ) 求平均数
--查询Drug表中有多少条数据
SELECT COUNT( DrugPrice ) FROM Drug--查询Drug表中DrugPrice的最大值
SELECT MAX( DrugPrice ) FROM Drug--查询Drug表中DrugPrice的最小值
SELECT MIN( DrugPrice ) FROM Drug--查询Drug表中所有药品DrugPrice的总和
SELECT SUM( DrugPrice ) FROM Drug--查询Drug表中所有药品DrugPrice的平均值
SELECT AVG( DrugPrice ) FROM Drug

6 分组查询

分组查询的语法:GROUP BY语句 HAVING 分组后的过滤条件;其中GROUP BY子句用于结合组函数,根据一个或多个列对结果集进行分组

--不含分组后的过滤条件
SELECT DrugName, SUM( DrugPrice ) FROM Drug WHERE DrugTime = ‘2019/1’ GROUP BY DrugName--含分组后的过滤条件
DrugName, SUM( DrugPrice ) FROM Drug WHERE DrugTime = ‘2019/1’ GROUP BY DrugName HAVING SUM( DrugPrice ) > 600

7 排序查询

排序查询的语法:ORDER BY 字段名 排序规则(ASC:升序,从小到大 / DESC:降序,从大到小);ORDER BY子句一定在SELECT语句的末尾,本质就是在查询会结果后改变输出顺序

--按照药品价格DrugPrice升序排列
SELECT * FROM Drug ORDER BY DrugPrice ASC--按照药品价格DrugPrice降序排列
SELECT * FROM Drug ORDER BY DrugPrice DESC--按照药品Drug多个字段依次排序,默认为升序排序
SELECT * FROM Drug ORDER BY DrugPrice, DrugName

8 分页查询

分页查询的语法:LIMIT 范围;合理的使用分页方式可以提高分页效率

--只需要1条数据时,可使用LIMIT 1
SELECT * FROM Drug LIMIT 1--跳转到第n条数据查询第n条数据后的m条数据(数据范围为n+1至n+m)
SELECT * FROM Drug LIMIT n,m--跳转到第n条数据查询第n条数据后的m条数据(这种比上一种语法更优)
SELECT * FROM Drug WHERE DrugId > n-1 LIMIT m

9 去重查询

--去重查询,查询其除了药品信息表Drug中药品名称DrugName重复的数据
SELECT DISTINCT DrugName FROM Drug

10 连接查询

--左外连接(left jion):左表(table_name1) / 右表(table_name2)
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name--右外连接(right jion):左表(table_name1) / 右表(table_name2)
SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

  • 致谢
    若对大家有用,感谢点赞或评论;若有不足或补充之处,也感谢大家评论进行指正,后期我将对本文进行补充完善。相信这是互相进步的开始

DQL数据查询语言--select的巧妙用法相关推荐

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

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

  2. DQL -- 数据查询语言

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

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

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

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

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

  5. MySQL(二)——DQL数据查询语言

    文章目录 1. DQL简述 2. 指定查询字段 3. where 条件子句 4. 联表查询 5. 分页和排序 6. 子查询 7. 分组和过滤 8. Select 小结 1. DQL简述 Data Qu ...

  6. 2022-08-16 DQL数据查询语言

    DQL数据库查询语言 重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构. 构建数据库 创建一张student表: DROP TABLE IF EXIS ...

  7. MySQL→数据库、启动连接数据库、SQL→DDL数据定义语言及数据类型、DML数据操作语言、DQL数据查询语言、数据库约束→主键、唯一、非空、默认、外键、SQL、三大范式及一多关系、视图、内外连接

    MySQL连接退出命令 mysql –uroot -proot mysql –h127.0.0.1 –uroot -proot mysql --host=localhost --user=root - ...

  8. 查询语句 DQL 数据查询语言---使用select

    1. 准备条件 -- 创建数据库 use mydb; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ------------------------ ...

  9. DQL——数据查询语言

    目录 ​ 一.基础查询 1.1 查询表中的字段 1.1.1 查询表中的单个字段 1.1.2 查询表中的多个字段 1.1.3 查询表中的所有字段 1.2 查询常量值 1.3 查询表达式 1.4 查询函数 ...

最新文章

  1. 戏说肥哥系列之---买车
  2. Android startActivityForResult
  3. python 队列 一次取多个_Queue 队列模块-Python成为专业人士笔记
  4. 给source insight添加.cc的C++文件后缀识别(转载)
  5. css固定在右中间位置,css布局,左右固定中间自适应实现
  6. 个人项目api接口_5个免费有趣的API,可用于学习个人项目等
  7. react学习(3)----不能在该位置用setstate
  8. 改进粒子系统-GPU实现
  9. 网站服务器一般是多少宽带,服务器宽带一般是多少
  10. 有状态容器实践:k8s集成ceph分布式存储
  11. 网络设备商网管软件解决方案
  12. jsonp跨域请求原理
  13. 计算机常见的三种拓扑结构,局域网拓扑结构(常见三种)
  14. UA MATH524 复变函数 验证一个函数是否为调和函数
  15. SpringBoot 开发案例之各种参数传递,以及前端代码和postman测试(完整版)
  16. Java day 31 网络编程和简单练习
  17. SVN:客户端与服务器端安装、配置与使用
  18. IPsec IKE第一阶段主模式和野蛮模式
  19. python并列柱状图x轴设定_Matplotlib绘图时x轴标签重叠的解决办法
  20. echarts:在vue中使用渐变色

热门文章

  1. Spark Streaming概述_大数据培训
  2. 2020Android面经,历时一个半月,斩获3个大厂offer
  3. uoj #246. 【UER #7】套路
  4. 2017年11月14日 星期二
  5. 耗时3个多月、总结过往5年,马毅曹颖沈向洋撰文智能两大原则
  6. 论文研读-图可视化-NetV.js:Web端可视化工具库
  7. mount ntfs to centos5
  8. SpringMVC实现中英文切换
  9. N76E003开发笔记(关于使用N76E003过程遇到的问题)
  10. Retrofit2深度解析