SQL基础查询语句

SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系数据库的标准语言,本文将详细介绍SQL中的基础查询语句,包括SELECT、FROM、WHERE、ORDER BY、GROUP BY等关键字的使用及其组合方式。
SELECT语句
1.1 基本语法
SELECT column1, column2, ... FROM table_name;
column1, column2, ...: 要查询的列名,可以是一个或多个列。
table_name: 要查询的表名。
1.2 示例
假设有一个名为employees
的表,包含以下列:id
,first_name
,last_name
,age
,department
。
SELECT first_name, last_name, age FROM employees;
该查询将返回所有员工的first_name
、last_name
和age
。
WHERE子句

2.1 基本语法
SELECT column1, column2, ... FROM table_name WHERE condition;
condition: 过滤条件的表达式。
2.2 示例
SELECT first_name, last_name FROM employees WHERE department = 'Sales';
该查询将返回所有属于销售部门的员工的名字和姓氏。
ORDER BY子句
3.1 基本语法
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
ASC: 升序排列(默认)。
DESC: 降序排列。

3.2 示例
SELECT first_name, last_name, age FROM employees ORDER BY age DESC;
该查询将按年龄降序排列员工信息。
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 示例
SELECT department, COUNT(*) FROM employees GROUP BY department;
该查询将返回每个部门的员工数量。
HAVING子句
5.1 基本语法
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 HAVING aggregate_condition;
aggregate_condition: 聚合后的条件表达式。
5.2 示例
SELECT department, AVG(age) FROM employees GROUP BY department HAVING AVG(age) > 30;
该查询将返回平均年龄大于30岁的部门及其平均年龄。
LIMIT子句
6.1 基本语法
SELECT column1, column2, ... FROM table_name LIMIT number;
number: 要返回的最大行数。
6.2 示例
SELECT first_name, last_name FROM employees LIMIT 10;
该查询将返回前10个员工的名字和姓氏。
联合查询(JOIN)
7.1 基本语法
SELECT columns FROM table1 JOIN table2 ON table1.common_column = table2.common_column;
table1,table2: 要连接的两个表。
common_column: 两个表中用于连接的共同列。
7.2 示例
假设有两个表:employees
(员工表)和departments
(部门表),其中employees
表有一个department_id
列,而departments
表有一个id
列。
SELECT employees.first_name, employees.last_name, departments.department_name FROM employees JOIN departments ON employees.department_id = departments.id;
该查询将返回每个员工的名字、姓氏以及他们所属的部门名称。
子查询(Subquery)
8.1 基本语法
SELECT column1, column2, ... FROM table_name WHERE column_name = (SELECT column_name FROM another_table WHERE condition);
another_table: 子查询所在的表。
condition: 子查询中的条件表达式。
8.2 示例
SELECT first_name, last_name FROM employees WHERE department_id = (SELECT id FROM departments WHERE department_name = 'Sales');
该查询将返回属于销售部门的所有员工的名字和姓氏。
UNION操作符
9.1 基本语法
SELECT column1, column2, ... FROM table1 UNION SELECT column1, column2, ... FROM table2;
table1,table2: 要合并的两个表。
column1, column2, ...: 要选择的列名,必须匹配。
9.2 示例
SELECT first_name, last_name FROM employees UNION SELECT first_name, last_name FROM former_employees;
该查询将返回当前员工和前员工的不重复名单。
相关问题与解答栏目
问题1:如何在SQL中选择特定的列?
解答:使用SELECT
语句后跟列名即可。
SELECT first_name, last_name FROM employees;
这将选择employees
表中的first_name
和last_name
列。
问题2:如何在SQL中对结果进行排序?
解答:使用ORDER BY
子句指定排序的列和顺序。
SELECT first_name, last_name FROM employees ORDER BY age DESC;
这将按年龄降序排列员工信息。