四、视图
1、介绍及基本语法
视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来定义视图的查询中使用的表,并且是在使用视图时动态生成的。
通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建试图的时候,主要的工作就落在创建这条SQL查询语句上。
- 创建
#创建视图
create or replace view stu_v_1 as select id,name from student where id <= 10;
- 查询
#查询视图(与表操作相同)
show create view stu_v_1;
select * from stu_v_1;
- 修改
#修改视图
create or replace view stu_v_1 as select id,name,no from student where id <= 10;
alter view stu_v_1 as select id,name from student where id <= 10;
- 删除
#修改视图
drop view if exists stu_v_1;
2、检查选项
- 视图检查选项(cascaded)
注:对视图进行操作时,MySQL不会校验数据是否符合where条件,需要添加(with cascaded check option)语句,同时会对编辑的语句相关的语句也附加cascaded属性,在后续添加数据时,会对所有依赖的视图语句where条件进行校验,全部满足才能添加成功。
- 检查选项(local)
注:MySQL只会对定义了with local check option的语句的where条件进行判定,否则不会对数据需要插入的语句的where条件进行判定。
3、更新及作用
4、案例
1、create view tb_user_view as select id,name,profession,age,gender,
status,createtime from tb_user;
select * from tb_user_view;
2、cteate view tb_stu_course_view select s.name student_name, s.no student_no,
c.name course_name from student s, student_course sc, course c where s.id =
sc.studentid and sc.courseid = c.id;
select * from tb_stu_course_view;
五、存储过程
1、介绍
2、特点
封装、复用
可以接收参数,也可以返回数据
减少网络交互,效率提升
3、基本语法
- 创建
#创建
create procedure p1()
begin
select count(*) from student;
end;
- 调用
#调用
call p1();
- 查看
#查看
select * from information_schema.ROUTINES where ROUTINE_SCHEMA = 'itcast';
show create procedure p1;
- 删除
#删除
drop procedure if exists p1;
注意:在命令行中,执行创建存储过程的SQL时,需要通过关键词delimiter指定SQL语句的结束符。
#指定结束符为$$
delimiter $$
4、变量
- 系统变量
系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。
#查看系统变量
show session variables;查询所有系统变量
show session variables like 'auto%';查询与auto有关的系统变量
show global variables like 'auto%';查询与auto有关的全局变量
select @@autocommit;查询具体的系统变量
select @@global.autocommit;查看全局的具体变量
#设置系统变量
set session autocommit = 1;
insert into course(id,name) VALUES (5,'Oracle');
注意:如果没有SESSION/GLOBAL,默认是SESSION,会话变量。
MySQL服务器重新启动之后,所设置的全局参数会失效,要想不失效,可以在etc/my.cnf中配置。