MySQL简单查询操作

系列文章目录

  • 前言
  • 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


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【基于容器的部署、扩展和管理】3.10 云原生容器运行时环境和配置管理

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【3.1 容器编排系统和Kubernetes集群的构建】 第三章&#xff1a;【3.2 基于容器的应用程序部署和升级】 第三章&#xff1a;【3.3 自动…

Anaconda详细安装及配置教程(Windows)

Anaconda详细安装及配置教程&#xff08;Windows&#xff09; 一、下载方式1、官网下载2、网盘下载 二、安装三、配置四、创建虚拟环境 一、下载方式 1、官网下载 点击下载 点击window下载即可。 2、网盘下载 点击下载 二、安装 双击运行 点next 点I agree next 如…

专项练习21

目录 一、选择题 1、下列逻辑表达式的结果为false的是&#xff08;&#xff09; 2、请问以下JS代码输出的结果是什么&#xff1f; 3、以下哪些对象是Javascript内置的可迭代对象&#xff1f; 二、编程题 1、找到数组参数中的最大值并返回。注意&#xff1a;数组中只包含数字 …

OpenCV读取一张8位无符号四通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

GreenPlum分布式集群部署实战

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Django实现简单的音乐播放器 3

在原有音乐播放器上请求方式优化和增加加载本地音乐功能。 效果&#xff1a; 目录 播放列表优化 设置csrf_token 前端改为post请求 视图端增加post验证 加载歌曲 视图 设置路由 模板 加载layui css 加载layui js 增加功能列表 功能列表脚本实现 最终效果 总结 播…

Vue 如何简单快速组件化

文章目录 前言相关文章组件化实战如何引入组件什么是父组件&#xff0c;什么是子组件如何实现给子组件赋值完整代码 如何调用子组件方法完整代码 总结 前言 为了简化拆分复杂的代码逻辑&#xff0c;和实现代码的组件化&#xff0c;封闭化。我们需要使用组件化的方法。我这里只…

SDN-OpenDaylight与Mininet的原理、安装、使用

一、前言 本文将介绍OpenDaylight与Mininet的原理并介绍他们的安装及简单的使用&#xff0c;本实验的环境为Liunx Ubuntu 16.04&#xff0c;已成功安装OVS&#xff0c;但没有安装Mininet。 二、原理 &#xff08;一&#xff09;OpenDaylight OpenDaylight是一个软件定义网络&…

天猫数据分析工具(天猫实时数据)

后疫情时代&#xff0c;聚会、聚餐与送礼热度上涨&#xff0c;酒类产品既作为送礼首选又作为佐餐饮品的热门选手也受此影响迎来消费小高峰。在此背景下&#xff0c;白酒市场也开始复苏并不断加快速度。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;2023年1月份至4月…

C# 简述.NET中堆和栈的区别

目录 一&#xff0c;引言 二&#xff0c;.NET的堆栈 三&#xff0c;.NET中的托管堆 四&#xff0c;.NET中的非托管堆 五、堆栈、托管堆和非托管堆的比较 六&#xff0c;总结 一&#xff0c;引言 .NET提供了垃圾回收机制&#xff0c;使程序员从内存管理中被解放出来。但这…

4.2 x64dbg 针对PE文件的扫描

通过运用LyScript插件并配合pefile模块&#xff0c;即可实现对特定PE文件的扫描功能&#xff0c;例如载入PE程序到内存&#xff0c;验证PE启用的保护方式&#xff0c;计算PE节区内存特征&#xff0c;文件FOA与内存VA转换等功能的实现&#xff0c;首先简单介绍一下pefile模块。 …

【Web3】Web3连接到以太坊网络(测试网、主网)

目录 什么是Web3 Web3项目连接以太坊网络 1.下载Web3 2.实例化Web3对象 3.infura 获取连接以太坊网络节点 4.添加网络节点 什么是Web3 web3.js开发文档&#xff1a;web3.js - Ethereum JavaScript API — web3.js 1.0.0 documentation web3.js 中文文档 : web3.js - 以…

Mysql 幻读,当前读和快照读

什么是幻读 幻读指当用户读取某一范围的数据行时&#xff0c;另一个事务又在该范围内插入了新行&#xff0c;当用户在读取该范围的数据行时&#xff0c;会发现有新增行数据&#xff1b; mysql 在RR(可重复读)隔离级别利用间隙锁机制下一定程度上解决了幻读。 这里的一定程度…

Android Studio实现内容丰富的安卓美食管理发布平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号079 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查…

更改VS code Jupyter 插件的默认快捷键

更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键 替换Jupyter默认快捷键 更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键打开keyboard shortcuts 设置方法一方法二 更换快捷键 end Jupyter 插件很好的在VS code中集成了…

异地远程访问本地SQL Server数据库【无公网IP内网穿透】

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云文章&#xff1a;无需公网IP…

Golang的trace性能分析

文章目录 一、trace概述二、trace的使用方式代码中trace采集通过pprof采集 三、trace分析细节trace的web界面trace中需要关注的关注GC的频率关注goroutine调度情况关注goroutine的数量理想情况 四、GC分析当前服务GC情况设置GOGC设置GOMEMLIMITGC阈值的讨论GC的特点 五、gorout…

前端学习——jsDay5

对象 对象使用 小练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

Spring Boot中的请求参数绑定及使用

Spring Boot中的请求参数绑定及使用 在Web应用程序中&#xff0c;请求参数绑定是非常重要的操作。Spring Boot框架使得请求参数绑定变得非常简单&#xff0c;通过使用注解和预定义的类可以轻松地实现此操作。本文将介绍Spring Boot中的请求参数绑定及其使用。 请求参数绑定 在…

银河麒麟服务器v10 sp1 部署 Net6.0 项目

上一篇已经部署了Net6.0环境&#xff0c;本节将实现Net6.0程序部署&#xff0c;打开或新建项目&#xff0c;修改appsettings.json配置&#xff1a; 添加&#xff1a;"urls": "http://*:8061",//linux部署使用&#xff0c;端口可根据需求修改为自己的 在项…