当前位置: 移动技术网 > IT编程>开发语言>Java > MySQL与SQL语言基础学习(四)

MySQL与SQL语言基础学习(四)

2020年07月30日  | 移动技术网IT编程  | 我要评论
三 其他部分视图本身是一个虚拟的表,其中的数据来源于数据库中真实存在的表,通过执行时动态生成。并额米有真是保存数据,只是一些SQL语句的集合,可以理解为java中的方法。(应用场景:在多个地方使用到相同的查询时且SQL语句逻辑比较复杂时)对视图结构和逻辑的更改://创建视图create view 视图名 as 查询语句create view myView1 as select avg(salary) , department_idfrom employee egroup by depart

三 其他部分

视图

本身是一个虚拟的表,其中的数据来源于数据库中真实存在的表,通过执行时动态生成。并额米有真是保存数据,只是一些SQL语句的集合,可以理解为java中的方法。(应用场景:在多个地方使用到相同的查询时且SQL语句逻辑比较复杂时)
对视图结构和逻辑的更改:

//创建视图
create view 视图名 as 查询语句
create view myView1 as 
select avg(salary) , department_id
from employee e
group by department_id
having department_id > 100
order by avg(salary);

//使用视图
select * from myView1;//此时视图作为一个虚拟的表使用,其中的数据来自于真实存在的表

//修改视图逻辑
create or replace view myView1 as ...;//方式一
alter view myView1 as ...;//方式二

//查看视图
desc 视图名
show create 视图名

//删除视图
drop view 视图1, 视图2,....

对视图中数据的更新(一般情况下不允许视图对数据进行更新):

//插入数据
insert into 视图名 values()
insert into 视图名 set 字段 =...

//修改数据
update 视图名 set 字段 =... where 筛选条件

//删除数据
delete from 视图名 where 筛选条件

注意,视图一般是用来查询的,不适用于更新数据,因此不建议使用视图来对真实存在的表中数据进行更新

变量

MySQL中的变量:
系统变量:全局变量和会话变量
自定义变量:用户变量和局部变量

  1. 系统变量:由系统自动提供,属于服务器层面
//查看系统变量,如果没有显式声明global还是session,则默认是session
showglobal | session】 variables like '' 

//查看指定的系统变量的值,如果没有显式声明global还是session,则默认是session
show @@【global | session.变量名

//为系统变量赋值
setglobal|session 】 变量名=; //如果没有显式声明global还是session,则默认是session
set @@global.变量名=;
set @@变量名=值;
  1. 自定义变量
    由用户自己定义的变量,不由系统自动提供
    ①用户变量:作用与当前会话,可以作用于任何地方
//声明并初始化
set @变量名 =;
set @变量名 :=;
select @变量名 :=;

//更新变量的值
select 字段 into @变量名 from 表名

//查看用户变量
select @变量名

②局部变量:仅仅只能作用域begin和end中的变量

//声明局部变量
declare 变量名 类型 【default 值】;

//初始化局部变量
declare 变量名 类型 值;

//赋值或更新
set 变量名 =;
set 变量名 :=;
select @变量名 :=;
select 字段 into 变量名 from 表名

//查看局部变量
select 局部变量名

注意在使用时要区分局部变量和用户变量,在定义和使用时注意@的去留。

存储过程和函数

存储过程和函数类似于java中的方法

存储过程

是一组预先编译好的SQL语句集合,也可以理解为批处理语句

//创建存储过程
delimiter $//表示以$作为结束标记
create procedure 存储过程名(参数模式, 参数名 ,参数类型)
begin
    方法体
end $

delimiter $
create procedure myp(inout a int , inout b int)
begin 
    a = a * 10 ;
    b = b * 10 ;
end $

参数模式:IN,OUT,INOUT
存储过程体的每一条sql语句都需要分号结尾

//调用存储过程
set @m = 15$
set @n = 20$
call myp (m , n)$
select @m , @n $

//删除存储过程
drop procedure 存储过程名

//查看存储过程的结构信息
show create procedure 存储过程名

注意,存储过程逻辑不可修改,需要在删除后重新创建

函数

函数时封装的一组SQL语句,与存储过程相似,但是不同的是函数必须有返回值,且只能有一个返回值。因此函数适用于处理数据后返回一个结果,而存储过程适用于批量插入和批量更新

//创建函数
create function 函数名 (参数名 参数类型, ...) returns 返回类型
begin
    函数体
    //注意函数体中必须要有return语句,建议放在最后
end

//调用函数——执行语句并显示返回值
select 函数名 (实参列表)

//查看函数结构
show create function 函数名

//删除函数
drop function 函数名

流程控制结构

分支

if结构:实现简单的双分支

if (条件 ,1 ,2);
select if (0 > 1 , 500 , 1000);

case结构:实现多分支。
当case结构作为表达式出现时,可以在任何地方使用,但当做语句出现时,只能在begin和end中使用

//语法1——类似于switch结构
case 表达式或字段
when1 then 语句1; 
when2 then 语句2;
...
else 语句n;
endcase;

//语法2——类似于多重if
case 
when 条件1 then 语句1;
when 条件2 then 语句2..
else 语句n;
end [case];

if结构:实现多重分支,只能放在begin end中

if 条件1 then 语句1;
elseif 条件2 then 语句2;
...
else 语句n;
end if;
循环结构

循环结构只能够放在begin和end中使用
循环结构分为:while,loop,repeat
loop 一般用于实现简单的死循环
while 先判断后执行
repeat 先执行后判断,无条件至少执行一次

//while循环 类似java中while
标签:while 循环条件 do
        循环体
      end while 标签;

//loop循环 死循环,类似while(1)
标签:loop
        循环体
      end loop 标签;

//repeat循环,类似do-while
标签:repeat
        循环体
      until 结束条件
      end repeat 标签;

本文地址:https://blog.csdn.net/WOD_MAAYA/article/details/107646911

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网