一、MySQL数据类型
1. 整数
类型 | 含义 | 大小 |
tinyint | 小数据 | 1字节 范围(-128~127) |
smallint | 较小数据 | 2字节,范围(-32768~32767 |
mediumint | 中等数据 | 3字节,范围(-8388608~8388607) |
int | 最常用的标准数据 | 4字节,范围(-2147483648~2147483647) |
bigint | 大的数据 | 8字节,范围(±9.22*10的18次方) |
2.浮点数
类型 | 含义 | 大小 |
float(m, d) | 浮点数 | 4字节,m为数字的个数,d为小数位个数 |
double(m, d) | 双精度浮点数 | 8字节m为数字的个数,d为小数位个数 |
decimal(m, d) | 字符串形式浮点数,金融使用 | m为数字的个数,d为小数位个数 |
注意:
举个例子folat(5,3)只能储存类似 12.345 这样小于等于 99.999 的数,
- 如果插入 123.34(大于99.999) ,得到的结果为 99.999
- 如果插入12.245 得到的结果为 12.245
2. 字符串
类型 | 含义 | 大小 |
char(n) | 固定大小的字符串 | 0-255字节 |
**varchar(n) ** | 改变字符(最常用) | 2字节 |
tinytext | 微型文本 | 2^8-1字节 |
text | 标准文本 | 2^16-1字节 |
mediumtext | 中等文本 | 2^24 -1 字节 |
longtext | 超大文本 | 2^32-1 字节 |
- char(n) 和 varchar(n)中的 n 代表字符的个数,不是字节的个数,所以所以 使用 utf8 的编码标准实际会占用 n * 3 个字节
英文字母和中文汉字在不同字符集编码下的字节数 - char(n) 和 varchar(n)的区别:char是固定的占255个字节,varchar是变化的,占 n*编码字节 + 1 个字节
- 超过char(n) 和 varchar (n),n 的长度后字符串会被截断,
- char在储存的时候回截断尾部的空格 ,其他不会
- varchar会使用1-3个字节来储存长度,text 不会
3.日期和时间
类型 | 含义 | 常用 |
date | 日期格式:YYYY-MM-DD | |
time | 时间格式:HH:mm:ss | |
year | 年份:YYYY | |
datetime | YYYY-MM-DD HH:mm:ss | 常用 |
timestamp | 时间戳 1970.1.1到现在的毫秒数 | 常用 |
注意: datetime 而不是 datatime !!
4. 其他类型
- enum 枚举,
最多包含65535个不同的成员,如果该列可以有null值,null就是默认值,如果 not null 第一行的值就是默认值 - set(类似选项框)
最多64个选择项,插入的值只能是定义是选项中的值。
二、字段属性总结。
1. auto_increment 自增
- 下一个插入的值为上一个值+1 ,一般用于id
- 每个表只能有一个自增,id定义如下(非空,自增,主键)
id int not null auto_increment primary key;
2.binary
binary属性只用于char和varchar排序值。当为列指定了该属性时,将以区分大小写的方式排序。与之相反,忽略binary属性时,将使用不区分大小写的方式排序。例如:
复制代码代码如下:
hostname char(25) binary not null
3. default 默认值
设置默认值
代码如下
sex enum("男","女") not null defaut "男";
4. index 添加索引
索引可以极大地提高查询效率
- 如果其他的元素都相同,添加索引可以加速数据库的查询,
- 索引一个列可以为该列创建一个有序的键数组,与搜索整个没有索引的表相比,性能提升.
- 只索引了名字的前7个字符,因为可能不需要其它字母来区分不同的名字。因为使用较小的索引时性能更好,所以应当在实践中尽量使用小的索引
create table employees
(
id varchar(9) not null,
firstname varchar(15) not null,
lastname varchar(25) not null,
email varchar(45) not null,
phone varchar(10) not null,
index lastname(lastname(7)),
primary key(id)
);
4. 我们也可以利用MySQL的create index命令在创建表之后增加索引:
create index lastname on employees (lastname(7));
5. not null 非空
null数据无法添加
6. null 可空
null 数据可添加
7.primary key
主键
8. unique ,特殊不可重复
9. zerofill 零填充
zerofill可以适用于任何数据类型
例如,
例如,无符号int的默认宽度是10;因此,当“零填充”的int值为4时,将表示它为0000000004。例如:
orderid int unsigned zerofill not null
10.unsinged 无符号
- UNSIGNED
UNSIGNED属性就是将数字类型无符号化,与C、C++这些程序语言中的unsigned含义相同。例如,INT的类型范围是-2 147 483 648 ~ 2 147 483 647, INT UNSIGNED的范围类型就是0 ~ 4 294 967 295
拓展:阿里巴巴手册的必须五个字段