数据分析SQL内容的知识分享

电子说

1.3w人已加入

描述

0****1

查询所有列

SELECT * 或SELECT 所有列,并不是说 * 任何情况都不建议用,很多时候查询不涉及大量,节约效率,可以用。

SELECT * FROM table;

0****2

DISTINCT

用DISTINCT关键字可以去掉结果中的重复行。DISTINCT关键字放在SELECT词的后边、目标列名序列的前边。

SELECT DISTINCT column1, column2 FROM table;

0****3

LIMIT

LIMIT 语法的一般形式为:

SELECT column1, column2, ... FROM table_name LIMIT [offset,] row_count;

其中,row_count 指定从偏移量 offset 开始要返回多少行记录。如果不指定 offset,则默认从第一行开始返回。offset 和 row_count 都是非负整数。

例如,下面的 SQL 查询语句将从 customers 表中返回前 10 行数据:

SELECT * FROM customers LIMIT 10;

如果要跳过前 n 行,可以使用 OFFSET 子句来指定偏移量。例如,下面的 SQL 查询语句将从 customers 表中返回第 11 到 20 行的数据:

SELECT * FROM customers LIMIT 10 OFFSET 10;

0****4

WHERE

在 SQL 中,WHERE 是一个可选的关键字,用于限制 SELECT 查询结果中返回的记录行数。WHERE 语句的一般形式为:

SELECT column1, column2, ... FROM table_name WHERE condition;

其中,condition 为限制条件,可以是列与值之间的比较、逻辑运算符(AND、OR、NOT)、IN 子句等。

例如,下面的 SQL 查询语句将从 customers 表中返回 age 列大于 25 的记录:

SELECT * FROM customers WHERE age > 25;

需要注意的是,在使用 WHERE 语句时,应该注意以下几个事项:

  • WHERE 关键字必须紧接着 SELECT 关键字后面。
  • WHERE 子句中的条件表达式可以使用比较运算符(=、<、>、<=、>=、<>)、模糊匹配运算符(LIKE、NOT LIKE)、范围运算符(BETWEEN、NOT BETWEEN)、空值运算符(IS NULL、IS NOT NULL)等。
  • 多个条件之间可以使用 AND、OR、NOT 连接。
  • 在使用字符串类型的条件表达式时,应该注意引号的使用。

0****5

ORDER BY

ORDER BY 是一个用于排序查询结果的关键字。具体来说,ORDER BY 可以按照一个或多个列对查询结果进行升序或降序排列。

使用 ORDER BY 语法可以这样:

SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

其中,column1、column2 等为要排序的列名,ASC(升序)和 DESC(降序)分别表示排序顺序。如果省略 ASC 或 DESC,则默认是 ASC 升序排序。

例如,下面的 SQL 查询语句将按照 age 列的升序顺序对 customers 表进行排序:

SELECT * FROM customers ORDER BY age ASC;

需要注意的是,当使用 ORDER BY 语句时,应该注意以下几个事项:

  • 当 ORDER BY 子句中指定多个列时,排序优先级按照列名出现的顺序依次递减,即先按第一个列排序,然后再按第二个列排序,以此类推。
  • 如果列中包含 NULL 值,则它们会被放置在排序结果的最前面(升序)或最后面(降序)。
  • 对大型数据集进行排序操作可能会影响性能,请谨慎使用。
  • 在一些数据库系统中,可以使用列的表达式作为排序条件,但需要确保表达式的结果类型为可比较类型。

0****6

聚合函数

在 SQL 中,聚合函数是用于对表格数据进行统计和计算的函数。常见的聚合函数包括 COUNT、SUM、AVG、MAX 和 MIN 等。

以下是几种常见的聚合函数及其作用:

  • COUNT:用于统计满足条件的行数,可以统计整个表或者某一列中满足条件的行数。
  • SUM:用于求和,可以对整个表或者某一列中的数字值进行求和。
  • AVG:用于求平均数,可以对整个表或者某一列中的数字值进行平均值计算。
  • MAX:用于求最大值,可以对整个表或者某一列中的数字值进行最大值计算。
  • MIN:用于求最小值,可以对整个表或者某一列中的数字值进行最小值计算。

使用聚合函数时,需要注意以下几个问题:

  • 聚合函数只能应用于列而非行,因此不能在 WHERE 语句中使用聚合函数。
  • 如果需要对多个列进行聚合计算,则需要使用 GROUP BY 子句分组,以便确定每个计算结果相应的数据子集。
  • 在使用 COUNT 函数时,需要注意空值的处理问题。COUNT 函数默认不会统计空值,如果需要统计空值则需要使用 COUNT(*) 函数。

07

GROUP BY

在 SQL 中,GROUP BY 是一个用于分组查询结果的关键字。具体来说,GROUP BY 可以将查询结果按照一个或多个列进行分组,并对每个组进行聚合计算。

以下是 GROUP BY 语法的一般形式:

SELECT column1, column2, ..., aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column1, column2, ...;

其中,column1、column2 等为要分组的列名,aggregate_function 表示要进行聚合计算的函数(例如 SUM、COUNT、AVG、MAX、MIN 等),column_name 则表示要进行聚合计算的列名。

例如,下面的 SQL 查询语句将根据 gender 列对 customers 表进行分组,并计算每个组中 age 列的平均值:SELECT gender, AVG(age) FROM customers GROUP BY gender;

需要注意的是,在使用 GROUP BY 时,有以下几个问题需要注意:

  • GROUP BY 子句必须位于 WHERE 子句之后、HAVING 子句之前。
  • GROUP BY 子句中的列名必须是 SELECT 语句中出现的列名或者其别名。
  • 如果查询结果中包含非聚合列,则 GROUP BY 子句中也必须包含这些列名。
  • 在使用 GROUP BY 时,应该注意空值的处理问题。如果存在 NULL 值,它们将作为一个单独的组进行处理,因此需要谨慎处理。

08

HAVING

在 SQL 中,HAVING 是一个关键字,用于过滤 GROUP BY 分组后的查询结果,只保留满足条件的分组。

以下是 HAVING 语法的一般形式:

SELECT column1, column2, ..., aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column1, column2, ... HAVING condition;

其中,column1、column2 等为要分组的列名,aggregate_function 表示要进行聚合计算的函数(例如 SUM、COUNT、AVG、MAX、MIN 等),condition 则表示过滤条件。

例如,下面的 SQL 查询语句将根据 gender 列对 customers 表进行分组,并计算每个组中 age 列的平均值,然后仅返回平均年龄大于 30 的记录:

SELECT gender, AVG(age) AS avg_age FROM customers GROUP BY gender HAVING avg_age > 30;

需要注意的是,在使用 HAVING 时,有以下几个问题需要注意:

  • HAVING 子句必须位于 GROUP BY 子句之后。
  • HAVING 子句中的条件表达式可以使用比较运算符(=、<、>、<=、>=、<>)、逻辑运算符(AND、OR、NOT)等。
  • 在使用 HAVING 时,也可以使用聚合函数来过滤分组。例如,可以使用 COUNT(*) 函数来过滤出满足某个条件的分组数量。

09

多表连接

在 SQL 中,多表链接是一种用于联合多个表格中数据的技术。常见的多表链接类型包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN 等。

以下是几种常见的多表链接类型及其作用:

  • INNER JOIN(JOIN):内连接,只返回两个表格中都存在对应数据的行。
  • LEFT JOIN:左连接,返回左侧表格中所有行以及与之匹配的右侧表格行。
  • RIGHT JOIN:右连接,返回右侧表格中所有行以及与之匹配的左侧表格行。
  • FULL OUTER JOIN:全外连接,返回左右两侧表格中所有行,如果某个表格中没有对应的匹配行,则使用 NULL 补齐。

以下是 INNER JOIN 的语法示例:

SELECT column1, column2, ..., columnN FROM table_name1 INNER JOIN table_name2 ON condition;

其中,table_name1 和 table_name2 分别表示要联合的两个表格,condition 是两个表格之间的关联条件。

例如,下面的 SQL 查询语句将 customers 表格和 orders 表格联合起来,返回所有购买了产品编号为 1 的商品的客户信息和订单信息:

SELECT * FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id WHERE orders.product_id = 1;

需要注意的是,在使用多表链接时,应该注意以下几个问题:

  • 多表链接需要至少一个关联条件,否则可能会产生笛卡尔积和重复的行。
  • 在使用 LEFT JOIN 或 RIGHT JOIN 时,需要注意空值的处理问题。如果两个表格中存在 NULL 值,则需要进行特殊处理以免产生错误的匹配结果。
  • 多表链接可能会导致性能问题,特别是在处理大型数据时。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分