MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
1. 数值类型
MySQL支持所有标准SQL数值数据类型:INTEGER,SMALLINT,DECMAL,NUMERIC,FLOAT,DOUBLE 等
INT
是 INTEGER 的缩写;DEC
是 DECIMAL 的缩写;
BIT
数据类型保存一位;
不同类型的存储大小和范围:
- TINYINT:1字节;0-255
- SMALLINT:2字节;0-65535
- INT 或 INTEGER:4字节;0-4 296 967 295
- BIGINT:8字节
- FLOAT:4字节
- DOUBLE:8字节
注意:使用时可以指定数据的十进制位数!
2. 日期和时间类型
日期常用的类型为:DATE
,TIME
,YEAR
和 DATETIME
数据格式如下:
- DATA:YYYY-MM-DD
- TIME:HH : MM : SS
- YEAR:YYYY
- DATATIME:YYYY-MM-DD HH:MM:SS
3. 字符串类型
字符串包括:CHAR
,BINARY
,VARCHAR
,TEXT
,BLOG
等
一般情况下使用较多的是 CHAR
和 VARCHAR
,使用时可以指定最大长度,如 CHAR(10)
,CHAR 允许的最大长度为 255,超过 25 后选用 VARCHAR。
当空间消耗相对并不是影响因素的重点时,尽量选取CHAR类型,因为在其他方面,CHAR类型都有着或多或少的优势。当空间消耗成为了很大的影响因素以后,我们则考虑使用VARCHAR类型。
4. 应用举例
创建一个 宠物管理 数据库:
CREATE TABLE pets(
# id 为 11 位的数字
id INT(11) NOT NULL,
# name 为 20 位以内的字符串
name VARCHAR(20),
# 性别是一个字符 'f' or 'm'
sex CHAR(1),
# 出生日期为 DATA 类型
birth DATE
);
查看数据包的描述:
DESC pets;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
插入数据:
INSERT INTO pets
VALUE (1, 'Jerry', 'f', '2021-03-10'),
(2, 'Tom', 'm', '2021-03-05');
查看数据表:
SELECT * FROM pets;
+----+-------+------+------------+
| id | name | sex | birth |
+----+-------+------+------------+
| 1 | Jerry | f | 2021-03-10 |
| 2 | Tom | m | 2021-03-05 |
+----+-------+------+------------+