开发中常用的SQL语句
- 1.update更新时不能引用本身表
- 2.备份MySQL
- 3.函数的使用
- 1. case,when的使用
- 2. IF
- 3.其它
- 4.拼接
- 5. 处理时间
- 4.导出表结构注释等
1.update更新时不能引用本身表
UPDATE student SET valid_flag = 0
WHERE id IN (
SELECT id
FROM (
SELECT su.id
FROM student su JOIN teacher t ON su.goto_id = t.id
WHERE t.valid_flag = 0 AND su.valid_flag != 0
) AS subquery
)
2.备份MySQL
mysqldump -u admin -p 123456 > /root/backup_file.sql;
出现sock报错时
mysqldump -u admin -p 123456 --socket=/home/data/mysql/mysql.sock > lwspace0927.sql
3.函数的使用
1. case,when的使用
select CASE pid
WHEN 1 THEN '语文'
WHEN 2 THEN '数学'
WHEN 3 THEN '英语'
ELSE '化学'
END as 学科
sum(case when se.rent_flag=1 then se.total_area else 0 end) as rentTrueCount,
2. IF
SELECT IFNULL(SUM(c.total_amount), 0)
select if(1=2,1,2);--2
3.其它
不包含数字
where periods not REGEXP '[^0-9.]'
4.拼接
LEFT() 函数用于截取日期字符串的前10个字符,即日期的年月日部分。然后使用 ’ —— ’ 字符串作为连接符进行拼接。
SELECT
CONCAT(left('2000-01-01',10), ' —— ', left('2000-12-31',10) ) AS contractStartEndTime,
CONCAT(left( '2023-01-01',10),' —— ', left('2023-12-31',10) ) AS rentStartEndTime
5. 处理时间
select CONCAT(YEAR(NOW()) - 1, '-01-31 23:59:59')
select year(now())--2023
相差天数
DATEDIFF(end_time, start_time)
日期加n天
DATE_ADD(sc.rent_end_time, INTERVAL n DAY)
4.导出表结构注释等
SHOW FULL COLUMNS FROM table_name;
SELECT table_name, column_name, column_type, is_nullable, column_default, extra, column_comment
FROM information_schema.columns
WHERE table_schema = 'shequ-order';--table_schema库名字