mysql(查询)

news2024/11/28 9:35:09

1.单表查询

(1)查询多个字段
指定列查询基础语法:select 字段1,字段2,字段3,... from 表名;
全列查询基础语法:select * from 表名;
注意:
1)在实际开发中不用使用*来进行查询,因为数据库会很大,影响效率;
2)查询的结果是一个表达式,例如,在查询命令中添加一个数值,则查询的结果中每一列都会有这个数值;
如:select id,name,10 from exam;(在查询的每条记录中都会添加一列,值为10)
3)可以通过as关键字来为查询结果中的列指定别名,as和引号都可以省略,但如果别名中存在空格就不能省略引号了;
4)列与列之间可以进行计算;(select chinese+math+english as '总分' from exam)
5)还可以直接加上指定的数字;(select math+10 from exam;)
(2)设置别名
基础语法:select 字段1[AS 别名1],字段2[AS 别名2]... from 表名;

2. 去重查询(DISTINCT)

去重查询是通过关键字DISTINCT来实现,用于返回唯一不同的值(当你在执行查询时,如果某列中包含多个重复的值,使用distinct可以只获取该列中的唯一值)。

基础语法:select distinct 字段列表 from 表名;
(1)使用单个列
eg:
select distinct colum_name from table_name;
colum_name:列名(从中获取唯一值)
table_name:表名

(2)使用多个列
eg:
select distinct colum_name1,colum_name1from table_name;
colum_name1:列名1
colum_name2:列名2
table_name:表名
返回:所有独特的colum_name1和colum_name2的组合值是唯一的,即使此两列中的某一列出现唯一,但两列组合不唯一也无法返回。

注意:
(1)在查询结果中,每一列都相同才认为是重复数据(可以使用多个字段的组合来确定唯一性)
(2)DISTINCT 关键字必须紧跟在 SELECT 关键字之后,并作用于其后指定的字段或字段列表。

3.排序查询

对于多字段,按照字段的前后顺序,如果第一个字段相同,按照第二个字段进行排序。
基础语法:select 字段列表 from 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
排序方式:asc(升序,默认值),desc(降序),可以根据多个字段进行排序,排序的优先级就按照书写的顺序进行排序。
(1)使用别名排序
select id,name,math+chinese+english as '总分' from exam order by 总分 desc;
若三科成绩中有任何一科为null,则总分就是null

注意:
(1)如果数据为null就认为是最小的,升序排在最前面,降序排在最后面;
(2)不论和任何值相加,结果都是null;
(3)始终被看作false;
(4)null并不等同于0;

4.条件查询

比较运算符如图一

基础语法:select 字段列表 from 表名 where 条件列表;
注意:
1)如果表中有null,不参与筛选,所以最终结果不会包括null;
2)同一行的数据是可以比较的,但不能跨行比较;(select name from exam where english>chinese;)
3)如果where后面使用了表达式的话要写完整的表达式,不能写别名(english+math+chinese的别名total);(select name,english+math+chinese as total from exam where english+math+chinese<250 order by total desc)
4)<=> 表示等于,是专门针对null判断的,如null <=> null 的结果为1,null的判断是不能使用“=”判断的;
5)like表示模糊匹配,按照单个字符和任意个字符进行匹配:
 1.1)select * from exam where name like '陈%';(陈后面任意个字符)
 1.2)select * from exam where name like '陈_'; (陈后面只能跟一个字符)
6)判断是否为null的命令:
  1.1)IS NULL 是NULL
  1.2)IS NOT NULL 不是NULL
逻辑运算符如图二
OR 任意一个条件为true就符合,哪怕另一个条件不参与比较;
AND 任意条件都需要为true才符合;
优先级:AND 和 OR优先级和Java中一样,and>or,不过仅以根据需求加括号;
SQL的执行顺序
(3)select name,english+math+chinese as total 
(1)from exam 
(2)where english+math+chinese < 250 
(4)order by total desc
1.如果要在数据库中查找某些数据,首先要确定表,先执行from;
2.在查询过程中,渝澳根据指定的查询条件把复合条件的数据过滤出来,只是执行的是where字句;
3.执行select后面的指定的列,这些列最终要加到结果的展示集中;
4.根据order by子句的列名和排序规则进行最后的排序;

图一
比较运算符
图二
逻辑运算符

5.分页查询

如果直接使用select * from 不加限制来查询全部的数据是不安全的,通过分页查询可以有效的控制一次查询出来的结果集中的记录条数,可以有效的减少数据库服务器的压力,也有利于用户查看。
计算第s页所需的偏移量n: n=(s-1)*每页显示的记录数;(如果说指定的起始位置超出了整个表的范围,就会返回一个空的结果集)

分页查询语句

6.分组查询

基础语法:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
where和having的区别:
执行时机不同:where是分组前进行过滤,不满足where条件不进行分组,having是对分组后的结果进行过滤;
判断条件不同:where不能对聚合函数进行判断,而having可以;
(2)通过having对分组后的数据进行过滤:
select role ,round(avg(salary),2) as '平均薪资'
 from emp
 group by role
 having 平均薪资 >10000 and 平均薪资 < 100000;

7.EXISTS关键字

基础语法:select * from 表名 where exists (select * from 表名);
exists后面括号中的查询语句,如果有结果返回就执行外层查询,如果返回的是一个空结果集,就不执行外层的查询;
select * from course where exists(select * from course where course_id = 100);
注意:
1)先执行select * from course where course_id = 100语句,如果结果返回不是空结果集,则会执行外层的查询,否则不会;

8.临时表查询

在from子句中使用子查询,就是把一个子查询当作一个临时表来使用
select * from score sc,
(select avg(sc.score) as score 
from score as sc, student as st,class as c 
where c.class_id=st.class_id 
	and st.student_id=sc.student_id 
	and c.name='中文系')  as tmp 
where sc.score > tmp.score;

9.子查询

(1)单行子查询
select * from student where class_id = (select class_id from student where name = '许仙') and name !='许仙';
(2)多行子查询
select * from score where course_id in (select course_id from course where name = '语文' or name = '英文');
(3)多列子查询
select * 
from score
 where (student_id,course_id,score) 
 in (select student_id,course_id,score from score group by student_id,course_id,score having count(*) >1);
 注意:外层查询中的条件字段和内层查询中的结果对比,完全符合条件才可以;

10.多表查询

联合查询就是联合多个表进行查询,为了消除表中字段的依赖关系,设计数据时把表进行拆分,这是会导致一条SQL语句查询出的数据不够完整,就可以通过联合查询把关系中的数据全部查出来,在一个数据行中显示详细信息;

11.合并查询

合并查询:合并多个查询结果到一个结果集中
基础语法:select 字段列表 from 表A... union[All] select 字段列表 from 表B...;
(1)单表中合并查询
可以直接使用or更加简洁
(2)多表中合并查询
select * from student union select * from student2;
注意:
1)合并显示的两张表的列名要匹配一致;
2)union和union all的区别:
union会自动去除合并结果中的重复行;
union all则会保留素有结果集中的所有行,包括重复的行;

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

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

相关文章

AI-Talk开发板CSK6固件烧录

一、说明 在windows系统上使用cskburn desktop工具对主控CSK6011A进行固件烧录&#xff0c;烧录接口为UART2&#xff08;TXD:PA18&#xff0c;RXD:PA15&#xff09;&#xff0c;需要CSK6011A处于boot模式才能升级。 官方参考文档&#xff1a;cskburn桌面烧录工具 | 聆思文档中…

DETR3D: 3D Object Detectionfrom Multi-view Images via 3D-to-2D Queries

本文的主要贡献如下&#xff1a; 我们提出了一种基于RGB图像的简化3D物体检测模型。与现有工作在最终阶段结合来自不同相机视角的物体预测不同&#xff0c;我们的方法在每一层计算中融合所有相机视角的信息。据我们所知&#xff0c;这是首次尝试将多摄像头检测视为3D集合到集合…

软考攻略/超详细/系统集成项目管理工程师/基础知识分享06

2.2 新一代信息技术及应用 2.2.1 物联网&#xff08;掌握&#xff09; 物联网&#xff1a;是指通过信息传感设备&#xff0c;按约定的协议将任何物品与互联网相连接&#xff0c;进行信息交换和通信&#xff0c;以实现只能识别、定位、跟踪、监控和管理的网络 1、技术基础 物联…

Flask框架 完整实战案例 附代码解读 【3】

Flask 是一个轻量级的可定制框架&#xff0c;使用Python语言编写&#xff0c;较其他同类型框架更为灵活、轻便、安全且容易上手。 前面已经写过项目从新建运行安装到测试部署的全流程&#xff0c;其中有写Flask框架从新建到部署全流程&#xff0c;但是只有部分代码。本篇主要是…

国产光耦合器在提高各行业能源效率方面的作用

随着各行业对节能解决方案的需求不断增长&#xff0c;国产光耦合器已成为降低能耗和提高整体系统效率的关键部件。这些由本地制造商开发的组件现在不仅因其成本效益而受到认可&#xff0c;而且还因其能够满足需要可靠隔离和高效电源管理的工业应用的特定需求而受到认可。 通过隔…

语义传输中单智能体语义知识库

在语义传输中涉及到的智能体包括信源数据模态、信宿智能任务以及信道传输环境。单智能体系统仅涉及一个智能体&#xff0c;该智能体独立完成感知、决策和执行任务&#xff0c;通常在不需要与其他智能体直接交互的环境中运行&#xff0c;能自主获取环境信息&#xff0c;并基于自…

PHP高效进销存管理系统智能管理库存销售与采购系统小程序源码

高效进销存管理系统 —— 智能管理&#xff0c;轻松驾驭库存、销售与采购 &#x1f525; 【开篇&#xff1a;告别繁琐&#xff0c;拥抱智能管理】 你还在为库存管理混乱、销售数据不清、采购计划难定而烦恼吗&#xff1f;是时候告别那些低效的手工账本和复杂的Excel表格了&…

传输层(TCP、UDP、RDT详解)

目录 1.无连接传输&#xff1a;UDP UDP&#xff1a;User Datagram Protocol&#xff08;用户数据报协议&#xff09; UDP&#xff1a;校验和 Internet校验和的例子 2.可靠数据传输&#xff08;Rdt&#xff09;的原理 可靠数据传输&#xff1a;问题描述 1.Rdt1.0&#xff…

【JAVA】两轮充电桩设计模式实践分享

如果说数据结构和算法是程序员构建高效代码的基石&#xff0c;那么设计模式则是打造高质量代码的“内功心法”。掌握并应用合适的设计模式&#xff0c;有助于管理项目复杂性&#xff0c;简化维护&#xff0c;并加速开发进程。 因此&#xff0c;深入理解并合理运用设计模式&…

HTTP 请求方法(method)介绍

目录 一、GET 二、POST 三、其他方法 3.1 PUT 3.2 DELETE 3.3 HEAD 3.4 OPTIONS 3.5 TRACE 3.6 CONNECT 3.7 PATCH 3.8 LINK 和 UNLINK&#xff08;扩展方法&#xff09; HTTP&#xff08;超文本传输协议&#xff09;定义了多种请求方法&#xff0c;如&#xff1a; …

opencv计算机视觉识别图像处理c++项目实战python网课程视频教程

课程名称 《OpenCV计算机视觉识别图像处理C实战课程》 课程亮点 全面覆盖&#xff1a;从基础概念到高级技术&#xff0c;涵盖OpenCV的核心功能。实战导向&#xff1a;通过具体项目实践&#xff0c;帮助学员掌握图像处理的实际应用。双语言支持&#xff1a;虽然重点是C&#x…

使用神卓互联内网穿透开发支付宝支付回调环境(Java版)

支付宝支付功能在电商网站和其他在线服务中扮演着重要角色。对于使用Java作为开发语言的应用来说&#xff0c;集成支付宝支付回调功能是必不可少的一部分。为了能够在本地开发环境中测试这一功能&#xff0c;内网穿透技术可以让我们绕过公网IP的限制。下面将介绍如何利用神卓互…

Unity教程(十三)敌人状态机

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

集成电路学习:什么是I/O输入输出

I/O&#xff1a;输入输出 I/O&#xff0c;全称Input/Output&#xff0c;即输入输出&#xff0c;是信息处理系统&#xff08;如计算机&#xff09;与外部世界&#xff08;可能是人类或另一信息处理系统&#xff09;之间的通信方式。具体来说&#xff0c;输入是系统接收的信号或数…

shell编程--正则表达式

正则表达式 正则表达式都被置于两个正斜杠之间&#xff1b;如/l[oO]ve/ 示例 匹配数字的脚本&#xff0c;用户输入创建账号的数量 语法&#xff1a; [[ ^[0-9]$ ]] 表示必须输入数字 #!/bin/bashwhile : do read -p "输入数字&#xff1a;" numif [[ $num ~ ^[…

springboot整合logback进行日志管理(下篇)

上一篇介绍了springboot整合logback的一些项目中用到的经验&#xff0c;本片文章继续介绍在项目中实际用到的工程经验 1、设想一下有这样一个场景&#xff1a;我想把我所有service层的日志单独打印到service.log中&#xff0c;那应该怎么做&#xff1f; 有人会说了可以配置一…

高收录高权重的采集站源码——码山侠

前端预览&#xff1a;i5i.net——码山侠点击看看 采集非常简单&#xff0c;不伪原创&#xff0c;也不处理种种外链&#xff0c;也不需要什么配图&#xff0c;而且结构也不复杂。 后台管理&#xff1a; 文章发布手动发布及编辑管理后台 采集以及伪原创类工具后台&#xff1a; …

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习 PySpark

毕业设计题目基于 Hadoop 的共享单车布局规划 二、毕业设计背景 公共交通工具的“最后一公里”是城市居民出行采用公共交通出行的主要障碍&#xff0c;也是建设绿色城市、低碳城市过程中面临的主要挑战。 共享单车&#xff08;自行车&#xff09;企业通过在校园、地铁站点、公…

光储充微电网能量管理系统控制策略研究及并网分析

引言 近年来&#xff0c;我国日益重视分布式能源和微电网的发展&#xff0c;特别是光伏系统和储能技术的应用&#xff0c;这些已成为确保电力供应可靠性、促进新能源利用和减少污染的关键措施。我国新能源领域的专家对光伏储能控制系统进行了深入研究&#xff0c;强调了其应用…

【Qt】 QComboBox | QSpinBox

文章目录 QComboBox —— 下拉框QComboBox 属性核心方法核心信号QComboBox 使用 QSpinBox —— 微调框QSpinBox 属性核心信号QSpinBox 使用 QComboBox —— 下拉框 QComboBox 属性 QComboBox —— 表示下拉框 currentText ——当前选中的文本 currentindex ——当前选中的条…