一、数据库用户及权限管理
1.创建用户并设置密码
#设置用户名create user wushan;#设置密码alter user \'wushan\'@\'%\' identified with mysql_native_password by \'root\';
删除用户:drop user 用户名;
2.设置权限(grant)
单个表的单个权限(查询:select,修改:update,增加:insert,删除:delete):
#mysql:数据库名 table1:表名 wushan:用户grant select on mysql.table1 to wushan@\'%\';
数据库中所有表的所有权限:
grant all on mysql.* to wushan@\'%\';
3.撤销权限(revoke)
撤销某个权限:
#撤销用户wushan对mysql数据库下table1表格的删除权限revoke delete on mysql.table1 from wushan@\'%\';
撤销所有权限:
#撤销用户对该数据库的所有权限revoke all on mysql from wushan@\'%\';
4.查看权限
show grants for wushan@\'%\';
二、DDL(数据定义语言)
1.数据库管理
①创建数据库:
create database mysql;
②查看数据库:
show database;
③删除数据库:
drop database mysql;
2.表的管理
①创建表
语法:create table 表名(列名 列类型(长度) 约束(可写可不写));
例:
create table table1(id int PRIMARY KEY,name varchar(20));
②表的修改
语法: alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;
#修改列名alter table 表名 change column 旧列名 新列名 列类型;
#修改列类型或约束alter table 表名 modify column 列名 类型[约束];
#添加列alter table 表名 add column 列名 类型 [first|after 字段名];
#删除列alter table 表名 drop column 列名;
#修改表名alter table 表名 rename to 新表名;
③表的删除
drop table [if exists] 表名;
④表的复制
#复制表结构create table 新表名 like 旧表名;
#复制表结构+数据create table 新表名 select*from 旧表名;
#复制部分数据create table 新表名 select 列名,列名 from 旧表名 where 判断条件;
#复制部分字段create table 新表名 select 列名,列名 from 旧表名 where 0;
3.约束
①约束类型:
NOT NULL:非空,用于保证该字段的值不能为空,比如姓名、学号等
DEFAULT:默认,用于保证该字段有默认值,比如性别
PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空,比如学号、员工编号等
UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空比如座位号
CHECK:检查约束【mysql中不支持】比如年龄、性别
FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值,比如学生表的专业编号,员工表的部门编号,员工表的工种编号
主键和唯一的区别:
主键不允许为空且一个表中最多只能有一个,唯一可以为空且一个表中允许有多个
外键:
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3、主表的关联列必须是一个key(一般是主键或唯一)
4、插入数据时,先插入主表,再插入从表;删除数据时,先删除从表,再删除主表。
②创建表时添加约束
添加列级约束:
create table table1(id int PRIMARY KEY,#主键name varchar(20) NOT NULL,#非空stuId int REFERENCES stu(id)#外键);create table stu(id int PRIMARY KEY#主键,table1的外键);
添加表级约束:
create table table1(id int,name varchar(20)stuId intCONSTRAINT pk PRIMARY KEY(id),#主键CONSTRAINT nn NOT NULL(name),#非空#外键语法:CONSTRAINT 外键名 FOREIGN KEY(列名) REFERENCES 主表(被引用列名)CONSTRAINT fk_stuId FOREIGN KEY(stuId) REFERENCES stu(id)#外键);