AI智能
改变未来

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
)

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » MySQL8.0的用户管理与DDL语言