MySQL简单查询操作

news2024/11/18 23:47:02

系列文章目录

  • 前言
  • SELECT子句
    • SELECT后面之间跟列名
    • DISTINCT,ALL
    • 列表达式
    • 列更名
  • WHERE子句
    • WHERE子句中可以使用的查询条件
    • 比较运算
    • 特殊比较运算符
      • BETWEEN...AND...
      • 集合查询:IN
      • 模糊查询:LIKE
      • 空值比较:IS NULL
    • 多重条件查询
  • ORDER BY子句排序
    • 复杂查询:UNION [ALL]
  • 限制:LIMIT(涉及分页)

前言

写代码时建议多行写,增强代码可读性

select 表示查询
*所有列
使用as起别名
DISTINCT去重
FROM 后接表名,表示查询哪张表
WHERE 是筛选条件,满足条件的会被查询出来
BETWEEN AND比较符号
AND:并且
ORDER BY排序
limit限定行,用到分页

聚集函数:统计
GROUP BY子句:分组查询
HAVING子句:对分组结果筛选

在这里插入图片描述

SELECT子句

SELECT后面之间跟列名

【例】:查询 Student 表中的学号、姓名、班级

SELECT 学号、姓名、班级
FROM Student

【例】:查询 Student 表中全部数据

SELECT 学号、年龄、姓名、性别、联系方式、班级
FROM Student

等价于:

SELECT * FROM Student

当想要选取一个表中全部列时,全部列可以用【*】表示

DISTINCT,ALL

如果在结果中重复的数据不想显示出来,可以使用distinct关键字(查单列时使用)

对比结果:
【例】查出公司都有哪些的职位

SELECT job FROM emp --查出每个员工的职位
--因为有重复,所以在列名前面加DISTINCT,对比:
SELECT DISTINCT job FROM emp --查出公司都有哪些的职位

也可以指明不要去除重复元祖,使用ALL关键字

SELECT ALL sex FROM Student

怎么知道一个表里有哪些列?
DESCRIBE 表名;

列表达式

【例】查询每一本书九折后的价格

Book表
book_IDnameprice
1A1计算机基础28.00
2A2C语言58.00
3A3JAVA25.00
SELECT book_ID,name,price*0.9 FROM Book

列更名

SQL 提供了为关系表和属性重新命名的机制

语法格式:旧列名 | 表达式 [ AS ] 新列名 或:新列名 =旧列名 | 表达式

就是起一个新名,又叫列别名,使用as
在有公式的时候用到的会多一些(美观)

【例】:

SELECT sno AS 学号、name AS 姓名、bno AS 班级
FROM Student

把第一行的sno改成新名字:学号
name改成了新名字:姓名
bno改成了新名字:班级

WHERE子句

语法格式:

SELECT  列名列表  FROM  表名 
WHERE  条件表达式;

【例】查询成绩大于90分的学生的全部信息

SELECT * FROM Student 
WHERE Score > 90;

WHERE子句中可以使用的查询条件

在这里插入图片描述

比较运算

SQL代码中的字符类型数据必须使用引号括起来
在MySQL中单双引号通用,建议单引号
MySQL字符数据,英文不区分大小写(Oracle区分)

【例】查询所有的女老师的信息

Select * from Teacher where sex='女';

【例】查询学生成绩在60到90分之间的学生

SELECT * FROM Student 
WHERE Score >= 60 AND Score <= 90;

【例】查询“高等教育出版社”或者“清华大学出版社”出版的图书

 SELECT * FROM Book 
 WHERE publish ='高等教育出版社' or publish = '清华大学出版社';

除比较运算符外还有算术运算符,他可以在SELECT语句中使用算术运算符,改变输出结果。

+ - * /对应加减乘除

乘除优先于加减
相同优先权的表达式按照从左至右的顺序依次计算
括弧可以提高优先权,并使表达式的描述更为清晰

【例】查询1999年1月1日之前入职的员工姓名及入职日期。

SELECT ename , hiredate
FROM emp
WHERE hiredate<'1985-12-31';

日期越早,数值越小

特殊比较运算符

BETWEEN…AND…

判断要比较的值是否在某个范围内

用法:BETWEEN<下限值>AND<上限值>

【例】查询学生成绩在60到90分之间的学生

--第一种
SELECT * FROM Student 
WHERE Score BETWEEN 60 AND 90;

等价于

--第二种
SELECT * FROM Student 
WHERE Score >= 60 AND Score <= 90;

它可以查找上限值与下限值之间的元组,也可以查找不在上限值与下限值之间的元组

如果说查询学生成绩不在60到90分之间的学生,那只需要在第一种中的表名后加个Not
把第二种的等号去掉即可

【例】查询入职日期在82年至85年的员工姓名,入职日期。

SELECT ename, hiredate
FROM emp
WHERE hiredate BETWEEN '1982-1-1'AND '1985-12-31';

【例】查询工资不在1000到2500的员工

SELECT ename,sal
FROM emp
WHERE sal NOT BETWEEN 1000 AND 2500;

集合查询:IN

判断要比较的值是否和集合列表中的任何一个值相等。

【例】查找在1998,1999,2000年入职的经理(mrg)信息,其中包括编号、姓名,工资

SELECT 编号、姓名,工资
FROM emp
WHERE mrg IN (1998,1999,2000);

【例】查找不是“机械工业出版社”,“清华大学出版社”,“高等教育出版社”出版的全部图书

SELECT * FROM Book 
WHERE publish NOT IN ('机械工业出版社','清华大学出版社','高等教育出版社');

【例】查询部门在10或者20,并且工资在3000到5000之间的员工姓名、部门、工资。

SELECT 姓名,部门,工资
FROM emp
WHERE 部门 in (10,20) AND 工资 BETWEEN 3000 AND 5000;

模糊查询:LIKE

判断要比较的值是否满足部分匹配
多用在搜索的时候搜关键字

LIKE的用法
列名 LIKE <字符串>

在字符串中我们可以使用通配符
_代表任意一个字符
%代表任意多个字符

【例】查询姓全部 “张” 的读者的信息。

SELECT * FROM Reader
WHERE name LIKE '张%';

【例】查询1999年之前的学生的信息

SELECT * FROM Student
WHERE birthdate LIKE '%1999%';

【例】查询员工名字第二个字是宇的

SELECT ename
FROM emp
WHERE ename LIKE "_宇%" ;

【例】查询名字里面没有A的员工

SELECT ename
FROM emp
WHERE ename NOT LIKE '%A%';

空值比较:IS NULL

查一些数据是不是空的

在代码中是is null,不是 =null
空值是无效的,没有的,不是零或空格

列计算公式中,有空值情况,结果也是空

【例】查询性别为空的学生的信息

SELECT * FROM Student
WHERE sex IS NULL;

【例】查询出生日期不为空的学生的姓名

SELECT name FROM Student
WHERE birthdate IS NOT NULL;

多重条件查询

【例】查询1992年以后出生的女学生的姓名

SELECT name FROM Student
WHERE birthdate >= '1992-1-1' AND sex='女';

ORDER BY子句排序

语法格式:

SELECT [DISTINCT]
FROM 表名
[WHERE 条件]
ORDER BY <列名>|表达式|列别名[ASC|DESC];

ASC表示升序排序,DESC表示降序排序,默认为升序
空值在升序排列中排在最前面,在降序排列中排在最后。

• 注:对于空值,若按照升序排序,含空值的元组将最后显示。
若按降序排序,空值的元组将最先显示

【例】查询学生的信息按出生日期的升序显示

SELECT * FROM Student
ORDER BY birthdate ASC

【例】查询老师的信息按出生日期的"降序"显示

SELECT * FROM Teacher
ORDER BY birthdate DESC

【例】查询图书的信息,查询结果按照出版社的名称升序排序,同一出版社的按照价格的降序排序。

SELECT * FROM Book
ORDER BY publish ASC,price DESC

复杂查询:UNION [ALL]

使用UNION语句可以合并两个或多个查询的结果。

UNION语句用第二个查询结果合并第一个查询结果。

它不显示两个查询中的重复的行。

如果想显示所有行(包括重复行)则可以在UNION后面添加ALL谓词

union的语法格式:

SELECT <目标列名序列> 
 FROM <数据源> 
  [WHERE <检索条件表达式>] 
  [GROUP BY <分组依据列>] 
  [HAVING <组提取条件>]
UNION [ALL]
 SELECT <目标列名序列> 
 FROM <数据源> 
  [WHERE <检索条件表达式>] 
  [GROUP BY <分组依据列>] 
  [HAVING <组提取条件>]
  [ORDER BY <排序依据列> [ASC|DESC]]

注意:如果使用使用ORDER BY 字句进行排序,则该子句只出现最后一个查询的后面,如果不希望去除重复的元组,可以使用关键字ALL。

• 【例】

SELECT * FROM Book 
WHERE publish='清华大学出版社'
UNION ALL
SELECT * FROM Book 
WHERE price<25
ORDER BY name

因为使用了关键字ALL,结果中的重复元组被保留
在这个查询中的第二个查询后使用了ORDER BY 子句,使并集结果按书名name排序

限制:LIMIT(涉及分页)

在这里插入图片描述

限制记录的行数

使用select语句时,经常要返回前几条或者中间某几行记录,可以使用关键字limit

语法格式:

SELECT 字段列表
FROM 数据源
LIMIT [start,]length;
--start:表示从第几行记录开始输出,0代表第一行(不是 1) 
--length:表示输出的记录行数,长度,取几行

limit接受一个或两个整数参数。

LIMIT (9,5):代表第十行开始数五行,(10,11,12,13,14)

为什么要限制行数呢?
当length等于10000时,不能直接展示,数据太多,不方便看,容易引起浏览器死机

这时候就用到分页了
分页查询:【当前页起始行号=(当前页码-1)*每页行数 】

SELECT ename
FROM emp 
LIMIT 5,5

【例】怎么查询某次考试成绩最高的前五名同学的名字

SELECT sname,score
FROM stu
ORDER BY score DESC
LIMIT 0,5;

这里用到了TOPN查询
TOPN查询:先按照某列降序排列,再使用limit限定前N行,limit 0,N

总结:

limit 限定关键字

分页查询:当前页起始的行数=(当前页码-1)*每页显示的行数

TOPN查询:先排序,再用limit


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

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

相关文章

线性规划解的概念

一、线性规划的可行解 若x1,x2满足条件[1]-[4],则称向量为线性规划问题的一个可行解。 例如 其中x(1),x(2)为可行解&#xff0c;而x(3),x(4)不是可行解。 二、线性规划的可行域 所有可行解构成的集合称为该线性规划的可行域。 三、线性规划的最优解 使目标函数最大或最小的…

Git ① 通过git将本地两个项目进行合并

一、新建一个本地仓库 ① 新建一个文件夹&#xff0c;打开之后在命令行输入git init 初始化仓库。 git init ② 在新建的文件夹中随便创建一个文件&#xff08;这样才能新建新的分支&#xff0c;不然新建分支命令没有作用&#xff09; ③ 输入命令 git add . 和 git commit…

如何实现对视频录像文件的AI算法分析?

有用户提出需求&#xff0c;提供视频文件给平台&#xff0c;并进行AI算法分析。值得一提的是&#xff0c;我们的平台不仅仅可以基于AI算法&#xff0c;对设备实时传输的视频流进行分析&#xff0c;也能对视频回放录像文件进行智能分析。那么是如何实现的呢&#xff1f; EasyDSS…

Linux 共享内存

概念&#xff1a; 在Linux系统中&#xff0c;共享内存是一种用于进程间通信的机制&#xff0c;它允许多个进程共享同一块内存区域。 Linux 共享内存的作用和目的&#xff1a; Linux共享内存的主要目的是在不同的进程之间实现高效的数据交换和共享。它可以用于以下几个方面&…

在uniapp 小程序 vue中报 错 Cannot read property ‘substring‘ of undefined

是因 是因为对字符串使用substring的时候页面中的数据还没有加载 。 错误代码&#xff1a; 可以使用 v-if 修改为&#xff1a;

Alibaba官方上线!SpringBoot+SpringCloud全彩指南(终极版)

Alibaba作为国内一线互联网大厂&#xff0c;其中SpringCloudAlibaba更是阿里微服务最具代表性的技术之一&#xff0c;很多人只知道SpringCloudAlibaba其实面向微服务技术基本上都有的下面就给大家推荐一份Alibaba官网最新版&#xff1a;SpringSpringBootSpringCloud微服务全栈开…

2023 WAIC | 自然机器人向全球传递新一代智能自动化之声

2023年7月6日-7月8日&#xff0c;备受瞩目的“2023世界人工智能大会”在上海世博中心及世博展览馆隆重召开&#xff0c;本届大会的主题是“智联世界&#xff0c;生成未来”&#xff0c;大会由上海市人民政府和国家发改委、工信部、科技部、国家网信办、中国科学院、中国工程院、…

JavaScript实现归并排序算法详解

JavaScript实现归并排序算法详解 说明 归并排序&#xff08;Merge Sort&#xff09;算法&#xff0c;也叫合并排序&#xff0c;是创建在归并操作上的一种有效的排序算法。算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用&#xff0c;且各层…

Talk预告 | 南洋理工大学助理教授潘新钢:拖动你的GAN - 在生成图像流形上基于控制点的交互式图像编辑

本期为TechBeat人工智能社区第511期线上Talk&#xff01; 北京时间7月6日(周四)20:00&#xff0c;南洋理工大学 助理教授—潘新钢的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “拖动你的GAN - 在生成图像流形上基于控制点的交互式图像编辑”&…

嵌入式_Keil (MDK - ARM) 的调试步骤

目录 1. 编译 调试 2. 复位 全速运行 3. 单步调试 4. 逐步调试 5. 跳出调试 6. 运行到光标处 7. 跳转到暂停行 8. 调试窗口 首先为什么需要在 MDK 中进行程序的调试呢&#xff1f; 在 MDK 中进行程序调试的主要目的是识别和解决程序中的问题和错误。 比如说找到程序中…

五种网络 I/O 模型

文章目录 1. 阻塞式 I/O 模型2. 非阻塞式 I/O 模型3. I/O 多路复用4. 信号驱动式 I/O5. 异步 I/O6. I/O 模型的分类 Unix 下有五种可用的 I/O 模型&#xff1a; 阻塞式 I/O 非阻塞式 I/O I/O 多路复用&#xff08;select/poll/epoll&#xff09; 信号驱动式 I/O&#xff08;…

【Spring MVC】Spring MVC程序开发教程:常见的注解及使用方式详情

前言 Spring MVC是一种常用的Web框架&#xff0c;它可以帮助开发人员快速构建可扩展的Web应用程序。为了提供更好的开发体验和更高的代码效率&#xff0c;Spring MVC提供了各种注解。这些注解可以用于控制器、请求参数、响应类型、表单数据验证、异常处理等方面。在本文中&…

卡尔曼滤波(附C++代码)

是什么 任何时候对于动态系统存在不确定信息&#xff0c;都可使用卡尔曼滤波&#xff08;Kalman Filter&#xff0c;下面简称为KF&#xff09;对系统下一步要做什么做出有根据的猜测。 KF对于连续变化的系统是理想的&#xff0c;优点是占用内存小而且速度快&#xff0c;非常适…

在Linux中安装RabbitMQ

RabbitMQ下载网址 Socat下载网址 erlang下载网址 RabbitMQ安装包依赖于Erlang语言包的支持&#xff0c;所以需要先安装Erlang语言包&#xff0c;再安装RabbitMQ安装包 通过Xftp软件将这三个压缩包上传到linux中的opt目录下 ,双击即可 在安装之前先查询…

Android oss policy上传

OSS Policy方式上传 一、 流程对比1.1 普通上传1.2 服务端签名后直传 二、获取上传的policy签名配置三、请求OSS上传文件四、调用应用服务器接口同步文件五、关于上传OSS报错注意事项六、附送链接 一、 流程对比 1.1 普通上传 缺点&#xff1a; 上传慢&#xff1a;用户数据需…

数学建模常用模型(五):多元回归模型

数学建模常用模型&#xff08;五&#xff09;&#xff1a;多元回归模型 由于客观事物内部规律的复杂性及人们认识程度的限制&#xff0c;无法分析实际对象内在的因果关系&#xff0c;建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候&#xff0c;…

docker中运行RabbitMq的启用插件指南

我们使用 Docker 来运行 RabbitMQ&#xff0c;有时需要启用一些插件&#xff0c;这个与正常安装的启用插件的步骤会有所不同。以下是在 Docker 中启用 RabbitMQ 插件的一般步骤&#xff1a; 首先&#xff0c;确认已经将 rabbitmq_delayed_message_exchange-3.12.0.ez 插件文件复…

raid5两块磁盘掉线导致阵列崩溃的服务器数据恢复案例

服务器数据恢复环境&#xff1a; DELL PowerVault系列某型号存储&#xff0c;15块硬盘搭建了一组RAID5磁盘阵列。 服务器故障&检测&#xff1a; 存储设备raid5阵列中一块磁盘由于未知原因离线&#xff0c;管理员对该磁盘阵列进行了同步操作。在同步的过程中又有一块磁盘指示…

使用 hbuilderx 配置 MuMu模拟器进行调试

第一步 先安装MuMu模拟器&#xff0c;调成手机模式。 第二步 查看MuMu模拟器监听的端口。 在安装目录下 /vms/MuMuPlayer-12.0-0/MuMuPlayer-12.0-0 旧端口7555&#xff0c;新端口号16384 切换到安装目录下的 /shell&#xff0c;然后shift右击&#xff0c;打开 powershell&a…

【服务器数据恢复】raid5崩溃的redhat linux系统数据恢复案例

服务器数据恢复环境&#xff1a; 一台ibm某型号服务器&#xff0c;5块硬盘组建一组raid5磁盘阵列&#xff0c;redhat linux操作系统&#xff0c;上层部署有oracle数据库。 服务器故障&#xff1a; raid5阵列中两块硬盘离线&#xff0c;服务器崩溃。经过初检发现故障服务器中的…