目录
前言:
SQL(Structured Query Language)是用于管理关系型数据库的标准化语言。无论是存储、检索、更新还是删除数据,SQL 都扮演着至关重要的角色。熟练掌握 SQL 是每个与数据库相关的专业人士必备的技能之一。本博客旨在总结 SQL 的重要知识点,帮助读者系统地学习和理解 SQL,提升数据库操作和管理的能力。
1.创建临时表 (with 表名 as )
1.1创建临时表的用法详解
当我们在做数据库查询的时候我们有时候会连接很多表 这样在操作上的很繁杂,并且不美观。
在 MySQL 中,临时表是一种临时存储数据的方式,它只在当前的数据库会话中存在,并在会话结束后自动消失。
这时候我们就可以用临时表,可以节省资源,避免浪费不必要的资源。
1.2创建临时表的语法
下面是一个示例,演示了如何在 MySQL 中使用 WITH
和 AS
来定义一个临时表:
with tmp as
(
select uid, id
from
tb_user
where name="李华"
)
这段sql语句将tb_user表中的name为李华的uid,和id筛选出来
1.3具体应用案例
下面是一个示例,演示如何使用 WITH
和 AS
创建临时表进行多表连接查询:
WITH orders_customer AS (
SELECT orders.order_id, orders.order_date, customers.customer_name
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id
)
SELECT *
FROM orders_customer;
在上述示例中,我们使用 WITH
和 AS
创建了一个临时表达式 customer_orders
,该表达式包含了连接 orders
表和 customers
表后得到的数据。然后在主查询中选择了这个临时表达式中的所有列进行查询。
1.4总结
通过使用 WITH
和 AS
结合,我们可以避免重复编写相同的子查询,使 SQL 查询更加清晰和易于理解。这种方法特别适用于需要多次引用同一组数据的情况,同时也有助于提高查询的可读性和维护性。
2.concat函数
2.1concat函数用法详解
concat函数是一个拼接字符串的函数 ,有时候我们在实际应用中需要用到此函数将几个字段进行拼接。
例如我们需要将一个表中的名字和电话号的字段进行拼接作为一个新的字段。
2.2concat函数语法
concat(str1,str2,...)
将两个字符串进行拼接 。
2.3具体应用案例
concat('hello',' ','world')
会输出 hello world
2.4总结
通过合理使用 CONCAT
函数,可以方便地将字符串连接在一起,用于生成自定义输出、构建动态查询等操作。
3.GROUP_CONCAT函数
3.1GROUP_CONCAT函数用法详解
功能:将分组内的数值字段值连接成一个字符串。
3.2GROUP_CONCAT函数的语法
语法:GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str
参数:
DISTINCT
: 可选参数,用于去除重复的值。
expr
: 要连接的字段或表达式。
ORDER BY
: 可选参数,用于指定连接时的排序规则。
SEPARATOR
: 可选参数,用于指定连接时的分隔符,默认为逗号,。
3.3具体应用案例
SELECT department, GROUP_CONCAT(employee_name)
FROM employees
GROUP BY department;
此案例是将每个部门内的员工名字连接成一个字符串
3.4总结
将分组内的数值字段值连接成一个字符串。
用于在 SQL 查询中将多行的值合并为单个字符串。
通过合理使用 GROUP_CONCAT
函数,可以方便地将分组内的值连接成字符串,用于生成聚合的文本信息。这样的操作常用于生成报表、显示汇总信息或处理某些特定的业务场景。
4.case when then end
4.1 case when then end 用法详解
case when then end 一般用在多种条件的查询。它允许在查询中根据不同的条件执行不同的操作或返回不同的值。
4.2case when then end 语法
case
when 条件 then 执行语句
when 条件 then 执行语句
...
end as "字段名"
--end as '字段名' 将这段case when then 语句 作为一个字段名
4.3 具体应用案例
select age,uid,
case
when age>18 then '已成年',
when age>22 then '青年',
when age>25 then '青壮年'
end as '年龄阶段'
from tmp
根据不同的年龄范围返回相应的年龄阶段,并从名为 tmp
的表中选择 age
和 uid
字段。
4.4总结
CASE WHEN THEN END
是在 SQL 中用于条件判断和返回结果的表达式。
通过合理运用 CASE WHEN THEN END
表达式,你可以根据需要灵活地处理数据并返回不同的结果。
5.date_format()函数
5.1date_foamat()用法详解
DATE_FORMAT()
是 MySQL 中用于将日期时间格式化为指定格式的函数。
5.2date_format()函数语法
DATE_FORMAT(date, format)
date 是要格式化的日期或日期时间字段。
format 是指定日期时间格式的格式字符串。
常用格式符号:%Y
:四位年份%m
:月份(01-12)%d
:月中的天数(01-31)%H
:小时(00-23)%i
:分钟(00-59)%s
:秒(00-59)%W
:星期名(完整的星期名称)%w
:星期几(0 = 星期日,1 = 星期一,...,6 = 星期六)
5.3具体实例用法
SELECT DATE_FORMAT('2024-03-03 10:30:45', '%Y-%m-%d %H:%i:%s') AS formatted_datetime;
以上查询将会将日期时间 '2024-03-03 10:30:45' 格式化为 '2024-03-03 10:30:45' 的格式。
5.4总结
可以根据需要自定义日期时间格式,并使用相应的格式符号来构建想要的格式。
DATE_FORMAT() 函数通常用于从数据库中检索日期时间字段并以特定格式显示。
通过使用 DATE_FORMAT() 函数,你可以按照自己的需求将日期时间数据格式化为不同的形式,使其更易于阅读和展示。
致谢:
非常感谢您对博客的关注和喜爱!在这里,我您表示衷心的感谢,并且对您的支持和信任表示深深的感激。您的支持是我们不断努力提供有价值内容的动力,同时也是我们持续改进和成长的重要推动力。