MySQL(8.0版本)

目录:

用户的管理

建库建表​​​​​​​


 前言:今天小刘给大家带来的是MySql的一些知识点,在前期我们使用过的数据库有sqlServer,和oracle,今天的MySQL与他们也是大同小异,不过会有一个高级部分:执行计划大家还没有见过,接下来我们就进入主题吧

用户的管理

关于用户管理,小刘会结合一些企业中的使用的一些场景给大家进行一个讲解

以下是在一些有规模的公司中不同开发人员的权限

就数据库而言

项目经理:crud,Create,drop...

项目组长:crud

开发人员:select

对于系统开发而言,三个环境

线网/生产环境:系统开发完毕,客户使用的那个环境  linux

测试环境:公司内部模拟客户现场,搭建而成的环境   linux

开发环境:本地电脑  windows

权限的划分,针对的是生产环境

还有就是我们MySQL默认数据库里面的四张表(user,db,tables,columns_priv)

 这四张表不能删除,否则后果很简单:重装MySQL

MySQL(8.0版本)_第1张图片

以下是对于这四张表的解释:

1.user表(用户层权限)

MySQL(8.0版本)_第2张图片

 2.db表(数据库层权限)

MySQL(8.0版本)_第3张图片

 3.tables_priv表(表层权限)

 4.columns_priv表(字段层权限)

 好,了解了这四张表之后我们来进行对用户权限的分配

1.首先我们先在用户表中新增一个用户:zs

再查询以下zs的host 与名称与密码,可以看到它除了名称都是没有的,这个时候我们就需要给他设置密码

MySQL(8.0版本)_第4张图片

 此时我们要注意数据库版本的不同,修改密码的方式也不同

列举:5.7版本:

 8.0版本:

MySQL(8.0版本)_第5张图片

 我们执行一下修改密码的语句再去查看表数据,可以看到已经设置成功了

MySQL(8.0版本)_第6张图片

 我们登陆zs的账号创建连接,来看一下它具有的权限

MySQL(8.0版本)_第7张图片

 MySQL(8.0版本)_第8张图片

 所以接下来我们就要授予权限

设置权限

如:

MySQL(8.0版本)_第9张图片

给zs用户赋予 数据库javaxl中所有的表的所有权限

MySQL(8.0版本)_第10张图片

之后我们先关闭zs的连接,再重新连接上,会发现它就已经具备了刚刚所授予它的所有权限

这就是一个项目经理级别具有的所有的权限

MySQL(8.0版本)_第11张图片

此时我们测试一下只赋予用户ls查询与删除的功能,看一下会是什么情况

MySQL(8.0版本)_第12张图片

登陆ls的连接查看权限:

MySQL(8.0版本)_第13张图片

 通过对比可以发现这里只有一张表,也就是刚刚授权的那一张,

我们对表中的数据进行修改,然后保存,出现提示:没有修改权限

MySQL(8.0版本)_第14张图片

 我们执行删除操作:通过编号位置发生的变化我们可以看见中间的447号已经删除成功了

MySQL(8.0版本)_第15张图片

 撤销权限/回收权限

有赋予就有撤销,在某些情况下我们会需要用到这个操作,比如员工被降职

查看一个用户的所有权限

MySQL(8.0版本)_第16张图片

 注意:当我们在回收权限时,只能回收你授权时权限,比如你授权的是all(所有权限),那你就只能回收all,而不能回收all中的其中一个权限,如delect,但是此时分为两种情况,如下:

 误区:第一种情况

当我们回收的删除权限是面向一个库中的所有的表的情况的时候,删除权限被回收成功,不见了

MySQL(8.0版本)_第17张图片

 第二种情况:

当我们回收的权限是面向一个库中的单独一张表的情况的时候,删除权限回收失败

MySQL(8.0版本)_第18张图片

 删除用户:drop user 名称

建库建表

创建数据库:

create database 数据库名

查看所有的数据库:(也就是展示mysql左边排列的数据库)

show databases

MySQL(8.0版本)_第19张图片

建表,删表语法:

MySQL(8.0版本)_第20张图片

例如:

MySQL(8.0版本)_第21张图片

 MySQL(8.0版本)_第22张图片

查看一个表中的所有列段:desc 表名;

MySQL(8.0版本)_第23张图片

 修改表:

MySQL(8.0版本)_第24张图片

 扩展字段:

在企业中设计表的时候,一般都会设计扩展字段

如:

MySQL(8.0版本)_第25张图片

 因为我们在项目的开始阶段无法预料到用户所需要的所有需求,或者说需要删改,这时我们就用到扩展字段来应对变化的需求,以防万一,但是一般只需要在核心业务表中添加扩展字段10-15个,如果所有的的表中创建太多字段会很占用空间

面试题:对数据库引擎方面的了解。

1.每张表创建之后的默认存储引擎是InnoDB(支持事物),另外一个是MyISAM

MySQL(8.0版本)_第26张图片

 MySQL(8.0版本)_第27张图片

 2.如何对MySql进行优化

MySQL(8.0版本)_第28张图片

3.MySql中的数据类型:

MySQL(8.0版本)_第29张图片

面试题:以下为某外卖公司的用户订单,用户BD表,请写出一下问题对应的查询语句

user表:

MySQL(8.0版本)_第30张图片

shop表:

 MySQL(8.0版本)_第31张图片

问题1.1月份每笔消费均大于20元的用户的总消费金额

答:select sum(order_amt) from  user where order_amt > 20.0 and order_time <='2018-01-31'  group by user_id

执行结果:

问题2.1月份只吃了麻辣烫和汉堡的人数

答:select count( DISTINCT user_id ) from user where order_category like '_辣%' or order_category like '_堡%' and order_time <='2018-01-31'  group by user_id

执行结果:

​​​​​​​

问题3,计算每个DB_TEAMD的BD对应门店的销售额

答: select DISTINCT a.shop_id,b.order_amt from shop a ,user b where a.shop_id=b.shop_id 

执行结果:

MySQL(8.0版本)_第32张图片

你可能感兴趣的:(mysql,java,数据库)