大家好,我是anyux。上一节简单介绍了SQL的分类,包含4种分别是DDL(数据定义语言)、DCL(数据控制语言)、DML(数据操作语言)、DQL(数据查询语言)。
本节是对于SQL语句DDL和DCL操作演示。
DDL的应用
数据定义语言,相对于linux命令为创建目录、文件
DDL语句库的定义
库相当于一个目录,使用DDL语句可以创建库,删除库,修改库
#-----创建数据库
#-----校对规则可以不加,但字符集一定要设置
create database zabbix charset utf8mb4 collate utf8mb4_bin;
#-----查看数据库
show databases;
#-----查看建库语句
show create database zabbix;
#-----删除数据库(不代表生产操作)
drop database zabbix;
#-----修改数据库(修改字符集或校对规则)
#-----注意,一定是从小向大修改,比如utf8--->utf8mb4
#-----目标字符集一定是源字符集的严格超集
alter database test charset utf8mb4;
复制
库定义规范
库名使用小写字符
库名不能以数字开头
不能是数据库内部的关键字
必须要设置字符集
DDL语句表的定义
#-----建表
#-----表名、列名、列属性、表属性
create table `zabbix`.`student` (
`id` int unsigned not null auto_increment comment '学号',
`name` varchar(255) not null comment '姓名',
`age` tinyint unsigned default 99 comment '年龄',
`gender` enum('m','f','n') not null default 'n' comment '性别',
`intime` datetime not null default now() comment 'intime',
primary key (`id`)
) engine=innodb charset=utf8mb4 collate=utf8mb4_bin;
复制
列属性
列属性 | 列属性解释 |
primary key | 主键约束,表中只能有一个,非空且唯一 |
auto_increment | 自增长的列,一般配合主键使用 |
not null | 非空约束,必填项,尽量所有的列都非空,数字列尽量为0,字符串列默认为空格或有效字符如(null),避免空值 |
unique key | 唯一键约束,不允许重复值 |
default | 一般配合not null 一起使用,作用是使用默认值 |
unsigned | 无符号,一般配合数字列,非负数 |
comment | 注释,描述 |
建表规范
表名小写字母,不能数字开头
不能是保留字符,尽量和业务有关的表名
选择合适的数据类型及长度
每个列设置not null + default,对于数字以0填充,对于字符使用空格或有效字符串填充
每个列必须要加注释
表必须设置存储引擎类型和字符集
主键列尽量是无关数字列,自增长,有顺序的列
enum类型,不要保存数字,只能设置为字符串类型
DCL的应用
授权命令
grant 权限 on 作用目标 to 用户 identified by 密码 with grant option;
#-----给root用户所有库的所有权限,可以192.168.255.0/24ip端登录,并且给了用户授权权限
grant all on *.* to root@'192.168.255.%' identified by 'root' with grant option;
#-----给root用户wordpress库下所有表的增、删、改、查权限,并且只能本地登录
grant select,insert,update,delete,create on wordpress.* to root@'localhost' identified by 'root';复制
作用目标:
通过作用目标的设置,可以灵活地设置用户权限,方便管理
#------第一个*的位置代表数据库,第二个*的位置代表数据表,*表示任意,*.*联起来就表示所有库的所有表,即对所有数据库权限管理
*.*
#-----wordpress.*,表示wordpress数据库下的所有表
wordpress.*
#-----wodpress.t1,表示wordpress数据库下的t1表
wordpress.t1复制
授权需求
创建一个管理员用户root,可以通过10网段,管理数据库
grant all on *.* to root@'192.168.255.%' identified by 'root' with grant option;复制
创建一个应用用户wordpress,可以通过192.168.255.0/24网段管理wordpress库下的所有表进行select,insert,update,delete操作
grant select ,insert,update,delete on wordpress.* to wordpress@'192.168.255.%' identified by '123';复制
回收权限
查看用户权限
show grants for wordpress@'192.168.255.%';复制
回收delete权限
revoke delete on wordpress.* from wordpress@'192.168.255.%';复制
回收授权权限
注意此处回收的是grant权限
revoke grant option on *.* from root@'192.168.255.%';复制
本节主要是对于SQL语句的DDL(数据定义语言)和DCL(数据控制语言)进行演示。其中如有不足还各位同学指出。下一节将对SQL语句的DML(数据操作语言)和DQL(数据查询语言)进行演示