MySQL & PostgreSQL 常用数据类型 MySQL & PostgreSQL常用数据类型数字类型整数类型定点数类型(任意精度)浮点数类型序数类型 布尔类型字符串类型日期 / 时间类型时间间隔 JSON 类型位串类型 时间运算示例JSON 类型示例创建表格检索 JSON 数据MySQLPostgreSQL MySQL & PostgreSQL
MySQL: 全球最受欢迎的开源数据库
PostgreSQL: 全球最先进的开源关系数据库
本文章所有资料均来自 MySQL 5.7 文档1与 PostgreSQL 10 文档2。
常用数据类型 数字类型 整数类型*在MySQL中,SMALLINT、INT和BIGINT的参数为显示宽度。
(precision >= scale),其中 precision 为数字位数,scale 为小数位数。
浮点数类型precision 为以二进制位表示的最低可接受精度。
*在MySQL中,DOUBLE为双精度浮点数(8字节)。
序数类型*在PostgreSQL中,会在创建表格之前创建名为tablename_colname_seq的序列发生器,创建表格之后将该序列与tablename表的colname列相关联。
布尔类型状态为真的值为 TRUE* 或 '1',状态为假的值为 FALSE* 或 '0'。3
*在MySQL中,TINYINT为1字节整数,其参数为显示宽度。
*在MySQL中,TRUE是1的别名,FALSE是0的别名。
字符串类型length 为字符个数。
在单引号前加 n 或 N 前缀表示 NCHAR 类型字符串,例如 n'Hello, World!' 或 N'Hello, World!'。3
日期 / 时间类型precision: (0, 6),其为秒的小数位数。
通过使用类型关键字,可直接将字面量指定为关键字对应的类型。3
*在MySQL中,DATETIME类型和TIMESTAMP类型都表示时间戳。其中DATETIME类型的年份的范围为(0001,9999),TIMESTAMP类型的年份的范围为(1970,2038)。
时间间隔在时间运算中,使用 INTERVAL 关键字表示时间间隔,间隔单位如下表所示。5
可直接将字符串转换为 JSON 类型,例如 CAST('[{"key":"value"}]' AS JSON)。6
位串类型length 为位个数。
时间运算示例可以使用 + 和 - 运算符在表达式中执行时间运算。其中 + 运算符的一侧应为日期 / 时间类型值,另一侧应为时间间隔表达式。- 运算符的左侧只能是日期 / 时间类型值,右侧只能是时间间隔表达式。5
SELECT INTERVAL '1' YEAR + DATE '1970-01-01' AS interval_year, DATE '1970-01-01' - INTERVAL '1' MONTH AS interval_month, TIMESTAMP '1970-01-01T00:00:00' + INTERVAL '1' DAY AS interval_day, TIMESTAMP '1970-01-01T00:00:00' - INTERVAL '1' HOUR AS interval_hour, INTERVAL '1' MINUTE + TIME '00:00:00' AS interval_minute, TIME '00:00:00' - INTERVAL '1' SECOND AS interval_second; JSON 类型示例 创建表格 DROP TABLE IF EXISTS my_table CASCADE; CREATE TABLE my_table ( id SERIAL, json_data JSON, PRIMARY KEY (id) ); INSERT INTO my_table(json_data) VALUES ('{"key":"1''s JSON","value":["A",0,false]}'), ('{"key":"2''s JSON","value":["B",1,true]}'), ('{"key":"3''s JSON","value":["C",2,null]}'); SELECT * FROM my_table; 检索 JSON 数据-> 和 ->> 操作符表示获取 JSON 值的指定元素。其中 -> 操作符返回 JSON 对象,->> 操作符返回文本对象。
MySQL在 MySQL 中,-> 和 ->> 操作符左侧只能是 JSON 类型的列的标识符。右侧的操作数只能是字符串类型,为要匹配的 JSON 路径。7 在路径中使用 $ 符号表示当前 JSON 对象。8
DROP VIEW IF EXISTS my_view CASCADE; CREATE VIEW my_view AS ( SELECT -- 不可连续使用 -> 或 ->> 操作符 json_data->>'$.key' AS string_to_text, json_data->'$.value[0]' AS string_to_json, json_data->'$.value[1]' AS number_to_json, json_data->>'$.value[2]' AS boolean_to_text FROM my_table ); SELECT * FROM my_view; PostgreSQL在 PostgreSQL 中,-> 和 ->> 操作符左侧为 JSON 类型的列的标识符或 JSON 对象。右侧的操作数为整数类型或字符串类型,只能是一个索引 / 键值。9
DROP VIEW IF EXISTS my_view CASCADE; CREATE VIEW my_view AS ( SELECT -- 不可对 ->> 操作符返回的对象使用 -> 或 ->> 操作符 json_data->>'key' AS string_to_text, -- 可连续使用 -> 操作符 json_data->'value'->0 AS string_to_json, json_data->'value'->1 AS number_to_json, -- 可对 -> 操作符返回的对象使用 ->> 操作符 json_data->'value'->>2 AS boolean_to_text FROM my_table ); SELECT * FROM my_view;MySQL 5.7: Data Types ??
PostgreSQL10: Data Types ??
MySQL 5.7: Literal Values ?? ?? ?? ?? ??
MySQL 5.7: The National Character Set ?? ?? ?? ?? ?? ??
MySQL 5.7: Expressions ?? ??
MySQL 5.7: Cast Functions and Operators ??
MySQL 5.7: JSON Function Reference ??
MySQL 5.7: The JSON Data Type ??
PostgreSQL10: JSON Functions and Operators ??
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #MySQL #amp #postgresql #常用数据类型