一、用户管理;
概念:指的就是管理MySQL数据库中数据的操作权限
-
创建用户:语法:create user 用户名 ;
测试:查询用户:语法:select * from user;
查看用户部分信息:select (这里写你要查看内容的名字) from user;
删除用户(慎用):drop user 用户名; -
给新用户设置密码:#ALTER USER 用户 IDENTIFIED WITH mysql_native_password BY ‘密码’;
刷新配置:flush privileges; -
设置权限:grant…on…to…;
这里我们给zs这个用户给予了db_xiaoli中所有表的权限的所有权限;
新增权限:INSERT; 删除权限:DELETE
修改权限: UPDATE 查询权限:SELECT;登录权限:USAGE
全部权限:ALL 所有表:* -
回收权限:revoke … from …;
注意:回收权限不能单独回收某一个权限 ,只能把这个用户对于这个表的所有权限(ALL)回收;再去给予他某些权限进行权限的限制!!! -
查看某个用户的权限: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.外键列和主表的被引用列要求类型一致,意义一样,名称无要求
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
)