SQL SELECT 语句

SQL SELECT 语句用于从数据库表中查询数据,是 SQL 最常用的语句之一。它允许你指定要检索的列、表、条件等,以获取所需的数据。

基本语法

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[GROUP BY column]
[HAVING condition]
[ORDER BY column [ASC | DESC]];

核心组成部分

  1. SELECT: 指定要查询的列(或使用 * 选择所有列)。
  2. FROM: 指定数据来源的表。
  3. WHERE: 过滤数据,满足条件的行才会被返回。
  4. GROUP BY: 将数据分组,常用于聚合函数(如 COUNT, SUM)。
  5. HAVING: 过滤分组后的数据。
  6. ORDER BY: 对结果排序,ASC(升序,默认)或 DESC(降序)。

示例

假设有一个表 employees

idnamedepartmentsalary
1AliceHR50000
2BobIT60000
3CharlieHR55000

1. 基本查询

SELECT name, salary
FROM employees;

结果

namesalary
Alice50000
Bob60000
Charlie55000

2. 查询所有列

SELECT *
FROM employees;

结果:返回表中所有列和行。

3. 使用 WHERE 条件

SELECT name, salary
FROM employees
WHERE department = 'HR';

结果

namesalary
Alice50000
Charlie55000

4. 使用聚合函数和 GROUP BY

SELECT department, COUNT(*) as emp_count
FROM employees
GROUP BY department;

结果

departmentemp_count
HR2
IT1

5. 使用 HAVING

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 55000;

结果

departmentavg_salary
IT60000

6. 使用 ORDER BY

SELECT name, salary
FROM employees
ORDER BY salary DESC;

结果

namesalary
Bob60000
Charlie55000
Alice50000

其他常见用法

  • DISTINCT: 去除重复行。
  SELECT DISTINCT department
  FROM employees;

结果: HR, IT

  • LIMIT: 限制返回的行数(常用于 MySQL/PostgreSQL)。
  SELECT name
  FROM employees
  LIMIT 2;

结果: Alice, Bob

  • JOIN: 结合多个表的数据。
  SELECT e.name, d.dept_name
  FROM employees e
  JOIN departments d ON e.department = d.dept_id;
  • LIKE: 模糊查询。
  SELECT name
  FROM employees
  WHERE name LIKE 'A%';

结果: Alice

  • IN: 匹配多个值。
  SELECT name
  FROM employees
  WHERE department IN ('HR', 'IT');

注意事项

  • 性能:避免在大型表上使用 SELECT *,明确指定需要的列。
  • 大小写:SQL 关键字对大小写不敏感,但表名和列名可能因数据库而异。
  • 安全性:使用参数化查询防止 SQL 注入。
  • 数据库差异:某些功能(如 LIMIT)在不同数据库(如 SQL Server 使用 TOP)中语法不同。

如果需要更复杂的查询示例、特定数据库的用法(如 MySQL、PostgreSQL、SQL Server),或结合实际场景的 SQL 语句,请告诉我!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注