mysql语句

1
2
3
4
# mysql重置自增主键id值,可以为0或者目前最小id值
ALTER TABLE table_name AUTO_INCREMENT = 0;
# 替换某个表中的字段值字符串 replace
UPDATE table_name SET 字段名 = REPLACE('str', 'from_str', 'to_str') where 字段名 like '%str%'

mysql基础

  • bool类型会被存储为TINYINT(1)
  • 设置自增主键为已有最小值开始自增:ALTER TABLE table_name AUTO_INCREMENT =1;

数据类型

https://segmentfault.com/a/1190000019447574

整型

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 个英文字母/英文符号,而汉字/中文符号最多只能存储 85255/3)个。以下类型同样可推算。
  • TEXT
    • 最多可存储 65535 byte 约等于 65KB 的文本内容。
  • MEDIUMTEXT
    • 最多可存储 16777215 byte 约等于 16MB 的文本内容。
  • LONGTEXT
    • 最多可存储 4294967295 byte 约等于 4GB 的文本内容。

日期与时间

  • TIMESTAMP
    • 时间戳,范围从 1970-01-01 00:00:01 UTC2038-01-09 03:14:07 UTCUTC 转换成东八区时间需要 +08:00),存储为自纪元(1970-01-01 00:00:00 UTC)起的秒数。
    • 虽然内部存储的是秒数,但是在读写该类型字段时都是以日期时间字符串的形式进行的,例如,查询到的实际是一个字符串 '2019-06-11 23:18:45',执行 INSERTUPDATE 操作时,也是需要传入一个日期时间字符串。
    • 时间戳类型也可以指定长度,用以表示秒级以下的精度,最高可设为 6。例如,当精度为 5 时查询或传入的字符串形式为 '2019-06-12 13:22:21.35927'

JSON

用于存储 JSON 文本,不可以指定长度,不可以设定默认值。