AI智能
改变未来

MySQL账号管理及DDL


一、数据库用户及权限管理

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)#外键);
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » MySQL账号管理及DDL