MySQL

MySql字段类型 默认长度

整型:

TINYINT 1 字节
SMALLINT 2 个字节
MEDIUMINT 3 个字节
INT 4 个字节
INTEGER 4 个字节
BIGINT 8 个字节

浮点型:

FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53
FLOAT 4 个字节
DOUBLE 8 个字节
DOUBLE PRECISION 8 个字节
REAL 8 个字节

DECIMAL(M,D) M字节(D+2 , 如果M < D)
NUMERIC(M,D) M字节(D+2 , 如果M < D)

日期和时间型:

DATE 3 个字节
DATETIME 8 个字节 (我试的mysql8,最大6)
TIMESTAMP 4 个字节
TIME 3 个字节
YEAR 1 字节

串类型:

CHAR(M) M字节,1 <= M <= 255
VARCHAR(M) L+1 字节, 在此L <= M和1 <= M <= 255
TINYBLOB, TINYTEXT L+1 字节, 在此L< 2 ^ 8
BLOB, TEXT L+2 字节, 在此L< 2 ^ 16
MEDIUMBLOB, MEDIUMTEXT L+3 字节, 在此L< 2 ^ 24
LONGBLOB, LONGTEXT L+4 字节, 在此L< 2 ^ 32
ENUM('value1','value2',...) 1 或 2 个字节, 取决于枚举值的数目(最大值65535)
SET('value1','value2',...) 1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

常用SQL

修改表字段

ALTER TABLE contract MODIFY COLUMN content_file_key text null comment '合同文本文件ID';

mysql根据条件字段true或者false,来修改表字段的值为0或者1,sql怎么写?
使用CASE语句

更新
UPDATE my_table
SET active_flag = CASE WHEN is_active THEN 1 ELSE 0 END;

插入
INSERT INTO another_table (active_flag)
SELECT CASE WHEN is_active THEN 1 ELSE 0 END
FROM my_table;

使用IF函数

更新
UPDATE my_table
SET active_flag = IF(is_active, 1, 0);

插入
INSERT INTO another_table (active_flag)
SELECT IF(is_active, 1, 0)
FROM my_table;

Mysql替换表中字段值

如果col_name的值为a,则替换成b
UPDATE table_name
SET col_name = CASE WHEN col_name = 'a' THEN 'b' ELSE col_name END
WHERE id = '1';

    评论
    0 评论
avatar

取消