MySQL数据库进阶应用(2)—视图特性与用户管理

发布时间:2026/10/17 2:39:44

MySQL数据库进阶应用(2)—视图特性与用户管理 二、视图特性2.1 概述视图是一个虚拟表其内容由查询定义。同真实的表一样视图包含一系列带有名称的列和行数据。1创建视图创建视图的语法create view 视图名 as select语句;以下案例基于EMP表和DEPT表创建一个包含员工姓名和部门名称的视图create view v_ename_dname as select ename, dname from EMP, DEPT where EMP.deptnoDEPT.deptno; select * from v_ename_dname order by dname;查询结果按部门名称排序可以看到ACCOUNTING部门有CLARK、KING、MILLERRESEARCH部门有SMITH、JONES、SCOTT、ADAMS、FORDSALES部门有ALLEN、WARD、MARTIN、BLAKE、TURNER、JAMES。2视图与基表修改视图中的数据会对基表数据产生影响select emp.ename,dept.dname,dept.deptno from emp,dept where emp.deptnodept.deptno order by dname; update v_ename_dname set enameTEST where enameCLARK; select * from EMP where enameCLARK; -- 查不到 select * from EMP where enameTEST; -- 可以查到反过来修改基表的数据也会对视图产生影响update EMP set deptno10 where enameJAMES; select * from v_ename_dname where enameJAMES; -- 视图中JAMES对应的dname变为RESEARCH3删除视图删除视图的语法较为简单drop view 视图名;2.2 规则和限制注意以下规则和限制与表一样视图必须唯一命名不能出现同名视图或表名创建视图数目无限制但需要考虑复杂查询创建为视图之后的性能影响视图不能添加索引也不能有关联的触发器或默认值视图可以提高安全性但用户必须具有足够的访问权限order by可以用在视图中但如果从该视图检索数据的select中也含有order by那么该视图中的order by将被覆盖视图可以和表一起使用2.3 实战练习可以尝试针对actor表创建视图actor_name_view只包含first_name和last_name两列并对这两列重新命名为first_name和last_name。三、用户管理3.1 概述如果数据库只能使用root用户存在较大的安全隐患。在实际应用中不同的用户往往只需要操作特定的数据库或表。如下图所示张三只能操纵mytest这个库李四只能操纵msg这个库。因此MySQL提供了用户管理机制可以创建不同的用户并分配相应的权限实现最小权限原则。3.2 用户信息MySQL中的用户都存储在系统数据库mysql的user表中。通过以下命令查看用户信息user表中主要字段的含义如下host表示这个用户可以从哪个主机登陆user用户名authentication_string用户密码通过password函数加密后的值*_priv用户拥有的各种权限字段可以通过 desc user 初步查看表结构。3.3 创建与删除用户创建用户的语法create user 用户名登陆主机/ip identified by 密码;案例create user whblocalhost identified by 12345678; select user,host,authentication_string from user; -- 可以看到新增的whb用户此时便可以使用新账号密码进行登陆。需要注意的是MySQL本身的认证等级可能较高一些简单的密码无法设置会报错提示密码不满足当前策略要求。此外不建议轻易添加一个可以从任意地方登陆的用户。删除用户的语法drop user 用户名主机名;删除时需要指定完整的用户名和主机名。如果只给用户名默认主机名为%表示所有地方可以登陆的用户可能与实际创建的用户不匹配而删除失败drop user whb; -- ERROR 1396: Operation DROP USER failed for whb% drop user whblocalhost; -- 正确删除3.5 数据库权限1权限列表MySQL数据库提供了较为丰富的权限体系涵盖数据库、表、视图、保存的程序以及服务器管理等多个层级。主要权限如下表CREATE、DROP、GRANT OPTION等作用于数据库或表级别SELECT、INSERT、UPDATE、DELETE等作用于表级别CREATE VIEW、SHOW VIEW作用于视图级别CREATE ROUTINE、ALTER ROUTINE、EXECUTE作用于保存的程序FILE、CREATE USER、PROCESS、SUPER等属于服务器管理级别的权限2用户授权刚创建的用户没有任何权限需要给用户授权。授权语法grant 权限列表 on 库.对象名 to 用户名登陆位置 [identified by 密码]授权案例使用root账号给用户whb赋予test数据库下所有文件的select权限。-- 终端Aroot账号 grant select on test.* to whblocalhost; -- 终端Bwhb账号 show databases; -- 授权前只能看到information_schema -- 授权后可以看到test数据库 use test; show tables; -- 可以看到account、student、user表 select * from account; -- 可以查询 delete from account; -- ERROR 1142: DELETE command denied没有删除权限以下命令查看特定用户的现有权限show grants for whb%; show grants for root%;3回收权限回收权限的语法revoke 权限列表 on 库.对象名 from 用户名登陆位置;示例回收whb对test数据库的所有权限-- root身份终端A revoke all on test.* from whblocalhost; -- whb身份终端B show databases; -- 回收后test数据库不可见只能看到information_schema
延伸阅读

更多相关文章

2026/10/17 2:39:44

从终端到桌面:Kimi Code Desktop如何重构AI编程工作流

AI编程工具这两年的变化,快得有点超出预期。2023年大家还在讨论Copilot式的代码补全,2024年终端里的Agent开始能自己读仓库、改文件、跑命令,到了2025年,这类工具已经从终端往桌面迁移了——Kimi Code Desktop的发布,就…

2026/10/17 3:44:49

基于深度学习的焊接缺陷检测系统实战:从数据到YOLOv8部署

焊接缺陷检测这件事,我在这个圈子里摸爬滚打了几年,看过太多传统视觉方案在现场翻车。早几年大家还在用边缘检测、阈值分割那套经典图像处理流程,遇到背景干净、打光均匀的工件还能硬撑一下,可一旦碰上飞溅、弧光、油污混杂的焊缝…

2026/10/17 3:44:49

MyBatis-Plus 3.0单表CRUD最优解:工程搭建、代码生成与避坑指南

简介:这是一份面向Java开发者的MyBatis-Plus 3.0代码生成案例资源,演示借助逆向工程自动生成映射器接口、XML映射文件、服务接口及实现类、控制器,并完成SpringBoot整合。资源基于3.0版本,相比2.3在代码结构与性能上有较大改变&am…

2026/10/17 3:44:49

PyTorch模型跨框架部署:ONNX转TensorFlow实战与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 3:44:49

低成本AI短剧制作全流程:0.02元/秒成本控制与实操指南

1. 低成本AI短剧的底层逻辑与方案选型1.1 为什么0.02元/秒这个数字值得认真对待第一次看到“0.02元/秒”这个报价的时候,我的反应跟大多数人一样:要么是引流噱头,要么就是有什么隐藏的坑。但实际跑完整个流程之后,我发现这个数字在…

2026/10/17 3:39:49

用AI Coding工具写设定集:以代码思维管理万字文本的实战指南

1. 为什么偏偏用AI Coding工具来写设定先坦白一个事:虽然标题写的是"AI Coding工具",但我全程没写过一行代码。我做的事是让一个擅长"代码项目"的AI助手,帮我搭建并产出整套奇幻世界观文本。这个想法最初源于一次偶然。我…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑