当前位置: 首页 > news >正文

达梦数据库DM8视图入门——简化查询、权限控制与数据安全

前言

在日常数据库使用中,我们经常遇到这样的需求:只想让用户看到部分数据、简化复杂的多表查询、或者对敏感信息进行脱敏处理。视图(View)就是解决这些问题的利器。本文从零开始,介绍达梦数据库中视图的创建、使用和维护。
如需了解更多达梦数据库的相关说明与文档,欢迎访问达梦社区https://eco.dameng.com


一、视图核心概念

  1. 什么是视图?
    视图是基于SQL查询结果的虚拟表,不存储实际数据,只保存查询定义。可以像表一样查询,但数据实时来自底层表。

  2. 视图的核心优势

优势说明
简化复杂查询将多表关联封装为简单查询
数据安全只暴露必要字段,隐藏敏感数据
逻辑独立底层表结构变化时,视图可保持不变
权限控制通过视图限制用户可见的数据范围
  1. 视图 vs 表
特性视图
存储数据❌ 不存储✅ 存储实际数据
占用空间极小(仅保存SQL定义)较大
数据实时性实时查询底层表直接读取
可执行DML简单视图可以✅ 可以
创建复杂度基于SQL查询需定义列和约束

二、创建基础视图

  1. 准备测试数据
--创建员工表(包含敏感信息) CREATE TABLEstaff(staff_id INT PRIMARY KEY,staff_nameVARCHAR(50),id_cardVARCHAR(18),--敏感:身份证号 phoneVARCHAR(11),--敏感:手机号 salaryDECIMAL(10,2),--敏感:薪资 dept_id INT,hire_date DATE,statusVARCHAR(10)--在职/离职);--插入测试数据 INSERT INTO staffVALUES(1,'张三','110101199001011234','13800138000',25000.00,1,'2020-03-15','在职');INSERT INTO staffVALUES(2,'李四','110101199002021234','13900139000',18000.00,2,'2021-06-20','在职');INSERT INTO staffVALUES(3,'王五','110101199003031234','13700137000',32000.00,1,'2019-01-10','在职');INSERT INTO staffVALUES(4,'赵六','110101199004041234','13600136000',15000.00,3,'2022-09-01','离职');COMMIT;
  1. 创建简单视图(隐藏敏感字段)
--创建公开视图:隐藏身份证、手机号、薪资 CREATE OR REPLACE VIEW vw_staff_public AS SELECT staff_id,staff_name,dept_id,hire_date,status FROM staff;--查询视图 SELECT*FROM vw_staff_public;

三、简单视图的增删改

--创建简单视图(单表,无函数) CREATE OR REPLACE VIEW vw_staff_simple AS SELECT staff_id,staff_name,dept_id,status FROM staff;--通过视图插入数据 INSERT INTOvw_staff_simple(staff_id,staff_name,dept_id,status)VALUES(5,'孙七',2,'在职');--通过视图更新 UPDATE vw_staff_simple SET status='离职'WHERE staff_id=5;--通过视图删除 DELETE FROM vw_staff_simple WHERE staff_id=5;--验证底层表 SELECT*FROM staff WHERE staff_id=5;

四、视图权限管理

  1. 创建只读用户
--创建简单视图(单表,无函数)--创建普通用户 CREATE USER hr_reader IDENTIFIED BY"Hr@123";--只授予视图查询权限(不能访问底层表) GRANT SELECT ON vw_staff_public TO hr_reader;GRANT SELECT ON vw_staff_detail TO hr_reader;--hr_reader只能看到视图中的字段,看不到敏感信息--./disql hr_reader/Hr@123@localhost:5236--SELECT*FROM SYSDBA.vw_staff_public;--✅ 可以--SELECT*FROM SYSDBA.staff;--❌ 无权限
  1. 查看视图定义
--查看当前用户的视图 SELECT VIEW_NAME FROM USER_VIEWS;--查看视图详细定义 SELECT TEXT FROM USER_VIEWS WHERE VIEW_NAME='VW_STAFF_PUBLIC';

五、视图权限管理

--修改视图(直接重建) CREATE OR REPLACE VIEW vw_staff_public AS SELECT staff_id,staff_name,dept_id,hire_date,status,DATEDIFF(YEAR,hire_date,CURRENT_DATE)AS work_years--新增字段 FROM staff;--删除视图 DROP VIEW IF EXISTS vw_staff_public;--编译失效视图 ALTER VIEW vw_staff_detail COMPILE;

总结

视图是数据库安全架构的重要组成部分,合理使用能大幅提升开发效率和数据安全性。

http://www.zskr.cn/news/1417430.html

相关文章:

  • 2026 赤峰车衣门店电话|首选这家!口碑评分 4.9 分✨ - 资讯快报
  • 2026兰州卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 2026国产外夹式超声波流量计十大品牌权威测评:技术实力与市场表现深度解析 - 水质仪表品牌排行榜
  • Windows和Ubuntu共享键鼠失败?三步搞定Synergy/Barrier的SSL连接报错
  • 上海办公室装修公司怎么挑 避开这几家误区帮你省心 - 资讯快报
  • AI Agent实测:Agent Store现成应用如何重塑企业自动化?
  • Figma汉化教程|Windows FigmaEX汉化版功能介绍、下载安装及使用技巧全攻略
  • 广东智惠渔业设备制造有限公司的联系方式、联系电话、联系地址、怎么联系 - 寻茫精选
  • CANoe自动化测试进阶:巧用writeToLog和writeToLogEx给你的日志文件打上“书签”
  • 新项目该怎么入手?我用Claude code 接入小米mimo复盘黑马点评,看他的思路是什么。
  • 2026日喀则卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 2026年电力设备厂家推荐榜单:变压器/电力变压器、低压柜/高压柜、箱变、并网柜与光伏低压变实力品牌全解析 - 品牌企业推荐师(官方)
  • 通过环境变量为Hermes Agent配置Taotoken自定义模型源
  • 2026清远卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 2026揭阳卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 新手教程使用Python和Taotoken密钥调用ChatCompletions接口
  • 支付接入后的MiniMax:商业化闭环观察
  • 用 Agent 重现《黑镜》剧情
  • 2026长沙卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • R+VIC模型融合实践技术应用及未来气候变化模型预测
  • 告别傻等!用CAPL的TestWaitForSignal系列函数,精准控制你的自动化测试流程
  • NHSE:动物森友会存档编辑器的3大核心价值与完整实践指南
  • 苏州工业园区黄金回收实录:星港街这家临街老店到底靠不靠谱? - 百福黄金回收
  • 从Vivado 2018迁移到2022:一个FPGA工程师踩过的那些‘坑’与填坑指南
  • 33.搜索旋转排序数组力扣
  • 2026南宁卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • PCB板厂提供的叠层资料怎么看?
  • AI基建“算力饥渴”:Token成争夺焦点,四大势力涌入市场
  • 深入理解Java核心:从对象比较到内存机制
  • 2026年东莞磁环供应厂家实力评估:电源磁环、数据线磁环、充电桩磁环、工控磁环行业格局分析 - 品牌企业推荐师(官方)