大话数据库视图:这货就是个“照骗“!

本文深入讲解了数据库视图的概念,包括视图的创建、查询、修改和删除等操作,以及如何进行视图的DML操作。同时,文章还提供了创建简单和复杂视图的实例,以及如何检查视图字段是否支持DML操作的方法。
视图:数据库里的"照骗"(虚拟表格)

嘿,朋友!想象一下你有个装满数据的Excel大表格(数据库表)。视图是啥?它就像你给这个表格拍的一张"照骗"!

视图的四大特点(照骗的本质):

  1. 不占内存:它本身不存数据,就像照片不占你手机内存一样
  2. 实时美颜:每次你看视图,它都实时从原表取数据,保证最新鲜
  3. 一键滤镜:把复杂的查询逻辑封装成简单操作,就像美颜APP
  4. 隐私保护:只展示想让人看的部分,敏感数据?打码!

为啥要用这个"照骗"?

  • 懒人福音:不用每次都写又臭又长的SQL
  • 安全第一:敏感字段?藏起来!只给看能看的
  • 逻辑打包:把业务逻辑打包成视图,维护起来so easy
3.1 创建视图:给你的数据拍张"艺术照"

拍照(创建视图)的基本姿势:

CREATE [OR REPLACE] VIEW 视图名称
AS
SELECT 字段1, 字段2, ...
FROM 表名
WHERE 条件;

拍照参数详解(选美比赛规则):

  • OR REPLACE:如果已经有同款照片,直接覆盖(更新定义)
  • FORCE:就算原表不存在,也要强行拍照(视图先创建,表后补)
  • WITH CHECK OPTION:通过视图改数据?只能改照片里能看到的部分
  • WITH READ ONLY:这张照片只能看,不能P图(只读)
1. 简单视图:单表"证件照"

例子:给部门30的员工拍张集体照

-- 先给摄影师(scott用户)发工作证
ALTER USER scott ACCOUNT UNLOCK;
ALTER USER scott IDENTIFIED BY tiger;
GRANT CREATE VIEW TO scott;

-- 开始拍照!
CREATE VIEW emp_view1
AS
SELECT empno, ename, sal
FROM emp 
WHERE deptno = 30;

-- 欣赏作品(就像查普通表一样)
SELECT * FROM emp_view1;

效果:这张"集体照"只显示部门30的员工编号、姓名和工资,其他部门的同事?对不起,没入镜!

2. 复杂视图:多表"婚纱照"或"美颜照"

例子1:带美颜效果的视图(工资上调15%)

CREATE VIEW emp_view2
AS
SELECT empno, ename, sal * 1.15 AS new_sal
FROM emp 
WHERE sal * 1.15 > 2000;

注意:如果给字段做了"美颜"(比如sal*1.15),必须给它起个艺名(这里用了AS new_sal)。

例子2:多表"婚纱照"(员工表和部门表牵手成功)

CREATE VIEW emp_view3
AS
SELECT e.empno, e.ename, e.sal, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno;

这张"婚纱照"把员工表和部门表关联起来,直接显示员工在哪个部门上班,不用再查来查去!

3.2 通过视图操作数据:给"照骗"P图?

视图不仅可以看,还能通过它来增删改原表数据,但注意:不是所有"照骗"都能随便P!

哪些地方能P图?

  • 简单视图(单表无美颜)的所有地方通常都能P
  • 复杂视图中,美颜过的地方不能P(比如上面new_sal,P了会失真)
  • 多表视图中,只能P主表的部分FROM后面第一个表是主角)

怎么知道哪里能P?

SELECT column_name, insertable, updatable, deletable
FROM user_updatable_columns
WHERE table_name = UPPER('emp_view2');

运行后告诉你每个地方能不能P图(增删改)。

通过视图P图(插入数据)的例子:

-- 尝试完整P图(可能失败,因为new_sal是美颜效果,不能直接P)
INSERT INTO emp_view2(empno, ename, job, deptno) 
VALUES(7459, 'Eric', 'Clerk', 20);

-- 只P能P的地方(成功!)
INSERT INTO emp_view2(empno, ename) 
VALUES(7459, 'Eric');

-- 看看原图(原表)是不是真的被P了
SELECT * FROM emp WHERE empno = '7459';

重要提醒(P图须知):

  • 通过视图P图时,没填的地方会变成NULL(空白)
  • 如果原图要求某个地方必须有内容(NOT NULL),而你没填,P图就会失败
3.3 修改和删除视图:重拍 or 删照片

重拍照片(修改视图):直接用CREATE OR REPLACE VIEW重新定义

CREATE OR REPLACE VIEW emp_view1
AS
SELECT empno, ename, sal, hiredate  -- 新增了入职日期,换个角度拍
FROM emp 
WHERE deptno = 30;

删除照片:简单粗暴,一句话

DROP VIEW emp_view1;
总结一下(敲黑板!)
  1. 视图是啥:数据库的"照骗",不存数据,只存拍照姿势(查询逻辑)
  2. 为啥拍:省事、安全、好维护(懒人+强迫症福音)
  3. 怎么拍:用CREATE VIEW,可以单拍、合拍、加美颜
  4. 怎么用:像看真图一样看,部分还能P图(增删改)
  5. 注意事项:美颜过的地方不能P,合拍只能P主角

终极小技巧:当你发现某个复杂查询经常要用时——别犹豫!给它拍张"照骗"(做成视图),以后想看就看,想P就P(如果能P的话)!

最后一句:视图就像朋友圈照片——看着美好,背后可能是一堆复杂的查询逻辑。但谁在乎呢?好用就行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值