Mysql基础4-数据查询
一、DQL介绍
DQL全称:Data Query Language(数据查询语言),用来查询数据库中表的记录。
关键字:select
二、DQL语法
select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数
注意:本章节只涉及到单表查询,多表查询会在后面的文章中介绍
三、基本查询
1、原始表数据

2、查询多个字段
语法:select 字段1,字段2,... from 表名 或者 select * from 表名(查询所有数据)
查询指定字段

3、设置别名
语法:select 字段1 [as 别名1], 字段2 [as 别名2] ... from 表名;
对查询结果设置别名

4、去重查询
语法:select distinct 字段列表 from 表名;

四、条件查询
语法:select 字段列表 from 表名 where 条件列表
| 运算符 | 功能 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| <> 或 != | 不等于 |
| between ... and ... | 在某个范围之间(包含最大值和最小值) |
| in(...) | 在in之后的列表中的值,多选一 |
| like 占位符 | 模糊匹配( "_" 匹配单个字符,"%"匹配任何字符) |
| is null | 是null |
| and 或者 && | 并且 |
| or 或者 || | 或者 |
| not 或者 ! | 非 |
1、查询年龄等于18的所有人的姓名

2、查询年龄小于21的人的姓名

3、查询年龄大于18,小于20的

4、查询地址不为空的人的姓名和地址信息

5、查询年龄小于20并且地址在西安的人的姓名和地址

6、查询地址在列表["北京","上海","广州","深圳"]中的人的姓名和地址

五、聚合函数
1、介绍
将一列数据作为一个整体,进行纵向计算
2、常见聚合函数
count:统计数量
max: 最大值
min:最小值
avg:平均值
sum:求和
3、语法
select 聚合函数(字段列表) from 表名;
4、示例
4.1 统计table_test表中一共有多少数据

4.2 统计table_test表中年龄最大的数据

4.3 统计table_test表中年龄最小的数据

4.4 统计table_test表中年龄的平均值

4.5 统计table_test表中所有人的年龄之和

4.6 统计北京地区所有员工的年龄之和

注意:在使用聚合函数的时候,所有的null值是不参与运算的,虽然table_test表中有6个数据,但是address列有一个是null,所以统计address字段时是5

六、分组查询
1、语法:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
2、where与having区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组,而having是分组之后对结果进行过滤
判断条件不同:where不能对聚合函数进行判断,而having可以
3、示例
3.1 统计不同地区的平均年龄,需要根据address做分组

3.2 统计各个地区的平均年龄(不统计空地区的),先使用where做条件筛选,然后再分组

3.3 统计各个地区的平均年龄(不统计空地区),并且显示平均年龄要大于19岁的

注意:
1、执行顺序:where > 聚合函数 > having
2、分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段没有意义
七、排序查询
1、语法:
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;
2、排序方式
ASC:升序(默认)
DESC:降序
3、示例
3.1 table_test表中数据按照年龄升序排列

3.2 table_test 表中数据按照年龄降序排列

3.3 table_test 表中数据按照年龄降序排列,年龄一样的,在继续按照id降序排列

八、分页查询
1、语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
2、注意
* 其实索引从0开始,其实索引等于(查询页码-1)* 每页显示的记录数
* 分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit
* 如果查询的是第一页,起始索引可以省略,直接写为limit 数量
3、示例
3.1 查询第一页数据,每页展示5条数据

3.2 查询第二页数据,每页展示5条数据,因为每页的数据是5条,所以第二页的索引其实位置是(2-1)*5 = 5,第三页的起始位置是(3-1)*5=10
又因为一共只有6条数据,所以第二页只有一条数据可以展示

九、DQL执行顺序

Mysql基础4-数据查询的更多相关文章
- MySQL基础架构之查询语句执行流程
这篇笔记主要记录mysql的基础架构,一条查询语句是如何执行的. 比如,在我们从student表中查询一个id=2的信息 select * from student where id=2; 在解释这条 ...
- MySQL单表数据查询(DQL)
数据准备工作: CREATE TABLE student( sid INT PRIMARY KEY AUTO_INCREMENT, sname ), age TINYINT, city ), scor ...
- MySQL多表数据查询(DQL)
数据准备: /* ------------------------------------创建班级表------------------------------------ */ CREATE TAB ...
- Mysql对表中 数据 查询的操作 DQL
准备数据,倒入sql文件 运行sql文件 得到四张表 select * from 表名 * 代表全部 1.AS子句作为别名 select studentname as "姓名" ...
- 关于mysql中的数据查询—嵌套查询
嵌套查询 一个SELECT FROM WHERE语句称为一个查询块. 嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询. 注:子查询的SELECT语句中不 ...
- MySQL基础7-分页查询
1.分页查询(MySQL特有的,oracle中没有) 栗子1: 每页最多3条记录:pageSize=3:第一页:SELECT * FROM product LIMIT 0,3第二页:SELECT * ...
- MySQL基础语句(查询)
students表 id class_id name gender score 1 1 小明 M 90 2 1 小红 F 95 3 1 小军 M 88 4 1 小米 F 73 5 2 小白 F 81 ...
- MySql基础学习-数据操作
对于数据的操作,无非是“增删该查”这几种操作. 1增加 数据的增加使用insert语句插入 语法:INSERT INTO TABLE_NAME(column1,column2,...)VALUES(v ...
- MySQL基础6-分组查询
1.分组函数 需求20:查询所有商品平均零售价SELECT AVG(salePrice) FROM product 需求21:查询商品总记录数SELECT COUNT(id) count FROM p ...
- MySQL基础4-SQL简单查询(单表)
1.SELECT语句 2.运算符的优先级 利用Navicat中的查询方法: 栗子1:查询所有货品信息 栗子2:查询所有货品的id,productName,salePrice 当查询错误的时候出现的界面 ...
随机推荐
- 在CentOS上安装与卸载Docker Engine
本文参考Docker官网提供的 安装手册编写 测试使用的操作系统版本为CentOS 7.9 安装Docker Engine 要在 CentOS 上开始使用 Docker 引擎,请确保 满足先决条件,然 ...
- lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】
一.lua变量[ 全局变量和局部变量和表中的域] Lua 变量有三种类型:全局变量和局部变量和表中的域. 全局变量:默认情况下,Lua中所有的变量都是全局变量. 局部变量:使用local 显式声明在函 ...
- 基于QtAV的简易播放器(开源)
这个开源代码,是我利用QtAV源码,提取其中一部分代码,进行整合到我自己项目中,做的一个小型播放器测试,至于怎么安装一些环境以及QtAV源码编译在我以前写的一篇博客中可以看到(Qt第三方库QtAV-- ...
- 获取电脑的网络连接状态(三)Ping
网络连接判断,使用ping测试获取: 1 private static async Task<bool> IsPingSuccess() 2 { 3 try 4 { 5 using (Pi ...
- 2023 Hubei Provincial Collegiate Programming Contest题解 C F H I J K M
补题链接:https://codeforces.com/gym/104337 原文链接:https://www.eriktse.com/algorithm/1136.html M. Different ...
- Java SE 20 新增特性
Java SE 20 新增特性 作者:Grey 原文地址: 博客园:Java SE 20 新增特性 CSDN:Java SE 20 新增特性 源码 源仓库: Github:java_new_featu ...
- 2021-05-07:给定一个数组arr,你可以在每个数字之前决定+或者-,但是必须所有数字都参与 ,再给定一个数target,请问最后算出target的方法数是多少?
2021-05-07:给定一个数组arr,你可以在每个数字之前决定+或者-,但是必须所有数字都参与 ,再给定一个数target,请问最后算出target的方法数是多少? 福大大 答案2021-05-0 ...
- Selenium - 元素定位(1) - 八种元素定位
Selenium - 元素定位 八种元素定位 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定 ...
- vue全家桶进阶之路34:Vue3 路由基本配置
在Vue3中,路由的基本配置是通过使用Vue Router库来实现的.以下是Vue3中路由的基本配置步骤: 安装Vue Router 使用npm或yarn在项目中安装Vue Router: npm i ...
- 500行代码手写docker开篇-goland远程编译环境配置
(1)500行代码手写docker开篇-goland远程编译环境配置 本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现 ...