达永编程网

程序员技术分享与交流平台

SQL 基础查询

SQL 查询简介

SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库系统的声明性编程语言。SQL 查询是用于从数据库中检索、更新、插入或删除数据的语句。

基本结构

一个典型的 SQL 查询语句通常由以下部分组成:

  1. SELECT:指定要查询的字段。
  2. FROM:指定查询的表。
  3. WHERE:指定查询的条件,用于过滤数据。
  4. GROUP BY:对查询结果进行分组,通常与聚合函数一起使用。
  5. HAVING:对分组后的结果进行过滤。
  6. ORDER BY:对查询结果进行排序。
  7. LIMIT:限制查询结果的数量,常用于分页。

语法示例

SELECT 列1, 列2, ...
FROM 表名
WHERE 条件
GROUP BY 分组字段
HAVING 分组后条件
ORDER BY 排序字段 [ASC|DESC]
LIMIT 跳过的记录数, 返回的记录数;绍查询的完整语法;

完整的 SQL 查询示例

假设我们有一个名为 employees 的表,其结构如下:

表格

字段名

数据类型

id

INT

name

VARCHAR(100)

age

INT

salary

DECIMAL(10, 2)

department

VARCHAR(50)

1. 查询所有字段

SELECT * FROM employees;
  • 解释:查询 employees 表中的所有字段。

2. 查询特定字段

SELECT name, salary FROM employees;
  • 解释:只查询 name 和 salary 字段。

3. 使用WHERE条件过滤数据

SELECT name, salary FROM employees WHERE age > 30;
  • 解释:查询年龄大于 30 的员工的姓名和工资。

4. 使用GROUP BY进行分组

SELECT department, COUNT(*) AS num_employees FROM employees GROUP BY department;
  • 解释:按部门分组,并计算每个部门的员工数量。

5. 使用HAVING过滤分组后的结果

SELECT department, COUNT(*) AS num_employees 
FROM employees 
GROUP BY department 
HAVING COUNT(*) > 5;
  • 解释:按部门分组,并筛选出员工数量大于 5 的部门。

6. 使用ORDER BY排序

SELECT name, salary FROM employees ORDER BY salary DESC;
  • 解释:按工资降序排列员工的姓名和工资。

7. 使用LIMIT进行分页

SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 0, 10;
  • 解释:按工资降序排列,返回第一页(每页 10 条记录)。

8. 结合多个条件

SELECT name, salary, department 
FROM employees 
WHERE age > 30 
GROUP BY department 
HAVING COUNT(*) > 5 
ORDER BY salary DESC 
LIMIT 0, 10;
  • 解释
  • 查询年龄大于 30 的员工。
  • 按部门分组,并筛选出员工数量大于 5 的部门。
  • 按工资降序排列。
  • 返回第一页(每页 10 条记录)。

注意事项

  1. WHERE 和 HAVING 的区别
  • WHERE 用于过滤行,作用于原始数据。
  • HAVING 用于过滤分组后的结果,通常与聚合函数一起使用。
  1. ORDER BY 的使用
  • 可以对多个字段排序,例如:
ORDER BY department ASC, salary DESC;
  1. LIMIT 的分页计算
  • 第一页:LIMIT 0, 10
  • 第二页:LIMIT 10, 10
  • 第三页:LIMIT 20, 10
  • 以此类推。
  1. 字段别名
  • 可以为字段或表设置别名,使查询更简洁。例如:
SELECT name AS employee_name, salary AS employee_salary FROM employees AS e;

总结

通过这些具体的例子,你可以看到 SQL 查询语句的各个部分如何组合起来完成复杂的查询任务。掌握这些基本结构和用法后,你就可以根据实际需求灵活地编写 SQL 查询了。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言