MySQL查询(基础到高级)

news2025/4/6 16:53:50

目录

一、单表查询:

 1.基本查询:

  1.1 查询多个字段:

  1.2 去除重复记录:

2. 条件查询:

 2.1 语法

2.2 条件分类:

 比较运算符:

  between..and..使用示例:

​编辑

  in(..) 使用示例:

​编辑

  like 使用示例:

 逻辑运算符:

并  使用示例:

  或 使用示例:

 3.函数:

   3.1 语法:

  3.2 聚合函数:

   count 使用示例:

    sum   使用示例:

3.3 常用字符串函数:

 concat(x,y) 使用示例:

    trim() 使用示例:

   substr(x,y,z) 使用示例:

3.4 常用数值函数:

  ceil(xx.xxx)  floor(xx.xxx)使用示例:

  3.5 组合使用示例

   生成6位数随机密码:

4.分组查询group by:

  4.1 格式:

  4.2 having:

5. 排序查询 order by:

  5.1 格式:

6. 分页查询:

 6.1 格式:

二、连接查询:

 1.连接查询分类:

 2.内连接inner jion:

   2.1 格式:

3. 左连接:

 3.1 格式:

4. 右连接:

 4.1 格式:

 5. 联集union:

  5.1 格式:

 6. 左表无交集:

7. 求右表无交集:

8. 求多表的无交集:

三、视图:

  1.介绍:

  2.格式:

四、存储过程:

 1.存储过程介绍:

 2.存储过程的优点:

 3.创建存储过程:

 4. 调用存储过程:

 5. 查看存储过程:

 6. 存储过程的参数:

 7. 删除存储过程:

 8. 存储过程的控制语句:

  8.1 格式:

  8.2 示例:


一、单表查询:

 1.基本查询:

  1.1 查询多个字段:

1.查询所有字段:
select * from 表名;

2.查询指定字段:
select 字段1,字段2 from 表名;

  1.2 去除重复记录:

select distinct "字段" FROM "表名";

2. 条件查询:

 2.1 语法

select '字段列表' from 表名 where 条件;

2.2 条件分类:

 比较运算符:
>   >=大于,大于等于
<   <=小于,小于等于
=等于
<>   或   !=不等于
between...and...在..到..之间(包含最大最小值)
in(...)in  之内值多选一
like  占位符模糊匹配(_表示单个任意字符,%匹配多个任意字符)
is null匹配值为null
  between..and..使用示例:
  in(..) 使用示例:
  like 使用示例:

 逻辑运算符:
and  或 &&并且
or 或者
not   或  !
并  使用示例:

  或 使用示例:

 3.函数:

   3.1 语法:

slect 聚合函数(字段列表) from 表名;

  3.2 聚合函数:

count统计数量
max最大值
min最小值
avg平均值
sum求和
   count 使用示例:

    sum   使用示例:

3.3 常用字符串函数:

concat(x,y)将提供的参数 x 和 y 拼接成一个字符串
lower(x)将字符串 x 的所有字母变成小写字母
upper(x)将字符串 x 的所有字母变成大写字母
trim()返回去除指定格式的值
lpad(str,n,pad)左填充,用pad对str做左边进行填充,达到n个字符长度
rpad(str,n,pad)右填充,用pad对str做右边进行填充,达到n个字符长度
substr(x,y,z)获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串

 concat(x,y) 使用示例:

    trim() 使用示例:

   substr(x,y,z) 使用示例:

3.4 常用数值函数:

ceil(xx.xxx)向上取整
floor(xx.xxx)向下取整
mod(x,y)返回x/y的余数
rand ()0-1随机值
round(x,y)求x四舍五入的值,y表示保留几位小数
  ceil(xx.xxx)  floor(xx.xxx)使用示例:

  3.5 组合使用示例

   生成6位数随机密码:

4.分组查询group by:

 对GROUP BY后面的字段的查询结果进行汇总分组,通常是结合聚合函数一起使用的
GROUP BY 有一个原则,凡是在 GROUP BY 后面出现的字段,必须在 SELECT 后面出现;

  4.1 格式:

SELECT "字段1", SUM("字段2") FROM "表名" GROUP BY "字段1";

示例:

  4.2 having:

用来过滤由 GROUP BY 语句返回的记录集,通常与 GROUP BY 语句联合使用
HAVING 语句的存在弥补了 WHERE 关键字不能与聚合函数联合使用的不足。

SELECT "字段1", SUM("字段2") FROM "表名" GROUP BY "字段1" HAVING 条件或函数;

示例:

5. 排序查询 order by:

   ASC 是按照升序进行排序的,是默认的排序方式。

    DESC 是按降序方式进行排序。

  5.1 格式:

SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC, DESC];

示例:

6. 分页查询:

 6.1 格式:

select 字段列表 from 表名 limit 起始,查询数;

示例:

二、连接查询:

 1.连接查询分类:

  1. 内连接: 只返回两个表中联结字段相等的行
  2. 左连接:返回包括左表中的所有记录和右表中联结字段相等的记录 
  3. 右连接:返回包括右表中的所有记录和左表中联结字段相等的记录
  4. 联集: 联集,将两个select查询语句的结果合并,并去重

 2.内连接inner jion:

                              

   2.1 格式:

select 查询字段 from 表1 inner join 表2 on 条件;

3. 左连接:

                                           

 3.1 格式:

select 查询字段 from 表1 left join 表2 on 条件;

 示例:

4. 右连接:

                                      

 4.1 格式:

select 查询字段 from 表1 left join 表2 on 条件;

示例:

 5. 联集union:

                                               

  5.1 格式:

select 查询字段 from 表1 union select 查询字段 from 表1; 
  #结果合并,并去重

select 查询字段 from 表1 union all select 查询字段 from 表1; 
  #结果合并,不去重

示例:

 6. 左表无交集:

                                 

select A.字段 from 左表 A left join 右表 B on A.字段 = B.字段 where B.字段 is null;

select 字段 from 左表 where 字段 not in (select 字段 from 右表);

7. 求右表无交集:

                                    

select B.字段 from 左表 A right join 右表 B on A.字段 = B.字段 where A.字段 is null;

select 字段 from 右表 where 字段 not in (select 字段 from 左表);

8. 求多表的无交集:

                                      

select A.字段 from (select distinct 字段 from 左表 union all select distinct 字段 from 右表) A group by A.字段 having count(A.字段)=1;



创建视图,协助查询
create view 视图表名 AS select distinct 字段 from 左表 union all select distinct 字段 from 右表;

select 字段 from 视图表名 group by 字段 having count(字段) = 1;

三、视图:

  1.介绍:

视图,可以被当作是虚拟表或存储查询。视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个架构,它本身并不实际储存数据记录。

  2.格式:

语法:

创建:
CREATE VIEW "视图表名" AS "SELECT 语句";

示例:
CREATE VIEW V_REGION_SALES AS SELECT A.Region REGION,SUM(B.Sales) SALES FROM location A 
INNER JOIN Store_Info B ON A.Store_Name = B.Store_Name GROUP BY REGION;

删除:
DROP VIEW V_REGION_SALES;

四、存储过程:

 1.存储过程介绍:

存储过程是一组为了完成特定功能的SQL语句集合。

存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。

 2.存储过程的优点:

1、执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
2、SQL语句加上控制语句的集合,灵活性高
3、在服务器端存储,客户端调用时,降低网络负载
4、可多次重复被调用,可随时修改,不影响客户端调用
5、可完成所有的数据库操作,也可控制数据库的信息访问权限

 3.创建存储过程:

DELIMITER $$							#将语句的结束符号从分号;临时改为两个$$(可以是自定义)
CREATE PROCEDURE Proc()					#创建存储过程,过程名为Proc,不带参数
-> BEGIN								#过程体以关键字 BEGIN 开始
-> select * from Store_Info;			#过程体语句
-> END $$								#过程体以关键字 END 结束
DELIMITER ;								#将语句的结束符号恢复为分号

 4. 调用存储过程:

##调用存储过程##
CALL Proc;

 5. 查看存储过程:

SHOW CREATE PROCEDURE [数据库.]存储过程名;		#查看某个存储过程的具体信息

SHOW CREATE PROCEDURE Proc;

SHOW PROCEDURE STATUS [LIKE '%Proc%'] \G

 6. 存储过程的参数:

  • IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

示例:

DELIMITER $$				
CREATE PROCEDURE Proc1(IN inname CHAR(16))		
-> BEGIN					
-> SELECT * FROM Store_Info WHERE Store_Name = inname;
-> END $$					
DELIMITER ;					

CALL Proc1('Boston');


delimiter $$
mysql> create procedure proc3(in myname char(10), out outname int)
    -> begin
    -> select sales into outname from t1 where name = myname;
    -> end $$
delimiter ;
call proc3('yzh', @out_sales);
select @out_sales;


delimiter $$
mysql> create procedure proc4(inout insales int)
    -> begin
    -> select count(sales) into insales from t1 where sales < insales;
    -> end $$
delimiter ;
set @inout_sales=1000;
call proc4(@inout_sales);
select @inout_sales;

 7. 删除存储过程:

DROP PROCEDURE IF EXISTS Proc;		

#仅当存在时删除,不添加 IF EXISTS 时,如果指定的过程不存在,则产生一个错误

 8. 存储过程的控制语句:

  8.1 格式:

条件语句:
if 条件表达式 then
  SQL语句序列1
else
  SQL语句序列2
end if;

循环语句:
while 条件表达式
do
  SQL语句序列
  set 条件迭代表达式;
end while;

  8.2 示例:

如果输入值大于10 id +1 否则 id -1
DELIMITER $$  
CREATE PROCEDURE proc2(IN pro int)  
-> begin 
-> declare var int;  
-> set var=pro*2;   
-> if var>=10 then 
-> update t set id=id+1;  
-> else 
-> update t set id=id-1;  
-> end if;  
-> end $$
 
DELIMITER ;

 创建wzw表并插入10000条数据:

create procedure proc5()
begin
declare var int;
set var=1;
create table wzw (id int, name varchar(20));
while var <10000 
do
insert into wzw values (var, concat('student',var));
set var = var+1;
end while;
end $$  

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

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

相关文章

InfiniTAM v3中localVBA的使用原理

注意&#xff1a;以下是我对InfiniTAM v3代码的理解 初始化&#xff1a;假设预先设定的block数量长度为10&#xff0c;localVBA初始化后如下图 voxelBlocks的内存已经分配&#xff0c;但都是空的allocationList被初始化为allocationList[i]i&#xff0c;表示任意访问allocatio…

【数据开发】数据全栈知识架构,数据(平台、开发、管理、分析)

文章目录 一、数据全栈知识架构1、数据方法&#xff08;思维&#xff0c;统计学&#xff0c;实践&#xff0c;北极星&#xff09;2、数据工具&#xff1a;数据仓库3、数据规范 二、数据分析工具1、大数据平台2、数据开发&#xff1a;入库计算&#xff08;重点&#xff09;3、数…

WP篇 某网杯WEBAWD踩坑

某网杯 事件回顾赛题环境 坑木马访问JSP显示空白Ubuntu与Mysql问题框架选择idea 事件回顾 虽然没有参与本次AWD&#xff0c;但是看到另外一只队伍down下来的文件&#xff0c;我还是忍不住心动了&#xff0c;于是决定复现一番&#xff0c;因为某些原因&#xff0c;详细的wp和复…

c#:System.Text.Json 的使用三(从Newtonsoft迁移)

环境&#xff1a; .net 6.0vs2022 系列篇&#xff1a; 《c#&#xff1a;System.Text.Json 的使用一》 《c#&#xff1a;System.Text.Json 的使用二》 《c#&#xff1a;System.Text.Json 的使用三&#xff08;从Newtonsoft迁移&#xff09;》 参考&#xff1a; 《MSDN: 从 Newt…

【vue2第二十章】vuex使用 (state,mutations,actions,getters)

vuex是什么&#xff1f; Vuex是一个用于Vue.js应用程序的状态管理模式。它允许您在应用程序中管理共享状态&#xff0c;并以可预测的方式进行状态更新。Vuex集成了Vue的响应式系统&#xff0c;使得状态的变化能够自动地更新视图。使用Vuex&#xff0c;您可以将应用程序的状态集…

华为云云耀云服务器L实例评测 |云服务器性能评测

通过上一篇文章华为云云耀云服务器 L 实例评测 &#xff5c;云服务器选购&#xff0c;我已经购买了一台 Centos 系统的云耀云服务器 L 实例。 在获得云耀云服务器 L 实例后&#xff0c;首要任务是熟悉云耀云服务器 L 实例的性能&#xff0c;对云耀云服务器 L 实例的性能进行测…

如何在 SOLIDWORKS中创建零件模板 硕迪科技

作为一款多功能且可大量定制的 3D CAD 软件&#xff0c;SOLIDWORKS模板可以通过自定义属性包含大量数据。可以通过为SOLIDWORKS零件、装配体和工程图创建模板来利用这些模板。 与其他一些CAD软件不同&#xff0c;SOLIDWORKS不限制您可以创建的模板数量 - 您可以根据需要创建任…

3、SpringBoot_配置文件

四、配置文件 1.前言 曾经使用SpringMVC的时候是手动修改tomcat配置的端口信息&#xff0c;那现在Springboot如何修改&#xff1f;springboot有一个默认的配置文件 application.properties 2.配置文件分类 常用配置信息官方文档地址 https://docs.spring.io/spring-boot/doc…

web:[极客大挑战 2019]Knife

题目 点开页面显示为&#xff0c;还有一句话木马 查看源代码&#xff0c;没有什么特别的 回归题目&#xff0c;页面显示使用菜刀和一句话木马&#xff0c;使用蚁剑连接 在根目录找到了flag文件

记账APP:小哈记账5——记账首页页面的制作(2)

项目介绍&#xff1a; 小哈记账是一款用于记账APP&#xff0c;基于Android Studio开发工具&#xff0c;采用Java语言进行开发&#xff0c;同时使用litepal和阿里云数据库进行数据的增删查改&#xff0c;以图标的形式在App的界面上显示。App可以清晰显示收支情况&#xff0c;并以…

EfficientNet笔记

前言 论文 EfficientNet 是一系列卷积神经网络架构&#xff0c;它旨在在计算资源受限的情况下实现更好的性能。EfficientNet 的设计思想是在网络的深度、宽度和分辨率方面进行均衡的调整&#xff0c;以获得高效且高性能的模型。 以下是 EfficientNet 的主要特点和设计原则&a…

VS2022创建控制台应用程序后没有Main了,如何显示Main?

文章目录 问题描述原因解决方案简单的顶级语句试用计算器 其他文章 问题描述 用VS2022创建一个控制台应用后&#xff0c;没有名称空间和Main函数了&#xff0c;只有一个WriteLine&#xff0c;如下所示。 // See https://aka.ms/new-console-template for more information Co…

今日学习 Mybatis 的关联映射

关联映射的三种关系&#xff1a; 我们首先绘制一个简化的 E-R 图来表示三种关联关系。 上图表示的三种关系&#xff1a; 一对一&#xff1a;一个班主任只属于一个班级&#xff0c;一个班级也只能有一个班主任一对多&#xff1a;一个班级有多个学生&#xff0c;一个学生只属于…

全网最细讲解如何实现导出Excel压缩包文件

写在前面的话 接下来我会使用传统的RESTful风格的方式结合MVC的开发模式给大家介绍一下如何去实现标题的效果。 基本思路讲解 先从数据库中查询出一组人员信息记录&#xff0c;保存在List list中。遍历这个列表&#xff0c;对于每一个人员信息&#xff0c;将其填充到一个Excel…

小白学Python:提取Word中的所有图片,只需要1行代码

#python# 大家好&#xff0c;这里是程序员晚枫&#xff0c;全网同名。 最近在小破站账号&#xff1a;Python自动化办公社区更新一套课程&#xff1a;给小白的《50讲Python自动化办公》 在课程群里&#xff0c;看到学员自己开发了一个功能&#xff1a;从word里提取图片。这个…

pytorch安装教程

写在前面&#xff1a;配置pytorch着实有很多坑&#xff0c;不过最终结果算好的&#xff0c;话不多说&#xff0c;直接上干货。其中想要知道如何解决torch.cuda.is_available(&#xff09;返回false的&#xff0c;直接跳到步骤5pytorch安装。python版本至少是3.6及以上。 1、前…

API 设计/开发/测试工具:Apifox与怎么通过拦截器

目录 一、测试接口如何创建&#xff1f; 二、如何添加body和header&#xff1f; 三、如果项目设置的有拦截器&#xff1f; 四、拦截器概念&#xff1a; 4.1使用拦截器概念 4.2 先写一个配置类WebMvcConfig.java 4.3 AuthInitInterceptor拦截器中实现 一、测试接口如何创建…

Linux 内存workingset Refault Distance算法源码及源码解析

概述 内核mm子系统中有一个workingset.c实现了refault distance算法&#xff0c;发现网络逻辑介绍该算法的文章主要是复制自奔跑吧内核一书中的内容&#xff0c;均比较雷同&#xff0c;讲述的角度比较难以理解&#xff0c;我第一看到的时候琢磨了2天才明白&#xff0c;本文希望…

Python中使用EMD(经验模态分解)

在Python中使用EMD&#xff08;经验模态分解&#xff09;进行信号分解时&#xff0c;通常可以设置信号分解的数目。EMD算法的目标是将信号分解成多个称为“本征模态函数”&#xff08;Intrinsic Mode Functions&#xff0c;简称IMF&#xff09;的成分&#xff0c;每个IMF都代表…

调试(修复错误)

什么是一个软件bug&#xff1f; ● 软件错误:计算机程序中的缺陷或问题。基本上&#xff0c;计算机程序的任何意外或非预期的行为都是软件缺陷。 ● bug在软件开发中是完全正常的! ● 例如&#xff0c;现在我们存在数组&#xff0c;我们现在需要将这个数组颠倒排序 意外的结…