MySQL查询(基础到高级)

一、单表查询:

 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(..) 使用示例:

   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.连接查询分类:


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


 2.内连接inner jion:

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

 3. 左连接:

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

 4. 右连接:

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

5. 联集union: 

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. 存储过程的控制语句:

条件语句:
if 条件表达式 thenSQL语句序列1
elseSQL语句序列2
end if;循环语句:
while 条件表达式
doSQL语句序列set 条件迭代表达式;
end while;
如果输入值大于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.mzph.cn/news/98266.shtml

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

相关文章

Cuckoo沙箱各Ubuntu版本安装及使用

1.沙箱简介 1.1 沙箱 沙箱是一个虚拟系统程序&#xff0c;允许你在沙箱环境中运行浏览器或其他程序&#xff0c;因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境&#xff0c;在其内部运行的程序并不能对硬盘产生永久性的影响。 在网络安全中&#xff…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(七)放大镜实战

个人实战文档 本次实战是对自己整个api阶段的总结。 参考效果如下地址&#xff1a; http://erabbit.itheima.net/#/product/3995139 本次实战主要分为以下几个模块。 顶部导航模块 需求&#xff1a; 顶部导航开始不显示等页面滑到主导航栏&#xff0c;这个新顶部导航栏滑…

【C++设计模式之策略模式】分析及示例

描述 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许在运行时根据不同的情况选择算法的行为。该模式将算法的定义封装成一组易于切换和替换的类&#xff0c;使得算法可以独立于其使用者进行变化。 原理 策略模式通过将具体的算法…

WIN10 NPM的安装

引言&#xff1a; 什么是node.js? javaScript是一门脚本语言&#xff0c;通常被用来编写、执行本地源代码。脚本语言需要一个解析器才能运行&#xff0c;HTML文件中的JavaScript代码由浏览器解析执行。而自行执行JavaScript代码则需要Node.js解析器才能运行。 每个解析器都…

【Jmeter】性能测试脚本开发——性能测试环境准备、Jmeter脚本编写和执行

文章目录 一、常用的Jmeter元件二、性能测试环境准备三、编写Jmeter脚本四、执行测试脚本 一、常用的Jmeter元件 取样器-HTTP请求 作用&#xff1a;发送HTTP请求配置原件-HTTP请求默认值 作用&#xff1a;设置HTTP请求的默认参数配置原件-用户定义的变量 作用&#xff1a;定义…

84.柱状图中最大的矩形

class Solution { public:int largestRectangleArea(vector<int>& heights) {//法一&#xff1a;枚举宽&#xff0c;超时if(0){int nheights.size();int area0;for(int left0;left<n;left){int minHINT_MAX;for(int rightleft;right<n;right){minHmin(minH,hei…

ARM day5

三盏灯流水 .text .global _start _start: 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<4)STR R1,[R0] 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<5)STR R1,[R0] 2.LDR R0,0X50006000LDR R1,[R0]BIC R1,R1,#(0X3<<20)ORR R1,R1,#(0X1<<…

文件扫描模块

文章目录 前言文件扫描模块设计初级扫描方案一实现单线程扫描整合扫描步骤 设计初级扫描方案二周期性扫描 总结 前言 我们这个模块考虑的是数据库里面的内容从哪里获取。 获取完成后&#xff0c;这时候,我们就需要把目录里面文件/子文件都获取出来,并存入数据库。 文件扫描模…

强化学习------DQN算法

简介 DQN&#xff0c;即深度Q网络&#xff08;Deep Q-network&#xff09;&#xff0c;是指基于深度学习的Q-Learing算法。Q-Learing算法维护一个Q-table&#xff0c;使用表格存储每个状态s下采取动作a获得的奖励&#xff0c;即状态-价值函数Q(s,a)&#xff0c;这种算法存在很…

怎么用蜂邮EDM和Outlook批量发送邮件带附件

蜂邮EDM和Outlook批量发送邮件带附件的流程&#xff1f;有哪些邮件批量发送邮件附件的方法&#xff1f; 在现代社会中&#xff0c;电子邮件是一种广泛应用的沟通工具&#xff0c;而批量发送邮件带附件则是许多商业和个人用户的常见需求。本文将介绍如何使用蜂邮EDM和Outlook这…

高通camx开源部分简介

camera整体框架 ISP Pipeline diagram Simple Model Camx and chi_cdk 整体框架 CtsVerifier, Camra Formats Topology of Camera Formats. Topology (USECASE: UsecaseVideo) Nodes List Links between nodes Pipeline PreviewVideo Buffer manager Create Destro…

攻防世界-fakebook

打开题目链接 尝试弱口令登录 失败 随便注册 点击admin后跳转到下面这个页面 显示的是注册用户信息&#xff0c;观察url发现no1&#xff0c;猜测存在注入 用单引号测试一下&#xff0c;报错&#xff0c;确实存在SQL注入 使用order by 判断字段数 ?no1 order by 5 5的时候…

2.2.3 vim操作合集

1 vim VIM 是 Linux 系统上一款文本编辑器,学习 VIM 最好的文档,应该是阅读学习 VIM 的帮助文档,可以使用本地的帮助文件(vim--->:help),或者使用在线帮助文档。同时针对vim的使用,相应的相书籍也很多,如下 2 vim操作模式 命令模式:默认模式,该模式下可以移动光标…

【Java】微服务——Nacos配置管理(统一配置管理热更新配置共享Nacos集群搭建)

目录 1.统一配置管理1.1.在nacos中添加配置文件1.2.从微服务拉取配置1.3总结 2.配置热更新2.1.方式一2.2.方式二2.3总结 3.配置共享1&#xff09;添加一个环境共享配置2&#xff09;在user-service中读取共享配置3&#xff09;运行两个UserApplication&#xff0c;使用不同的pr…

【云备份项目】【Linux】:环境搭建(g++、json库、bundle库、httplib库)

文章目录 1. g 升级到 7.3 版本2. 安装 jsoncpp 库3. 下载 bundle 数据压缩库4. 下载 httplib 库从 Win 传输文件到 Linux解压缩 1. g 升级到 7.3 版本 &#x1f517;链接跳转 2. 安装 jsoncpp 库 &#x1f517;链接跳转 3. 下载 bundle 数据压缩库 安装 git 工具 sudo yum…

C++ 字符串

在本文中&#xff0c;您将学习如何在C中处理字符串。您将学习声明它们&#xff0c;对其进行初始化以及将它们用于各种输入/输出操作。 字符串是字符的集合。C 编程语言中通常使用两种类型的字符串&#xff1a; 作为字符串类对象的字符串&#xff08;标准C 库字符串类&#xff0…

小米、华为、iPhone、OPPO、vivo如何在手机让几张图拼成一张?

现在很多手机自带的相册APP已经有这个拼图功能了。 华为手机的拼图 打开图库&#xff0c;选定需要拼图的几张图片后&#xff0c;点击底部的【创作】&#xff0c;然后选择【拼图】就可以将多张图片按照自己想要的位置&#xff0c;组合在一起。 OPPO手机的拼图 打开相册&#…

Nginx配置文件的通用语法介绍

要是参考《Ubuntu 20.04使用源码安装nginx 1.14.0》安装nginx的话&#xff0c;nginx配置文件在/nginx/conf目录里边&#xff0c;/nginx/conf里边的配置文件结构如下图所示&#xff1a; nginx.conf是主配置文件&#xff0c;它是一个ascii文本文件。配置文件由指令&#xff08;…

【数据结构】二叉树--顺序结构及实现 (堆)

目录 一 二叉树的顺序结构 二 堆的概念及结构 三 堆的实现 1 包含所有接口 (Heap.h) 2 初始化,销毁和交换&#xff08;Heap.c) 3 向上调整&#xff08;Heap.c) 4 插入&#xff08;Heap.c) ​5 向下调整&#xff08;Heap.c) 6 删除&#xff08;Heap.c) ​7 打印&#…

数据统计--图形报表--ApacheEcharts技术 --苍穹外卖day10

Apache Echarts 营业额统计 重点:已完成订单金额要排除其他状态的金额 根据时间选择区间 设计vo用于后端向前端传输数据,dto用于后端接收前端发送的数据 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO…