首页 > 数据库 >突破SQL基本面试问题(0)

突破SQL基本面试问题(0)

时间:2024-07-01 22:56:43浏览次数:13  
标签:JOIN UNION SQL 合并 查询 面试 突破 子句

写作原因:

在当今数据驱动的商业环境中,SQL作为数据分析师的核心工具,其重要性日益凸显。它不仅是查询和操作数据库的语言,更是连接数据与洞察力的桥梁。随着大数据技术的飞速发展,众多顶级企业,包括华为等大厂,已经将SQL基础能力的考察纳入到面试流程中,作为评估候选人是否具备高效数据处理能力的关键指标。

因此,对于有志于在数据分析领域深耕的专业人士来说,持续学习并精进SQL技能变得尤为关键。通过不断实践和应用SQL,不仅可以提升个人的数据处理效率,更能在实际工作中快速准确地挖掘数据价值,为企业决策提供有力支持。掌握SQL,意味着你拥有了解锁数据秘密的钥匙,能够在数据的海洋中游刃有余。今天介绍几个基本问题

having 和 where 的 区 别

  1. 应用阶段

    • WHERE 子句用于过滤原始记录,在聚合(如 GROUP BY)之前应用。
    • HAVING 子句用于过滤聚合后的记录,在聚合(如 GROUP BY)之后应用。
  2. 使用对象

    • WHERE 子句不能用于聚合函数(如 SUM()AVG()COUNT() 等),因为它在聚合前应用。
    • HAVING 子句可以用于聚合函数,因为它在聚合后应用。
  3. 语法位置

    • WHERE 子句在 FROM 子句和任何 JOIN 子句之后,GROUP BY 之前。
    • HAVING 子句在 GROUP BY 子句之后,ORDER BY 之前。

代码演示:

使用WHERE

SELECT product, amount
FROM sales
WHERE amount > 20;

这将返回 amount 大于 20 的所有记录。在这里,过滤是在聚合之前完成的。

使用 HAVING 子句:

SELECT product, SUM(amount) as total_amount
FROM sales 
GROUP BY product 
HAVING SUM(amount) > 50;

union和 join 的 区 别

JOIN

应用阶段:在查询过程中,将多个表的数据按行进行合并。数据通过指定的条件进行匹配和组合,形成一个新的结果集。
UNION

应用阶段:在查询的最后阶段,将多个查询结果按列进行合并。不同的结果集独立执行,然后将其合并成一个统一的结果集。

使用对象
JOIN

使用对象:用于在一个查询中从两个或多个表中选择相关的数据列。通常用于表之间存在逻辑关联的情况。例如,实际中,客户名单的表格和订单的表格,使用JOIN 帮助我们梳理客户的订单情况
连接条件:JOIN 需要基于特定的条件(通常是主键与外键的关系)来匹配表中的记录。
UNION

使用对象:用于将两个或多个查询的结果集进行合并,要求各个查询的列数和数据类型一致。适用于合并结构相似但来源不同的数据。例如,从两个不同的年份的销售表中合并所有销售记录。
合并条件: UNION 并不需要基于特定的条件进行匹配,只需要确保所有查询的结果集的列数和数据类型一致即可。

语法位置
JOIN :
语法位置: JOIN : 子句在 FROM 子句之后使用,连接的表之间通过 ON 或 USING 子句来指定匹配条件。

代码演示

SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b ON a.common_field = b.common_field;

UNION
语法位置:UNION 子句在各个 SELECT 语句之后使用,用于将两个或多个查询的结果集进行合并。

SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2;

总结

  • JOIN 用于将多个表按行合并,基于匹配条件。
  • UNION 用于将多个查询结果按列合并,默认去除重复行。
  • 选择 JOINUNION 取决于具体的数据合并需求。

标签:JOIN,UNION,SQL,合并,查询,面试,突破,子句
From: https://blog.csdn.net/weixin_74241638/article/details/140061164

相关文章

  • mysql数据库基本语句
    –查看所有数据库。showdatabases;–切换到指定数据库。usemysql;-查看数据库下所有表showtables;–其常用他命令。查看当前用户:selectuser();当前日期时间selectnow();查看数据库状态:\s;退出数据库:\q;基本操作:创建库、创建表、删除库、删除表、修改库、修改表......
  • 一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
    https://www.sqltranslate.app/ 一款利用人工智能将自然语言查询转换为SQL代码的互译工具-SQLTranslator 思维导航前言SQLTranslator介绍工具特性本地项目部署在线效果演示程序员常用的工具软件前言对于后端程序员来说,编写SQL代码是日常工作中不可或缺......
  • 数据库系列-mysql-sql执行示例
    数据库定义语言--数据库查询语句模板--!数据库创建--创建数据库test,如果存在则不创建,默认字符集为utf8,不区分大小写,cs为大小写敏感,也可以使用utf8_bin,字符采用二进制存储CREATEDATABASEIFNOTEXISTS`test`DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;......
  • sql-server创建存储过程
    useEFDBgo--添加学生存储过程--usp_AddStudents自定义的存储过程nameifexists(select*fromsysobjectswherename='usp_AddStudents')dropprocedureusp_AddStudentsgo--@StudentNamevarchar(20),对应表中的字段--@Genderchar(2),对应表中的字段--@Birthday......
  • Spark_04 SparkSQL的介绍及使用
    说明这一章主要包括对于sparksql概念的介绍,sparksql的特点,sparksql用到的数据类型,DataFrame的基础方法等。概念SparkSQL是Spark用于处理结构化数据的模块。诞生由于MapReduce这种计算模型的执行效率较慢,rdd原生代码较为复杂,所以引入了SparkSQL应运而生。它可以将sql转换为......
  • 【面试题】网络UDP协议(第五篇)
    1.UDP如何实现可靠?UDP协议是面向无连接的、不可靠的传输层协议,可以通过在应用层添加一些机制来实现UDP的可靠传输。序列号和确认应答机制:为每个发送的数据包分配一个唯一的序列号,并且要求接收方发送确认应答来确认已经收到数据包。重传机制:在数据发出后,如果超过某个时间没......
  • MySQL—创建和修改数据表结构
    创建表实例:CREATETABLE`user`(idINT,`name`VARCHAR(255),`password`VARCHAR(255),`birthday`DATE)CHARACTERSETutf8COLLATEutf8_binENGINEINNODB;显示数据库中的表showtablesfromhsp;显示表结构descdept;修改......
  • WEB01MySQL安装和数据库
    第一天、WEB课程web课程主要讲三部分内容数据库数据库介绍什么是数据库数据存储的仓库,其本质也是一个文件系统数据库会按照特定的格式对数据进行存储,用户可以对数据库中的数据进行增加,修改,删除及查询操作。数据库管理系统层次数据库管理系统(DataBaseManage......
  • 为什么升级到 MySQL 8.x 后,带有多个 IN 值的查询会更昂贵?
     MySQL的范围优化有多个IN值的查询在MySQL查询优化器中,会使用"等值范围优化"(EqualityRangeOptimization)。假设我们的查询是这样的:SELECTCOUNT(*)FROMtest.sbtest1WHEREidIN(10,50,200,...,30822);比较列表中有一万个值。在MySQL5.7下运行这个程序会得到以......
  • 面试题-Spring家族与SpringIOC
    1.spring家族的介绍Spring简单图:2.IOC原理IOC就是原先代码里需要开发者实现对象的创建和关系依赖,反转交给SpringIOC容器管理对象的生命周期和对象之间的依赖关系。依赖注入的方式:Setter:实现特定属性的publicsetter方法来让IOC容器调用所依赖类型的对象Interfa......