当前位置:  首页>> 技术小册>> SQL基础教程(上)

第2章 查询基础

在数据库的世界里,查询是用户与数据交互的桥梁,是提取、分析、展示数据的关键步骤。本章将带你踏入SQL查询的基础殿堂,从最简单的SELECT语句开始,逐步掌握条件筛选、排序、分组、聚合以及连接查询等核心技能。无论你是数据库初学者还是希望巩固基础的专业人士,本章都将为你提供坚实的理论基础和实践指南。

2.1 SELECT语句简介

一切查询的起点都是SELECT语句。SELECT语句用于从数据库表中选择数据,其基本语法结构如下:

  1. SELECT column1, column2, ...
  2. FROM table_name;

这里,column1, column2, ...是你希望从table_name表中检索的列名。如果省略列名,将返回表中的所有列。

示例:假设我们有一个名为Employees的表,包含员工的ID、姓名、部门ID和职位等信息,我们想获取所有员工的姓名和职位,可以这样写:

  1. SELECT Name, Position
  2. FROM Employees;

2.2 条件筛选:WHERE子句

当需要从表中检索满足特定条件的行时,WHERE子句就派上了用场。它允许你指定一个或多个条件来过滤查询结果。

语法

  1. SELECT column1, column2, ...
  2. FROM table_name
  3. WHERE condition;

示例:查询Employees表中部门ID为3的所有员工的姓名和职位:

  1. SELECT Name, Position
  2. FROM Employees
  3. WHERE DepartmentID = 3;

2.3 数据排序:ORDER BY子句

有时,我们希望查询结果按照一定的顺序显示,这时可以使用ORDER BY子句。你可以根据一个或多个列对结果进行升序(ASC)或降序(DESC)排序。

语法

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

示例:查询所有员工信息,并按职位降序排列:

  1. SELECT *
  2. FROM Employees
  3. ORDER BY Position DESC;

2.4 聚合函数与GROUP BY子句

当需要对数据进行汇总统计时,如计算平均值、最大值、最小值、求和或计数等,聚合函数(如COUNT(), MAX(), MIN(), SUM(), AVG())就显得尤为重要。而GROUP BY子句则用于将查询结果集中的行分组,以便对每个组应用聚合函数。

语法

  1. SELECT column1, AGGREGATE_FUNCTION(column2)
  2. FROM table_name
  3. WHERE condition
  4. GROUP BY column1;

示例:查询每个部门的员工数量:

  1. SELECT DepartmentID, COUNT(*) AS NumberOfEmployees
  2. FROM Employees
  3. GROUP BY DepartmentID;

2.5 去重:DISTINCT关键字

当查询结果中存在重复行时,可以使用DISTINCT关键字来去除重复的记录,只返回唯一的值。

语法

  1. SELECT DISTINCT column1, column2, ...
  2. FROM table_name;

示例:查询Employees表中所有不重复的职位:

  1. SELECT DISTINCT Position
  2. FROM Employees;

2.6 连接查询

在数据库中,表之间经常通过特定的列(通常是外键)相关联。连接查询允许我们根据这些关联来合并两个或多个表中的数据。常见的连接类型包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。

语法(以INNER JOIN为例):

  1. SELECT columns
  2. FROM table1
  3. INNER JOIN table2
  4. ON table1.common_field = table2.common_field;

示例:假设我们还有一个Departments表,记录了部门ID和部门名称。查询所有员工及其对应的部门名称:

  1. SELECT Employees.Name, Departments.DepartmentName
  2. FROM Employees
  3. INNER JOIN Departments
  4. ON Employees.DepartmentID = Departments.DepartmentID;

2.7 子查询

子查询是嵌套在另一个查询中的查询。它们可以用在SELECTFROMWHEREHAVING子句中,以提供复杂的查询逻辑。

示例:查询薪资高于公司平均水平的员工姓名:

  1. SELECT Name
  2. FROM Employees
  3. WHERE Salary > (
  4. SELECT AVG(Salary)
  5. FROM Employees
  6. );

2.8 小结

本章介绍了SQL查询的基础,包括SELECT语句的基本使用、条件筛选(WHERE子句)、数据排序(ORDER BY子句)、聚合与分组(GROUP BY子句与聚合函数)、去重(DISTINCT关键字)、连接查询(如INNER JOIN)以及子查询等关键概念。通过掌握这些基础知识,你将能够构建出灵活多样的查询语句,有效地从数据库中提取和分析数据。

记住,实践是掌握SQL的最好方式。尝试自己编写查询语句,并对照数据库中的实际数据验证结果。随着经验的积累,你会发现SQL的强大之处,并能够更加高效地解决复杂的数据查询问题。


该分类下的相关小册推荐: