SQL 数据类型

字符串类型 STRINGS

1
2
3
4
5
6
CHAR()          -- 存储固定长度字符
VARCHAR() -- 存储可变长度字符 ~64KB
MEDIUMTEEXT -- 存储很长的字符 16MB
LONGTEXT -- 存储巨长的字符 4GB
TINYTEXT -- 存储短短的字符 255bytes
TXT -- 64KB

整数类型 INTEGERS

1
2
3
4
5
6
TINYINT             -- 1b [-128, 127]
UNSIGNED TINYINT -- [0, 255]
SMALLINT -- 2b [-32K, 32K]
MEDIUMINT -- 3B [-8M, 8M]
INT -- 4b [-2B, 2B]
BIGINT -- 8b [-9Z, 9Z]

小数类型 RATIONALS

1
2
3
4
5
6
7
DECIMAL(p, s)   DECIMAL(9, 2) => 1234567.89 -- 小数点前有七位,小数点后有两位
DEC
NUMERIC
FIXED

FLOAT -- 4b
DOUBLE -- 8b

布尔类型 BOOLEANS

1
2
3
4
5
6
7
8
9
10
BOOL
BOOLEAN

UPDATE posts
SET is_published = 1

OR

UPDATE posts
SET is_published = TRUE

枚举类型 ENUMS

1
2
-- 在设定数据时只能输入'small','medium','large'
ENUM('small','medium','large')

时间日期类型 DATE/TIME

1
2
3
4
5
DATE        -- 日期
TIME -- 时间
DATETIME -- 8b 日期时间
TIMESTAMP -- 4b (up to 2038)
YEAR -- 年份

二进制长对象 BLOBS

1
2
3
4
5
00 用于存储长二进制数据
TINYBLOB -- 255b
BLOB -- 65KB
MEDIUMBLOB -- 16MB
LONGBLOB -- 4GB

JSON

创建JSON数据

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

-- 使用函数
UPDATE products
SET properties = JSON_OBJECT(
'weight', 10,
'dimensions', JSON_ARRAY(1, 2, 3),
'manufacturer', JSON_OBJECT('name', 'sony')
)
WHERE product_id = 1;

更新JSON数据

1
2
3
4
5
6
7
8
9
-- JSON_SET函数
-- 先传递一个JSON对象,然后再进行操作
UPDATE products
SET properties = JSON_SET(
properties, -- 传递对象
'$.weight', 20,
'$.age', 10
)
WHERE product_id = 1;

删除JSON数据

1
2
3
4
5
6
7
-- JSON_REMOVE函数
UPDATE products
SET properties = JSON_REMOVE(
properties,
'$.age'
)
WHERE product_id = 1;

查询JSON数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- $表示当前表,JSON_EXTRACT(传入JSON数据, JSON数据名)
SELECT product_id, JSON_EXTRACT(properties, '$.weight')
FROM products
WHERE product_id = 1;

-- 也可以直接使用'->'获取JSON参数
SELECT product_id, properties -> '$.weight'
FROM products
WHERE product_id = 1;

-- 获取数组内的单一值
SELECT product_id, properties -> '$.dimensions[0]'
FROM products
WHERE product_id = 1;

-- ->>会使得获取数据的双引号无掉
SELECT product_id, properties ->> '$.manufacturer.name'
FROM products
WHERE product_id = 1;

SQL 数据类型
http://www.kirisamkekano.com/2023/08/28/SQL10/
作者
Ame
发布于
2023年8月28日
许可协议