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 值,则需要进行特殊处理以免产生错误的匹配结果。
- 多表链接可能会导致性能问题,特别是在处理大型数据时。
-
SQL
+关注
关注
1文章
762浏览量
44114 -
avg
+关注
关注
0文章
11浏览量
4111
发布评论请先 登录
相关推荐
评论