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

Mysql的视图和管理

MySQL


视图(view)

视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含列,其数据来自对应的真实表(基表)

  1. create view 视图名 as select语句
  2. alter view 视图名 as select语句 --更新成新的视图
  3. SHOW CREATE VIEW 视图名
  4. drop view 视图名1,视图名2
-- 创建一个视图emp_view01,只能查询emp表的(empno、ename, job 和 deptno ) 信息-- 创建视图
CREATE VIEW emp_view01ASSELECT empno, ename, job, deptno FROM emp; -- 查看视图
DESC emp_view01SELECT * FROM emp_view01;
SELECT empno, job  FROM emp_view01;-- 查看创建视图的指令
SHOW CREATE VIEW emp_view01
-- 删除视图
DROP VIEW emp_view01;-- 视图的细节-- 1. 创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式: 视图名.frm) 
-- 2. 视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete ]-- 修改视图 会影响到基表UPDATE emp_view01 SET job = 'MANAGER' WHERE empno = 7369SELECT * FROM emp; -- 查询基表SELECT * FROM emp_view01-- 修改基本表, 会影响到视图UPDATE emp SET job = 'SALESMAN' WHERE empno = 7369-- 3. 视图中可以再使用视图 , 比如从emp_view01 视图中,选出empno,和ename做出新视图
DESC emp_view01CREATE VIEW emp_view02ASSELECT empno, ename FROM emp_view01SELECT * FROM emp_view02

注意

  1. 创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式:视图名.frm)
  2. 视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete]
  3. 视图中可以再使用视图,数据仍然来自基表
  • 安全。一些数据表有着重要的信息,有些字段是保密的,不能让用户直接看到。这时就可以创建一个视图,在这张视图中只保留一部分字段。这样用户就可以查询自己需要的字段,不能查看保密的字段。
  • 性能。关系数据库的数据常常会分表存储,使用外键建立这些表的之间关系。这时数据库查询通常会用到连接(JOIN)。这样做不但麻烦,效率相对也比较低。如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用JOIN查询数据。
  • 灵活。如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃。然而很多应用都是基于这张表,不易修改。这时就可以建立一张视图,视图中的数据直接映射到新建的表。这样就可以少做很多改动,也达到了升级数据表的目的。





Mysql 管理

Mysql中的用户,都存储在系数据库mysqluser表中

其中user表的重要字段说明:

  1. host: 允许登录的“位置”
    localhost表示该用户只允许本机登录,也可以指定ip地址,比如:192.168.1.100
  2. user:用户名;
  3. authentication string:密码,是通过mysqlpassword()函数加密之后的密码。

创建用户

create user '用户名'@'允许登录位置' identified by '密码'

创建用户,同时指定密码


删除用户

drop user '用户名'@'允许登录位置';

用户修改密码

修改自己的密码

set password = password('密码');

修改他人的密码(需要有修改用户密码权限)

set password for '用户名'@'登录位置'=password('密码');

给用户授权

grant 权限列表 on.对象名 to '用户名'@'登录位置'【identified  by '密码'
  1. 权限列表,多个权限用逗号分开
   grant select on .....grant select,delete,create on ......grant all [privileges] on .... //表示赋予该用户在该对象上的所有权限
  1. 特别说明
    *.*:代表本系统中的所有数据库的所有对象(表,视图,存储过程)

    库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)

  2. identified by可以省略,也可以写出.

    (1)如果用户存在,就是同时修改该用户的密码。

    (2)如果该用户不存在,就是创建该用户!


回收用户授权

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

权限生效指令

如果权限没有生效,可以执行下面命令刷新

FLUSH PRIVILEGES;




注意

  1. 在创建用户的时候,如果不指定Host,则为%%表示表示所有IP都有连接权限

    create user XX;
    
  2. 你也可以这样指定
    create user 'xxx'@'192.168.1.%' 表示xx用户在 192.168.1.* 的ip可以登录mysql

  3. 在删除用户的时候,如果 host 不是%,需要明确指定‘用户’@‘host值’

-- 说明 用户管理的细节
-- 在创建用户的时候,如果不指定Host, 则为% , %表示表示所有IP都有连接权限 
-- create user  xxx;CREATE USER jackSELECT `host`, `user` FROM mysql.user-- 你也可以这样指定 
-- create user  'xxx'@'192.168.1.%'  表示 xxx用户在 192.168.1.*的ip可以登录mysqlCREATE USER 'smith'@'192.168.1.%'-- 在删除用户的时候,如果 host 不是 %, 需要明确指定  '用户'@'host值'DROP USER jack -- 默认就是 DROP USER 'jack'@'%'DROP USER 'smith'@'192.168.1.%'
http://www.lryc.cn/news/134811.html

相关文章:

  • uniapp 顶部头部样式
  • 最新ai系统ChatGPT程序源码+详细搭建教程+mj以图生图+Dall-E2绘画+支持GPT4+AI绘画+H5端+Prompt知识库
  • FairyGUI-Unity 自定义UIShader
  • Excel/PowerPoint柱状图条形图负值设置补色
  • el-date-picker 时间区域选择,type=daterange,form表单校验+数据回显问题
  • LeetCode 面试题 01.02. 判定是否互为字符重排
  • 学习maven工具
  • 手机直播源码开发,协议讨论篇(三):RTMP实时消息传输协议
  • 【JavaEE基础学习打卡05】JDBC之基本入门就可以了
  • 2023/8/16 华为云OCR识别驾驶证、行驶证
  • 【Java开发】 Mybatis-Plus 07:创建时间、更新时间自动添加
  • 解决vue2项目在IE11浏览器中无画面的兼容问题
  • 信号
  • 产品经理的真实薪资有多少?今天带你看看
  • 《一个操作系统的实现》windows用vm安装CentOS——从bochs环境搭建到第一个demo跑通
  • 线程Thread
  • 如何使用CSS实现一个渐变背景效果?
  • 初始C语言(7)——详细讲解有关初阶指针的内容
  • ArcGIS Pro技术应用(暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用)
  • RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估
  • UE5.2 LyraDemo源码阅读笔记(五)输入系统
  • 线段树详解——影子宽度
  • 使用R语言绘制折线图
  • 无涯教程-Perl - wantarray函数
  • 【gitkraken】gitkraken自动更新问题
  • 《Java Web程序设计》试卷03
  • 怎么查看小程序中的会员信息
  • 网络安全—黑客—自学笔记
  • 深度解读波卡 2.0:多核、更有韧性、以应用为中心
  • 微服务中间件--Eureka注册中心