目录:
用户的管理
建库建表
前言:今天小刘给大家带来的是MySql的一些知识点,在前期我们使用过的数据库有sqlServer,和oracle,今天的MySQL与他们也是大同小异,不过会有一个高级部分:执行计划大家还没有见过,接下来我们就进入主题吧
关于用户管理,小刘会结合一些企业中的使用的一些场景给大家进行一个讲解
以下是在一些有规模的公司中不同开发人员的权限
就数据库而言
项目经理:crud,Create,drop...
项目组长:crud
开发人员:select
对于系统开发而言,三个环境
线网/生产环境:系统开发完毕,客户使用的那个环境 linux
测试环境:公司内部模拟客户现场,搭建而成的环境 linux
开发环境:本地电脑 windows
权限的划分,针对的是生产环境
还有就是我们MySQL默认数据库里面的四张表(user,db,tables,columns_priv)
这四张表不能删除,否则后果很简单:重装MySQL
以下是对于这四张表的解释:
1.user表(用户层权限)
2.db表(数据库层权限)
3.tables_priv表(表层权限)
4.columns_priv表(字段层权限)
好,了解了这四张表之后我们来进行对用户权限的分配
1.首先我们先在用户表中新增一个用户:zs
再查询以下zs的host 与名称与密码,可以看到它除了名称都是没有的,这个时候我们就需要给他设置密码
此时我们要注意数据库版本的不同,修改密码的方式也不同
列举:5.7版本:
8.0版本:
我们执行一下修改密码的语句再去查看表数据,可以看到已经设置成功了
我们登陆zs的账号创建连接,来看一下它具有的权限
所以接下来我们就要授予权限了
设置权限
如:
给zs用户赋予 数据库javaxl中所有的表的所有权限
之后我们先关闭zs的连接,再重新连接上,会发现它就已经具备了刚刚所授予它的所有权限
这就是一个项目经理级别具有的所有的权限
此时我们测试一下只赋予用户ls查询与删除的功能,看一下会是什么情况
登陆ls的连接查看权限:
通过对比可以发现这里只有一张表,也就是刚刚授权的那一张,
我们对表中的数据进行修改,然后保存,出现提示:没有修改权限
我们执行删除操作:通过编号位置发生的变化我们可以看见中间的447号已经删除成功了
撤销权限/回收权限
有赋予就有撤销,在某些情况下我们会需要用到这个操作,比如员工被降职
先查看一个用户的所有权限
注意:当我们在回收权限时,只能回收你授权时权限,比如你授权的是all(所有权限),那你就只能回收all,而不能回收all中的其中一个权限,如delect,但是此时分为两种情况,如下:
误区:第一种情况
当我们回收的删除权限是面向一个库中的所有的表的情况的时候,删除权限被回收成功,不见了
第二种情况:
当我们回收的权限是面向一个库中的单独一张表的情况的时候,删除权限回收失败
删除用户:drop user 名称
创建数据库:
create database 数据库名
查看所有的数据库:(也就是展示mysql左边排列的数据库)
show databases
建表,删表语法:
例如:
查看一个表中的所有列段:desc 表名;
修改表:
扩展字段:
在企业中设计表的时候,一般都会设计扩展字段
如:
因为我们在项目的开始阶段无法预料到用户所需要的所有需求,或者说需要删改,这时我们就用到扩展字段来应对变化的需求,以防万一,但是一般只需要在核心业务表中添加扩展字段10-15个,如果所有的的表中创建太多字段会很占用空间
面试题:对数据库引擎方面的了解。
1.每张表创建之后的默认存储引擎是InnoDB(支持事物),另外一个是MyISAM
2.如何对MySql进行优化
3.MySql中的数据类型:
面试题:以下为某外卖公司的用户订单,用户BD表,请写出一下问题对应的查询语句
user表:
shop表:
问题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
执行结果: