Featured image of post 【合集】MySQL

【合集】MySQL

docker部署mysql

MySql字段类型 默认长度

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 整型:
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',...) 12348个字节, 取决于集合成员的数量(最多64个成员)

常用SQL

1
2
3

# 修改表字段
ALTER TABLE contract MODIFY COLUMN content_file_key text null comment '合同文本文件ID';

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

使用CASE语句

更新

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

插入

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

使用IF函数

更新

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

插入

1
2
3
INSERT INTO another_table (active_flag)  
SELECT IF(is_active, 1, 0)  
FROM my_table;

Mysql替换表中字段值

如果col_name的值为a,则替换成b

1
2
3
UPDATE table_name
SET col_name = CASE WHEN col_name = 'a' THEN 'b' ELSE col_name END
WHERE id = '1';
Licensed under CC BY-NC-SA 4.0
皖ICP备2024056275号-1
发表了80篇文章 · 总计150.57k字
本站已稳定运行