SQL 基本查询语句详解
SQL(Structured Query Language)是用于管理和操作关系型数据库的标准语言,其基本查询语句是SELECT
,用于从数据库中检索数据,以下是对 SQL 基本查询语句的详细解析。
基本的 SELECT 语句
语法
SELECT column1, column2, ... FROM table_name;
示例
假设有一个名为employees
的表,包含以下列:id
,name
,position
,salary
。
SELECT name, position FROM employees;
这个查询将返回所有员工的姓名和职位。
使用 WHERE 子句过滤数据
语法
SELECT column1, column2, ... FROM table_name WHERE condition;
示例
只选择工资大于5000的员工:
SELECT name, salary FROM employees WHERE salary > 5000;
3. 使用 ORDER BY 子句排序结果
语法
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
示例
按工资从高到低排序员工:
SELECT name, salary FROM employees ORDER BY salary DESC;
4. 使用 GROUP BY 子句分组数据
语法
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1;
示例
计算每个职位的平均薪资:
SELECT position, AVG(salary) as avg_salary FROM employees GROUP BY position;
5. 使用 HAVING 子句过滤分组后的数据
语法
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 HAVING condition;
示例
只显示平均薪资大于6000的职位:
SELECT position, AVG(salary) as avg_salary FROM employees GROUP BY position HAVING AVG(salary) > 6000;
6. 使用 LIMIT 子句限制结果集行数
语法
SELECT column1, column2, ... FROM table_name LIMIT number_of_rows;
示例
只返回前10条记录:
SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 10;
使用 JOIN 子句连接多个表
语法
SELECT columns FROM table1 JOIN table2 ON table1.common_field = table2.common_field;
示例
假设有两个表employees
和departments
,通过department_id
连接:
SELECT employees.name, departments.department_name FROM employees JOIN departments ON employees.department_id = departments.id;
8. 使用 UNION 合并多个查询结果集
语法
SELECT columns FROM table1 UNION SELECT columns FROM table2;
示例
获取所有经理和工程师的名字:
SELECT name FROM employees WHERE position = 'Manager' UNION SELECT name FROM employees WHERE position = 'Engineer';
使用子查询(嵌套查询)
语法
SELECT column1, column2, ... FROM table_name WHERE column_name IN (SELECT column_name FROM another_table);
示例
查找工资高于公司平均工资的员工:
SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
相关问题与解答
问题1: 如何在 SQL 查询中为列指定别名?
解答: 在 SQL 查询中,可以使用AS
关键字为列指定别名。
SELECT name AS employee_name, salary AS monthly_salary FROM employees;
这样,name
列将被显示为employee_name
,salary
列将被显示为monthly_salary
。
问题2: 如何在 SQL 查询中选择不重复的记录?
解答: 在 SQL 查询中,可以使用DISTINCT
关键字来选择不重复的记录。
SELECT DISTINCT department_id FROM employees;
这样,查询结果中每个department_id
都是唯一的,不会包含重复的记录。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/85606.html