1、视图
1、创建视图
create view(字段别名...) as 选择语句 例: create view(ln,fn) as select last_name,first_name from student;
2、可以通过视图对底层表进行增删改查操作。
2、存储程序
1、复合语句和语句分隔符
delimiter 分隔符名 create procedure 函数名() begin 函数体 end;
delimiter #结束分隔符
call 函数名
例:
delemiter $
create procedure show_times()
begin
select CURRENT_TIMESTAMP as 'Local Time';
select UTC_TIMESTAMP as 'UTC Time';
end$
delemiter
call show_times(); #调用
2、存储函数和存储过程
create function 函数名(参数列表)
returns type stmt create procedure 存储过程名(参数列表)
stmt
函数例子:
delemiter $ create function test(emp_salary INT) returns INT READS SQL DATA BEGIN RETURN(select count(*) from emp where salary > 5000 and salary=emp_salary); END$ delemiter;
函数只能返回一个值,而要返回多个值可以编写多个函数多次调用,或者使用存储过程out。
存储过程例子:
delemiter $ CREATE PROCEDURE show_born_in_year(p_year INT) BEGIN SELECT first_name,last_name,birth,death from president where YEAR(birth)=p_year END$ delemiter;
过程不能用在表达式里,只能使用call语句调用.
存储过程的三种参数类型:in、out、inout,默认为in:
3、触发器
触发器是与特定表相关联的存储过程,其定义会在执行表的delete、insert、update语句时被自动激活。触发器属于表
语法:
create trigger trigger_name #触发器名 [before|after] #触发时机 [insert|delete|update] #激活触发器的语句 ON table_name #关联表 FOR EACH ROW trigger_stmt #内容
例子:
create table t(percent INT, dt DATETIME); delimiter $ create trigger bi_t BEFORE INSERT ON t FOR EACH ROW BEGIN IF NEW.percent < 0 then SET NEW.percent=0; ELSEIF NEW.percent > 100 then SET NEW.percent=100; END IF; end$ NEW.dt=CURRENT_TIMESTAMP; end$ delimiter;