String 类型

  • CHAR 固定长度字符串
    • char会开辟指定个字符的一个储存空间,假如存放一个字符A,剩余的字符空着放那,别的字符也不可以使用。
  • VARCHAR 可变长度字符串 max:64KB
    • varchar会根据我们存放的字符的长度来开辟存储空间。
  • LONGTEXT 长文本串 max:4GB

整数类型

  • TINYINT
    • 占用字节:1B,数值范围:[-128, 127]
  • UNSIGNED TINYINT (无符号微整型)
    • 数值范围:[0, 255]
  • SMALLINT
    • 占用字节:2B,数值范围:[-32K, 32K]
  • MEDIUMINT
    • 占用字节:3B,数值范围:[-8M, 8M]
  • INT
    • 占用字节:4B,数值范围:[-2B, 2B]
  • BIGINT
    • 占用字节:8B,数值范围:[-9Z, 9Z]

浮点数类型

  • DECIMAL(p,s)
    • 用于存储定点数 ,p决定存储数字的最大位数(包括整数位数和小数位数),s决定小数点后的位数
  • FLOAT
    • 占用字节:4B
  • DOUBLE
    • 占用字节:8B
  • FLOAT和DOUBLE可用于存储对精度要求不高的数据

布尔类型

BOOLEAN/BOOL 存储True或FALSE

日期和时间类型

  • DATE
    • 只能存储到日期,无法存储具体时间
  • TIME
  • DATETIME
    • 占用字节:8b
  • TIMESTAMP(时间戳)
    • 占用字节:4b,只能存储到2038年以前的时间
  • YEAR
    • 用于存储四位数的年份

JSON类型

创建JSON对象(假设表中已有JSON类型的属性)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 法1
UPDATE products
SET properties = '
{
"dimensions" : [1,2,3],
"weight" : 10,
"manufacturer":{"name":"sony"}
}
'
WHERE product_id = 1;

-- 法2
UPDATE products
SET properties = JSON_OBJECT(
'weight',10,
'dimensions',JSON_ARRAY(1,2,3),
'manufacturer',JSON_OBJECT('name','sony')
)
WHERE product_id = 1

JSON函数

  • JSON_OBJECT(参数1,参数2,…,参数n)
    • 参数1传入键(用引号括起的字符串)
    • 参数2传入值
  • JSON_ARRAY(参数1,…,参数n)
    • 用于建设长度为n的数组,传入的参数为数组内的值
  • JSON_EXTRACT(参数1,参数2)
    • 参数1为JSON属性
    • 参数2为要读取的键值对
    • 示例:JSON_EXTRACT(properties,"$.weight"), $ 表示当前读取的JSON对象
    • 简化写法:properties->’$.weight’,->> 可用于读取不带引号的字符串
  • JSON_SET(参数1,键1,值1,…)
    • 参数1传入JSON属性的列名
    • 键1,值1,分别传入要修改的键和修改的值,键要用’$.键名’表示
  • JSON_REMOVE(参数1,参数2,…)
    • 参数1传入JSON属性
    • 参数2以后传入要删除的键