当前位置: 首页 > 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.jsqmd.com/news/906124/

相关文章:

  • 2026 年石家庄 UPS 不间断电源供应商哪家好?主流品牌授权服务商推荐 - 小艾信息发布
  • Linux wget 命令详解:从基础到高级下载技巧
  • INP>300ms 直接掉排名:5 月后 Core Web Vitals 成硬门槛
  • 东南亚开发者紧急预警:Gemini API v1.5.3起强制启用语言检测白名单,未注册老接口将于2024年Q3停用(附6国语言注册迁移checklist)
  • 2026国产外夹式超声波流量计十大品牌权威测评:技术实力与市场表现深度解析 - 水质仪表品牌排行榜
  • 200 SMART G2无线通讯,用一次就回不去了
  • Windows和Ubuntu共享键鼠失败?三步搞定Synergy/Barrier的SSL连接报错
  • 2026年企业若想在激烈的市场竞争中脱颖而出推荐上海广告公司 - 资讯快报
  • 上海办公室装修公司怎么挑 避开这几家误区帮你省心 - 资讯快报
  • 为什么50A是电流检测方案的重要分界点?
  • 【车载 AOSP 16 蓝牙(bluedroid)服务】【qcom 平台双蓝牙】【10.UI点击播放,耳机如何出声 2】
  • 【独家首发】Gemini留存率提升黄金公式:R = f(首次价值感知×行为触发密度×负反馈拦截率)
  • 2026 深圳 UPS 电源供应商哪家靠谱?主流品牌授权合作渠道全解析 - 小艾信息发布
  • AI Agent实测:Agent Store现成应用如何重塑企业自动化?
  • 雅思小白择校避坑干货|拒绝无效报课,选对机构3个月高效出分 - 资讯快报
  • 2026年全自动装箱机厂家推荐榜单:装箱一体机/机器人装箱机/装箱码垛一体机,全自动装箱生产线与开装封一体机源头实力品牌精选 - 品牌企业推荐师(官方)
  • 从0到1:APP广告变现的“极速启动”指南
  • 阿姆智创ARM-3576A工控核心板,协作机械臂智慧中枢
  • CANoe自动化测试进阶:巧用writeToLog和writeToLogEx给你的日志文件打上“书签”
  • 新项目该怎么入手?我用Claude code 接入小米mimo复盘黑马点评,看他的思路是什么。
  • 2026西安卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 学习c语言第24天 循环语句的应用
  • 2026年上海办公室装修公司多角度解析 - 资讯快报
  • 聊聊华为“韬定律”:穿越旧秩序的冷眼,重写新规则的标尺
  • Figma汉化教程|Windows FigmaEX汉化版功能介绍、下载安装及使用技巧全攻略
  • 广东智惠渔业设备制造有限公司的联系方式、联系电话、联系地址、怎么联系 - 寻茫精选
  • 告别Windows!在Ubuntu 22.04上搞定NI-VISA驱动,让你的USB示波器跑起来
  • 基于Arduino与加速度计的手势控制机器人设计与实现
  • 通过环境变量为Hermes Agent配置Taotoken自定义模型源
  • Path of Building PoE2 3大核心功能深度解析:天赋树系统、物品管理与交易集成