软件设计编写中mysql related
mysql语句
1 | # mysql重置自增主键id值,可以为0或者目前最小id值 |
mysql基础
- bool类型会被存储为TINYINT(1)
- 设置自增主键为已有最小值开始自增:ALTER TABLE
table_nameAUTO_INCREMENT =1;
数据类型
整型
MySQL 可以为整数类型指定宽度,例如 INT(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数。对于存储和计算来说,INT(1) 和 INT(20) 是相同的。只有使用 ZEROFILL 属性时,指定长度才有意义(按照指定长度进行零的填充)。
所以,在不使用 ZEROFILL 时,不需要指定整形的长度。
- TINYINT
空间占用为1 byte(8 bit) 。使用无符号类型(UNSIGNED)时,8位都是1时所表示的十进制数为255,所以其可存储的范围为0 ~ 255。使用有符号类型时,范围为-128 ~ 127。 - SMALLINT
空间占用为2 byte,可存储的无符号范围为0 ~ 65535,有符号范围为-32768 ~ 32767。 - MEDIUMINT
空间占用为3 byte,可存储的无符号范围为0 ~ 16777215,有符号范围为-8388608 ~ 8388607。 - INT
空间占用为4 byte,可存储的无符号范围为0 ~ 4294967295,有符号范围为-2147483648 ~ 2147483647。 - BIGINT
空间占用为8 byte,可存储的无符号范围为0 ~ 18446744073709551615,有符号范围为-9223372036854775808 ~ 9223372036854775807。
文本
- CHAR
- 定长字符串,设定该类型字段时需要指定长度,存储时会向右边补充空格到指定长度。
- 该类型所指定的长度是指字符的个数(无论中文/英文/中文标点/英文标点,只要是一个符号就会占用一个个数),而不是字符串所占的字节数。 例如,CHAR(6) 类型的字段用于存储字符串 “
Hello!” 和 “你好,世界!” 都是可以的。 - 该类型可设定的
最大长度为255个字符。
- VARCHAR
- 变长字符串,设定该类型字段时同样需要指定长度,长度同样是指最多可存储的字符个数。
- 可设定的最大有效长度取决于行长度限制,详见:MySQL中varchar最大长度是多少。
- TINYTEXT
- 最多可存储
255 byte的文本内容,也就是说在UTF8编码下可以存储255个英文字母/英文符号,而汉字/中文符号最多只能存储85(255/3)个。以下类型同样可推算。
- 最多可存储
- TEXT
- 最多可存储
65535 byte 约等于 65KB的文本内容。
- 最多可存储
- MEDIUMTEXT
- 最多可存储
16777215 byte 约等于 16MB的文本内容。
- 最多可存储
- LONGTEXT
- 最多可存储
4294967295 byte 约等于 4GB的文本内容。
- 最多可存储
日期与时间
- TIMESTAMP
- 时间戳,范围从
1970-01-01 00:00:01 UTC到2038-01-09 03:14:07 UTC(UTC转换成东八区时间需要+08:00),存储为自纪元(1970-01-01 00:00:00 UTC)起的秒数。 - 虽然内部存储的是秒数,但是在读写该类型字段时都是以日期时间字符串的形式进行的,例如,查询到的实际是一个字符串
'2019-06-11 23:18:45',执行INSERT或UPDATE操作时,也是需要传入一个日期时间字符串。 - 时间戳类型也可以指定长度,用以表示秒级以下的精度,最高可设为
6。例如,当精度为5时查询或传入的字符串形式为'2019-06-12 13:22:21.35927'。
- 时间戳,范围从
JSON
用于存储 JSON 文本,不可以指定长度,不可以设定默认值。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.