数据类型
- 数据类型分为以下三种
- 数值类型
- 日期和时间类型
- 字符串类型
数值类型
类型 | 变量大小 | 范围 (有符号) | 范围 (无符号) | 用途 |
---|---|---|---|---|
tinyint | 1字节 | 最小: -128 最大: 127 | 最小: 0 最大: 255 | 小整数 |
smallint | 2字节 | 最小: -32,768 最大: +32,767 | 最小: 0 最大: 65,535 | 大整数 |
mediumint | 3字节 | 最小: -8,388,608 最大: +8,388,607 | 最小: 0 最大: 16,777,215 | 大整数 |
int | 4字节 | 最小:-2,147,483,648 最大: +2,147,483,647 | 最小: 0 最大: 4,294,967,295 | 大整数 |
bigint | 8字节 | * | * | 极大 整数值 |
float | 4字节 | * | * | 单精度 浮点数值 |
double | 8字节 | * | * | 双精度 浮点数值 |
decimal(m,d) | 根据md值 | decimal(5,2) 数字位数 5 位小数点后 2 位 | * | 小数值 |
时间类型
类型 | 变量 大小 | 时间范围 | 格式 | 用途 |
---|---|---|---|---|
date | 3字节 | 1000-01-01 9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3字节 | -838:59:59 +838:59:59 | HH:MM:SS | 时间值 持续时间值 |
year | 1字节 | 1901 至2155 | YYYY | 年份值 |
datetime | 8字节 | 1000-01-01 00:00:00 9999-12-31 23:59:59 | YYYY-MM-DD hh:mm:ss | 混合日期时间值 |
timestamp | 4字节 | 1970-01-01 00:00:01 2038-01-19 03:14:07 | YYYY-MM-DD hh:mm:ss | 混合日期时间值时间戳 |
字符串类型
类型 | 大小 | 用途 |
---|---|---|
char | 0 -255 字节 | 定长字符串 |
varchar | 0 -65,535 字节 | 变长字符串 |
tinyblob | 0 -255 字节 | 不超过255个字符的二进制字符串 |
tinytext | 0 -255 字节 | 短文本字符串 |
blob | 0 -65,535 字节 | 二进制形式的长文本数据 |
text | 0 -65,535 字节 | 长文本数据 |
mediumblob | 0 -16,777,215 字节 | 二进制形式中等长度文本数据 |
mediumtext | 0 -16,777,215 字节 | 中等长度文本数据 |
longblob | 0 -4,294,967,295 字节 | 二进制极大长度文本数据 |
longtext | 0 -4,294,967,295 字节 | 极大长度文本数据 |
DDL语句(数据定义语句)
注释
操作类型 数据库对象
库操作
# 查询所有数据库
SHOW DATABASES;
# 查询当前数据库
SELECT DATABASE();
# 创建数据库
CREATE DATABASE 选项 数据库名 字符集 排序规则;
# 如果存在不创建
if not exists
# 设置默认字符集 推荐'utf8mb4'
default charset 字符集名
# 删除数据库
DROP DATABASE 选项 数据库名;
# 如果存在删除
if exists
# 更换操作数据库
USE 数据库名
表操作
- 查询
# 查询当前数据库所有表
SHOW TABLES;
# 查询表结构
DESC 表名;
# 查询指定表的建表语句
SHOW CREATE TABLE 表名;
- 创建
# 创建表结构
CREATE TABLE 表名(
字段 字段类型 COMMENT '字段注释',
字段 字段类型 COMMENT '字段注释'
) COMMENT '表注释';
- 修改
# 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) COMMENT 注释 约束;
# 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
# 修改字段名和数据类型
ALTER TABLE 表名 CHANGE 字段名 修改的字段名 类型(长度) COMMENT 注释 约束;
# 删除字段
ALTER TABLE 表名 DROP 字段名;
# 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
- 删除
# 删除表
DROP TABLE 表名;
# 删除表并重建表结构
TRUNCATE TABLE 表名;
DML语句(数据操作语句)
注释
操作类型 数据库记录
增加数据
# 给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2) VALUES(值1,值2);
# 给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2);
修改数据
# 修改指定条件数据
UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2 WHERE 条件;
删除数据
# 删除指定条件数据
DELETE FROM 表名 WHERE 条件;
DQL语句(数据查询语句)
注释
操作类型 数据表数据
基础查询
# 查询所有字段
select * from 表名;
# 查询部分字段
select 字段1,字段2 from 表名;
# 字段设置别名
select 字段1 别名, 字段2 as 别名 from 表名;
# 去除重复记录
select distinct 字段 from 表名;
条件查询
基础查询后加where
为条件查询
- 比较运算符
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
between 2 and 3 | 在某个范围内(含最小,最大值) |
in( 1,2,3,4) | 等于in列表中的值 |
link ' 占位符' | 根据占位符模糊匹配(_单个字符,%任意字符) |
is null | 等于null |
- 逻辑运算符
比较运算符 | 功能 |
---|---|
and 或&& | 并且(多个条件同时成立) |
or 或 || | 或者(多个条件同时成立) |
not 或! | 非(不是) |
- 实例
# 查询年龄(age)小于18的所有
select * from table where age > 18
# 查询某个范围内的所有字段
select * from table where num between 13 and 20;
# 模糊查询最后一位是8的数字
select * from table where num like '%8'
聚合函数
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
- 实例
# 查询总记录数
select count(* / 1) from table;
# 查询性别(gender)为女的年龄(age)总和
select sum(age) from table where gender = '女';
分组查询
where
为分组前过滤 having
为分组后过滤
- 语法
select * from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;
- 实例
# 查询年龄(age)小于45,男女性别(gender)员工数量
select gender,count(*) from table where age < 45 group by gender;
排序查询
asc
为升序(默认) desc
为降序
- 语法
select * from 表名 where 条件 order by 字段1 排序方式1 , 字段2 排序方式2;
- 实例
# 按照年龄(age)进行升序,年龄(age)如果相同,按照身高(height)降序
select * from 表名 where 条件 order by age asc , height desc;
分页查询
- 注意
- 起始索引从
0
开始(起始索引
=查询页码
-1
) limit
为MySQL
中实现方法- 查询第一页可以简写
limit 10
- 起始索引从
- 语法
select * from 表名 limit 起始索引, 查询记录数;
- 实例
# 查询第一页数据
select * from 表名 limit 10;
# 查询第二页数据
select * from 表名 limit 10, 10;
执行顺序
SELECT 字段1 AS 别名 (5)
FROM 表名; (1)
WHERE : 条件查询 (2)
GROUP BY : 分组字段列表 (3)
HAVING : 分组后条件列表 (4)
ORDER BY : 陪许字段列表 (6)
LIMIT : 分页 (7)
DCL语句(数据控制语句)
注释
操作类型 访问权限
安全级别