sequelize v5 数据类型

8 篇文章 1 订阅
1 篇文章 0 订阅

数据类型
你在模型中定义的每一列都必须具有数据类型. Sequelize 提供很多内置数据类型. 要访问内置数据类型,必须导入 DataTypes:

const { DataTypes } = require("sequelize"); // 导入内置**数据类型**

字符串

DataTypes.STRING             // VARCHAR(255)
DataTypes.STRING(1234)       // VARCHAR(1234)
DataTypes.STRING.BINARY      // VARCHAR BINARY
DataTypes.TEXT               // TEXT
DataTypes.TEXT('tiny')       // TINYTEXT
DataTypes.CITEXT             // CITEXT          仅 PostgreSQL 和 SQLite.

布尔

DataTypes.BOOLEAN            // TINYINT(1)

数字

DataTypes.INTEGER            // INTEGER
DataTypes.BIGINT             // BIGINT
DataTypes.BIGINT(11)         // BIGINT(11)

DataTypes.FLOAT              // FLOAT
DataTypes.FLOAT(11)          // FLOAT(11)
DataTypes.FLOAT(11, 10)      // FLOAT(11,10)

DataTypes.REAL               // REAL            仅 PostgreSQL.
DataTypes.REAL(11)           // REAL(11)        仅 PostgreSQL.
DataTypes.REAL(11, 12)       // REAL(11,12)     仅 PostgreSQL.

DataTypes.DOUBLE             // DOUBLE
DataTypes.DOUBLE(11)         // DOUBLE(11)
DataTypes.DOUBLE(11, 10)     // DOUBLE(11,10)

DataTypes.DECIMAL            // DECIMAL
DataTypes.DECIMAL(10, 2)     // DECIMAL(10,2)

无符号和零填充整数 - 仅限于MySQL/MariaDB
在 MySQL 和 MariaDB 中,可以将数据类型INTEGER, BIGINT, FLOAT 和 DOUBLE 设置为无符号或零填充(或两者),如下所示:

DataTypes.INTEGER.UNSIGNED
DataTypes.INTEGER.ZEROFILL
DataTypes.INTEGER.UNSIGNED.ZEROFILL
// 你还可以指定大小,即INTEGER(10)而不是简单的INTEGER
// 同样适用于 BIGINT, FLOAT 和 DOUBLE

日期

DataTypes.DATE       // DATETIME 适用于 mysql / sqlite, 带时区的TIMESTAMP 适用于 postgres
DataTypes.DATE(6)    // DATETIME(6) 适用于 mysql 5.6.4+. 支持6位精度的

小数秒

DataTypes.DATEONLY   // 不带时间的 DATE

UUID
对于 UUID,使用 DataTypes.UUID. 对于 PostgreSQL 和 SQLite,它会是 UUID 数据类型;对于 MySQL,它则变成CHAR(36). Sequelize 可以自动为这些字段生成 UUID,只需使用 Sequelize.UUIDV1 或 Sequelize.UUIDV4 作为默认值即可:

{
  type: DataTypes.UUID,
  defaultValue: Sequelize.UUIDV4 // 或 Sequelize.UUIDV1
}

数据类型对照表
Model 的数据类型对应MySQL中的数据类型

Sequelize.STRING                      // VARCHAR(255)                  类型:字符串 最大值: 65535个字符
Sequelize.STRING(1234)                // VARCHAR(1234)                 类型:变长 最大值: 65535个字符
Sequelize.TEXT                        // TEXT                          类型:字符串 最大值:65535个字符
Sequelize.TEXT('tiny')                // TINYTEXT                      类型:字符串 最大值:255个字符

Sequelize.INTEGER                     // INTEGER                       类型:整型 最大值:范围(-2147483648~2147483647)
Sequelize.BIGINT                      // BIGINT                        类型:整型 最大值:范围(+-9.22*10的18次方)
Sequelize.BIGINT(11)                  // BIGINT(11)                    类型:整型 最大值:范围(+-9.22*10的18次方)

Sequelize.FLOAT                       // FLOAT                         类型:单精度浮点型  8位精度(4字节)
Sequelize.FLOAT(11)                   // FLOAT(11)                     类型:单精度浮点型 8位精度(4字节)
Sequelize.FLOAT(11, 12)               // FLOAT(11,12)                  类型:精度浮点型 8位精度(4字节) m总个数,d小数位


Sequelize.DOUBLE                      // DOUBLE                        类型:双精度浮点型 16位精度(8字节) 
Sequelize.DOUBLE(11)                  // DOUBLE(11)                    类型:双精度浮点型 16位精度(8字节) 
Sequelize.DOUBLE(11, 12)              // DOUBLE(11,12)                 类型:双精度浮点型 16位精度(8字节) m总个数,d小数位

Sequelize.DECIMAL                     // DECIMAL                       类型:定点数型
Sequelize.DECIMAL(10, 2)              // DECIMAL(10,2)                 类型:定点数型 参数m<65 是总个数,d<30且 d<m 是小数位

Sequelize.DATE                        // DATETIME                      类型:日期时间类型 范例:'2009-05-12 02:31:44'
Sequelize.DATE(6)                     // DATETIME(6)    
Sequelize.DATEONLY                    // DATE without time.
Sequelize.BOOLEAN                     // TINYINT(1)                    类型:整型 范围(-128~127)

Sequelize.ENUM('value 1', 'value 2')  // ENUM                          类型:枚举

Sequelize.BLOB                        // BLOB                          类型:二进制数据
Sequelize.BLOB('tiny')                // TINYBLOB                      类型:二进制数据  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值