MYSQL数据库
数据类型表
表 1:数值类型
| tinyint | 1 | (-128, 127) | (0, 255) | 小整数值 | |
| smallint | 2 | (-32768, 32767) | (0, 65535) | 大整数值 | |
| mediumint | 3 | (-8388608, 8388607) | (0, 16777215) | 大整数值 | |
| int | 4 | (-2147483648, 2147483647) | (0, 4294967295) | 大整数值 | |
| bigint | 8 | (-2^63, 2^63-1) | (0, 2^64-1) | 极大整数值 | |
| float | 4 | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E-38, 3.402823466 E+38) | 单精度浮点数值 | float (5,2):5 表示整个数字长度,2 表示小数个数 |
| double | 8 | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308) | 双精度浮点数值 | double (5,2):5 表示整个数字长度,2 表示小数个数 |
| decimal | — | — | — | 小数值 (精度更高) | decimal (5,2):5 表示整个数字长度,2 表示小数个数 |
表 2:字符串类型
| 字符串类型 | char | 0-255 bytes | 定长字符串 |
| varchar | 0-65535 bytes | 变长字符串 | |
| tinyblob | 0-255 bytes | 不超过 255 个字符的二进制数据 | |
| tinytext | 0-255 bytes | 短文本字符串 | |
| blob | 0-65 535 bytes | 二进制形式的长文本数据 | |
| text | 0-65 535 bytes | 长文本数据 | |
| mediumblob | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 | |
| mediumtext | 0-16 777 215 bytes | 中等长度文本数据 | |
| longblob | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 | |
| longtext | 0-4 294 967 295 bytes | 极大文本数据 |
表 3:日期类型
| 日期类型 | 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 | 混合日期和时间值,时间戳 |
一、DDL(Data Definition Language):数据定义语言
用于定义数据库和表的结构,核心是 “创建、修改、删除”。
1. 数据库操作
— 查询所有数据库
SHOW DATABASES;
— 查询当前数据库
SELECT DATABASE();
— 创建数据库(推荐带存在性检查和字符集)
CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT CHARSET utf8mb4];
— 切换数据库
USE db_name;
— 删除数据库
DROP DATABASE [IF EXISTS] db_name;
2. 表操作
— 查询当前库所有表
SHOW TABLES;
— 查询表结构
DESC table_name;
— 查询建表语句
SHOW CREATE TABLE table_name;
— 创建表
CREATE TABLE table_name (
column1 type1 [CONSTRAINT],
column2 type2 [CONSTRAINT],
PRIMARY KEY (column1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表注释';
— 修改表结构
ALTER TABLE table_name ADD column_name type [COMMENT '注释'];
ALTER TABLE table_name MODIFY column_name new_type;
ALTER TABLE table_name CHANGE old_col new_col new_type;
ALTER TABLE table_name DROP COLUMN column_name;
ALTER TABLE table_name RENAME TO new_table_name;
— 删除表
DROP TABLE [IF EXISTS] table_name;
二、DML(Data Manipulation Language):数据操作语言
用于对表中的数据进行增、删、改操作。
1. 插入数据(INSERT)
— 插入单条数据
INSERT INTO table_name (col1, col2) VALUES (val1, val2);
— 插入多条数据
INSERT INTO table_name (col1, col2)
VALUES (val1, val2), (val3, val4);
— 插入查询结果
INSERT INTO table_name (col1, col2)
SELECT col1, col2 FROM other_table WHERE condition;
2. 更新数据(UPDATE)
— 更新所有符合条件的数据
UPDATE table_name
SET col1 = val1, col2 = val2
WHERE condition;
— 注意:WHERE 条件必须加,否则会更新全表
3. 删除数据(DELETE)
— 删除符合条件的数据
DELETE FROM table_name WHERE condition;
— 清空表(自增主键会重置)
TRUNCATE TABLE table_name;
三、DQL(Data Query Language):数据查询语言
用于从表中查询数据,是最常用的 SQL 语句。
1. 基础查询
— 查询所有字段
SELECT * FROM table_name;
— 查询指定字段
SELECT col1, col2 FROM table_name;
— 去重查询
SELECT DISTINCT col1 FROM table_name;
— 别名查询
SELECT col1 AS alias1, col2 alias2 FROM table_name;
2. 条件查询(WHERE)
SELECT * FROM table_name
WHERE
col1 = val1
AND col2 > val2
OR col3 IN (val3, val4)
AND col4 LIKE '%keyword%';
3. 排序(ORDER BY)
SELECT * FROM table_name
ORDER BY col1 ASC, col2 DESC;
4. 分页(LIMIT)
— 第1页(每页10条)
SELECT * FROM table_name LIMIT 0, 10;
— 第2页
SELECT * FROM table_name LIMIT 10, 10;
5. 聚合函数
— 统计数量
SELECT COUNT(*) FROM table_name;
— 求和、平均值、最大/最小值
SELECT SUM(col1), AVG(col1), MAX(col1), MIN(col1) FROM table_name;
6. 分组查询(GROUP BY + HAVING)
SELECT col1, COUNT(*)
FROM table_name
WHERE condition
GROUP BY col1
HAVING COUNT(*) > 10;
7. 多表关联查询
— 内连接(只返回匹配的数据)
SELECT a.*, b.*
FROM table_a a
INNER JOIN table_b b ON a.id = b.a_id;
— 左连接(返回左表所有数据,右表匹配不到则为 NULL)
SELECT a.*, b.*
FROM table_a a
LEFT JOIN table_b b ON a.id = b.a_id;
四、核心总结
| DDL | 定义数据库 / 表结构 | CREATE、ALTER、DROP、TRUNCATE |
| DML | 操作表中数据 | INSERT、UPDATE、DELETE |
| DQL | 查询表中数据 | SELECT |




