语法:
CREATE [OR REPLACE] VIEW [view_name] AS [SELECT_STATEMENT];
eg:
create view good_student_view as
select name,age,score from class where score>=80;
eg:
-- 如果视图是针对多张表创建,不要进行写操作.
create view student_hobby_view as
select class.name,score,hobby,price
from class left join hobby
on class.name = hobby.name;
语法:
show full tables in 数据库名 where table_type like ‘VIEW’;
语法:
drop view [if exists] 视图名;
eg:
alter view good_student_view as
select name,age,score from class where score>=85;
语法:
delimiter 自定义符号
create function 函数名(形参列表) returns 返回类型
begin
函数体 – 若干sql语句,但是不要直接写查询
return val;
end 自定义符号
delimiter ;
其中,delimiter是为了在函数内些语句方便,制定除了;之外的符号作为函数书写结束标志,一般用$$或者//
eg:
delimiter $$
create function st() returns int
begin
return (select score from class order by score desc limit 1);
end $$
delimiter ;
select st();
eg:
delimiter $$
create function queryNameById(uid int)
returns varchar(20)
begin
return (select name from class where id=uid); end $$
delimiter ;
select queryNameById(1);
在函数内部设置 declare [变量名] [变量类型]; 局部变量可以使用set赋值或者使用into关键字。
eg:
-- 获取最高分与最低分之差
create function st2() returns int
begin
declare num_1 int;
declare num_2 int;
set num_1 = (select score from class order by score desc limit 1); -- set方法
select score from class order by score limit 1 into num_2; -- into方法
return num_1 - num_2;
end $$
set @[变量名] = 值;使用时用@[变量名]。
eg:(存储过程)
set @a=1;
create procedure p_inout(inout num int)
begin
select num; --> 1
set num=100;
select num; --> 100
end $$
call p_inout(@a);
(无返回值的函数)
语法:
delimiter 自定义符号
create procedure 存储过程名(形参列表)
begin
存储过程 – sql语句构成存储过程语句集
end 自定义符号
delimiter ;
eg:
delimiter $$
create procedure st() begin
select name,age from class;
select name,score from class order by score desc;
end $$
delimiter ;
call st();
eg:
-- in out inout的对比
create procedure p_in(in num int)
begin
select num; --> 1
set num=100;
select num; --> 100
end $$
call p_in(1);
set @a = 1;
create procedure p_out(out num int)
begin
select num; --> NULL
set num=100;
select num; --> 100
end $$
call p_out(@a);
set @a=1;
create procedure p_inout(inout num int)
begin
select num; --> 1
set num=100;
select num; --> 100
end $$
call p_inout(@a);
语法:
show create {procedure|function} 存储过程或存储函数的名称
语法:
select 属性1,属性2 from mysql.proc where db=‘数据库名’;
语法:
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
确保数据操作过程中的数据完整和使用安全。
过程:
1、开启事务:begin;
2、执行各种sql命令。(适用于写和删)
3、终止任务:
commit; – 提交
rollback; – 回滚到begin之前的状态(只对于数据有效,表和库没用)
事务的四大特性: