您的位置:首页 > 健康 > 养生 > 企业工商查询官网_成都疫情最新公布_万网建站_网站关键词怎么添加

企业工商查询官网_成都疫情最新公布_万网建站_网站关键词怎么添加

2024/10/31 17:06:32 来源:https://blog.csdn.net/AAlykk/article/details/143165936  浏览:    关键词:企业工商查询官网_成都疫情最新公布_万网建站_网站关键词怎么添加
企业工商查询官网_成都疫情最新公布_万网建站_网站关键词怎么添加

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

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

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

> 专栏选自:带你玩转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数据库下的所有权限回收。

  

解释说明:

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

三、结束语 

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

​​ 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com