一、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-数据查询的更多相关文章

  1. MySQL基础架构之查询语句执行流程

    这篇笔记主要记录mysql的基础架构,一条查询语句是如何执行的. 比如,在我们从student表中查询一个id=2的信息 select * from student where id=2; 在解释这条 ...

  2. MySQL单表数据查询(DQL)

    数据准备工作: CREATE TABLE student( sid INT PRIMARY KEY AUTO_INCREMENT, sname ), age TINYINT, city ), scor ...

  3. MySQL多表数据查询(DQL)

    数据准备: /* ------------------------------------创建班级表------------------------------------ */ CREATE TAB ...

  4. Mysql对表中 数据 查询的操作 DQL

    准备数据,倒入sql文件 运行sql文件 得到四张表 select * from 表名  * 代表全部 1.AS子句作为别名 select studentname as "姓名" ...

  5. 关于mysql中的数据查询—嵌套查询

    嵌套查询 一个SELECT  FROM  WHERE语句称为一个查询块. 嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询. 注:子查询的SELECT语句中不 ...

  6. MySQL基础7-分页查询

    1.分页查询(MySQL特有的,oracle中没有) 栗子1: 每页最多3条记录:pageSize=3:第一页:SELECT * FROM product LIMIT 0,3第二页:SELECT * ...

  7. 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 ...

  8. MySql基础学习-数据操作

    对于数据的操作,无非是“增删该查”这几种操作. 1增加 数据的增加使用insert语句插入 语法:INSERT INTO TABLE_NAME(column1,column2,...)VALUES(v ...

  9. MySQL基础6-分组查询

    1.分组函数 需求20:查询所有商品平均零售价SELECT AVG(salePrice) FROM product 需求21:查询商品总记录数SELECT COUNT(id) count FROM p ...

  10. MySQL基础4-SQL简单查询(单表)

    1.SELECT语句 2.运算符的优先级 利用Navicat中的查询方法: 栗子1:查询所有货品信息 栗子2:查询所有货品的id,productName,salePrice 当查询错误的时候出现的界面 ...

随机推荐

  1. Scanner对象的用法

    Java流程控制 想要实现程序与人的交互,我们必须使用Java给我们提供的工具类.就像我最开始写的一篇博客,用Java提供给我们的一个机器人类Robot是控制鼠标键盘的.今天我们学习的是一个可以获取用 ...

  2. 原来这就是所谓的 JSR!

    相信大家在学习 Java 的过程中,或多或少都见过 JSR 这个词.本篇文章就科普下什么是 JSR. 什么是 JSR ? JSR(Java Specification Requests),是指 Jav ...

  3. Django笔记三十四之分页操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十四之分页操作 这一篇笔记介绍一下如何在 Django 使用分页. Django 自带一个分页的模块: from django.core ...

  4. 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置

    目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208 ...

  5. ctfshow菜狗杯(一)

    CTFshow菜狗杯,web签到 传参. 需要注意的是传参的时候要对中文字符进行编码输出. 得到flag. 第二关 come-to_s1gn 打开页面源代码 这里好像给了一半的flag,另一半好像说在 ...

  6. 大米cms爆破后台及支付逻辑漏洞

    又找到个网站挖洞,我来康康. 大米手机是个什么鬼手机??看一下吧 这个支付页面好熟悉,可能存在支付逻辑漏洞,咱们用burp改个包看看. 先支付一个看看 把包里那个=1改成0试试~ 证实确实存在支付逻辑 ...

  7. 在 CentOS 上搭建 Mumble 服务器

    Mumble 服务器搭建 前言 Mumble 是一个开源.低延迟.高质量的语音通话平台.可以在多个平台搭建,并且有多个开源的客户端(Windows.Linux.Android.MacOS).这是 官网 ...

  8. 2021-07-12:缺失的第一个正数。给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。比如[3,4,5

    2021-07-12:缺失的第一个正数.给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数.请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案.比如[3,4,5 ...

  9. Selenium - 元素操作(2) - 页面滚动条

    Selenium - 元素操作 函数滚动 一般元素定位,元素如果不在浏览器的可视位置(即可见只是不在可视位置),会自动把元素滚动到可视位置,但也有不会自己滚动的(比较少). 那我们就可以用seleni ...

  10. Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.

    问题描述 新建表或者修改表varchar字段长度的时候,出现这个错误 Row size too large. The maximum row size for the used table type, ...