MySQL数据库视图

视图的创建和使用

视图:基于原始表得到的一个虚拟的查询结果集
视图和表的区别:

  1. 表中的数据占用物理空间,视图不占用。
  2. 表中的数据是实际存在的,视图的数据是执行查询时动态生成的

视图的好处:
1、提高查询语句的重用性,调用简单
2、安全
3、独立

视图的应用场景:
1、多个地方用到相同的查询结果
2、查询结果使用了比较复杂的sql语句
一、创建视图:
create [or replace] view 视图名
as
select 语句;

特点:
1、视图的使用和表的使用是一致的,都支持增删改查,而且语法一样
2、如果视图的查询语句中包含一些特殊关键字,则不支持增删改
分组函数、distinct、group by、having、union或者union all
常量视图
Select中包含子查询
join
from一个不能更新的视图
where子句的子查询引用了from子句中的表

二、修改视图
方式1.如果视图存在,则修改;如果视图不存在,则创建

CREATE OR REPLACE VIEW 视图名
	AS
	新的查询语句

方式2.修改视图

ALTER VIEW 视图名 AS 
		新的查询语句

三、删除视图
可以同时删除多个视图。

drop view 视图1,视图2;

一、创建视图

CREATE VIEW myv1
AS
SELECT * FROM beauty
WHERE id>3;

二、使用视图

1.查询

SELECT * FROM myv1;
SELECT * FROM beauty;

2.插入

INSERT INTO myv1 VALUES(14,'罗大磊','男','1998-1-1','111',NULL,NULL);
INSERT INTO myv1 VALUES(2,'马小宁','男','1998-1-1','111',NULL,NULL);

3.更新

UPDATE myv1 SET NAME='宋茜' WHERE id=6;

4 .删除

DELETE FROM myv1 WHERE id=14;

具备以下特点的视图不允许更新
/*包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
常量视图
Select中包含子查询
join
from一个不能更新的视图
where子句的子查询引用了from子句中的表
*/

① 关键字

CREATE VIEW myv2
AS
SELECT COUNT(*),boyfriend_id
FROM beauty
GROUP BY boyfriend_id;

SELECT * FROM myv2;
UPDATE myv2 SET boyfriend_id = 10 WHERE boyfriend_id=1;

②常量视图

DROP VIEW myv3;
CREATE VIEW myv3
AS
SELECT 'china' c;

SELECT * FROM myv3;
UPDATE myv3 SET c='Jap';

③select中包含子查询

CREATE VIEW myv4
AS
SELECT (
SELECT MAX(boyfriend_id)
FROM beauty
)  a;
SELECT * FROM myv4;

UPDATE myv4 SET a=100;

④join update好用 但是insert 不好用

CREATE VIEW myv5
AS
SELECT NAME,boyname
FROM beauty b
JOIN boys bo ON b.boyfriend_id=bo.id;

SELECT * FROM myv5;

UPDATE myv5 SET NAME='安娜' WHERE NAME='热巴';

INSERT INTO myv5 VALUES('刘晓婷','刘婷婷');

⑤from一个不能更新的视图

CREATE VIEW myv6
AS
SELECT * FROM myv5;

SELECT * FROM myv6;

INSERT INTO myv6 VALUES('刘晓婷','刘婷婷');

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

CREATE VIEW myv7
AS
SELECT last_name
FROM employees
WHERE manager_id IN(
	SELECT employee_id
	FROM employees
	WHERE  last_name LIKE '%a%'

)

SELECT * FROM myv7;
UPDATE myv7 SET last_name='hhhh' WHERE last_name='Hunold';

视图的修改和删除

修改视图
方式一:

CREATE OR REPLACE VIEW myv1
AS
SELECT * FROM beauty;
SELECT * FROM myv1;

方式二:

ALTER VIEW myv1
AS
SELECT id,NAME
FROM beauty;

四、删除视图

#DROP VIEW 视图名1,视图名2,...
DROP VIEW myv1,myv2,myv3,myv4,myv5;

五、查看视图结构

DESC myv1;
SHOW CREATE VIEW myv1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值