1. 数值类型
Int (TINYINT, SMALLINT, MEDIUMINT,INT,BIGINT)
默认是:signed
unsigned 无符号,不能取负数
ZEROFILL 修饰符规定 0(不是空格)可以用来真补输出的值。使用这个修饰符可以阻止
MySQL 数据库存储负值
zerofill只是在查询时的格式化输出, 数据库内部存储的还是1而不是0001
not null与default:
not null即值不能为null, 就是写null进去, 结果出错,判断时用 is
default默认值
当没有给某字段显式赋值时,
就用这个默认值, 默认为null
auto_increment 自动增长,一般只对整型指定,一张表最多一个,并且一般为主键索引(key),unique
select last_insert_id();
--取自动增长列的值
Decimal,numeric
decimal(m,d) 可简写成dec
用来存钱,salry
dec(5,2) , 最多共5位,其中一定2位小数,
整数位最多3位, 5为精度, 2为标度。会4舍5入
Float
float 单精度,4B
real double double precision 均是 double ,8B
注意:用float时最好指定精度,不然查询会出错
UNSIGNED
和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用。并且效果与 INT 数据类型相同。
2.字符串类型
MySQL
提供了 8 个基本的字符串类型,可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据。
varchar(M) charset为utf8时, M取值为[0, 21???]
char(8)存‘ab‘, 占8B
varchar(8)存的是‘ab‘, 占3B
varchar(8)
-- 8个英文或中文字符
个人简介、微博内容用varchar,
文字量不是特别大就可用varchar而不用text
select length(‘中国人’);
text, blod,enum,set (均没有默认值)
- text 存大量文字如新闻内容, 不区分大小写, 搜索速度稍慢
- blob(large binary object), 区分大小写
- enum 一次只能选一个成员
- set 与enum类似, 但一次可选多个成员
3.日期时间型
datetime 8B
date 4B
time 4B
year 1B
timestamp 4B
select now();
select curdate();
select curtime();
timestamp与时区相关
插入时: 先转成本地时区后存放 取出时: 先转成本地时区后显示