SQL语句(Structured Query Language)具有循环语句 判断语句功能 -- 数据库存储过程(数据库中的脚本)
DDL语句(数据定义语句 Data Definition Language)
create:创建数据库 创建数据表 创建索引信息
alter :修改数据库属性信息(字符集 校对规则) 修改数据表属性信息(字符集 校对规则 表结构-列名 数据类型 约束属性 索引 引擎? 名称)
drop :删除数据库 删除数据表(磁盘层面删除数据) 慎用
show :做以上操作的查看确认
DCL语句(数据控制语句 Data Control Language)
grant: 授权权限信息
revoke:回收权限信息
create user:创建用户
alter user: 修改用户
commit: 操作提交语句
rollback:操作回滚语句
DML语句(数据操作语句 Data Manipulation Language)
insert:在表中插入数据信息
delete:在表中删除数据信息
update:在表中修改数据信息
DCL语句(数据控制语句 Data Control Language)
创建用户 CREATE USER … IDENTIFIED BY … 8.0 以后推荐 CREATE USER … IDENTIFIED WITH …
修改用户 ALTER USER … IDENTIFIED BY … 可改密码、资源限制、过期策略、认证插件等
授权 GRANT 权限 ON 对象 TO 用户 [WITH GRANT OPTION] 粒度可细到列、存储过程;8.0 起支持角色
撤销 REVOKE 权限 ON 对象 FROM 用户 对应 GRANT 的反操作
DQL语句(数据查询语句 Data Query Language)
查看表中的数据 select
查看单表数据信息 select + from + where + group by + having + order by + limit
查看多表数据信息 select + join on + union all
其他信息查看
查看数据库变量信息(内置变量-状态变量 功能变量)
查看数据库函数信息(获取特定数据)
详情:https://dev.mysql.com/doc/refman/8.4/en/indexes.html
数据库服务字符设置
1)数据库中可以设置的字符编码
mysql> show charset;
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| utf8mb3 | UTF-8 Unicode | utf8mb3_general_ci | 3 | ******
| utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 | ******
utf8mb3 等价于早期的utf8字符编码 可以识别中文信息 每个字符占用3字节
utf8mb4 支持emoji 每个字符占用4字节
2)数据库如何设置字符编码
修改配置文件:
# cat my.cnf
[mysqld]
character-set-server=utf8mb3
数据库数据类型介绍
创建数据表时,需要对表的列指定数据类型(合理录入数据 控制数据磁盘占用 影响索引应用)
数值类型:整数类型,浮点数类型,
- 整数类型:
tinyint 微小整数 1个字节 范围(-128~127) 范围(0~255) 2的8=256
smallint 小型整数 2个字节 范围(-32768~32767) 范围(0~65535) 2的16=65536
mediumint 中型整数 3个字节 范围(-8388608~8388607) 范围(0~16777215) 2的24=16777216
int 标准整数 4个字节 范围(-2147483648~2147483647) ?????
bigint 大型整数 8个字节 范围(+-9.22*10的18次方) 2的64=18446744073709551616
- 浮点类型:(小数类型)
float 单精度浮点类型 可以保留的小数位最多 6
double 双精度浮点类型 可以保留的小数位最多 17
decimal 定点数类型 可以自定义
字符类型
char(n) 存储字符范围 最多255个字符 固定长度字符类型(提高数据检索效率?)
varchar(n) 存储字符范围 最多65535个字符 可变长度字符类型(提高磁盘利用率)
日期类型
date 日期类型 存储年月日
time 时间类型 存储小时分钟秒
datetime 日期时间类型 存储年月日 小时分钟秒 1000~9999
timestamp 日期时间类型 存储年月日 小时分钟秒 1970~2037
其他类型:ENUM 枚举类型(插入单个合理数据) -- SET 集合类型(插入多个合理数据)
限制数据录入 比如:性别-'男 女 未知' 省份 国家 ....
数据库数据约束属性
约束设置:
- 主键约束(PK primary key): 限制列信息非空 且唯一 主键索引
CREATE TABLE `xiaoA`.`test01` (
`id` INT NOT NULL,
PRIMARY KEY (`id`));
- 唯一约束(UQ unique): 限制列的信息不能重复,但可以输入空值 唯一索引
ALTER TABLE `xiaoA`.`test01`
ADD COLUMN `name` VARCHAR(10) NULL AFTER `id`,
ADD UNIQUE INDEX `name_UNIQUE` (`name` ASC) VISIBLE;
;
- 非空约束(NN not null): 限制列的信息不能为空,但是可以重复
ALTER TABLE `xiaoA`.`test01`
ADD COLUMN `gender` ENUM('男', '女') NOT NULL AFTER `name`;
- 外键约束: 当业务功能需要操作多张数据表时,需要控制操作表的顺序
当多张表插入数据和删除数据都会有合理顺序
-- 当设置外键约束,插入数据信息时,需要先在主表中插入数据,然后才能在子表中插入对应数据;
-- 当设置外键约束,删除数据信息时,需要先在子表中删除数据,然后才能在主表中删除对应数据;
PS: 以上4种约束信息,其中PK UQ NN约束需要创建表时进行设置,FK约束可以创建表后进行设置
属性设置:
default 设定默认数据信息,可以实现自动填充
auto_increment 设定数值信息自增,可以实现数值编号自增填充(一般配合主键使用)
comment 设定数据注释信息
unsigned 设定数值信息非负,可以实现数值信息列不能出现负数信息