【MySQL】视图特性 用户管理

news2024/10/29 2:53:36

> 作者:დ旧言~
> 座右铭:松树千年终是朽,槿花一日自为荣。

> 目标:了解什么是视图,我们又该如何管理用户。

> 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安!

> 专栏选自:带你玩转MySQL

> 望小伙伴们点赞👍收藏✨加关注哟💕💕

​​

一、前言

想必大家在学校也学习过MySQL,可能学的懵懵懂懂,这个板块我们从入门开始,从最新的安装MySQL到学习MySQL语句,一步一步开始,一切都是新的,新的板块新的开始,大家一起努力,一起进步!!!

 二主体

学习【MySQL】视图特性&&用户管理 咱们按照下面的图解:

2.1【MySQL】视图特性

概念:

  • 视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。
  • 视图中的数据并不会单独存储在数据库中,其数据来自定义视图时查询所引用的表(基表),在每次引用视图时动态生成。
  • 由于视图和基表用的本质是同一份数据,因此对视图的修改会影响到基表,对基表的修改也会影响到视图。

2.1.1 视图的基本使用

准备测试表:

员工表(emp)中包含如下字段:

  • 雇员编号(empno)
  • 雇员姓名(ename)
  • 雇员职位(job)
  • 雇员领导编号(mgr)
  • 雇佣时间(hiredate)
  • 工资月薪(sal)
  • 奖金(comm)
  • 部门编号(deptno)

部门表(dept)中包含如下字段:

  • 部门编号(deptno)
  • 部门名称(dname)
  • 部门所在地点(loc)

2.1.1.1 创建视图

语法如下:

CREATE VIEW view_name AS SELECT ...;
创建视图时会先执行select语句,然后用查询得到的结果来创建视图

当我们查询每个员工对应的部门名称时,需要使用员工表和部门表进行多表查询,并筛选出员工的部门号等于部门的部门号的记录:

select ename, dname from emp,dept where emp.deptno=dept.deptno;

如果该查询结果会被频繁用到,那我们就可以给上述查询结果创建视图,创建完毕后通过show命令就能看到这个视图:

create view v_ename_dname as 
select ename, dname from emp,dept where emp.deptno=dept.deptno;

  

并且在数据库对应的目录下,会增加一个对应的xxx.frm文件,但并没有与之对应的xxx.ibd文件,这也证明了视图和基表使用的是同一份数据:

    

创建视图后就可以直接通过查询视图,来查看每个员工及其对应的部门名称了:

select * from v_ename_dname;

  

2.1.1.2 修改视图影响基表 

通过查询员工表(emp),可以看到员工CLARK所在部门的部门号为10:

select * from emp where ename='CLARK';

  

查询部门表(dept),可以看到10号部门的部门名称为ACCOUNTING :

select * from dept where deptno=10;

  

在视图中将员工CLARK的名字改为TEST后,会看到在员工表(emp)中的员工CLARK的名字也被改为TEST:

update v_ename_dname set ename='TEST' where ename='CLARK';
select * from emp where ename='CLARK';
select * from emp where ename='TEST';

  

根本原因就是因为视图和基表使用的是同一份数据,将视图中员工CLARK的名字改为TEST后员工表(emp)中的员工CLARK的名字也被改为TEST。

2.1.1.3 修改基表影响视图

通过查询员工表(emp),可以看到员工JAMES所在部门的部门号为30:

select * from emp where ename='JAMES';

  

30号部门的部门名为SALES,因此查询视图时可以看到JAMES所在的部门名为SALES:

select * from v_ename_dname where ename='JAMES';

  

现在将员工表中,员工JAMES对应的部门号改为20:

update emp set deptno=20 where ename='JAMES';
select * from v_ename_dname where ename='JAMES';

  

修改后再查询视图,就会发现JAMES所在部门的部门名,变成了20号部门的部门名RESEARCH:

select * from v_ename_dname where ename='JAMES';

  

2.1.1.4 删除视图

删除视图的SQL如下:

drop view v_ename_dname;

  

且该视图在数据库目录下对应的xxx.frm文件也会被删除:

  

2.1.2 视图规则和限制

  •  视图与普通表一样,视图的命名也必须是唯一的,不能出现同名视图或表名。
  • 创建视图的数目无限制,但要考虑复杂查询创建为视图之后的性能影响。
  • 视图不能添加索引,也不能有关联的触发器或者默认值。
  • 视图可以提高安全性,在访问视图时必须具有足够的访问权限。
  • 创建视图时可以使用order by子句,但如果从该视图检索数据时也含有order by子句,那么该视图中的order by将被覆盖。
  • 视图可以和普通表一起使用,比如进行多表查询,内外连接等。 

2.2【MySQL】用户管理


2.2.1 用户管理

概念:

如果我们只能使用root用户,root的权限非常大,这样存在安全隐患。这时,就需要使用MySQL的用户管理,可以给不同的用户分配不同的权限,让不同用户执行权限内的操作,让不同的用户看到不同的内容。

图解:

  

2.2.2 用户


2.2.2.1 用户信息

在MySQL看来用户信息也是数据,同样存在一张表中,存储在系统数据库mysql的user表中:

  

在查看用户信息时为了避免刷屏,可以只选择其中的部分字段进行显示,如下:

  

部分字段说明:

  •  host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆。
  • user: 用户名。
  • authentication_string: 用户密码通过password函数加密后的。
  • *_priv: 用户拥有的权限。 
2.2.2.2 创建用户

语法:

create user '用户名'@'登陆主机/ip' identified by '密码';

解释说明:

  • MySQL的用户管理的时候,不仅仅需要认证用户是否注册,还要认证用户登陆的主机是否注册,这两个必须同时满足,才能具备登录MySQL的能力。
  • localhost代表:本地登录,也可以写成127.0.0.1。

举个栗子:

create user 'qing'@'localhost' identified by '123456';

  

2.2.2.3 修改用户密码

语法:

drop user '用户名'@'主机名'

  

2.2.2.4 修改用户密码

自己改自己密码:

set password=password('新的密码');

root用户修改指定用户的密码:

set password for '用户名'@'主机名'=password('新的密码');

2.2.3 数据库的权限

MySQL数据库提供的权限列表:

  

2.2.3.1 给用户授权

给用户授权的SQL语法如下:

grant 权限列表 on 库.表名 to '用户名'@'登陆位置' [identified by '密码'];

解释说明:

  • 用户名'@'登录地址':表示给哪一个用户授权。
  • 库名.对象名:表示要授予用户哪个数据库下的哪个对象的权限。
  • 权限列表:表示要授予用户何种权限,多个权限之间用逗号隔开。
  • IDENTIFIED BY '密码' 可选:如果用户存在,则在授予权限的同时修改该用户的密码,如果用户不存在,则创建该用户。

总结:

  • 权限列表,多个权限用逗号分开
grant select on ...  --赋予查询权限
grant select, delete, create on ....  --赋予查询,删除,创建 权限
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

举个栗子:

①:

  

②:

  

③:

  

2.2.3.2 回收权限

语法:

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

举个栗子:

回收权限的语法与授权一样,只不过将to关键字改为了from,并且没有了IDENTIFIED BY '密码' 字段。比如下面将cjl用户在scott数据库下的所有权限回收。

  

解释说明:

  • 回收用户在某一数据库下的权限后,在该用户下一次进入该数据库时才会起作用。
  • 如果回收权限时该用户正在使用对应数据库,那么回收权限后该用户仍然拥有对应的权限。

三、结束语 

       今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

​​ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

旧衣物回收小程序开发,线上线下相结合

当下,绿色发展是重中之重,旧衣回收作为一件利国利民的模式,在发展中深受大众欢迎。随着大众生活水平的提高,家中闲置的衣物逐年增加,这也为旧衣回收市场发展提供了广阔的发展前景,为入局者和创业者提供新的…

keepalived+web 实现双机热备

环境:利用keeplived实现web服务器的双机热备(高可用) 注意: (1) 利用keeplivedweb做双击热备(高可用),最少需要两台服务器,可以实现多域名对应一个VIP,并且访问不同域名,显示不同主页&#xf…

a50股指期货是什么意思?

首先,股指期货,顾名思义,就是以股票指数为标的的期货合约。啥是期货呢?简单来说,就是现在约定好价格,将来某个时间再交易的东西。而A50股指期货,就是以A50指数为标的的期货合约。 A50指数&…

理解UUID 无序性对数据存储的影响

文章目录 背景问题1,移动数据问题2,频繁的页分裂背景 如果以UUID为主键,对于mysql 可能存在的问题。 问题1,移动数据 从上图来看,如果UUID是随机的话,以0012,0021 这个节点来说,如果插入的是0015,相当于要把16到21的数据向后移动一个位置,如果是自增的话,只会在尾…

HarmonyOS ArkTS与C++数据类型转换

1. HarmonyOS ArkTS与C数据类型转换 本文介绍了C与TS各自数据类型与互相之间的数据类型转换,在需要使用C模块时可以快速上手对各种数据类型进行转换。 1.1. 概述 HarmonyOS的主力开发语言是ArkTS,也提供了C语言的支持,对于一些能力&#xff…

Docker:容器

Docker:容器 容器容器命令docker psdocker createdocker startdocker rundocker logsdocker execdocker stopdocker restartdocekr rmdocker killdocker pausedocker unpausedocker commitdocker cpdocker diffdocker exportdocker importdocker renamedocker stats…

Es环境搭建 ▎kibana组件 ▎ik分词器 ▎idea继承Es ▎idea中Es操作

目录 安装Es 安装Es可视化界面(elasticsearch-head) elasticsearch-head安装: 安装可视化Kibana组件 汉化kibana ​编辑 启动服务器: 安装ik分词器插件 Idea继承Es 索引库操作 文档操作 安装Es Es下载地址: ES下载地址https://www.elastic.co/cn/downloads/elasticsea…

苏州金龙技术创新赋能旅游新质生产力

2024年10月23日,备受瞩目的“2024第六届旅游出行大会”在云南省丽江市正式开幕。作为客车行业新质生产力标杆客车,苏州金龙在大会期间现场展示了新V系V12商旅版、V11和V8E纯电车型,为旅游出行提供全新升级方案。 其中,全新15座V1…

SpringBoot3集成Swagger接口文档功能、接口排序以及如何设置接口页面的title/keyword/description?

一、SpringBoot3集成Swagger接口文档功能 在SpringBoot3 中集成 Swagger 接口文档,如果按照网上的很多提示,会有些问题。在这个过程中我就遇到报错: Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest 因…

总裁主题CeoMax-Pro主题7.6开心版

激活方式: 1.授权接口源码ceotheme-auth-api.zip搭建一个站点,绑定www.ceotheme.com域名,并配置任意一个域名的 SSL 证书。 2.在 hosts 中添加:127.0.0.1 www.ceotheme.com 3.上传class-wp-http.php到wp-includes目录&#xff…

Rust命令行,实现自动反编译Android APK包工具

Rust-CLI实现自动反编译APK Rust提供了比较好的CLI接口,可以快速的编写命令行应用, 用于日常的工具类使用。 分享一个用Rust命令行实现自动反编译Android APK包工具,是之前学习Rust写的一个练手小工具,可以快速反编译APK,同时也学习下用Rust…

Flutter升级与降级

升级 版本升级 // 升级到指定版本flutter upgrade 版本号// 升级到最新版本flutter upgrade 降级 1.需要先确定想要降级的版本号。 2.切换到系统安装Flutter的目录 3.在https://github.com/flutter/flutter,找到要回退的版本号对应的commit序号(具…

熵与信息论

经典信息论的核心概念是香农熵。假设我们得到了一个变量X的值,X的香农熵量化了我们在获悉 X的值时所能得到的平均信息量;另一种观点是将X的看作在我们获悉的值前对其不确定程度的度量。这两种观点是互补的;我们既可以将看作在我们获悉X的值前…

Vue3+ts+vite自动导入vue的依赖

Vue3tsvite自动导入vue的依赖 unplugin-auto-import 主要依赖 npm i -D unplugin-auto-import// vite.config.ts import AutoImport from unplugin-auto-import/viteexport default defineConfig({plugins: [AutoImport({ imports: ["vue", "vue-router"…

研发运营一体化(DevOps)能力成熟度模型

目录 应用设计 安全风险管理 技术运 持续交付 敏捷开发管理 基于微服务的端到端持续交付流水线案例 应用设计 安全风险管理 技术运 持续交付

智慧停车场导航系统架构及反向寻车系统解决方案

一、系统概述: 随着当前室内定位导航技术在大型公共场所如政务中心、商业综合体、车站中的应用越来越多,人们对智慧停车场的需求也日益凸显出来,并且智慧停车场对大型公共场所智慧化的整体建设起到重要作用。如何更有效提高停车效率&#xf…

图片处理达人使用图片格式转换器一键实现批量将 JPG 图片转换成 BMP 格式并调整图片质量,解决图片批量处理难题的利器

片处理达人的秘密武器——首助编辑高手软件的图片格式转换器!它能帮助你一键实现批量将JPG图片转换成BMP格式,高效解决图片批量处理难题,让你轻松成为图片处理高手! 1.导入图片‌:在软件的图片批量处理板块中点击“添…

文本配音怎么制作?推荐6款靠谱的文本配音工具,新手不可错过

文本配音怎么制作?相信有很多从事自媒体行业的小伙伴们有时对视频配音这个问题感到头疼,还有些喜欢听有声小说的朋友们,都会疑惑要怎么将文案文本转换成音频呢?其实文本配音不难,小编今天给大家整理了六款靠谱的文本配…

Python: Print Table on console

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # OS : windows 10 # Datetime : 2024/10/28 22:08 # User : geo…

PSINS工具箱函数介绍——inserrplot

关于工具箱 i n s e r r p l o t inserrplot in