数据库视图函数存储过程

视图 函数和存储过程

1.视图是数据库中的虚拟表。视图本身没有数据。
2.视图的作用:
                          如果某个结果频繁出现,即使这个查询结果作为子查询使用,视图能够简化用户的操作。

一.创建视图

create [or replace]view view_name as select * from cls;
例如:mysql> create view c1 as select * from cls;
			  Query OK, 0 rows affected (0.06 sec)

or replace 可选,如果已有view_name,则覆盖视图。

二.删除视图

drop view [if exists] 视图名;
mysql> create view c1 as select * from cls;
Query OK, 0 rows affected (0.06 sec)

if exists :计算没有指定的视图也不报错。

三.修改视图

参考创建视图,将create关键字改为alter

alter view c1 as select name,age,score from class_1;
mysql> alter view dept1 as select dname from dept;
Query OK, 0 rows affected (0.06 sec)

视图作用

作用

  1. 是对数据的一种重构,不影响原数据表的使用。
  2. 简化高频复杂操作的过程,就像一种对复杂操作的封装。
  3. 提高安全性,可以给不同用户提供不同的视图
  4. 让数据更加清晰
    缺点
  5. 视图的性能相对较差,从数据库视图查询数据可能会很慢
  6. 表依赖关系处理麻烦,根据数据库的基础表创建一个视图。每当更改视图或者原表时,另一个也会修改。

函数和存储过程

1.函数创建 delimiter 自定义符号 -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略 create function 函数名(形参列表) returns 返回类型 -- 注意是retruns begin 函数体 -- 函数语句集,set @a 定义变量 return val end 自定义符号 delimiter ;

mysql> delimiter ;
mysql> delimiter //
mysql> create function st()
    -> returns int val
    -> begin
    -> return (select * from dept);
    -> end//
mysql>delimiter ;

2.存储过程
创建:

mysql> delimiter $$
mysql> create procedure st()
    -> begin
    -> select name,age from class_1;
    -> select name,score from class_1 order by score desc;
    -> end $$
Query OK, 0 rows affected (0.08 sec)
调用:call st();

存储过程三个参数的区别

IN 类型参数可以接收变量也可以接收常量,传入的参数在存储过程内部使用即可,但是在存储过程内部的修改无法传递到外部。
OUT 类型参数只能接收一个变量,接收的变量不能够在存储过程内部使用(内部为
NULL),但是可以在存储过程内对这个变量进行修改。因为定义的变量是全局的,所以外部可以获取这个修改后的值。
INOUT类型参数同样只能接收一个变量,但是这个变量可以在存储过程内部使用。在存储过程内部的修改也会传递到外部。
设置变量方法: set @[变量名] = 值; 表示这是一个用户变量,使用时用@[变量名]。 在函数内部设置declare [变量名] [变量类型]为局部变量,局部变量可以使用set赋值或者着使用into关键字。

mysql> set @a=10;
Query OK, 0 rows affected (0.00 sec)
参数类型out 
delimiter //
create procedure p_out ( OUT num int )
begin
select num;
set num=100;
select num;
end //
delimiter ;
set @num=10;
call p_out(@num)

你可能感兴趣的:(pysql,mysql)