23视图 ——MySQL

-- 视图:
/*
一、含义:虚拟表,视图和普通表的用法一样。视图是通过表动态生成的数据
					视图中没有保存具体的数据,只保存了SQL逻辑 

					换一句话说,视图中其实是保存的SQL语句,语句的查询结果(表)作为视图的数据映像。
					我们可以通过查询视图,更方便的查询到我们所需要的的内容


二、创建视图:
					use 库名;
					create view 视图名
					AS
					复杂的SQL语句;


三、修改视图
				方法:1(存在则修改,不存在则创建)
							create or replace 视图名
							AS
							修改后的SQL语句;

				方法2:(纯修改)
							alter view 视图名
							AS
							修改后的SQL语句;



四、删除视图
				drop view 视图名1,视图名2,...;



五、查看视图
				①:desc 视图名;   (和查看表的结构的语法一致)
				②:show create view 视图名;  (可以查看创建视图的语句、编码)



六、视图的更新(是对视图中查询的结果进行更新,不是更新视图的SQL语句)
		注:视图基本上是不能更新的
				1.插入: insert into 视图名 values(值) where 条件;
				2.更新: update 视图名 set 值 where	条件;
				3.删除: delete from 视图名 where 条件;

	【具备以下特点的视图,是不允许更新的】
		①包含关键字:分组函数、distinct、group by、having、union/union all
		②常量视图
			create or replace view a
			select 'huxuehao' name;

		③select中包含子查询
			create or replace view a
			select (select name from table where id=1);

		④sql语句中含有join(或SQL92语法中的连接)

		⑤from 后面是一个不能更新的视图

		⑥where 子句的子查询引用了from子句中的表

*/

-- 例如:
#  创建一个视图:员工工作名称中含有's'的员工的id,NAME
CREATE VIEW CityName_contain_s
AS
SELECT employee_id,first_name,last_name
FROM employees
INNER JOIN jobs
on employees.job_id=jobs.job_id
WHERE job_title LIKE 's%';

# 通过视图查询我们想要的内容:
-- 查询:员工工作名称中含有's',且id在150-170之间的员工的first_name
SELECT first_name
FROM CityName_contain_s
WHERE employee_id between 150 and 170;
-- 通过view来查询,要方便的多

-- 查看视图
DESC CityName_contain_s;
show create view CityName_contain_s;

-- 删除视图
drop VIEW  CityName_contain_s;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值