附录
定期数据源
中国信通院(CAICT)权威发布,包括白皮书、深度观察、权威数据和市场研究报告
数据库规范
命名规范
数据库名、表名、字段名 | 其它约束 | |
---|---|---|
MySQL | 大小写不敏感。建议小写,用_连接,不能以数字开头。 | |
Oracle | 大小写敏感。要求大写。 | |
Postgres | 大小写敏感。要求小写。 |
异构数据类型转化
数据类型
SQLite
SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。
您可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。
SQLite 存储类
每个存储在 SQLite 数据库中的值都具有以下存储类之一:
存储类 | 描述 |
---|---|
NULL | 值是一个 NULL 值。 |
INTEGER | 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 |
REAL | 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。 |
TEXT | 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储。 |
SQLite 的存储类稍微比数据类型更普遍。INTEGER 存储类,例如,包含 6 种不同的不同长度的整数数据类型。
SQLite 亲和(Affinity) 类型
SQLite 支持列的亲和类型概念。任何列仍然可以存储任何类型的数据,当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式。SQLite 目前的版本支持以下五种亲缘类型:
亲和类型 | 描述 |
---|---|
TEXT | 数值型数据在被插入之前,需要先被转换为文本格式,之后再插入到目标字段中。 |
NUMERIC | 当文本数据被插入到亲缘性为 NUMERIC 的字段中时,如果转换操作不会导致数据信息丢失以及完全可逆,那么 SQLite 就会将该文本数据转换为 INTEGER 或 REAL 类型的数据,如果转换失败,SQLite 仍会以 TEXT 方式存储该数据。对于 NULL 或 BLOB 类型的新数据,SQLite 将不 做任何转换,直接以 NULL 或 BLOB 的方式存储该数据。需要额外说明的是,对于浮点格式的常量文本,如"30000.0",如果该值可以转换为 INTEGER 同时又不会丢失数值信息,那么 SQLite 就会将其转换为 INTEGER 的存储方式。 |
INTEGER | 对于亲缘类型为 INTEGER 的字段,其规则等同于 NUMERIC,唯一差别是在执行 CAST 表达式时。 |
REAL | 其规则基本等同于 NUMERIC,唯一的差别是不会将"30000.0"这样的文本数据转换为 INTEGER 存储方式。 |
NONE | 不做任何的转换,直接以该数据所属的数据类型进行存储。 |
SQLite 亲和类型(Affinity) 及类型名称
下表列出了当创建 SQLite3 表时可使用的各种数据类型名称,同时也显示了相应的亲和类型:
数据类型 | 亲和类型 |
---|---|
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8 | INTEGER |
CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOB | TEXT |
BLOB no datatype specified | NONE |
REAL DOUBLE DOUBLE PRECISION FLOAT | REAL |
NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIME | NUMERIC |
Boolean 数据类型
SQLite 没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)。
Date 与 Time 数据类型
SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。
存储类 | 日期格式 |
---|---|
TEXT | 格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。 |
REAL | 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。 |
INTEGER | 从 1970-01-01 00:00:00 UTC 算起的秒数。 |
您可以以任何上述格式来存储日期和时间,并且可以使用内置的日期和时间函数来自由转换不同格式。
SqlServer --> MySQL
表格 4 SqlServer --> MySQL 数据类型转化表
编号 | SqlServer | ToMySQL | MySQL |
---|---|---|---|
1 | binary(50) | LONGBLOB | binary |
2 | bit | CHAR(1) | bit |
3 | char(10) | VARCHAR(10) | char |
4 | date | VARCHAR(10) | date |
5 | datetime | UNKNOWN | datetime |
6 | datetime2(7) | VARCHAR(27) | datetime |
7 | datetimeoffset(7) | VARCHAR(34) | datetime |
8 | decimal(18,0) | BIGINT | decimal |
9 | float | DOUBLE | float |
10 | nchar(10) | Varchar(10) | nvarchar(10) |
11 | numeric(18,0) | BIGINT | real |
12 | nvarchar(50) | VARCHAR(50) | nvarchar(50) |
13 | nvarchar(MAX) | MEDIUMTEXT | nvarchar |
14 | real | DOUBLE | real |
15 | smallmoney | DOUBLE | decimal(10,4) |
16 | text | MEDIUMTEXT | text |
17 | time(7) | VARCHAR(16) | time |
18 | timestamp | LONGBLOB | timestamp |
19 | varbinary(50) | LONGBLOB | varbinary |
20 | varbinary(MAX) | LONGBLOB | varbinary |
21 | varchar(MAX) | MEDIUMTEXT | varchar |
22 | uniqueidentifier | VARCHAR(36) | VARCHAR(36) |
23 | geography | LONGBLOB | LONGBLOB |
24 | geometry | LONGBLOB | LONGBLOB |
25 | hierarchyid | LONGBLOB | LONGBLOB |
26 | bigint | BIGINT | bigint |
27 | image | LONGBLOB | longblob |
28 | int | INT | int |
29 | money | DECIMAL(19,4) | decimal(19,4) |
30 | ntext | MEDIUMTEXT | mediumtext |
31 | smalldatetime | DATETIME | datetime |
32 | smallint | INT | int |
33 | sql_variant | TEXT | text |
34 | tinyint | INT | int |
35 | Varchar(50) | VARCHAR(50) | Varchar(50) |
36 | xml | MEDIUMTEXT | mediumtext |
MySQL --> SqlServer
表格 5 MySQL 到 SqlServer 数据类型转化表
编号 | MySql | ToSqlServer | SqlServer |
---|---|---|---|
1 | DECIMAL/DECIMAL(10) | BIGINT | DECIMAL |
2 | BLOB | VARCHAR(100) | IMAGE |
3 | BLOB(10) | VARCHAR(100) | IMAGE |
4 | BINARY | UNKNOWN | BINARY |
5 | LONGBLOB | VARCHAR(100) | IMAGE |
6 | MEDIUMBLOB | VARCHAR(100) | IMAGE |
7 | TINYBLOB | VARCHAR(100) | IMAGE |
8 | VARBINARY(10) | VARCHAR(100) | VARBINARY |
9 | DATE | DATETIME | DATE |
10 | TIME | DATETIME | TIME |
11 | TIMESTAMP | DATETIME | TIMESTAMP |
12 | YEAR | DATETIME | INT |
13 | DECIMAL(10) | BIGINT | DECIMAL |
14 | DOUBLE | FLOAT(53) | REAL |
15 | REAL | FLOAT(53) | REAL |
16 | CHAR | VARCHAR | CHAR |
17 | NVARCHAR | VARCHAR | NVARCHAR |
18 | TEXT | VARCHAR | TEXT |
19 | TINYTEXT | VARCHAR | TEXT |
20 | BIT | VARCHAR | BIT |
21 | ENUM | VARCHAR | VARCHAR2 |
22 | SET | VARCHAR | VARCHAR2 |
23 | GEOMETRY | UNKNOWN | TEXT |
24 | GEOMETRYCOLLECTION | UNKNOWN | TEXT |
25 | MULTILINESTRING | UNKNOWN | TEXT |
26 | LINESTRING | UNKNOWN | TEXT |
27 | MULTIPOINT | UNKNOWN | TEXT |
28 | MULTIPOLYGON | UNKNOWN | TEXT |
29 | POINT | UNKNOWN | TEXT |
30 | POLYGON | UNKNOWN | TEXT |
31 | INT | INT | INT |
32 | VARCHAR(20) | VARCHAR(20) | VARCHAR(20) |
33 | DATETIME | DATETIME | DATETIME |
34 | DATETIME(6) | DATETIME | DATETIME |
35 | FLOAT | FLOAT | FLOAT |
36 | INT(8) | INT | INT |
37 | MEDIUMINT(10) | INT | INT |
38 | SMALLINT(2) | INT | INT |
39 | TINYINT(2) | INT | INT |
40 | LONGTEXT | TEXT | TEXT |
41 | MEDIUMTEXT | TEXT | TEXT |
本章参考
- 异构关系数据库(Sqlserver 与 MySql)之间的数据类型转换参考 https://www.cnblogs.com/JoeyWong/p/8660233.html
- 异构关系数据库(MySql 与 Oracle)之间的数据类型转换参考 https://www.cnblogs.com/JoeyWong/p/8660174.html
- 异构关系数据库(Sqlserver 与 Oracle)之间的数据类型转换参考 https://www.cnblogs.com/JoeyWong/p/8660217.html
- SQLite 数据类型 https://www.runoob.com/sqlite/sqlite-data-types.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论