Mysql学习-Mysql查询(1)

news2025/1/10 21:24:07

1.基本查询(SELECT)

SELECT语句基本格式:

SELECT
{*|<字段列表>}
[
FROM<表1>,<表2>..
[WHERE <表达式>
[GROUP BY<group by definition>]
[HAVING <expression>[{<operator><expression>}...]]
[ORDER BY <order by definition>]
[LIMIT [<offset>,]<row count>]
]
SELECT[字段1,字段2,...,字段n]
FROM[表或视图1]
WHERE[查询条件];

其中,各条子句的含义如下:
{*<字段列表>}包含星号通配符和字段列表,表示査询的字段,其中,字段列表至少包含一个字段名
称,如果要查询多个字段,多个字段之间用逗号隔开,最后一个字段后不加逗号
FROM <表1>,<表2>..,表1和表2表示查询数据的来源,可以是单个或者多个
WHERE 子句是可选项,如果选择该项,将限定查询行必须满足的查询条件,
GROUP BY<字段>,该子句告诉MySQL如何显示查询出来的数据,并按照指定的字段分组;
HAVING过滤分组,GROUP BY可以和HAVING一起限定显示记录所满足的条件,只有满足条
件的分组才会被显示.
[ORDER BY<字段>],该子句告诉MySQL按什么样的顺序显示查询出来的数据,可以进行的排序有
升序(ASC),降序(DESC);
[LIMIT[<offset>,]<row count>],该子句告诉MySQL每次显示查询出来的数据条数

2.单表查询

(1).查询所有字段:

在SELECT中使用*通配符查询所有字段

SELECT查询记录最简单的形式是从一个表中检索所有记录,实现的方法是使用星号(*)通配符指定查询所有列的名称.语法格式如下:
SELECT *FROM 表名;

(2).查询指定字段:

1)查询单个字段
查询表中的某一个字段,语法格式为:
SELECT 列名 FROM 表名:
例2,查询fruits表中f name列所有的水果名称,SQL语句如下:

SELECT f_name FROM fruits;

2)查询多个字段
查询多个字段的语法如下:
SELECT 字段1,字段2..字段名n FROM 表名:
例3:从fruits表中获取f name和f price两列,SQL语句如下

SELECT f_name,f_price FROM fruits;

(3).查询指定记录

在SELECT 语句中,通过WHERE字句可以对数据进行过滤,语法格式为:
SELECT 字段名1,字段名2...,字段名n
FROM 表名
WHERE 查询条件

WHERE条件判断符

例如:

///查询价格为10.2元的水果的名称
SELECT f_name,f_price
FROM fruits
WHERE f_price=10.2;
//查找名称为"apple"的水果的价格
SELECT f_name,f_price
FROM fruits
WHERE f_name='apple';
//查询价格小于10的水果的名称
SELECT f_name,f_price
FROM fruits
WHERE f_price<10;

(4).带in关键字的查询:

IN操作符用来查询满足指定范围内的条件的记录,使用IN操作符,将所有检索条件用括号括起来,检
索条件之间用逗号分隔开,只要满足条件范围内的一个值即为匹配项,

//查询s_id为101和102的记录,SQL语句如下:
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id IN(101,102)
ORDER BY fname;

使用NOT来检索不在条件范围内的记录:

//查询所有s id不等于101也不等于102的记录,SQL语句如下
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id NOT IN(101,102)
ORDER BY f_name;

(5).带BETWEEN AND的范围查询:

用来查询某个范围内的值:

//查询价格在2.00元到10.20元之间的水果名称和价格
SELECT f_name,f_price
FROM fruits
WHERE f_price BETWEEN 2.00 AND 10.20;

BETWEEN AND匹配范围内的所有值,包括开始值和结束值
BETWEEN AND 操作符前可以加关键字NOT,表示指定范围之外的值,

//查询价格在2.00元到10.20元之外的水果名称和价格:
SELECT f_name,f_price
FROM fruits
WHERE f_price NOT BETWEEN 2.00 AND 10.20;

(6)带LIKE的字符匹配查询
我们如果要查找所有包含字符"ge”的水果的名称,需要使用通配符进行匹配查找;
通配符是一种在SQL的WHERE条件字句中拥有特殊意思的字符.SQL语句中支持多种通配符,可以和LIKE一起使用的通配符有'%'和’_'

%通配符可以匹配任意长度的字符,甚至包括零字符

_通配符一次只能匹配一个长度的字符

//fruits表中,查询f name中包含字母'g'的记录
SELECT f_id,f_name
FROM fruits
WHERE f_name LIKE '%g%';

//在fruits表中,查询以字母'y'结尾,且'y'前面只有4个字母的记录
SELECT f_id,f_name 
FROM fruits
WHERE f_name LIKE '____y';

(7).查询空值:

空值一般表示数据未知,不使用或将在以后添加数据
在SELECT语句中使用IS NULL字句,可以查询某字段内容为空记录
NULL相反的是NOT NULL,该关键字查找字段不为空的记录,

//查询customers表中c email为空的记录的cid,c name和c email字段值
SELECT c_id,c_name,c_email
FROM customers
WHERE c_email IS NULL;

//查询customers表中c email不为空的记录的cid,c name和c email字段值
SELECT c_id,c_name,c_email
FROM customers
WHERE c_email IS NOT NULL;

(8).带AND和OR的多条件查询:

//在fruits表中查询s id=101并且f price大于等于5的水果id,价格和名称
SELECT f_id,f_name,f_price
FROM fruits
WHERE s_id='101' AND f_price >=5;
//查询s_id=101或者s_id=102的水果供应商的f_price和f_name,
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id=101 OR s_id=102;

在这里可以看到,OR操作符和IN操作符使用后的结果是一样的,它们可以实现相同的功能,但是使用
IN操作符使得检索语句更加简洁明了,并且IN执行的速度要快于OR.更重要的是,使用IN操作符可
以执行更加复杂的嵌套查询(后面章节会讲述)
OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先
对AND两边的操作数进行操作,再与OR中的操作数结合

(9).查询结果不重复:

可以使用DISTINCT关键字指示MySQL消除重复的记录值.语法格式为:

SELECT DISTINCT 字段名 FROM 表名;

(10).对查询结果排序:

1).单列排序:

//查询fruits表的f name字段值,并对其进行排序
SELECT f_name
FROM fruits
ORDER BY f_name;

2).多列排序:

//查询fruits表的f_name字段和f_price字段,先按f_name排序,再按f_price排序
SELECT f_name,f_price
FROM fruits
ORDER BY f_name,f_price;

在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序.如果第
列数据中所有值都是唯一的,将不再对第二列进行排序.

3).指定排序方向:

默认情况下,查询数据按字母升序进行排序(A~Z),但数据的排序并不仅限于此,还可以使用ORDER
BY对查询结果进行降序排序(Z~A).这可以通过关键字DESC实现.

与DESC相反的是ASC(升序),将字段列中的数据按字母表顺序升序排列,实际上,在排序的时候ASC
是默认的排序方式,所以加与不加都可以;

//查询fruits表的f name字段和f price字段,对结果按f price降序方式排列;
SELECT f_name,f_price
FROM fruits
ORDER BY f_price DESC;

//查询fruits表,先按f_price降序排列,再按f_name升序排列;
SELECT f_price,f_name
FROM fruits 
ORDER BY f_price DESC,f_name;

DESC排序方式只应用到直接位于其前面的字段上,由结果可以看出
DESC关键字只对其前面的列进行降序排列,在这里只对fprice排序,而并没有对f name进行排序
因此,fprice按降序排列,而f name列仍按升序排列.如果要对多列都进行降序排列,必须要在每
列的列明后面加DESC关键字.

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

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

相关文章

OpenCV-平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…

WPS解决Word文件引入excel对象文件无法打开提示“不能启动此对象...”的问题

一、问题现象 接收到了一份 Word文件&#xff0c;里面引入了一个Excel对象文件&#xff0c;双击时候&#xff0c;wps出现卡顿&#xff0c;过一会之后弹出错误提示&#xff1a;不能启动此对象... 二、解决方法 1.点击WPS左上角图标&#xff0c;并打开右上角设置&#xff0c;萱蕚…

做异端中的异端 -- Emacs裸奔之路6: 不可能存在的跳转功能

当一个问题存在两难时&#xff0c;市面上就不太可能出现稳定的&#xff0c;大众化的解决方案。 这很多是一个哲学问题 两害权衡&#xff0c; 存在很强的个性差异. 这种问题需要自己解决&#xff0c; 这个就是为什么要使用Emacs或者Vim的原因。 今天分享的一个想法&#xff0…

【Linux】ubuntu下一键配置vim

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;Linux权限&#xff08;超详细彻底搞懂Linux的权限&#xff09; &#x1f516;流水不争&#xff0c;争的是滔滔…

华为的USG6000为什么不能ping通

前言&#xff1a; 防火墙usg6000v的镜像 链接: https://pan.baidu.com/s/1uLRk0-hnHRTLYLx1Pnplow?pwdtymp 提取码: tymp 看了好多毒文章&#xff0c;感觉写作业更有意思&#xff0c;可以了解新的知识 内容&#xff1a; 首先看毒文章是这样说的&#xff0c;华为的防火墙是…

【Linux】实战小项目-----Bash的简易版

目录 一、什么是Bash 二、实现Bash&#xff1a; 1、整体需求分析&#xff1a; 2、初始化&#xff1a; 3、分割字符串&#xff1a; 4、执行普通命令&#xff1a; 5、内建命令与特殊处理&#xff1a; 1、ls的颜色&#xff1a; 2、内建命令cd&#xff1a; 3、export&#…

windows文件下换行, linux上不换行 解决CR换行符替换为LF notepad++

html文件是用回车换行的&#xff0c;在windows电脑上&#xff0c;显示正常。 文件上传到linux服务器后&#xff0c;文件不换行了。只有一行。而且相关js插件也没法正常运行。 用notepad查看&#xff0c;显示尾部换行符&#xff0c;是CR&#xff0c;这就是原因。CR是不被识别的。…

汽车产业数字化转型:协同创新破解挑战,平衡安全与流通

在数字经济时代的浪潮中&#xff0c;数据资源和数据信息已成为驱动各行各业转型升级的“新石油”。汽车产业&#xff0c;作为国民经济的重要支柱&#xff0c;正经历着前所未有的变革。随着数字化创新和转型的深入&#xff0c;数据在汽车全产业链中的作用和价值日益凸显。在这个…

C语言程序设计P5-2【应用函数进行程序设计 | 第二节】——知识要点:函数的参数及返回值和函数的调用及声明

知识要点&#xff1a;函数的参数及返回值和函数的调用及声明 视频&#xff1a; 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 1.求x的n次方的值也就是求n个x的乘积&#xff0c;可把x和n作为函数的形参&#xff0c;定义一个函数power来完成这个功能&am…

40分钟学 Go 语言高并发:GRPC框架使用

gRPC框架使用 一、gRPC基础知识 知识点说明重要程度应用场景RPC原理远程过程调用的基本原理⭐⭐⭐⭐⭐分布式系统通信协议设计Protocol Buffers的使用⭐⭐⭐⭐⭐接口定义、数据序列化服务定义gRPC服务和方法定义⭐⭐⭐⭐服务接口设计性能优化连接池、压缩、流式处理⭐⭐⭐⭐高…

HTML Input 文件上传功能全解析:从基础到优化

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【ETCD】【源码阅读】ETCD启动流程源码解读

启动流程的图如下&#xff1a; 1、主函数入口 ETCD 启动的入口在 etcd/server/main.go 文件中。 package mainimport ("os""go.etcd.io/etcd/server/v3/etcdmain" )func main() {etcdmain.Main(os.Args) }这里调用了 etcdmain.Main()&#xff0c;这是 …

【RBF SBN READ】hadoop社区基于RBF的SBN READ请求流转

读写分离功能的背景及架构 当前联邦生产集群的各个子集群只有Active NameNode在工作,当读写任务变得繁忙的时候,只有一个Active负责处理的话,此时集群的响应和处理能力业务侧感知会明显下降,为此,我们将引入Observer架构,实现读写功能的分离,使得Active只负责写请求,而…

计算机运行时提示错误弹窗“由于找不到 quazip.dll,无法继续执行代码。”是什么原因?“quazip.dll文件缺失”要怎么解决?

计算机运行时错误解析&#xff1a;解决“quazip.dll缺失”问题指南 在软件开发和日常计算机使用中&#xff0c;我们经常会遇到各种运行时错误。今天&#xff0c;我们将深入探讨一个常见的错误提示&#xff1a;“由于找不到quazip.dll&#xff0c;无法继续执行代码。”这一弹窗…

NuHertz/HFSS: 使用矩形、径向和阻抗短截线的平面 LPF 切比雪夫-II 实现

我们今天的主题是使用 NuHertz 和 HFSS 设计 Microstrip Lowpass Chebyshev-Type2 滤波器。切比雪夫 2 型在通带中具有平坦的响应&#xff0c;在阻带中具有波纹。我们将比较 NuHertz 中的不同选项。 低通滤波器由集总 L 和 C 组件制成。这种方法很难用于高频应用程序。高频滤波…

SpringBoot整合knife4j,以及会遇到的一些bug

这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”&#xff0c;文中的讲解内容简单清晰&#xff0c;易于学习与理解&#xff0c;下面请大家跟着小编的思路慢慢深入&#xff0c;一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧&#xff01; 一…

高效的 Java 对象映射库“Orika”

什么是 Orika Orika 是一个高效的 Java 对象映射库&#xff0c;专门用于简化 Java 应用程序中对象之间的转换。它以自动化和优化的方式将一个对象的属性映射到另一个对象&#xff0c;从而减少了手动编写重复代码的需要。Orika 特别适合处理复杂的对象结构以及数据传输对象 &am…

汽车总线协议分析-CAN-FD总线

随着汽车功能的增多&#xff0c;各ECU之间的信息交互也越来越频繁&#xff0c;导致总线负载持续走高&#xff0c;CAN2.0报文只有约40%-50%带宽实际用于数据传输&#xff0c;响应机制易受车内布线的物理特性限制&#xff0c;如广播延迟、导线延迟等&#xff0c;CAN的局限性也逐渐…

【JavaEE】多线程(6)

一、用户态与内核态 【概念】 用户态是指用户程序运行时的状态&#xff0c;在这种状态下&#xff0c;CPU只能执行用户态下的指令&#xff0c;并且只能访问受限的内存空间 内核态是操作系统内核运行时的状态&#xff0c;内核是计算机系统的核心部分&#xff0c;CPU可以执行所有…

故障处理--kuboard无法访问,etcd磁盘空间不足

问题现象&#xff1a; kuboard页面报错 排查过程&#xff1a; 1、查看kuboard是否正常。 2、查看kuboard容器的日志&#xff1a; docker logs -f --tail10 kuboard 大概内容如下&#xff1a; levelerror msg"failed to rotate keys: etcdserver: mvcc: database sp…