339 字
2 分钟
MySQL学习笔记 (2)
NOTE基于 MySQL 26.7。数据类型
数据类型
创建表时要为每一列指定类型。常用类型:
| 类型 | 含义 |
|---|---|
CHAR(n) | 定长字符串 |
VARCHAR(n) | 变长字符串,最长 n |
INTEGER / INT | 整数 |
SMALLINT | 较小整数 |
BIGINT | 较大整数 |
NUMERIC(p,s) / DECIMAL(p,s) | 精确小数 |
REAL / DOUBLE PRECISION | 浮点数 |
DATE | 日期 |
TIME | 时间 |
TIMESTAMP | 日期 + 时间 |
BOOLEAN | 真 / 假 |
金额用 NUMERIC,例如 NUMERIC(12, 2) 表示最多 12 位数字,其中 2 位小数。
CHAR 不足长度时会补空格。空字符串 '' 和 NULL 不是一回事。
日期时间
日期和时间可以写成:
DATE '2026-09-01'TIME '14:30:00'TIMESTAMP '2026-09-01 14:30:00'当前日期和时间:
CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP取出年份、月份:
EXTRACT(YEAR FROM hire_date)EXTRACT(MONTH FROM hire_date)布尔
BOOLEAN 的值是 TRUE、FALSE,也可以是 NULL。
SELECT * FROM employee WHERE is_active = TRUE;CAST
CAST 用来转换类型:
CAST(emp_id AS CHAR(10))CAST('2026-09-01' AS DATE)CAST(3.14 AS NUMERIC(4, 2))COALESCE(a, b, …) 返回第一个不是 NULL 的值。
字符串
连接字符串用 CONCAT:
SELECT CONCAT(last_name, ', ', first_name) AS full_nameFROM employee;如果某一段是 NULL,整个 CONCAT 的结果也是 NULL。可以用 COALESCE 把 NULL 换成空字符串:
CONCAT(last_name, ', ', COALESCE(middle_name, ''))常用函数:
| 函数 | 作用 |
|---|---|
CHAR_LENGTH(s) | 字符个数 |
SUBSTRING(s FROM start FOR len) | 截取,起点从 1 开始 |
UPPER(s) / LOWER(s) | 大小写 |
SUBSTRING('abcdef' FROM 2 FOR 3) -- 结果是 bcd参考
MySQL学习笔记 (2)
https://blog.chuwu.top/posts/sql/mysql2/