SQL 基本查询语句详解
一、SELECT 语句
语法 | 说明 |
SELECT column1, column2,... | 指定要查询的列,多个列之间用逗号隔开,如果要查询所有列,可以使用 。SELECT name, age FROM students; 用于查询学生表中的名字和年龄列。 |
示例:有一个employees
表,包含employee_id
(员工编号)、first_name
(名)、last_name
(姓)和salary
(工资)等列,若要查询所有员工的姓名和工资,语句为:SELECT first_name, last_name, salary FROM employees;
二、FROM 子句
语法 | 说明 |
FROM table_name | 指定数据来源的表。FROM employees 表示从employees 表中获取数据。 |
示例:在上述查询员工姓名和工资的例子中,FROM employees
就明确了数据是从employees
表中选取。
三、WHERE 子句
语法 | 说明 |
WHERE condition | 用于筛选满足特定条件的记录,条件可以是各种比较运算符(如= ,<> ,> ,< ,>= ,<= )连接的表达式。WHERE age > 30 会筛选出年龄大于 30 岁的记录。 |
示例:若要查询工资大于 5000 的员工信息,语句为:SELECT * FROM employees WHERE salary > 5000;
四、ORDER BY 子句
语法 | 说明 |
ORDER BY column1 ASC/DESC, column2 ASC/DESC,... | 按照指定的列进行排序。ASC 表示升序(默认),DESC 表示降序,可以同时对多个列进行排序。ORDER BY age ASC, salary DESC 先按年龄升序排序,再按工资降序排序(在年龄相同的情况下)。 |
示例:查询所有员工信息并按工资降序排列:SELECT * FROM employees ORDER BY salary DESC;
五、GROUP BY 子句
语法 | 说明 |
GROUP BY column1, column2,... | 将数据按照指定的列进行分组,通常与聚合函数(如 COUNT(), SUM(), AVG(), MAX(), MIN())一起使用。GROUP BY department_id 按照部门编号进行分组统计。 |
示例:计算每个部门的工资总和,语句为:SELECT department_id, SUM(salary) AS total_salary FROM employees GROUP BY department_id;
六、HAVING 子句
语法 | 说明 |
HAVING condition | 与WHERE 子句类似,但HAVING 是在分组后对分组结果进行筛选,主要用于筛选聚合后的结果。HAVING COUNT(*) > 5 筛选出记录数大于 5 的分组。 |
示例:找出员工人数超过 10 人的部门及其平均工资,语句为:SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING COUNT(*) > 10;
相关问题与解答
问题 1:如何查询students
表中年龄在 18 22 岁之间且成绩大于 80 分的学生的学号、姓名和成绩?
解答:可以使用以下 SQL 语句:SELECT student_id, name, score FROM students WHERE age BETWEEN 18 AND 22 AND score > 80;
其中BETWEEN...AND
用于筛选年龄在指定范围内的记录,AND
连接了两个筛选条件。
问题 2:在orders
表中,如何查询订单金额排名前 3 的订单信息?
解答:可以使用以下 SQL 语句:SELECT * FROM orders ORDER BY order_amount DESC LIMIT 3;
ORDER BY order_amount DESC
按照订单金额降序排序,LIMIT 3
限制返回前 3 条记录,即订单金额排名前 3 的订单信息。