DQL数据查询语言--select的巧妙用法
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的巧妙用法相关推荐
- 数据库DQL数据查询语言
文章目录 DQL数据查询语言 1.基础查询:SELECT子句和FROM子句 1.1 语法: 2. WHERE子句 2.1 使用AND"与"和OR"或"来连接多个 ...
- DQL -- 数据查询语言
DQL -- 数据查询语言 查询不会修改数据库表记录! 一. 基本查询 1. 字段(列)控制 1) 查询所有列 SELECT * FROM 表名; SELECT * FROM emp; --> ...
- Mysql数据库——DQL数据查询语言
DQL数据查询语言 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 执行顺序 实例 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 案例练习 小结 DQL,数据查询语言,用来查 ...
- MySQl数据库————DQL数据查询语言
系列文章目录 文章目录 系列文章目录 前言 一.DQL 一.DQL数据查询语言 二.DQL单表查询 1.基本条件查询 2.多条件查询 3.范围查找 4.集合范围类查找 5.字符串模糊匹配 6.空值查询 ...
- MySQL(二)——DQL数据查询语言
文章目录 1. DQL简述 2. 指定查询字段 3. where 条件子句 4. 联表查询 5. 分页和排序 6. 子查询 7. 分组和过滤 8. Select 小结 1. DQL简述 Data Qu ...
- 2022-08-16 DQL数据查询语言
DQL数据库查询语言 重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构. 构建数据库 创建一张student表: DROP TABLE IF EXIS ...
- MySQL→数据库、启动连接数据库、SQL→DDL数据定义语言及数据类型、DML数据操作语言、DQL数据查询语言、数据库约束→主键、唯一、非空、默认、外键、SQL、三大范式及一多关系、视图、内外连接
MySQL连接退出命令 mysql –uroot -proot mysql –h127.0.0.1 –uroot -proot mysql --host=localhost --user=root - ...
- 查询语句 DQL 数据查询语言---使用select
1. 准备条件 -- 创建数据库 use mydb; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ------------------------ ...
- DQL——数据查询语言
目录 一.基础查询 1.1 查询表中的字段 1.1.1 查询表中的单个字段 1.1.2 查询表中的多个字段 1.1.3 查询表中的所有字段 1.2 查询常量值 1.3 查询表达式 1.4 查询函数 ...
最新文章
- 戏说肥哥系列之---买车
- Android startActivityForResult
- python 队列 一次取多个_Queue 队列模块-Python成为专业人士笔记
- 给source insight添加.cc的C++文件后缀识别(转载)
- css固定在右中间位置,css布局,左右固定中间自适应实现
- 个人项目api接口_5个免费有趣的API,可用于学习个人项目等
- react学习(3)----不能在该位置用setstate
- 改进粒子系统-GPU实现
- 网站服务器一般是多少宽带,服务器宽带一般是多少
- 有状态容器实践:k8s集成ceph分布式存储
- 网络设备商网管软件解决方案
- jsonp跨域请求原理
- 计算机常见的三种拓扑结构,局域网拓扑结构(常见三种)
- UA MATH524 复变函数 验证一个函数是否为调和函数
- SpringBoot 开发案例之各种参数传递,以及前端代码和postman测试(完整版)
- Java day 31 网络编程和简单练习
- SVN:客户端与服务器端安装、配置与使用
- IPsec IKE第一阶段主模式和野蛮模式
- python并列柱状图x轴设定_Matplotlib绘图时x轴标签重叠的解决办法
- echarts:在vue中使用渐变色