mysql

本文详细介绍了MySQL中的视图功能,包括创建、删除、修改和使用视图的语法,以及视图在简化复杂SQL操作和数据安全性方面的作用。此外,还探讨了系统变量、自定义变量的使用,以及存储过程的概念、创建、调用和删除方法。存储过程作为一种代码重用和效率提升的工具,与函数的区别也进行了说明。最后,文章提到了SQL中的流程控制结构,如IF函数、CASE结构和循环结构,用于实现不同的逻辑控制。
摘要由CSDN通过智能技术生成

视图(表)

mysql从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自自定义视图的查询中使用的表,并且是在视图时动态生成的,只保存类sql逻辑,不保存查询结果。

场景:
SQL语句复杂;重复使用的SQL语句 。
好处:
1.重用sql语句。
2.简化复杂的sql操作,不必自动它的查询细节。
3.保护数据,提供安全性。

创建视图

语法:create view 视图名  
	  as  
	  sql语句;(可重复使用的临时表)

删除视图

语法:drop view 视图名(,视图名...);

查看视图

方式一:desc 视图名;
方式二:show create view 视图名;(过程 )

视图的修改

方式一:create or replace view 视图名 as 新sql语句;
方式二:alter view 视图名 as 新sql语句;

视图的使用(封装的视图)

1.插入       2.修改         3.删除(视图加原始表的跟新) 4.查看   例:select *from 视图名 条件;
不允许修改的视图:
1.关键字:分组函数、distinct、group by、having、union或者union all
2.常量视图
3.select中包含子查询
4.join语句
5.from一个不能更新的视图
6.where子句的子查询引用了from子句的表

变量

系统变量: 全局变量;回话变量
自定义变量: 用户变量;局部变量
一、系统变量

说明:由系统提供,属于服务器层面使用的语法;
1.查看所有的系统变量
     show global #系统|【session】 variables;
2.查看满足条件的部分系统变量;
例:	show global #系统|【session】 variables like "%char%";
3.查看指定的某个系统变量的值;
    select  @@global | 【session】.系统变量名;
4.为某个系统变量赋值
      set  global |【session】.系统变量名=值;
或    set  @@global |【session】.系统变量名=值;

注:global  #系统变量 ;   session  #回话变量,如果不写则默认
1.全局变量作用域:服务器每次开启前为所用的全局变量赋初始值,针对于所有的回话(连接)有效,但不能跨重启;
2.回话变量作用域:仅仅针对当前回话(连接)有效;

二、自定义变量

说明:变量是用户自定义的,不是系统给的
使用步骤:声明
赋值
使用(查看、比较、运算)

1.用户变量

作用域:仅仅针对当前回话(连接)有效;
1.声明并初始化:/  方式一 赋值:
			set @用户变量名=值;
或          set @用户变量名:=值;
或          select @用户变量名:=值;
2.方式二赋值: select 字段 into @变量名 from 表;
3.使用(查看):select @用户变量名;

2.局部有效

作用域:仅仅在定义它的begin end 中有效,应用在第一局话
1.声明:declare 变量名 类型【default 值】;
2.赋值
方式一 :
			set @局部变量名=值;
或          set @局部变量名:=值;
或          select @局部变量名:=值;
方式二: select 字段 into @变量名 from 表;
3.使用(查看):select @局部变量名;

存储过程(方法)

含义:一组预先编译好的SQL语句的集合,理解成批处理语句
	1.提高代码的重用性
	2.简化操作
	3.减少的编译次数并减少类和数据库服务的连接次数,提高的效率

创建语法

	create procedure 存储过程名(参数列表)
	begin
				存储过程体(一组合法的sql的语句)
	end
注:1.参数列表:参数模式 参数名 参数类型  
	例:IN stuname varchar(20)
	IN,OUT,INOUT 参数作为参数输入,输出
	2.仅仅只有一句话,begin end 可以被省略
	3.delimited  $   结束标记
	4.设置变量:
			declare 变量名 参数类型 default  ' '; #声明并初始化
			** INTO 变量名  #赋值
			select 变量名;  #使用  

调用

call 存储过程名(实参列表);
out的使用:
		set @输出参数 $         # 可以省略   定义用户变量
		call 存储过程名(输入参数,@输出参数)$       #为两个输出量赋上了值
		select @输出参数 $ 

删除

语法:drop procedure 存储过程名;
注:一次只能删除一个过程

查看

show create procedure 存储过程名;

函数

含义:一组预先编译好的SQL语句的集合,理解成批处理语句
	1.提高代码的重用性
	2.简化操作
	3.减少的编译次数并减少类和数据库服务的连接次数,提高的效率

delimited  $   结束标记
存储过程与函数区别:
             存储过程:可以返回0个返回,也可以有多个返回,适合做批量插入,批量跟新
             函数:有且仅有1个返回,适合做处理数据后返回一个结果 

创建

语法:create function 函数名(参数列表) returns 返回类型
begin
			函数体
end $
注:1.参数列表:参数名 参数列表
		2.肯定会有return语句,如果没有会报错。如果没有写在最后,不报错但不建议
		3.仅有一句话,则可以省略begin end

调用

语法:select    函数名(参数列表)
	declare 变量名 参数类型 default  ' '; #定义局部变量

查看函数

show create function 函数名;

删除

drop function 函数名;

流程控制结构

顺序结构
分支结构

1.if函数

功能:实现简单的分支
语法:if(条件,值1,值2)
位置:可以作为表达式放在任何位置

2.case结构

功能:实现多分支
语法:
case 表达式或字段
when 值1 then 语句1;
when 值2 then 语句2;
...
else 语句n;
end [case]
位置:可以放在任何位置
begin end外,作为表达式结合者其他语句使用
begin end里面,一般作为独立的语句使用

3.if/else

功能:实现多分支
语法:
case
when 条件1 then 语句1;
when 条件2 then 语句2;
...
else 语句n;
end if;
位置:
只能放在begin end中

循环结构
位置:只能放在begin end中
特点:都能实现循环结构
对比:
1.三种循环都可以省略名称,但是如果循环中添加了循环控制语句,则必须添加名称
2.loop 一般用于实现简单的死循环
while 先判断后执行
repeat 先执行后判断,无条件至少执行一次

1.while

语法:
【名称:】while 循环条件 do
		   循环体
	     end while 【名称】;

2.loop

语法:
		【名称:】loop
				循环体
		end loop

3.repeat

语法:
	【语法:】
	【名称:】repeat
			循环体
			until 结束条件
			end repea 【名称】

4.循环控制语句
leave:类似于braeak,用于跳出所在的循环
iterate:类似于continue,用于结束本次循环,提高类效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值