SQL CLAUSES2025年3月17日 | 阅读 10 分钟
结构化查询语言中提供的不同子句如下:
让我们逐一查看每个子句并举例说明。我们将使用 MySQL 数据库来编写示例中的查询。 1. WHERE 子句SQL 中的 WHERE 子句与 SELECT 查询一起使用,SELECT 查询是数据操作语言命令之一。WHERE 子句可用于限制结果集中显示的行数,它通常有助于过滤记录。它仅返回满足 WHERE 子句特定条件的查询。WHERE 子句用于 SELECT、UPDATE、DELETE 语句等。 WHERE 子句与 SELECT 查询星号 (*) 用于 SELECT 查询中的 WHERE 子句,以检索表中每条记录的所有列值。 带 SELECT 查询的 WHERE 子句语法,用于检索表中每条记录的所有列值 如果根据要求,我们只想检索选定的列,那么我们将使用以下语法 考虑具有以下数据的 employee 表
示例 1编写一个查询,检索所有员工的记录,其中员工的薪水大于 50000。 查询 上述查询将显示所有员工的记录,其中员工的薪水大于 50000。根据条件,低于 50000 的薪水将不会显示。 您将得到以下输出 ![]() 根据预期输出,只显示员工薪水大于 50000 的记录。employee 表中有六条记录满足给定条件。 示例 2编写一个查询来更新员工记录,并将更新后的姓名设置为 'Harshada Sharma',其中员工的城市名称为 Jaipur。 查询 ![]() 上述查询会将员工姓名更新为“Harshada Sharma”,其中员工的城市是 Jaipur。 为了验证记录是否已更新,我们将运行一个 select 查询。 ![]() employee 表中只有一条记录,其中员工的城市是 'Jaipur'。该记录的 ID 是 3,满足给定条件。因此,根据给定条件,ID 为 3 的员工姓名现已更改为 'Harshada Sharma'。 示例 3编写一个查询来删除员工记录,其中员工的加入日期是“2013-12-12”。 查询 ![]() 上述查询将删除加入日期为“2013-12-12”的员工的详细信息。 为了验证上述查询的结果,我们将执行 select 查询。 ![]() employee 表中只有一条记录,其中员工的加入日期是 '2013-12-12'。该记录的 ID 是 13,满足给定条件。因此,根据给定条件,ID 为 13 的员工现已从 employee 表中删除。 2. GROUP BY 子句Group By 子句用于在结构化查询语言中将相似的记录排列成组。结构化查询语言中的 Group By 子句与 Select Statement 一起使用。Group by 子句放在 SQL 语句的 where 子句之后。Group By 子句专门与聚合函数(即 max()、min()、avg()、sum()、count())一起使用,以根据一个或多个列对结果进行分组。 Group By 子句的语法上述语法将从表中选择所有数据或记录,但它会根据查询中给出的列名将所有数据或记录按组排列。 带聚合函数的 Group By 子句的语法让我们通过示例来理解 Group By 子句。 考虑具有以下数据的 employees 表
示例 1编写一个查询来显示 employees 表的所有记录,但按 age 列对结果进行分组。 查询 上述查询将显示 employees 表的所有记录,但按 age 列分组。 您将得到以下输出 ![]() 示例 2编写一个查询来显示 employees 表的所有记录,按 designation 和 salary 分组。 查询 上述查询将显示 employees 表的所有记录,但按 salary 和 designation 列分组。 您将得到以下输出 ![]() Group By 子句使用聚合函数的示例示例 1 编写一个查询来列出在特定职位工作的员工数量,并按员工的职位对结果进行分组。 查询 上述查询将显示职位及其对应的员工数量。所有这些结果都将按 designation 列分组。 您将得到以下输出 ![]() 根据预期输出,将显示带有相应员工计数的职位。 示例 2 编写一个查询来显示按城市划分的员工薪资总和,并按员工年龄分组。 查询 上述查询将首先计算每个城市工作的薪资总和,然后它将显示薪资总和及其相应的薪资,但按 age 列分组。 您将得到以下输出 ![]() 根据预期输出,将显示员工薪资的总和,对应于员工所属的城市。如果两个员工属于同一城市,那么他们将被分在一组。 3. HAVING 子句当我们需要对表的列设置条件时,我们在 SQL 中使用 WHERE 子句。但是,如果我们想对 Group By 子句中的列使用任何条件,那么我们将把 HAVING 子句与 Group By 子句一起用于列条件。 语法考虑具有以下数据的 employees 表
示例 1编写一个查询来显示员工姓名、薪资和城市,其中员工的最大薪资大于 40000,并按职位对结果进行分组。 查询 您将得到以下输出 ![]() 上述输出显示了员工的姓名、薪资和城市,其中员工薪资大于 40000,并按职位分组。(具有相似职位的员工被放在一组,而具有不同职位的员工被分开)。 示例 2编写一个查询来显示员工姓名和职位,其中员工薪资的总和大于 45000,并按城市对结果进行分组。 查询 您将得到以下输出 ![]() 上述输出显示了员工的姓名、职位和薪资。薪资总和大于 45000,并按城市分组。(具有相似城市的员工被放在一组,而具有不同城市的员工不相似的被分开)。 4. ORDER BY 子句无论何时我们想在 SQL 中排序,我们都使用 ORDER BY 子句。SQL 中的 ORDER BY 子句将帮助我们根据表的特定列对数据进行排序。这意味着在 ORDER BY 子句上执行的所有特定列中的数据都将被排序。相应的列值将按我们在前一个步骤中获得值的顺序显示。 我们都知道,排序意味着升序或降序。同样,ORDER BY 子句根据我们的要求以升序或降序对数据进行排序。当与 ORDER by 子句一起使用 **ASC 关键字**时,数据将按升序排序,而 **DESC 关键字**将按降序排序记录。 默认情况下,如果未指定排序顺序,SQL 将使用 ORDER BY 子句以升序进行排序。 在继续使用 ORDER BY 子句对记录进行排序的示例之前,首先我们将查看语法,以便我们更容易地查看示例。 不带 asc 和 desc 关键字的 ORDER BY 子句语法ORDER BY 子句按升序排序的语法ORDER BY 子句按降序排序的语法假设我们有一个具有以下数据的 employees 表
示例 1编写一个查询,按 employees 表中的员工职位升序对记录进行排序。 查询 在这里,在 SELECT 查询中,ORDER BY 子句应用于“Designation”列以对记录进行排序,但我们没有在 ORDER BY 子句后使用 ASC 关键字进行升序排序。因此,如果我们不指定 asc 关键字,数据将默认按升序排序。 您将得到以下输出 ![]() 根据预期输出,记录按员工职位升序显示。 示例 2编写一个查询,按 employees 表中的员工薪资升序显示员工姓名和薪资。 查询 在这里,在 SELECT 查询中,ORDER BY 子句应用于“Salary”列以对记录进行排序。我们已使用 ASC 关键字按升序对员工薪资进行排序。 您将得到以下输出 ![]() 所有记录均按员工薪资升序显示。 示例 3编写一个查询,按 employees 表中存储的员工姓名降序对数据进行排序。 查询 在这里,我们已将 ORDER BY 子句与应用于 Name 列的 SELECT 查询一起使用来对数据进行排序。我们在 ORDER BY 子句后使用了 DESC 关键字以降序对数据进行排序。 您将得到以下输出 ![]() 所有记录均按员工姓名降序显示。 下一主题SQL 逻辑运算符 |
我们请求您订阅我们的新闻通讯以获取最新更新。