sql 视图初探

本文介绍了视图在数据库中的概念,强调其优点如简化查询、隐藏复杂性和权限管理,同时讨论了视图的性能挑战和修改限制。涵盖了创建视图的基本语法、不同类型视图(如常量视图和子查询视图),并提醒了视图主要用于查询而非更新的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、视图

视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。

1、视图的特点

优点:

(1)为用户集中数据,简化用户的数据查询和处理。有时用户所需要的数据分散在多个表中,定义视图可将它们集中在一起,从而方便用户的数据查询和处理。
(2)屏蔽数据库的复杂性。用户不必了解复杂的数据库中的表结构,并且数据库表的更改也不影响用户对数据库的使用。
(3)简化用户权限的管理。只需授予用户使用视图的权限,而不必指定用户只能使用表的特定列,也增加了安全性。
(4)便于数据共享。各用户不必都定义和存储自己所需的数据,可共享数据库的数据,这样同样的数据只需存储一次。
(5)可以重新组织数据以便输出到其他应用程序中。
缺点:
(1)性能差  
sql server必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,sql server也要把它变成一个复杂的结合体,需要花费一定的时间。
( 2 )修改限制  
当用户试图修改试图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的试图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

2、创建视图

CREATE view v_s as(select * from student);

结果:
在这里插入图片描述

3、视图中数据的增删改查

3.1查询和正常表一样
3.2增删改的条件
详细参考该博客
注意:视图一般用于查询的,而不是更新的,所以具备以下特点的视图都不允许更新(插入、修改、删除)
1、包含以下关键字

分组函数 \ GROUP BY\ HAVING \UNION \UNION ALL
2、join

CREATE OR REPLACE VIEW myv4
AS
SELECT last_name, department_name
FROM employees e
JOIN departments d
ON e.department_id = d.department_id;

3、常量视图

CREATE OR REPLACE VIEW myv2
AS
SELECT 'john' NAME;
SELECT *
FROM myv2;

4、where后的子查询用到了from中的表

CREATE OR REPLACE VIEW myv6
AS
SELECT last_name, email, salary
FROM employees
WHERE employee_id IN (
	SELECT manager_id
	FROM employees	
	WHERE manager_id IS NOT NULL
);

5、用到了不可更新的视图

CREATE OR REPLACE VIEW myv5
AS
SELECT * FROM myv3;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值