mysql高级语句2存储过程

news2025/1/18 1:57:44

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 CASE
  WHEN "公式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-output

MySQL 导出表数据到 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.coloradmin.cn/o/1853318.html

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

相关文章

计算机网络 静态路由及动态路由RIP

一、理论知识 1.静态路由 静态路由是由网络管理员手动配置在路由器上的固定路由路径。其优点是简单和对网络拓扑变化不敏感&#xff0c;缺点是维护复杂、易出错&#xff0c;且无法自动适应网络变化。 2.动态路由协议RIP RIP是一种基于距离向量的动态路由协议。它使用跳数作…

Unity Meta Quest 开发:关闭 MR 应用的安全边界

社区链接&#xff1a; SpatialXR社区&#xff1a;完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 &#x1f4d5;教程说明 这期教程我将介绍如何在应用中关闭 Quest 系统的安全边界。 视频讲解&#xff1a; https://www.bilibili.com/video/BV1Gm42157Zi 在 Unity…

示例:推荐一个应用Adorner做的表单对话框

一、目的&#xff1a;开发过程中经常会修改和查看一个Model的数据&#xff0c;一般情况下会自定义一个控件或Window去显示Model数据&#xff0c;但这种数据如果比较多会增加很多开发工作&#xff0c;本文介绍一种通用的方式&#xff0c;应用表达Form控件去简化处理&#xff0c;…

如何在Qt Designer中管理QSplitter

问题描述 当按下按钮时&#xff0c;我希望弹出一个对话框&#xff0c;用户可以在其中选择内容并最终按下 ‘Ok’ 按钮。我想在这个对话框中放置一个 QSplitter&#xff0c;左侧面板将显示树状结构&#xff0c;右侧将显示其他内容。如何正确实现这一点&#xff1f; 从 Qt 的示…

AI智能时代:ChatGPT如何在金融市场发挥策略分析与预测能力?

文章目录 一、ChatGPT在金融策略制定中的深度应用客户需求分析与定制化策略市场动态跟踪与策略调整策略分析与优化 二、ChatGPT在算法交易中的深度应用自动交易策略制定交易执行与监控风险管理 三、未来展望《智能量化&#xff1a;ChatGPT在金融策略与算法交易中的实践》亮点内…

说说 SSL 的错误认识和不足之处

最近明月在学习折腾 LNMP 期间无意中建了一个 Typecho 的博客小站&#xff0c;近一周的折腾下来&#xff0c;收获真的不少&#xff0c;致使兴趣也越来越浓了&#xff0c;在升级 LNMP 的时候捎带手的给这个 Typecho 博客也启用了 SSL。并且开启了 memcached 和 OPcache 优化加速…

Android面试题之动画+事件处理篇

1、Android 中的动画有哪几类 帧动画、补间动画、属性动画 2、动画能组合在一起使用么&#xff1f; 可以将动画组合在一起使用AnimatorSet&#xff0c; AnimatorSet.play() 播放当前动画的同时可以 .with() &#xff1a;将现有动画和传入的动画同时执行 .after() &#xff1a…

神经网络与深度学习 - 神经网络基础

1.2 神经网络基础 学习目标 知道逻辑回归的算法计算输出、损失函数知道导数的计算图知道逻辑回归的梯度下降算法知道多样本的向量计算 应用 应用完成向量化运算应用完成一个单神经元神经网络的结构 1.2.1 Logistic回归 逻辑回归是一个主要用于二分分类的算法。给定一个特…

Altera不同系列的型号命名规则

Altera芯片型号&#xff1a;10AX07H4F34I3SG 20nm工艺 资源&#xff1a; 大数据 云计算 人工智能 图像处理 MSEL

OS复习笔记ch12-1

文件系统 概述 文件是大多数应用程序的核心要素&#xff0c;文件系统是操作系统对用户来说最重要的部分之一。 本章的主要内容见下图&#xff1a; 文件&#xff0c;大家耳熟能详的就是的docx、pdf、jpg、MP4等各种后缀文件&#xff0c;根据任务需要文件又分成了文本、图片、…

c++ 中如何往 string 字符串类型里插入浮点数

谢谢&#xff0c;在看王老师课程时&#xff0c;有如此用法&#xff0c;单独拿出来记录一下 (2) 这是为什么呢&#xff1f; 其实 cout << 3.33 ; 这样的代码是可以直接编译通过。 cout 就是 ostream 类型的对象。此类对象可以保存任何类型的数据。 STL 库为我们写好了大量…

Linux 五种IO模型

注&#xff1a;还有一种信号驱动IO&#xff0c;使用较少暂不讨论&#xff1b; 一&#xff0c;区分阻塞、非阻塞和同步、异步 看了很多文章对这两组概念解释和对比&#xff0c;说的太复杂了&#xff0c;其实没必要&#xff0c;两句话就能说清楚。 首先&#xff0c;对于读数据rec…

黑马苍穹外卖6 清理redis缓存+Spring Cache+购物车的增删改查

缓存菜品 后端服务都去查询数据库&#xff0c;对数据库访问压力增大。 解决方式&#xff1a;使用redis来缓存菜品&#xff0c;用内存比磁盘性能更高。 key :dish_分类id String key “dish_” categoryId; RestController("userDishController") RequestMapping…

如何配置taro

文章目录 step1. 全局安装wepacksetp2. 使用npm安装tarostep3. 项目初始化 使用taro时需要在本地配置好nodejs环境&#xff0c;关于如何配置nodejs可参考我的这篇博文 如何配置nodejs环境 step1. 全局安装wepack 使用指令npm install webpack -g即可 安装完成后可看到有wepa…

使用Vue+Antv-X6实现一个输送线可视化编辑器(支持拖拽、自定义连线、自定义节点等)

最近公司有这样的业务&#xff0c;要实现一个类似流程图的编辑器&#xff0c;可以拖拉拽之类的&#xff0c;网上寻找了一番&#xff0c;最终决定使用Antv-X6这个图形引擎&#xff0c;非常强大&#xff0c;文档多看几遍也就能上手使用了。感觉还不错就写个使用心得期望能帮助到同…

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

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

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

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

主流中间件--Redis

NOSQL 什么是NOSQL NoSQL(NoSQL Not Only SQL )&#xff0c;意即“不仅仅是SQL”&#xff0c;它泛指非关系型的数据库。 关系型数据库&#xff1a;以关系(由行和列组成的二维表)模型建模的数据库。简单理解&#xff1a;有表的就是关系型数据库。 NOSQL分类 Redis 什么是Redi…

L02_并发编程知识图谱

这些知识点你都掌握了吗&#xff1f;大家可以对着问题看下自己掌握程度如何&#xff1f;对于没掌握的知识点&#xff0c;大家自行网上搜索&#xff0c;都会有对应答案&#xff0c;本文不做知识点详细说明&#xff0c;只做简要文字或图示引导。 并发理论 并发编程Bug源头 为了…

反射机制详解

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;Java从入门到精通 ✨特色专栏&#xff…