【数据库——MySQL】(6)查询(1)

目录

  • 1. 数据库查询
    • 1.1 输出项为列名
    • 1.2 输出项为表达式
    • 1.3 输出内容变换
    • 1.4 消除输出项的重复行
    • 1.5 聚合函数
  • 2. 查询条件:逻辑条件
    • 2.1 比较运算
    • 2.2 模式匹配
    • 2.3 范围限定
    • 2.4 空值判断
  • 3. 分组
    • 3.1 基本分组
    • 3.2 分组汇总
  • 4. 分组后筛选
  • 5. 输出行排序
    • 5.1 ORDER BY
    • 5.2 LIMIT
  • 参考书籍

1. 数据库查询

查询语法如下:

SELECT [ALL|DISTINCT|DISTINCTROW] 输出项, ...[FROM 表名|视图名]			/*指定数据源*/[WHERE 条件表达式]			/*指定查询条件*/[GROUP BY ... ]				/*指定分组项*/[HAVING 条件]				/*指定分组后筛选条件*/[ORDER BY ...]				/*指定输出行排列依据项*/[LIMIT 行数]					/*指定输出行范围*/[UNION SELECT语句]			/*数据源联合*/[WINDOWS ...]				/*窗口定义*/

1.1 输出项为列名

之后的例子都会用 library 这个数据库来进行演示,数据库的创建见 图书管理系统实战源代码 。

USE library;SELECT id, `name`, press FROM book;

在这里插入图片描述

:由于 name 是关键字,为了查询时避免出错,可将关键字用 `` 括起来。

1.2 输出项为表达式

USE library;SELECT id AS 学号, `name` AS 姓名, FORMAT(grade-1,0) AS 用户星级(扣一分) FROM borrowerWHERE borrowedCount > 0;

在这里插入图片描述

可以用 AS 定义一个别名作为新的计算结果列的名称。

1.3 输出内容变换

在对表进行查询时,输出列显示内容可以通过 CASE 语句进行变换。

USE library;SELECT id AS 学号,CASEWHEN LEFT(id,1) = '1' THEN '教师'ELSE '学生'END AS 类别FROM borrower;

在这里插入图片描述

1.4 消除输出项的重复行

查询结果显示“输出项”可能会出现重复行,可以使用 DISTINCTDISTINCTROW 关键字消除结果集中的重复行。

USE library;SELECT grade AS 星级 FROM borrower;
SELECT DISTINCT grade AS 星级 FROM borrower;	

在这里插入图片描述

1.5 聚合函数

输出项为表达式中用到的系统函数仅仅是对包含的列值进行处理,而这里的“聚合函数”处理的是查询得到的行和列。

函数名说明
COUNT求记录行数
MAX求最大值
MIN求最小值
SUM求表达式的和
AVG求表达式的平均值
STD或STDDEV求表达式列中所有值的标准差
VARIANCE求表达式列中所有值的方差
GROUP_CONCAT产生由属于一组的列值连接组合而成的字符串

2. 查询条件:逻辑条件

WHERE 子句指定查询条件。

表达式 <比较运算符> 表达式						/*比较运算*/
| 匹配列 [NOT] LIKE 表达式 [ESCAPE '转义字符']				/*模式匹配*/
| 匹配列 [NOT] [REGEXP | RLIKE] 正则表达式				/*模式匹配*/
| 表达式 [NOT] BETWEEN 表达式 AND 表达式				/*范围限定*/
| 表达式 [NOT] IN (值, ...)						/*范围限定*/
| 表达式 IS [NOT] NULL						/*空值判断*/
| 表达式 [NOT] IN (SELECT语句)					/*IN子查询*/
| 表达式 比较运算符 ALL | SOME | ANY (SELECT语句)			/*比较子查询*/
| [NOT] EXISTS (SELECT语句)						/*EXISTS子查询*/
| 逻辑值

2.1 比较运算

USE library;SELECT * FROM bookWHERE publishDate >= 2017 AND publishDate < 2019;

在这里插入图片描述

2.2 模式匹配

模式匹配包括两种形式:使用 LIKE 进行简单模式匹配和用 REGEXP 实现正则表达式匹配。

  1. LIKE 简单模式匹配
    LIKE 运算符用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是 char、varchar、text、datetime 等类型的数据,返回逻辑值 TRUEFALSE

    匹配列 [NOT] LIKE 表达式 [ESCAPE '转义字符']
    

    在使用LIKE将匹配列与表达式进行模式匹配时,常使用特殊符号_和%,它们可用来进行模糊查询。其中,“%”代表0个以上字符,“_”则代表单个字符。

    USE library;SELECT * FROM bookWHERE id LIKE '10110___5%';		# 3个'_'连字符
    

    在这里插入图片描述

  2. REGEXP 正则表达式匹配
    REGEXP 运算符通过正则表达式来执行更复杂的字符串匹配运算,它是 MySQLSQL 标准的一种扩展,功能极为强大,另外,REGEXP 还有一个同义词是 RLIKE

    匹配列 [NOT] [REGEXP | RLIKE] 正则表达式
    

    不同于 LIKE 运算符仅有“_”和“%”两个匹配符,REGEXP 拥有更多具有特殊含义的符号,参见下表。

    特殊字符含义
    ^匹配字符串的开始部分
    $匹配字符串的结束部分
    .匹配任何一个字符(包括回车和新行)
    *匹配星号之前的0个或多个字符的任何序列
    +匹配加号之前的1个或多个字符的任何序列
    ?匹配问号之前0个或多个字符
    {n}匹配括号前的内容出现n次的序列
    ()匹配括号里的内容
    [abc]匹配方括号里出现的字符串abc
    [a-z]匹配方括号里出现的a~z之间的1个字符
    [^a-z]匹配方括号里出现的不在a~z之间的1个字符
    |匹配符号左边或右边出现的字符串
    [[…]]匹配方括号里出现的符号(如空格、换行、括号、句号、冒号、加号、连字符等)
    [[:<:] 和 [[:>:]]匹配一个单词的开始和结束
    [[: :]匹配方括号里出现的字符中的任意一个字符

2.3 范围限定

  1. BETWEEN…AND 限定范围

    表达式 [NOT] BETWEEN 表达式1 AND 表达式2
    

    当不使用 NOT 时,若表达式的值在表达式1值与表达式2值(表达式1≤表达式2)之间,返回 TRUE,否则返回 FALSE ;使用 NOT 时,返回结果刚好相反。

    USE library;SELECT * FROM bookWHERE publishDate BETWEEN 2017 AND 2018;
    

    在这里插入图片描述

  2. IN… 限定范围
    使用 IN 运算符可以指定一个值表,其中列出所有可能的值。

    表达式 [NOT] IN (值, ...)
    

    当不使用 NOT 时,若表达式的值与值表中的任一个匹配,即返回 TRUE,否则返回 FALSE;使用 NOT 时,表达式的值与值表中的没有一个匹配,即返回 TRUE,否则返回 FALSE

    USE library;SELECT * FROM bookWHERE publishDate IN (2017, 2018);
    

    在这里插入图片描述

2.4 空值判断

使用 IS NULL 运算符判定一个表达式的值是否为空。

表达式 IS [NOT] NULL

当不使用 NOT 时,若表达式的值为空,返回 TRUE,否则返回 FALSE;使用 NOT 时,结果刚好相反。

3. 分组

GROUP BY 子句主要用于对查询结果按行分组:

GROUP BY 列名 | 表达式, ... [WITH ROLLUP]

说明:

  1. 列名或表达式就是分组依据,可以是一个或多个,列名或表达式相同的为同一组,作为统计汇总的依据。
  2. WITH ROLLUP 指定在结果集内组后还包含汇总行。
  3. 在系统默认状态下,SQL_MODE 设置包含 sql_mode = only_full_group_by,包含“GROUP BY x”的 SELECT 输出项,除了 x 项,其他只能是采用聚合函数的项。否则需要在 SQL_MODE 设置中不能包含 sql_mode = only_full_group_by

3.1 基本分组

SELECT category AS 类别, SUM(borrowedCount) AS SUM(当前借书数) FROM borrowerGROUP BY category;

在这里插入图片描述

3.2 分组汇总

GROUP BY 后的列或者表达式包含一个以上,此时的分组就出现了多个层次。

SELECT category AS 类别, sex AS 性别, SUM(borrowedCount) AS SUM(当前借书数) FROM borrowerGROUP BY category, sex;

在这里插入图片描述

4. 分组后筛选

HAVING 子句的目的与 WHERE 子句一样均为定义筛选条件,不同的是 WHERE 子句是用来在 FROM 子句之后选择行,而 HAVING 子句则是用来在 GROUP BY 子句后选择行。不过 HAVING 子句中的条件可以包含聚合函数,而 WHERE 子句则不可以。

语法格式为:

SELECT...GROUP BY ...HAVING 条件

示例如下:

SELECT category AS 类别, SUM(borrowedCount) AS SUM(当前借书数) FROM borrowerGROUP BY category;
SELECT category AS 类别, SUM(borrowedCount) AS SUM(当前借书数) FROM borrowerGROUP BY categoryHAVING SUM(borrowedCount) > 5;

在这里插入图片描述

5. 输出行排序

5.1 ORDER BY

ORDER BY 子句指定查询结果中的记录行按指定内容顺序排列。

ORDER BY 列名 | 表达式 | 位置序号 [ASC | DESC], ...

说明: ORDER BY 子句后可以是一个或者一个以上的列、表达式或位置序号,位置序号为一正整数,表示按结果表中该位置上的列排序。

SELECT id AS 学号, `name` AS 姓名, borrowedAll AS 已借书籍数FROM borrowerWHERE LEFT(id,1)='2'ORDER BY 3 DESC;

在这里插入图片描述

说明:

  1. 使用 ORDER BY 3 表示对 SELECT 列清单上的第 3 列(即“已借书籍数”列)进行排序。
  2. 关键字 DESC 表示降序排列,ASC 则表示升序排列,不选该项,系统默认为 ASC
    ORDER BY 子句可以与 GROUP BY 配合使用,且可用在多个表上,对符合要求的记录先分组再排序
SELECT category AS 类别, SUM(borrowedAll) AS SUM(已借书籍数)FROM borrowerGROUP BY categoryORDER BY SUM(已借书籍数) ASC;

在这里插入图片描述

5.2 LIMIT

LIMIT 子句主要用于限制被 SELECT 语句返回的行数。

LIMIT [起始行,] 行数 | 行数 OFFSET起始行

“起始行”和“行数”都必须是非负的整数,返回指定“起始行”开始的“行数”条记录。起始行的偏移量为 0,而不是 1

SELECT id AS 学工号, `name` AS 姓名, borrowedAll AS 已借书籍数 FROM borrowerORDER BY 已借书籍数 DESC LIMIT 2,4;

在这里插入图片描述

由于查询的知识点较多,所以将会分为几部分来进行分享。

参考书籍

《MySQL实用教程(第4版)》

上一篇文章:【数据库——MySQL】(5)运算符、表达式和系统函数
下一篇文章:【数据库——MySQL】(7)查询(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143685.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Anchors

这是源代码定义的anchors概念&#xff1a; 实现过程&#xff1a; 假如有一张500500的图片&#xff0c;那么经过第一步深度卷积网络之后&#xff08;4次池化&#xff09;&#xff0c;最终就会变成一个3232的特征&#xff1a; 在开源代码实现里面&#xff1a; 所以经过卷积完之后…

leetCode 62.不同路径 动态规划 + 空间复杂度优化

62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xf…

基于SpringBoot的酒店客房管理系统

基于SpringBoot的酒店管理系统、酒店客房管理系统 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 首页 管理员界面 用户界面 代码展示 <temp…

如何使用docker快速部署MinDoc文档系统

MinDoc是非常优秀的知识分享系统&#xff0c;但是很多刚接触的人会一脸懵逼&#xff0c;而且官方文档写的也并不清晰&#xff0c;所以和大家分享一下快速部署MinDoc的方法。 首先docker环境先自行安装好&#xff0c;这里不再赘述。 拉取docker镜像&#xff1a; docker pull …

MybatisPlus自定义SQL用法

1、功能概述&#xff1f; MybatisPlus框架提供了BaseMapper接口供我们使用&#xff0c;大大的方便了我们的基础开发&#xff0c;但是BaseMapper中提供的方法很多情况下不够用&#xff0c;这个时候我们依旧需要自定义SQL,也就是跟mybatis的用法相同&#xff0c;自定义xml映射文…

lv5 嵌入式开发-8 内存映射

目录 1 内存映射基本使用 1.1 内存映射概念 1.2 内存映射的使用 2 共享内存&#xff08;古老的 System V IPC&#xff09; 2.1 基本概念 2.2 共享内存使用步骤 2.3 共享内存使用 掌握&#xff1a;内存映射概念、内存映射使用、内存映射注意事项、了解SYSTEM V 共享内存概…

nodejs+vue中国非物质文化遗产网站设计与实现elementui

前端页面&#xff1a; 导航栏借鉴下面的 1首页&#xff1a;带有一个全屏轮播图和其他的内容 2咨询页&#xff1a;有关中国非物质文化遗产的一些新闻咨询网站对于记录非遗这种无形的、动态的文化资源有着其他技术无可替代的优势。用户可以在该网站浏览、了解和学习非遗文化&…

uni-app:canvas-绘制图形4(获取画布宽高,根据画布宽高进行图形绘制)

效果 代码 var width ; var height ; const query uni.createSelectorQuery(); //获取宽度 query.select(#firstCanvas).fields({ size: true }, (res) > { width res.width; height res.height; }).exec(); console.log(宽度width); console.log(高…

关于Pod的内存使用率一直很高的问题分析

生产环境中在流量高峰期出现pod内存使用率很高&#xff0c;pod批量重启&#xff0c;错误日志中还有OOM相关信息。 查看堆内存的使用值 Pod使用的内存不能直接在pod中通过top命令查看&#xff0c;这种方式看到的是pod所在node的资源使用情况。想查看pod的资源使用情况需要用ku…

SEO的优化教程(百度SEO的介绍和优化)

百度SEO关键字介绍&#xff1a; 百度SEO关键字是指用户在搜索引擎上输入的词语&#xff0c;是搜索引擎了解网站内容和相关性的重要因素。百度SEO关键字可以分为短尾词、中尾词和长尾词&#xff0c;其中长尾词更具有针对性和精准性&#xff0c;更易于获得高质量的流量。蘑菇号-…

【Matplotlib画图】使用Python Matplotlib画三维的子图

文章目录 1. 代码2. 画图效果写在最后 1. 代码 在matlab转过来&#xff0c;之前一直不知道python的写法&#xff0c;以为是像matlab一样返回一个句柄然后在上面添加元素&#xff1b; 其实是应该先创建一个画布&#xff0c;然后再在上面添加子图&#xff0c;然后再使用返回的句…

解决 MyBatis-Plus 中增加修改时,对应时间的更新问题

问题&#xff1a;在添加修改时&#xff0c;对应的 create_time 与 insert_time 不会随着添加修改而自动的更新时间 第一步&#xff1a;首先在对应的属性上&#xff0c;加上以下注解 如果只添加以下注解&#xff0c;在增加或者修改时&#xff0c;可能对应的 LocalDateTime 会出…

基于微信小程序的公交信息在线查询系统小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

支付宝支付模块开发

生成二维码 使用Hutool工具类生成二维码 引入对应的依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.5</version> </dependency><dependency><groupId>com.go…

数码产品数码配件无线键盘等出口欧盟CE-RED认证测试办理

数码产品数码配件无线键盘CE-RED认证测试办理 无线产品CE-RED认证进入东欧市场规定&#xff1a; 在通信终端设备和无线产品在这些/地区合法销售之前&#xff0c;必须按照 RED 指令进行测试&#xff0c;并且还必须提供 CE 标志。无线远程控制产品必须符合 RED 指令的 REDEU 要…

华为云HECS云服务器docker环境下安装nginx

前提&#xff1a;有一台华为云服务器。 华为云HECS云服务器&#xff0c;安装docker环境&#xff0c;查看如下文章。 华为云HECS安装docker-CSDN博客 一、拉取镜像 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest ) docker pull nginx查看镜像 dock…

JS对象数组去重

JS对象数组去重 一、数组去重1.使用 new Set()2.使用 indexOf 去重3.使用 includes 去重4.使用 hasOwnProperty5.使用 filter6.使用递归7.利用 Map 数据结构去重8.使用用 reduce includes9.使用 new Set() 的简化 二、对象数组去重1.使用 new Map() 和 filter2.使用reduce3.使…

【JVM】第四篇 垃圾收集器ParNewCMS底层三色标记算法详解

导航 一. 垃圾收集算法详解1. 分代收集算法2. 标记-复制算法3. 标记-清除算法4. 标记-整理算法二. 垃圾收集器详解1. Serial收集器2. Parallel Scavenge收集器3. ParNew收集器4. CMS收集器三. 垃圾收集底层三色标记算法实现原理1. 垃圾收集底层使用三色标记算法的原因?2. 垃圾…

计算机竞赛 深度学习图像分类算法研究与实现 - 卷积神经网络图像分类

文章目录 0 前言1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

1.centos7 安装显卡驱动、cuda、cudnn

安装conda 参考 python包 2.安装conda python库-CSDN博客 1.安装显卡驱动 步骤1&#xff1a;安装依赖 yum -y install kernel-devel yum -y install epel-release yum -y install gcc 步骤2&#xff1a;查询显卡版本 lspci | grep VGA 找到2230号码&#xff0c;进入如下网…