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.rhkb.cn/news/140415.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack:详解代码分离以及插件SplitChunksPlugin的使用

文章目录 背景入口起点分离基本使用防重复 SplitChunksPlugin插件分离背景基本使用splitChunks.chunkssplitChunks.minChunkssplitChunks.minSizesplitChunks.maxSizesplitChunks.namesplitChunks.cacheGroupssplitChunks.cacheGroups.{cacheGroup}.prioritysplitChunks.cacheG…

【力扣每日一题】2023.9.24 LRU缓存

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这又是一道程序设计类的题目&#xff0c;要我们实现LRU缓存的get和put操作。 简单说一下LRU缓存是什么&#xff0c;在我看来就是实用主义…

Nginx环境搭建、负载均衡测试

Nginx环境搭建、负载均衡测试 系统环境&#xff1a; win10&#xff0c;IDEA2020&#xff0c;JDK8 一、nginx环境搭建 1.ngxin下载 Nginx官网下载&#xff1a; http://nginx.org/en/download.html Nginx有三种版本&#xff0c;分别是Mainline version&#xff08;开发版&…

智慧公厕,公共厕所数字化促进智慧城市管理的成效

随着科技的不断进步和城市化的快速发展&#xff0c;城市管理也面临着新的挑战和机遇。而智慧公厕作为基层配套设施&#xff0c;通过数字化提升城市管理的效能&#xff0c;成为了现代智慧城市建设的重要一环。本文以智慧公厕领先厂家广州中期科技有限公司&#xff0c;大量项目案…

安装Linux虚拟机——以ubuntukylin-16.04.7-desktop-amd64.iso为例

正文 安装VMware 重要提示 安装软件之前&#xff0c;请先退出360、电脑管家等安全类软件&#xff0c;这类软件会阻止我们安装的软件进行注册表注册&#xff0c;很可能导致安装失败。确认物理机&#xff08;也就是你自己使用的电脑&#xff09;的防火墙已经关闭。 下载 打开…

深入学习 Redis - 分布式锁底层实现原理,以及实际应用

目录 一、Redis 分布式锁 1.1、什么是分布式锁 1.2、分布式锁的基础实现 1.2.1、引入场景 1.2.2、基础实现思想 1.2.3、引入 setnx 1.3、引入过期时间 1.4、引入校验 id 1.5、引入 lua 脚本 1.5.1、引入 lua 脚本的原因 1.5.2、lua 脚本介绍 1.6、过期时间续约问题&…

Linux系统上使用SQLite

1. 安装SQLite 在Linux上安装SQLite非常简单。可以使用包管理器&#xff08;如apt、yum&#xff09;直接从官方软件源安装SQLite。例如&#xff0c;在Ubuntu上使用以下命令安装SQLite&#xff1a; sudo apt-get install sqlite32. 打开或创建数据库 要打开或创建一个SQLite数…

2023华为杯数学建模D题第三问-碳排放路径优化(能源消费结构调整的多目标优化模型构建详细过程+模型假设(可复制))

1.碳排放约束下&#xff08;人为干预按时碳达峰与碳中和的基准情景&#xff09;能源消费结构多目标优化模型构建 1.1基本假设 本文的模型设计主要基于以下几个基本假设&#xff1a; &#xff08;1&#xff09;能源消费结构调整的根本驱动要素&#xff0c;是对投资耗费的最小化…

基于JAVA+SpringBoot+Vue+协同过滤算法+爬虫的前后端分离的租房系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着城市化进程的加快…

代码随想录|647. 回文子串,516.最长回文子序列

647. 回文子串 1.dp含义 dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0c;如果是,则dp[i][j]为true&#xff0c;否则为false。 2.dp递推公式 整体上是两种&#xff0c;就是s[i]与s[j]相等&#xff0c;s[i]与…

AI AIgents时代 - (四.) HuggingGPT MetaGPT

&#x1f7e2; HuggingGPT HuggingGPT是一个多模型调用的 Agent 框架&#xff0c;利用 ChatGPT 作为任务规划器&#xff0c;根据每个模型的描述来选择 HuggingFace 平台上可用的模型&#xff0c;最后根据模型的执行结果生成总结性的响应。 这个项目目前已在 Github 上开源&am…

Mybatis学习笔记7 参数处理专题

Mybatis学习笔记6 使用时的一些小技巧_biubiubiu0706的博客-CSDN博客 1.单个简单类型参数 2.Map参数 3.实体类参数 4.多参数 5.Param注解(命名参数) 6.Param源码分析 建表 插入点数据 新建模块 pom.xml <?xml version"1.0" encoding"UTF-8"?&…

数据结构(java)--队列1

一、我们还是依旧引入一个小例子&#xff08;银行排队&#xff09;&#xff1a; 需要取号排队&#xff0c;服务完下一个 二、队列介绍 1&#xff09;队列是一个有序列表&#xff0c;可以用数组或是链表来实现 2&#xff09;遵循先入先出的原则。即&#xff1a;先存入队列的数…

肖sir__项目实战讲解__004

项目实战讲解 一、项目的类型 金融类&#xff1a; 保险(健康险理财险)、证券、基金(股票型基金、混合型基金、指数型基金、债券型基金、 天天基金网&#xff08;ETF基金、货币型基金、量化基金)、银行、贷款、信用卡、外汇、二元期权、期货原油、blockchain、 数字货币、黄金白…

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

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

三维重建_纹理重建与表面细化

目录 前言&#xff1a;为什么要重建纹理&#xff1f; 1. 纹理图像的自动创建 1.1 基础知识 1.2 算法流程 1.2.1 视角选择 1.2.2 纹理坐标的计算 1.2.3 全局颜色调整 1.2.4 泊松图像编辑 1.2.5 OBJ文件 1.3 结果示例 2. 网格细化优化 2.1 基础知识与数学模型 2.2 优…

TLS/SSL(十) session缓存、ticket 票据、TLS 1.3的0-RTT

一 TLS优化手段 TLS 为了提升握手速度而提出优化手段,主要是减少TLS握手中RTT消耗的时间关于session cache和session ticket,nginx关于ssl握手的地方都有影子 [指令] https面经 ① session 缓存 resume: 重用,复用 案例&#xff1a; 第二次访问www.baidu.com 说明&#x…

解决域控制器的传感器配置问题

gpu加速计划 下载东西有时会报没有apt-utils&#xff0c;所以最好先给它下了&#xff1a; sudo apt-get install apt-utils验证&#xff1a; python #输入库 import torch #查看版本 print(torch.__version__) #查看gpu是否可用 torch.cuda.is_available() #返回设备gpu个数…

解决typescript报错=》不能将类型“undefined”分配给类型“boolean”

报错如下&#xff1a; 然后看看isSearch的类型定义&#xff1a; isSearch的定义是可选属性&#xff0c;但是TypeScript 中将一个参数标记为可选时&#xff0c;它的默认值将是 undefined。可选参数表示你可以选择性地提供该参数&#xff0c;如果不提供&#xff0c;那么它将默认为…

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农