一. 数值类型
1 整数类型
类型 | 字节 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|
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或INTEGER | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | 标准整数(最常用) |
BIGINT | 8 | -2^63 ~ 2^63-1 | 0 ~ 2^64-1 | 大整数 |
2 浮点数类型
类型 | 字节 | 描述 |
---|---|---|
FLOAT(m,d) | 4 | 单精度浮点,m总位数,d小数位 |
DOUBLE(m,d) | 8 | 双精度浮点 |
DECTMAL |
举例
问题1: age (年龄) 后面怎么加呢?
答: age int 年龄的范围一般在这个之内
age TINYINT UNSIGNED ( 因为年龄不存在负数,所以是无符号的要用到 UNSIGNED )
问题2:描述学员的分数(score)
解析:分数一般是 0~100 之间 ,其中包含小数
答: score double(4,1)
double 里面要指定两个参数,4代表整体长度,1代表小数位数。
二. 字符串类型
1 基本字符串类型
类型 | 最大长度 | 描述 |
---|---|---|
CHAR(n) | 255字符 | 定长字符串,空格填充 |
VARCHAR(n) | 65,535字节 | 变长字符串,按需存储 |
TINYTEXT | 255字节 | 短文本 |
TEXT | 65,535字节 | 常规文本 |
MEDIUMTEXT | 16MB | 中等长度文本 |
LONGTEXT | 4GB | 长文本 |
2 二进制数据类型
类型 | 描述 | 用途 |
---|---|---|
BINARY(n) | 定长二进制数据 | 存储二进制编码 |
VARBINARY(n) | 变长二进制数据 | 存储可变二进制数据 |
BLOB | 二进制大对象 | 存储图片、PDF等文件 |
TINYBLOB | 大小:0-255 bytes | 不超过255个字符的二进制数据 |
使用 CHAR 和 VARCHAR 的时候后面都要跟上一个参数,这个参数表示能够存储的最大长度是多长。
CHAR 固定长度,不足部分用空格填充,VARCHAR可 变长度,只占用实际需要的空间
三. 日期时间类型
类型 | 格式 | 范围 | 描述 |
---|---|---|---|
DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | 日期值 |
TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 时间值或持续时间 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | 混合日期和时间值 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 ~ 2038-01-19 3:14:07 | 混合日期和时间值,时间戳 |
YEAR | YYYY | 1901 ~ 2155 | 年份值 |
四. 简答题
根据需求创建表(设计合理的数据类型)
设计一张员工信息表,要求如下:
- 编号(纯数字)
- 员工工号(字符串类型,不超过10)
- 员工姓名(字符串类型,长度不超过10位)
- 性别
- 身份证号(二代身份证号18位,身份证中有X这样的字符)
- 入职时间(取值年月日即可)
答
1 | create table emp( |