SQL基本查询语句

SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准语言,本文将详细介绍SQL的基本查询语句,包括SELECT、FROM、WHERE、ORDER BY、GROUP BY和HAVING等子句,并通过表格形式展示其用法。
SELECT语句
1.1 基本语法
SELECT column1, column2, ... FROM table_name;
column1, column2, ...: 要查询的列名。
table_name: 要查询的表名。
1.2 示例
假设有一个名为employees
的表,包含以下数据:
id | name | age | department | salary |
1 | Alice | 30 | HR | 5000 |
2 | Bob | 25 | IT | 6000 |
3 | Charlie | 35 | Finance | 7000 |
要查询所有员工的名字和部门,可以使用以下SQL语句:

SELECT name, department FROM employees;
结果:
name | department |
Alice | HR |
Bob | IT |
Charlie | Finance |
WHERE子句
2.1 基本语法
SELECT column1, column2, ... FROM table_name WHERE condition;
condition: 过滤条件。
2.2 示例
要查询年龄大于30的员工,可以使用以下SQL语句:
SELECT * FROM employees WHERE age > 30;
结果:
id | name | age | department | salary |
3 | Charlie | 35 | Finance | 7000 |
ORDER BY子句
3.1 基本语法

SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
ASC: 升序排列(默认)。
DESC: 降序排列。
3.2 示例
要按年龄升序查询员工信息,可以使用以下SQL语句:
SELECT * FROM employees ORDER BY age ASC;
结果:
id | name | age | department | salary |
2 | Bob | 25 | IT | 6000 |
1 | Alice | 30 | HR | 5000 |
3 | Charlie | 35 | Finance | 7000 |
GROUP BY子句
4.1 基本语法
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1;
aggregate_function(column2): 聚合函数,如COUNT(), SUM(), AVG(), MAX(), MIN()。
4.2 示例
要按部门统计员工数量,可以使用以下SQL语句:
SELECT department, COUNT(*) as num_employees FROM employees GROUP BY department;
结果:
department | num_employees |
Finance | 1 |
HR | 1 |
IT | 1 |
HAVING子句
5.1 基本语法
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 HAVING condition;
condition: 对聚合结果进行过滤的条件。
5.2 示例
要查询员工数量大于1的部门,可以使用以下SQL语句:
SELECT department, COUNT(*) as num_employees FROM employees GROUP BY department HAVING num_employees > 1;
结果:(假设有更多数据)
department | num_employees |
IT | 2 |
Sales | 3 |
联合查询(JOIN)
6.1 INNER JOIN
SELECT columns FROM table1 INNER JOIN table2 ON table1.common_column = table2.common_column;
ON: 指定连接条件。
6.2 LEFT JOIN(或LEFT OUTER JOIN)
SELECT columns FROM table1 LEFT JOIN table2 ON table1.common_column = table2.common_column;
LEFT JOIN: 包括左表中的所有记录以及右表中满足条件的记录,不满足条件的右表记录为NULL。
6.3 RIGHT JOIN(或RIGHT OUTER JOIN)
SELECT columns FROM table1 RIGHT JOIN table2 ON table1.common_column = table2.common_column;
RIGHT JOIN: 包括右表中的所有记录以及左表中满足条件的记录,不满足条件的左表记录为NULL。
6.4 FULL JOIN(或FULL OUTER JOIN)
SELECT columns FROM table1 FULL OUTER JOIN table2 ON table1.common_column = table2.common_column;
FULL JOIN: 包括两个表中的所有记录,只要其中一个表的记录存在即可。
6.5 CROSS JOIN(笛卡尔积)
SELECT columns FROM table1 CROSS JOIN table2;
CROSS JOIN: 返回两个表的笛卡尔积,即每个表的每一行都与另一个表的每一行组合。
相关问题与解答
Q1: 如何使用SQL查询语句获取每个部门的最高工资?
A1: 可以使用GROUP BY
和MAX()
函数来实现,以下是示例SQL语句:
SELECT department, MAX(salary) as max_salary FROM employees GROUP BY department;
这个查询将返回每个部门的最高工资。
Q2: 如何查询年龄在30到40岁之间的员工,并按年龄升序排列?
A2: 使用WHERE
子句来过滤年龄范围,并使用ORDER BY
子句按年龄升序排列,以下是示例SQL语句:
SELECT * FROM employees WHERE age BETWEEN 30 AND 40 ORDER BY age ASC;
这个查询将返回年龄在30到40岁之间的员工,并按年龄升序排列。