1. SELECT 基本语法

SELECT 是 SQL 中最常用的语句,用于从数据库表中查询数据。基本语法如下:

sql 语法
SELECT 查询列表
FROM 表名;

其中,查询列表可以是:

  • 表中的字段名——最常见的用法
  • 常量值——如数字、字符串
  • 表达式——如 salary * 12
  • 函数——如 VERSION()UPPER(last_name)
⚠️ SQL 语句不区分大小写,但建议关键字大写,表名和字段名小写,这是良好的编码习惯。

1.1 查询单个字段

从 employees 表中查询 last_name(姓氏)字段:

sql
USE myemployees;  -- 先选择数据库

SELECT last_name
FROM employees;

1.2 查询多个字段

多个字段之间用英文逗号 , 分隔:

sql
SELECT last_name, salary, email
FROM employees;

1.3 查询所有字段

使用 * 号查询表中所有字段(方便但不推荐在实际开发中使用):

sql
-- 方式一:用 * 号(不推荐,实际开发性能差)
SELECT * FROM employees;

-- 方式二:明确列出所有字段(推荐)
SELECT employee_id, first_name, last_name,
       email, phone_number, hire_date,
       job_id, salary, commission_pct,
       manager_id, department_id
FROM employees;

2. 查询常量与表达式

SELECT 不仅可以查询字段,还可以查询常量值和表达式:

sql
-- 查询常量值
SELECT 100;         -- 数字常量
SELECT 'abc';       -- 字符串常量(注意用单引号)

-- 查询表达式
SELECT 100 * 98;     -- 输出 9800
SELECT 100 % 98;     -- 输出 2

-- 在查询表的同时添加常量列
SELECT last_name, salary, salary * 12
FROM employees;

3. 字段别名(AS)

使用 AS 关键字(或空格)为字段或表达式起一个更直观的别名,方便阅读结果。

sql
-- 方式一:使用 AS 关键字
SELECT last_name AS 姓氏, salary AS 月薪
FROM employees;

-- 方式二:省略 AS(不推荐,可读性差)
SELECT last_name 姓氏, salary 月薪
FROM employees;

-- 别名含特殊字符时,用双引号括起来
SELECT salary * 12 AS "年薪(元)"
FROM employees;
💡 好的别名让 SQL 查询结果一目了然,是优质代码的标志。

4. 去重(DISTINCT)

使用 DISTINCT 关键字可以去掉结果中重复的行:

sql
-- 不去重:可能有多个员工的 department_id 相同
SELECT department_id FROM employees;

-- 去重:每个部门编号只出现一次
SELECT DISTINCT department_id FROM employees;

-- 注意:DISTINCT 作用于整行,以下查询去掉姓氏+部门完全相同的重复行
SELECT DISTINCT last_name, department_id FROM employees;

5. 查询函数

SELECT 可以直接调用 MySQL 的内置函数:

sql
-- 查询 MySQL 版本号
SELECT VERSION();

-- 查询当前日期时间
SELECT NOW();

-- 查询当前登录的用户
SELECT USER();

-- 对字段使用函数
SELECT UPPER(last_name) AS 姓氏大写
FROM employees;

SELECT LENGTH(last_name) AS 姓氏字符数
FROM employees;

6. 注意事项

  • 每条 SQL 语句以英文分号 ; 结尾(在 MySQL 客户端中必须)
  • SQL 关键字不区分大小写,但推荐关键字大写
  • 字符串值用单引号括起来:'abc'(双引号在标准 SQL 中用于标识符)
  • 字段别名中如含中文或特殊符号,建议用双引号括起来
  • 查询前记得先用 USE 数据库名; 选择数据库