MySQL开发记录

MySQL记录

写功能期间遇到问题解决记录

修改某个字段文本中的部分文本

UPDATE 表名
SET author = REPLACE (
        author,
        '范·德拉',
        '你好啊,范·德拉'
)

查询按,隔开的文本匹配

find_in_set 
ancestors的字段数据为 100,101,1,120 格式
#{deptId}为 100
select * from 表名 where find_in_set(#{deptId}, ancestors);
使用可查询出相关数据

sql行转到一个字段里用某个字符隔开

将查询到的相关数据都查询到一个字段并用特定符号隔开
SELECT
	group_concat(
		DISTINCT field SEPARATOR ';'
	) AS fieldss,
	group_concat(
		DISTINCT data_value SEPARATOR ';'
	) AS dataValue
FROM
	表名
where 
tb_name = "1"
GROUP BY
	data_id

linux备份mysql数据库到文件夹

手动备份
    mysqldump -h localhost -uroot -p123456 database > dump.sql
    mysqldump -h127.0.0.1 -P3306 -uroot -p123456 -x 表名>/data/mysqlBackup/数据库名_${data}.sql
    mysqldump -h 127.0.0.1 -uroot -pWelcome_1 xj>/usr/local/software/xj_$(date +%Y%m%d%H%M).sql
定时任务备份
新建 sh 文件
    #!/bin/bash
    mysqldump -h 127.0.0.1 -uroot -pWelcome_1 xj>/usr/local/software/xj_$(date +%Y%m%d%H%M).sql
    chmod +x databackup_month.sh
设置定时任务
    vim /etc/crontab

mysql字段文本替换

REPLACE (DAY, '-', '') AS '替换'
SELECT REPLACE (day_time, '-', '') FROM `表名`;

行转列

SELECT
	t1. MONTH,
	t1.dept_data AS '2020年数据',
	t2.dept_data AS '2021年数据',
	t3.dept_data AS '2022年数据',
	t4.dept_data AS '2023年数据'
FROM
	dept t1,
	dept t2,
	dept t3,
	dept t4
WHERE
	t1. YEAR = '2020'
AND t2. YEAR = '2021'
AND t1. MONTH = t2. MONTH
AND t3. YEAR = '2022'
AND t3. MONTH = t1. MONTH
AND t4. YEAR = '2023'
AND t4. MONTH = t1. MONTH

mysql字段字符串截取

day_time 值为 2023-05-10
SELECT RIGHT(day_time,5) FROM `表名`; 结果  05-10
SELECT LEFT(day_time,5) FROM `表名`; 结果  2023-
SELECT SUBSTRING(day_time,2,5) FROM `表名`; 结果  023-0

同时编写两个sql查询数据

或者 union
查询同一个表里面不同年份数据,数据都为写死的
SELECT DISTINCT
	'2020' AS '年',
	CAST(10000 AS DECIMAL(10, 2)) AS '数量'
FROM
	表名
UNION
	SELECT DISTINCT
		'2021' AS '年',
		CAST(10000 AS DECIMAL(10, 2)) AS '数量'
	FROM
		表名
	UNION
		SELECT DISTINCT
			'2022' AS '年',
			CAST(10000 AS DECIMAL(10, 2)) AS '数量'
		FROM
			表名

查询字段最大值

max 可作为条件编译,以时间为例
where n1.years = (
		SELECT
			max(years)
		FROM
			表名 n2
	)

MySQL日期计算

DATE_SUB((SELECT max(字段) from 表名), INTERVAL 7 DAY) 7天前
YEAR ( DATE_SUB( NOW( ), INTERVAL 1 YEAR ) ) 一年前
MONTH (NOW()) 当前月份

拼接字符串

 将查询出字段前加对应字符串
 CONCAT(gas_yuan , '1#')

MySQL if else 赋值

CASE 
WHEN 判断条件 THEN 值
WHEN 判断条件 THEN 值
WHEN 判断条件THEN 值
ELSE 值
END AS 临时字段名称

来判断一个字段是否为NULL并替换

IFNULL
SELECT IFNULL(update_time,0) as timee FROM 表名; 将查询出数据为null的替换为0
SET age=IFNULL(age,0);  表中age字段为空的记录赋值为0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值