SQL 常用查询语句
SQL(Structured Query Language)是用于管理和操作数据库系统的一种语言,在现代数据驱动的世界中,无论是企业级应用还是小型项目,SQL 都扮演着至关重要的角色,本文将介绍几种常用的 SQL 查询语句,并通过示例和表格展示其用法。
1. 选择数据:SELECT 语句
SELECT
语句用于从数据库中检索数据,它可以选择特定的列或所有列,并且可以结合WHERE
子句来过滤数据。
示例
假设我们有一个名为employees
的表,包含以下列:id
、name
、age
、department
。
SELECT name, age FROM employees WHERE department = 'Sales';
结果表格
name | age |
Alice | 30 |
Bob | 25 |
Charlie | 35 |
2. 联表查询:JOIN 语句
JOIN
语句用于将两个或多个表基于相关列进行合并,常见的JOIN
类型包括INNER JOIN
、LEFT JOIN
、RIGHT JOIN
和FULL JOIN
。
示例
假设我们有两个表:employees
(员工信息)和departments
(部门信息)。
SELECT employees.name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.id;
结果表格
name | department_name |
Alice | Sales |
Bob | HR |
Charlie | IT |
3. 分组和聚合:GROUP BY 和聚合函数
GROUP BY
子句用于对数据进行分组,聚合函数(如 COUNT, SUM, AVG 等)用于计算每组的汇总数据。
示例
SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department;
结果表格
department | employee_count |
Sales | 10 |
HR | 5 |
IT | 8 |
4. 排序数据:ORDER BY 语句
ORDER BY
子句用于对查询结果进行排序,可以是升序(ASC)或降序(DESC)。
示例
SELECT name, age FROM employees ORDER BY age DESC;
结果表格
name | age |
Frank | 45 |
Grace | 40 |
Alice | 30 |
Bob | 25 |
5. 子查询:嵌套查询
子查询是一个SELECT
语句嵌套在另一个SELECT
、INSERT
、UPDATE
或DELETE
语句中,子查询通常用于返回单个值或一行数据。
示例
SELECT name, age FROM employees WHERE department_id = (SELECT id FROM departments WHERE department_name = 'Sales');
结果表格
name | age |
Alice | 30 |
Bob | 25 |
Charlie | 35 |
6. 插入数据:INSERT INTO 语句
INSERT INTO
语句用于向表中插入新数据。
示例
INSERT INTO employees (name, age, department_id) VALUES ('David', 28, 3);
7. 更新数据:UPDATE 语句
UPDATE
语句用于修改表中的数据。
示例
UPDATE employees SET age = 29 WHERE name = 'David';
8. 删除数据:DELETE 语句
DELETE
语句用于从表中删除数据。
示例
DELETE FROM employees WHERE name = 'David';
相关问题与解答
问题 1:如何使用 SQL 查询获取特定部门的所有员工姓名?
解答:可以使用SELECT
语句结合WHERE
子句来实现,要获取部门 ID 为 2 的所有员工姓名,可以使用以下查询:
SELECT name FROM employees WHERE department_id = 2;
这将返回部门 ID 为 2 的所有员工的姓名列表。
问题 2:如何统计每个部门的员工数量并按员工数量降序排列?
解答:可以使用GROUP BY
子句结合聚合函数COUNT
,并使用ORDER BY
子句按员工数量降序排列。
SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id ORDER BY employee_count DESC;
这将返回每个部门的员工数量,并按员工数量从高到低排序。