mysql高级语句2存储过程

CREATE VIEW   视图,可以被当作是虚拟表或存储查询。

视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个架构,它本身并不实际储存数据记录。
临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失。
视图不含有数据,只存储它的定义,它的用途一般可以简化复杂的查询。比如你要对几个表进行连接查询,而且还要进行统计排序等操作,写SQL语句会很麻烦的,用视图将几个表联结起来,然后对这个视图进行查询操作,就和对一个表查询一样,很方便。

试图表就是一个select语句的定义 查看视图表的结果 会随着selcet语句的结果改变而改变
create view 试图表名称 as select语句

案例 用视图表求两个表字段无交集

create view 试图表名称 as select distinct 字段 from 表名 union all select distinct 字段  from 表名2
#先创建试图表  去重显示两个表的字段selcet 字段 from 试图表名称 group by 字段 having count(字段)=1   =1 是无交集  >1是交集
#试图表去重字段 然后显示字段非空值 having 过滤 

修改试图表的原则   两种情况

  1. 如果定义的select语句查询的字段是没有被处理过的源表字段,则可以通过视图表修改源表的数据。
  2. 如果定义的select语句查询的字段被函数或 group by 等处理的字段,则不能直接修改视图表的数据。
     

 CASE :是 SQL 用来做为 IF-THEN-ELSE 之类逻辑的关键字

语法一:

SELECT CASE "字段名"WHEN "要求" THEN "结果1"WHEN "要求" THEN "结果2"...[ELSE "default"]END
FROM "表名";

语法二;

SELECT CASEWHEN "公式1" THEN "结果1"WHEN "公式2" THEN "结果1"...[ELSE "default"] END#ELSE 子句则并不是必须的。

无值'' 和 空值NULL 的区别?

  1. 无值'' 的长度为 0,不占用空间;可以通过 字段名 = '' 或 字段名 != '' 来过滤字段的值是否为无值的行;指定字段使用函数 count(字段) 不会忽略 无值 的行
  2. 空值NULL 的长度为 NULL,占用空间;可以通过 "字段名 is null" 或 "字段名 is not null" 来过滤字段的值是否为NULL的行;指定字段使用函数 count(字段) 会忽略 NULL 的行
     

如果过滤重复数据?

1.删除全部重复数据,一条不留

creat view 试图表名称 as select 字段 from 表名 group by 字段  having  count(字段)>1
#group by 汇总分组 再通过聚合函数查出字段2出现的次数  大于1是有重复的delete 字段 form 表名 where 字段 in (select name form 视图表)   
#子查询

2.删除重复数据,仅保留一条

create view 视图表名称 as select min(id) from 表名 gruop by store_name
用name字段分组显示出每个id 字段最小的  生成视图表delete from where id not in  (select id form 视图表名称 )

MySQL 导出导入 CSV文件

vim /etc/my.cnf[mysqld]
secure_file_priv=""   #允许我们导入导出文件systemctl restart mysqld#创建目录
mkdir /mysql-output  
#给权限
chmod 777 /mysql-outputMySQL 导出表数据到 CSV文件
select * into outfile '/mysql-output/XXX.csv' fields terminated by ',' enclosed by '"'  lines terminated by '\n' from 表名;MySQL 导入 CSV文件
load data infile '/mysql-output/XXX.csv' into table 表名 fields terminated by ',' enclosed by '"'  lines terminated by '\n';fields terminated by ','  设置 字段分隔符
lines terminated by '\n   设置 换行符
enclosed by '"      设置字符值 每个字段的值用双引号括起来

正则表达式  

语法:

SELECT "字段" FROM "表名" WHERE "字段" REGEXP {模式};

存储过程(数据库脚本,就是一组为了完成特定功能的SQL语句集合)

创建和使用存储过程:

  1. use切换库,并修改SQL语句结束符      delimiter $$
  2. 创建存储过程,并定义包含的SQL语句   create procedure 存储过程名()
  3. begin  SQL语句序列;
  4. end$$
  5. 把SQL语句结束符改回分号             delimiter ;
  6. 调用存储过程                        call 存储过程名;
     

查看存储过程  删除存储过程

show create procedure 存储过程名;   #查看存储过程
drop procedure  存储过程名称;     #删除存储过程

存储过程的参数使用

  1. in 参数名 数据类型         #传入参数,调用时参数值可以是纯量值,也可以变量
  2. out 参数名 数据类型       #传出参数,调用时参数值只能是变量
  3. inout 参数名 数据类型    #传入传出参数,调用时参数值只能是变量
DELIMITER $$				
CREATE PROCEDURE Proc1(IN inname CHAR(16))		
-> BEGIN					
-> SELECT * FROM store_info WHERE Store_Name = inname;
-> END $$					
DELIMITER ;					CALL Proc1('Boston');

存储过程的控制语句

1.条件语句if-then-else ···· end if 
delimiter $$
create procedure proc6(in myname varchar(20), in mysex varchar(10), in myage smallint)
begin
if myage>=18
then 
insert into test02 (name, sex, age, team) values (myname, mysex, myage, '成年组');
else
insert into test02 (name, sex, age, team) values (myname, mysex, myage, '少年组');
end if;
end $$
delimiter ;

2.循环语句while ···· end while
delimiter $$
create procedure proc7()
begin
declare i int;     #declare 创建变量
set i=1;
while i<=50000
do
insert into test03 values (i, concat('student', i));
set i=i+1;
end while;
end $$
delimiter ;

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

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

相关文章

利用竞争智慧与大型语言模型:假新闻检测的新突破

Explainable Fake News Detection With Large Language Model via Defense Among Competing Wisdom 论文地址: Explainable Fake News Detection with Large Language Model via Defense Among Competing Wisdom | Proceedings of the ACM on Web Conference 2024https://dl.…

WebClient vs RestTemplate

WebClient vs RestTemplate&#xff1a;优缺点总结 RestTemplate 优点&#xff1a; 简单易用&#xff1a;RestTemplate 是同步的&#xff0c;使用方式简单&#xff0c;适合初学者。广泛使用&#xff1a;在很多Spring项目中已经广泛使用&#xff0c;有丰富的文档和社区支持。…

LeetCode 100342. 最小元素和最大元素的最小平均值

更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。 组队打卡&#xff0c;更多解法等你一起来参与哦&#xff01; LeetCode 100342. 最小元素和最大元素的最小平均值&#xff0c;难度简单。 排序 解题思路&#xff1a;排序后取每次取数组首尾节点&#xff0c;求…

Docker常用命令与实战示例

docker 1. 安装2. 常用命令3. 存储4. 网络5. redis主从复制示例6. wordpress示例7. DockerFile8. 一键安装超多中间件&#xff08;compose&#xff09; 1. 安装 以centOS系统为例 # 移除旧版本docker sudo yum remove docker \docker-client \docker-client-latest \docker-c…

CTO的职责是什么?

看《架构思维》作者是这样讲的&#xff1a; CTO 到底是做什么的&#xff1f; 我当下的答案是&#xff1a;“CTO 就是一个从技术视角出发&#xff0c;为公司或者所在的部门做正确决策的 CEO。”怎么理解这句话呢&#xff1f;作为一个 CTO&#xff0c;其长期目标和决策优先级与…

论文笔记:Spatial-Temporal Interval Aware Sequential POI Recommendation

ICDE 2022 1 intro 1.1 背景 空间&#xff08;Spatial&#xff09;和时间&#xff08;Temporal&#xff09;信息是序列 POI 推荐中两个重要且相辅相成的因素。 空间因素&#xff08;如地理距离间隔&#xff09;可以在用户的历史轨迹呈现空间分簇现象时&#xff0c;细粒度刻画…

使用stat、fstat和lseek获取文件长度

使用stat、fstat和lseek获取文件长度 在Linux系统中&#xff0c;有多种方法可以获取文件的长度。本文将介绍三种常用的方法&#xff1a;使用stat、fstat和lseek函数。 1. 使用stat函数 stat函数用于获取文件的状态信息。它的原型如下&#xff1a; int stat(const char *pat…

ES插件elasticsearch-analysis-pinyin和analysis-icu的区别

插件elasticsearch-analysis-pinyin和analysis-icu的区别:Elasticsearch中的两个插件elasticsearch-analysis-pinyin和analysis-icu都有助于文本分析和处理&#xff0c;但它们的功能和应用场景有所不同。以下是这两个插件的主要区别和用途&#xff1a; 1、elasticsearch-analy…

2000年 - 2022年 Fama-French三因子模型数据+代码

Fama-French三因子模型是由著名经济学家尤金法玛&#xff08;Eugene Fama&#xff09;和肯尼斯法兰奇&#xff08;Kenneth French&#xff09;提出的&#xff0c;旨在改进资本资产定价模型&#xff08;CAPM&#xff09;&#xff0c;更全面地解释资产收益率的变化。该模型认为&a…

【动态规划】简单多状态dp问题

一、经验总结 在分析dp问题的状态表示时&#xff0c;发现当前阶段的状态可以继续细分为多个状态&#xff0c;且多个状态之间可以通过某种方式进行转换&#xff0c;这就是动态规划的多状态问题。 多状态问题的关键有以下几点&#xff1a; 找出dp问题的多个状态表示&#xff1a…

YOLOv8主干网络使用FasterNet替换

1 提出问题 减少GFLOPs就一定能提高模型的运行速度吗?一般人认为这个是理由应当的。但是在FasterNet文章中,作者告诉我们:不一定! 延迟与浮点数运算的关系如下: Latency=FLOPsFLOPS FLOPs:模型浮点数运算 FLOPS:每秒浮点数运算 这个你们在实验中可以得到验证,MobileN…

开源与在线 M3U8 Downloader 项目介绍及使用指南

M3U8 是一种用于播放列表格式的文件类型&#xff0c;广泛应用于流媒体服务中&#xff0c;特别是 HLS&#xff08;HTTP Live Streaming&#xff09;协议。它包含了一系列的 TS&#xff08;Transport Stream&#xff09;视频片段地址&#xff0c;使得视频能够分段加载&#xff0c…

【深度学习驱动流体力学】湍流仿真到深度学习湍流预测

目录 一、湍流项目结构二、三个OpenFOAM湍流算例1. motorBike背景和目的文件结构和关键文件使用和应用湍流仿真深度学习湍流预测深度学习湍流预测的挑战和应用结合湍流仿真与深度学习2. pitzDaily背景和目的文件结构和关键文件使用和应用3. pitzDailyMapped背景和目的文件结构和…

说说 golang 中的接口和反射

1、接口 1.1 类型 Golang 中的接口是一组方法的签名&#xff0c;是实现多态和反射的基础。 type 接口名 interface {method1(参数列表) 返回值列表method2(参数列表) 返回值列表 }不同于 Java 语言&#xff0c;使用 implements 关键字显示的实现接口。Golang 接口的实现都是…

【服务器06】之【如何不开外网连接GitHub】

登录GitHub官网 GitHub: Let’s build from here GitHub 注册账号 登录账号 输入一个自定义名字&#xff0c;点击创建存储库就可以了 首先 如何在不开外网的条件下使用GitHub 第一步 下载安装Steam(Watt TooklKit) 区分一下如何查看哪个官网&#xff08;没有百度广告就是…

实时导航 C语言

实现实时导航的一种方法是使用C语言和一些外部库&#xff0c;如SDL&#xff08;Simple DirectMedia Layer&#xff09;来处理图形界面和输入&#xff0c;以及OpenGL进行图形渲染。以下是一个简单的例子&#xff0c;展示了如何使用C语言和SDL库来创建一个简单的实时导航应用。 …

Package libcudnn8 is not installed.的问题

ubantu20.04&#xff0c;cuda11.2安装cuda&#xff0c; cudann . 安装CUDNN时&#xff0c;如果选择 Deb安装方法&#xff0c; 有三个安装包要安装&#xff0c;必须先安装runtime版本&#xff0c;再安装developer版本&#xff0c;不然就会出现以下问题&#xff1a; dpkg: depe…

如何在Android中实现多线程与线程池?

目录 一、Android介绍二、什么是多线程三、什么是线程池四、如何在Android中实现多线程与线程池 一、Android介绍 Android是一种基于Linux内核的开源操作系统&#xff0c;由Google公司领导开发。它最初于2007年发布&#xff0c;旨在为移动设备提供一种统一、可扩展的操作系统。…

UltraEditUEStudio软件安装包下载及安装教程

​根据软件大数据显示提供预定义的或使用者创建的编辑“环境”&#xff0c;能记住 UltraEdit 的所有可停靠窗口、工具栏等的状态。实际上我们可以这样讲HTML 工具栏&#xff0c;对常用的 HTML 功能作了预配置;文件加密/解密;多字节和集成的 IME。根据使用者情况表明Git Editor&…

【Linux基础IO】磁盘的结构、文件系统与inode、软硬链接

目录 磁盘的物理存储结构 磁盘的逻辑结构 文件系统与inode 硬链接 软链接 关于目录文件 磁盘的物理存储结构 磁盘是计算机中唯一的机械硬件设备&#xff0c;由磁头&#xff0c;盘面&#xff0c;磁道&#xff0c;扇区这四部分对磁盘上的数据进行增删查改操作。盘面上存储的…