尚硅⾕李⽟婷⽼师MySQL课程--视图、变量、存储过程和函数、流程控制结构⼀、视图
1.视图的创建
CREATE VIEW 视图名
AS
查询语句;
例1:
create view myv
as
select avg(salary),job_id
from employees
group by job_id;
例2:创建视图myv1,要求查询电话号码⼀’011’开头的员⼯姓名和⼯资、邮箱
create or replace view myv1
as
select last_name,salary,email
from employees
where phone_number like '011%';
例3:创建视图myv3,要求查询部门的最⾼⼯资⾼于12000的部门信息
create or replace view myv2
as
select max(salary) mx,department_id
from employees
group by department_id
if函数7个条件7个结果having max(salary)>12000;
select d.*,m.mx
from departments d
inner join myv2 m
on d.department_id=m.department_id
>12000;
2. 视图的修改
⽅式⼀:
CREATE OR REPLACE VIEW 视图名
AS
查询语句;
例:
create or replace view myv
as
select avg(salary),job_id
from employees
group by job_id;
⽅式⼆:
ALTER  视图名
AS
查询语句;
例:
alter view myv
as
select avg(salary),job_id
from employees
group by job_id;
3. 视图的删除
DROP VIEW 视图名,视图名;
4. 视图的查看
DESC 视图名;
5. 视图的更新
具备以下特点的视图不允许更新:
1.包含以下关键字:distinct、group up、having、union\union all
2.常量视图
create or replace view myv
as
select 'john' NAME;
3.select中包含⼦查询
4.多表连接
5.from⼀个不能更新的视图
6.where⼦句的⼦查询引⽤了from⼦句中的表
⼆、变量
系统变量:
全局变量
会话变量
⾃定义变量
⽤户变量
局部变量
1.系统变量
ppt模板免费下载 古风素材说明: 变量由系统提供,不是⽤户⾃定义,属于服务器层⾯
会话变量
作⽤域:仅仅针对与当前会话(连接)有效
语法:
说明:全局变量(global)、会话变量(session)。session可省略
1. 查看所有系统变量
show global|【session】 variables;
2. 查看满⾜条件的部分系统变量
show global|【session】 variables like 条件;
3. 查看指定的某个系统变量的值
select @@global|【session】.系统变量名;
4.为某个系统变量赋值
⽅式⼀:
set global|【session】系统变量名 = 值;
⽅式⼆:
set @@global|【session】.系统变量名 = 值;
2.⾃定义变量
说明: 变量是⽤户⾃定义的,不由系统提供
使⽤步骤: 声明、赋值、使⽤(查看、⽐较、运算等)(1)⽤户变量
**作⽤域:**针对与当前会话(连接)有效,同会话变量声明并初始化
set @⽤户变量名=值;
set @⽤户变量名:=值;
select @⽤户变量名=值;
赋值(更新⽤户变量的值)
⽅式⼀:
set @⽤户变量名=值;
set @⽤户变量名:=值;
select @⽤户变量名=值;
⽅式⼆:
select 字段 into ⽤户变量名
from 表;
(2)局部变量
**作⽤域:**仅仅在定义它的begin end中有效
应⽤在begin end中的第⼀句话
声明并初始化
declare 变量名类型;
declare 变量名类型 default 值;
赋值
⽅式⼀:
什么是正则表达式pythonset 局部变量名=值;
正数的补码就是该数的反码set 局部变量名:=值;
select 局部变量名=值;
⽅式⼆:
select 字段 into 局部变量名
from 表;
使⽤
select 局部变量名;
作⽤域定义和使⽤的位置语法⽤户变量当前会话会话中的任何地⽅必须加@,不⽤限定类型局部变量begin end中只能在begin end中,且为第⼀句话⼀般不⽤@,需要限定类型三、存储过程和函数
存储过程和函数:类似于Java中的⽅法
好处:
提⾼代码的重⽤性
简化操作
减少了编译次数并且减少了和数据库服务器的连接次数,提⾼了效率
1.存储过程
含义
⼀组预先编译好的SQL语句的集合,理解成批处理语句mysql查看所有存储过程
分类
⽆返回⽆参
仅仅带in类型,⽆返回有参
仅仅带out类型,有返回⽆参
既带in⼜带out,有返回有参
带inout,有返回有参
注意:in、out、inout都可以在⼀个存储过程中带多个
(1)创建存储过程
语法
create procedure 存储过程名(in|out|inout 参数名参数类型,...)
begin
存储过程体
end
注意
vb代码大全视频1、存储过程的结尾需要设置新的结束标记
delimiter 新的结束标记
⽰例:
delimiter $
CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名参数类型,...)
BEGIN
sql语句1;
sql语句2;
END $
2、存储过程体中可以有多条sql语句,如果仅仅⼀条sql语句,则可以省略begin end
3、参数模式:参数前⾯的符号的意思
in:该参数只能作为输⼊(该参数不能做返回值)
out:该参数只能作为输出(该参数只能做返回值)
inout:既能做输⼊⼜能做输出
(2)调⽤存储过程
call 存储过程名(实参列表)
2.函数
存储过程:可以有0给返回,也可以由多个返回。是和做批量插⼊、批量更新函数:有且仅有1个返回,适合做处理数据后返回⼀个结果
(1)创建
语法
create function 函数名(参数列表) returns 返回类型
begin
函数体
end
注意
1.参数列表 包含两部分:参数名 参数类型
2.函数体:肯定会有return语句,如果没有会报错。return 值
3.函数体中仅有⼀句话,则可以省略begin end
4.使⽤delimiter语句设置结束标记
(2)调⽤
select 函数名(参数列表)
四、流程控制结构
1.分⽀结构
(1)if函数
if(表达式1,表达式2,表达式3)
如果表达式1成⽴,则if函数返回表达式2的值,否则返回表达式3的值
(2)case结构

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。