MySQL基础(3):进阶用法

一、视图

正式环境中有时需要只提供原始表的部分信息以保护数据安全性,就可以用视图,相当于虚拟表

#1、创建:
    CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
#2、使用:把视图当虚拟表用
#3、修改:
    create or replace view 视图名 as 查询语句;
    alter view 视图名 as 查询语句;
#4、删除:
    drop view 视图名1,视图名2...;
#5、查看:
    show create view 视图名;

二、变量

1、系统变量:由系统提供,属于服务器层面

  (1)全局变量:针对所有会话有效,但不能跨重启

  (2)会话变量:针对一次会话

查看:show global/【session】 variables like '%char%' ;
设置:set global /【session】 系统变量名 = 值;

2、自定义变量:

1)用户变量:针对当前会话有效,在begin end里或外都可以使用,声明时要初始化,要加@符号,不用限定类型

#1声明
SET @用户变量名 = 值;
SET @用户变量名 := 值;
SELECT @用户变量名 := 值;

#2赋值
SELECT 字段 INTO @变量名 FROM 表;

#3使用
SELECT @用户变量名;

2局部变量:仅在begin end中有效,要在begin end中的第一句话可不初始化,一般不加@,要指定类型

#1声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;

#2赋值
方式一:SET 局部变量名 = 值;
       SET 局部变量名 := 值;
       SELECT @局部变量名 := 值;
方式二:SELECT 字段 INTO 局部变量名 FROM 表;

#3使用
SELECT 局部变量名;

三、存储过程

减少了编译次数也减少了和数据库服务器连接的次数

1、创建:

  参数模式:IN、OUT、INOUT

  DELIMITER定义结束标记

DELIMITER $
CREATE PROCEDURE test(IN girlName VARCHAR(20),OUT boyname VARCHAR(20))
BEGIN
       执行SQL;
END $

2、调用:

CALL test('name1',@bname)$
SELECT @bname$

3、删除:drop procedure 存储过程名;

4、查看:show create procedure 存储过程名;

四、函数

函数和存储过程类似,但是必须有且仅有1个返回

1、创建:一定要有return,但放的位置没有规定

2、调用:select 函数名(参数列表)

   

3、查看:show create function 函数名;

4、删除:drop function 函数名;

五、流程控制结构

1、if函数:表达式1成立,返回表达式2的值,否则返回表达式3的值

  if(表达式1,表达式2,表达式3

2、if结构

  

3、case:如果用于语句,end 后面加case;,用于表达式不用加case

   

4、循环:只能在begin end中使用

1while:
    【标签名:】while 循环条件 do
         循环体;
     end while【标签名】;

(2)loop:需要搭配leave跳出,否则相当于死循环
    【标签名:】loop
         循环体;
     end loop【标签名】;

(3)repeat:类似do while
    【标签名:】repeat
         循环体;
     until 结束循环的条件
     end repeat【标签名】; 

iterate类似continue,leave类似break,这两个需要和标签名搭配

   

猜你喜欢

转载自www.cnblogs.com/seekingheart/p/9113600.html
今日推荐