1. 什么是 SQL?
- SQL(Structured Query Language) 是用于管理和操作关系型数据库的标准语言。
- 核心功能:
- 数据查询(SELECT)
- 数据定义(CREATE、ALTER、DROP)
- 数据操作(INSERT、UPDATE、DELETE)
- 数据控制(权限管理)
2. 数据库核心概念
表(Table)
- 数据以二维表格形式存储,包含行(记录)和列(字段)。
- 示例:一个
students
表可能有id
,name
,age
,score
等列。
字段(Column)
- 表的列,表示数据的属性,如
name
表示学生姓名。
- 表的列,表示数据的属性,如
记录(Row)
- 表中的一行数据,代表一条完整的记录。
主键(Primary Key)
- 唯一标识表中每条记录的列(如
id
),不可重复。
- 唯一标识表中每条记录的列(如
外键(Foreign Key)
- 用于关联其他表的列,建立表之间的关系。
3. SQL 基本语法规则
- SQL 语句以分号
;
结尾。 - 关键字(如
SELECT
,FROM
)通常大写,但 SQL 不区分大小写。 - 字符串用单引号包裹(如
'John'
)。 - 注释:
- 单行注释:
-- 这是注释
- 多行注释:
/* 多行注释 */
- 单行注释:
4. 数据查询(SELECT 语句)
4.1 查询所有数据
SELECT * FROM students; -- 查询 students 表的所有列
4.2 查询指定列
SELECT name, age FROM students; -- 仅查询 name 和 age 列
4.3 列别名(AS)
为列或表设置别名,提升可读性:
SELECT name AS 学生姓名, age AS 年龄 FROM students;
5. 过滤数据(WHERE 子句)
用 WHERE
筛选满足条件的记录。
5.1 基本比较运算符
=
,<>
(不等于),>
,<
,>=
,<=
SELECT * FROM students WHERE age >= 18; -- 查询年龄≥18的学生
5.2 逻辑运算符
AND
:同时满足多个条件OR
:满足任意一个条件NOT
:取反
SELECT * FROM students
WHERE age > 18 AND score >= 90; -- 年龄>18且分数≥90
5.3 范围查询
- BETWEEN:在某个范围内
SELECT * FROM students
WHERE score BETWEEN 80 AND 90; -- 分数在80到90之间(包含边界)
- IN:匹配多个值
SELECT * FROM students
WHERE age IN (18, 20, 22); -- 年龄为18、20或22
5.4 模糊查询(LIKE)
%
表示任意多个字符,_
表示单个字符。
SELECT * FROM students
WHERE name LIKE '张%'; -- 查询姓“张”的学生(如“张三”、“张伟”)
6. 排序(ORDER BY)
按指定列排序结果:
ASC
:升序(默认)DESC
:降序
SELECT * FROM students
ORDER BY score DESC; -- 按分数从高到低排序
7. 限制结果数量(LIMIT)
仅返回前 N 条记录(常用于分页):
SELECT * FROM students
LIMIT 5; -- 返回前5条记录
8. 综合示例
-- 查询分数≥80的学生的姓名和年龄,按年龄降序排列,返回前3条
SELECT name, age
FROM students
WHERE score >= 80
ORDER BY age DESC
LIMIT 3;