mysql-笔记-数据类型

时间:2023-03-09 02:49:44
mysql-笔记-数据类型

https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

serial: SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

zerofill:如果指定numeric 列指定为 zerofill ,自动为非符号列 If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column.

bool Boolean 与tinyint(1)同,0 为 false ,非0为true; 但是 true=1 ,false=0

These types are synonyms for tinyint(1). A value of zero is considered false. Nonzero values are considered true

bigint 列不能超过:9223372036854775807

decimal[(M[,D])] [unsigned][zerofill] ---M 精度 数字的总数;D 小数的长度数值范围;M最大65,D最大30 ,如果省略,D=0,M=10 ,如果D=0,数字没有小数部分,M 不包括 小数点、+-标识;所有使用decimal列做的计算+-*/都是65的精度

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.html

时间:MySQL允许 TIME DATETIME TIMESTAMP 定义秒到6位微秒:type_name(fsp) fsp 0-6的数,如果没有fsp,默认为0

DATE:1000-01-01 到 9999-12-31 格式:YYYY-MM-DD 允许分配字符串或数字值

DATETIME[(fsp)]: 1000-01-01 00:00:00.000000 到9999-12-31 23:59:59.999999 MYSQL显示格式:YYYY-MM-DD HH:MM:SS[.fraction]  可使用 default 和 on update 定义 字段的默认值、更新到当前日期时间

TIMESTAMP[(fsp)] 1970-01-01 00:00:01.000000 UTC 到 2038-01-19 03:14:07.999999 UTC

如果 explicit_defaults_for_timestamp 不可用,如果没有明确指定值,表中第一个timestamp字段自动赋值 最近的修改日期和日间,如果字段定义不允许null值,可用指定timestamp字段值=null 存储当前日期时间

默认表中的第1列timestamp有自动初始化为当前日期 或 修改为当前日期的功能。所有timestamp列可以使用default current_timestamp / on update current_timestamp 定义这样属性

TIME[(fsp)]: 时间 范围:-838:59:59.000000 到 838:59:59.000000 mysql显示格式:HH:MM:SS[.fraction]

fsp:0-6位,如果大于6位自动为3位,秒后的小数位,默认是0

Year[(4)] 显示格式:YYYY 1901到2155 和 0000

[national]char[(M)][character set charset_name] [collate collation_name] : 固定长度字符串 右填充空格到指定长度。M :字符长度-范围:0-255 如果不指定M 则为 1

char(0) 占1个字符,只存 null 和  ''

[national] varchar(M)[character set charset_name][collate collation_name] 可变长度字符串 M 范围:0到65535

65535 字节 指所有列长度和,有效的最大长度取决于所有列长度 和 使用的字符集,utf8每个字符3个字节