MySQL查询(基础到高级)

目录

一、单表查询:

 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 条件表达式 thenSQL语句序列1
elseSQL语句序列2
end if;循环语句:
while 条件表达式
doSQL语句序列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.xdnf.cn/news/140875.html

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

相关文章

作业 练习题

内科护理学 参考试题 一、单项选择题&#xff08;每题2分&#xff0c;共100分&#xff09; 1.由于心排出量突然下降而出现的晕厥称为( )。 A.心脏骤停 B.病窦综合征 C.阿一斯综合征 D.倾倒综合征 2.护理服用洋地黄制剂的患者时&#xff0c;下列措施错误的是( )。 A.给洋地…

MasterAlign相机参数设置-曝光时间调节

相机参数设置-曝光时间调节操作说明 相机参数的设置对于获取清晰、准确的图像至关重要。曝光时间是其中一个关键参数&#xff0c;它直接影响图像的亮度和清晰度。以下是关于曝光时间调节的详细操作步骤&#xff0c;以帮助您轻松进行设置。 步骤一&#xff1a;登录系统 首先&…

JeecgBoot v3.5.5 版本发布,性能大升级版本—开源免费的低代码开发平台

项目介绍 JeecgBoot是一款企业级的低代码平台&#xff01;前后端分离架构 SpringBoot2.x&#xff0c;SpringCloud&#xff0c;Ant Design&Vue3&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…

【C++】布隆过滤器简单操纵模拟以及常见题目

&#x1f30f;博客主页&#xff1a; 主页 &#x1f516;系列专栏&#xff1a; C ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ &#x1f60d;期待与大家一起进步&#xff01; 文章目录 前言一、求下标仿函数的建议二、布隆过滤器代码面试题1.近似算法&#xff1a;2.精确算…

链表的分割——哨兵位

现有一链表的头指针 ListNode* pHead&#xff0c;给一定值x&#xff0c;编写一段代码将所有小于x的结点排在其余结点之前&#xff0c;且不能改变原来的数据顺序&#xff0c;返回重新排列后的链表的头指针。 思路&#xff0c;把链表分成两个新链表&#xff0c;然后连接起来 代码…

MySQL---优化日志

目录 一、MySQL优化 3、mysql server上的优化 3.1、MySQL查询缓存 3.2、索引和数据缓存 3.2、线程缓存 二、MySQL日志 2.1、redo log 重做日志 2.2、undo log 回滚日志 2.3、错误日志 2.4、查询日志 2.5、二进制日志 2.5.1、基于binlog数据恢复实践操作 六、慢查…

mysql 5.7 修改密码

为了提高安全性 mysql5.7中user表的password字段已被取消&#xff0c;取而代之的事 authentication_string 字段&#xff0c;当然我们更改用户密码也不可以用原来的修改user表来实现了。下面简绍几种mysql5.7下修改root密码的方法&#xff08;其他用户也大同小异&#xff09;。…

iOS加固保护技术:保护你的iOS应用免受恶意篡改

目录 转载&#xff1a;开始使用ipaguard 前言 下载ipa代码混淆保护工具 获取ipaguard登录码 代码混淆 文件混淆 IPA重签名与安装测试 转载&#xff1a;开始使用ipaguard 前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术&#xff0c;可以对iOS APP中的可执行文件…

Nuxt 菜鸟入门学习笔记:路由

文章目录 路由 Routing页面 Pages导航 Navigation路由参数 Route Parameters路由中间件 Route Middleware路由验证 Route Validation Nuxt 官网地址&#xff1a; https://nuxt.com/ 路由 Routing Nuxt 的一个核心功能是文件系统路由器。pages/目录下的每个 Vue 文件都会创建一…

套接字socket编程的基础知识点

目录 前言&#xff08;必读&#xff09; 网络字节序 网络中的大小端问题 为什么网络字节序采用的是大端而不是小端&#xff1f; 网络字节序与主机字节序之间的转换 字符串IP和整数IP 整数IP存在的意义 字符串IP和整数IP相互转换的方式 inet_addr函数&#xff08;会自…

【计算机毕业设计】基于SpringBoot+Vue大学生心理健康管理系统的开发与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

1 MySQL 高级(进阶) SQL 语句(一)

目录 1 MySQL SQL 语句 1.1SELECT 1.2 DISTINCT 1.3 WHERE 1.4 AND OR 1.5 in 1.6 BETWEEN 2 通配符 ----通常通配符都是跟 LIKE 一起使用的 2.1 LIKE 2.2 ORDER BY 3函数 3.1数学函数 3.2 聚合函数 3.3 字符串函数 4 GROUP BY 4.1 HAVING 5 别名 6 子查询 …

JavaScript中的解构赋值

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 对象解构赋值⭐ 数组解构赋值⭐ 默认值和剩余元素⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚…

数据湖在爱奇艺数据中台的应用

01 我们眼中的数据湖 作为爱奇艺的数据中台团队&#xff0c;我们的核心任务是管理和服务公司内的大量数据资产。在实施数据治理的过程中&#xff0c;我们不断吸收新的理念&#xff0c;引入尖端的工具&#xff0c;以精细化我们的数据体系管理。“数据湖”作为近年来数据领域广泛…

机器学习之正则化与验证提高模型泛化

文章目录 正则化&#xff08;Regularization&#xff09;&#xff1a;验证&#xff08;Validation&#xff09;&#xff1a; 正则化和验证是机器学习中重要的概念&#xff0c;它们帮助提高模型的性能和泛化能力。让我详细介绍一下这两个概念&#xff1a; 正则化&#xff08;Re…

【完美世界】天仙书院偷食也就算了,竟然还偷院长的孙女,美滋滋

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析完美世界系列。 齐道临从天仙书院劫走石昊&#xff0c;为何天仙书院不仅没去找他麻烦&#xff0c;反而给他一块随意进入渡劫神莲池的令牌&#xff1f;石昊来到上界也是闹出不小的动静&#xff0c;先是在恶魔岛的神碑留名&…

LeetCode 75-02:字符串的最大公因子

前置知识&#xff1a;使用欧几里得算法求出最大公约数 func gcdOfStrings(str1 string, str2 string) string {if str1str2 ! str2str1 {return ""}return str1[:gcd(len(str1), len(str2))] }func gcd(a, b int)int{if b 0{return a}return gcd(b, a%b) }

求组合数(递归版)(杨辉三角形)

description 请编写递归函数&#xff0c;求组合数。 函数原型 double Cmb(int x, int y); 说明&#xff1a;x 和 y 为非负整数&#xff0c;且 x≥y&#xff0c;函数值为组合数 C x y ​ 。 裁判程序 #include <stdio.h> double Cmb(int x, int y); int main() { int m…

使用Python+Flask/Moco框架/Fiddler搭建简单的接口Mock服务

一、Mock测试 1、介绍 mock&#xff1a;就是对于一些难以构造的对象&#xff0c;使用虚拟的技术来实现测试的过程mock测试&#xff1a;在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;可以用一个虚拟的对象来代替的测试方法接口mock测试&#x…

JPA的注解@Field指定为Keyword失败,导致查询不到数据

一、背景 使用 jpa 对es操作&#xff0c;查询条件不生效&#xff0c;需求是批量查询课程编号。说白了&#xff0c;就是一个In集合的查询。在es里&#xff0c;如果是精准匹配是termQuery&#xff0c;比如&#xff1a; queryBuilder.filter(QueryBuilders.termQuery(“schoolId…