MySQL8.0的用户管理与DDL语言

一、用户管理;

概念:指的就是管理MySQL数据库中数据的操作权限

  1. 创建用户:语法:create user 用户名 ;
    在这里插入图片描述
    测试:查询用户:语法:select * from user;
    在这里插入图片描述
    查看用户部分信息:select (这里写你要查看内容的名字) from user;
    在这里插入图片描述
    删除用户(慎用):drop user 用户名;
    在这里插入图片描述

  2. 给新用户设置密码:#ALTER USER 用户 IDENTIFIED WITH mysql_native_password BY ‘密码’;
    在这里插入图片描述
    刷新配置:flush privileges;
    在这里插入图片描述

  3. 设置权限:grant…on…to…;
    这里我们给zs这个用户给予了db_xiaoli中所有表的权限的所有权限;
    在这里插入图片描述
    新增权限:INSERT; 删除权限:DELETE
    修改权限: UPDATE 查询权限:SELECT;登录权限:USAGE
    全部权限:ALL 所有表:*

  4. 回收权限:revoke … from …;
    在这里插入图片描述
    注意:回收权限不能单独回收某一个权限 ,只能把这个用户对于这个表的所有权限(ALL)回收;再去给予他某些权限进行权限的限制!!!

  5. 查看某个用户的权限:show grants for 某用户;
    在这里插入图片描述

扩展:四大层级权限:这里我们拿mysql默认数据库做示例:user表(用户层权限)db表(数据库层权限),tables_priv表(表层权限),columns_priv表(字段层权限)。

6. 数据库引擎:
查看数据库引擎语句:SHOW ENGINES;
在这里插入图片描述
如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能

二、DDL语言(数据定义语言)

概念:DDL(data defination language)数据库定义语言,主要是建表、删除表、修改表字段等操作

1. 库的管理
创建:create database [if not exists]库名;
在这里插入图片描述
使用库:use 库名:
在这里插入图片描述
库的删除:DROP DATABASE IF EXISTS 库名;
在这里插入图片描述
2. 表的管理:
创建表;
create table 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,

列名 列的类型【(长度) 约束】
)
在这里插入图片描述
表的修改:
alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;
修改列名:
在这里插入图片描述
修改列类型或约束;
在这里插入图片描述
添加列:alter table 表名 add column 列名 类型 [first|after 字段名];
在这里插入图片描述
删除列:alter table 表名 drop column 列名;
在这里插入图片描述
修改表名;alter table 旧表名 rename [to] 新表名;
在这里插入图片描述
复制表:create table 表名 like 旧表;
在这里插入图片描述
删除表:drop table [if exists] 表名;
在这里插入图片描述
查看表的结构:desc 表名;
在这里插入图片描述

3. 常见约束:
NOT NULL: 非空,该字段的值必值
UNIQUE: 唯一,该字段不可重复
DEFAULT : 默认,该字段的值不用手动插入有默认值
CHECK : 检查 ,mysql不支持
PRIMARY KEY : 主键,该字段的值不可重复,并且非空,,一个表必须有一个主键 unique+ not null
FOREIGN KEY : 外键,该字段的值引用了另外的表的字段
注意:NOT NULL + UNIQUE != PRIMARY KEY;

主键和唯一:

  1. 区别:
    一个表至多有一个主键,但可以有多个唯一
    主键不容许空,唯一可以为空
  2. 相同点:
    都具有唯一性
    都支持组合键,但不推荐

外键
1.用于限制两个表的关系,从表的字段值引用了主表的某字段值

2.外键列和主表的被引用列要求类型一致,意义一样,名称无要求

3.主表的被引用列要求是一个key(一般就是主键)

4.插入数据,先插入主表

修改表时添加或删除约束
非空

添加非空
alter table 表名 modify column 字段名 字段类型 not null;
在这里插入图片描述
删除非空
alter table 表名 modify column 字段名 字段类型;
在这里插入图片描述

默认
添加默认
alter table 表名 modify column 字段名 字段类型 default 值;
在这里插入图片描述
删除默认
alter table 表名 modify column 字段名 字段类型 ;
在这里插入图片描述

主键
添加主键
alter table 表名 add【 constraint 约束名】 primary key(字段名);
在这里插入图片描述

删除主键
alter table 表名 drop primary key;
在这里插入图片描述
唯一
添加唯一
alter table 表名 add【 constraint 约束名】 unique(字段名);
在这里插入图片描述
删除唯一
alter table 表名 drop index 索引名;
在这里插入图片描述
外键
添加外键
alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);

删除外键
alter table 表名 drop foreign key 约束名;

4. 自增长列
特点:
不用手动插入值,可以自动提供序列值,默认从1开始,步长为1
auto_increment_increment
如果要更改起始值:手动插入值
如果要更改步长:更改系统变量
set auto_increment_increment=值;
一个表至多有一个自增长列
自增长列只能支持数值型
自增长列必须为一个key
创建表时设置自增长列
create table 表(
字段名 字段类型 约束 auto_increment
)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值