1. SQL简介
1.1 什么是SQL?
SQL(Structured Query Language)是用于管理关系型数据库的标准语言。它允许用户查询、更新、插入和删除数据库中的数据。SQL 是与数据库交互的核心工具,可以用来执行所有与数据相关的操作。
1.2 SQL的历史与发展
SQL 在1970年代由 IBM 的研究人员开发,并被称为 SEQUEL(Structured English Query Language)。它从最初的关系数据库模型中衍生而来,并在1986年被 ANSI(美国国家标准协会)正式标准化。如今,SQL 已成为最广泛使用的数据库查询语言。
1.3 SQL与数据库的关系
SQL 主要与关系型数据库(RDBMS)配合使用,如 MySQL、PostgreSQL、SQL Server 和 Oracle。通过 SQL,用户能够执行各种数据管理操作,并与数据库系统交互。
2. 基本数据类型
数据库中的数据可以采用不同的数据类型,以下是 SQL 中常见的数据类型:
- 整数类型(如
INT):存储整数数值。 - 浮动点数类型(如
FLOAT,DECIMAL):存储小数或浮动小数。 - 字符类型(如
CHAR,VARCHAR):存储字符串或文本。 - 日期与时间类型(如
DATE,TIME,DATETIME):存储日期和时间。
示例:
CREATE TABLE users (
id INT,
name VARCHAR(100),
birth_date DATE
);
3. 基本查询
3.1 SELECT语句
SELECT 语句用于从数据库中查询数据。它是 SQL 最基本的语句。
- 查询所有列:
SELECT * FROM users;
- 查询特定列:
SELECT name, birth_date FROM users;
3.2 查询特定列与行
通过使用 WHERE 子句,可以指定查询的行。
- 查询特定条件的数据:
SELECT * FROM users WHERE id = 1;
3.3 使用 WHERE 条件
WHERE 子句用于过滤查询结果,允许根据条件筛选数据。
- 查询名字为 “John” 的用户:
SELECT * FROM users WHERE name = 'John';
3.4 排序:ORDER BY
ORDER BY 用于排序查询结果,默认按升序排序(ASC),也可以指定降序(DESC)。
- 按名字升序排序:
SELECT * FROM users ORDER BY name ASC;
- 按出生日期降序排序:
SELECT * FROM users ORDER BY birth_date DESC;
4. 聚合函数
聚合函数用于执行汇总计算,常见的聚合函数包括:COUNT()、SUM()、AVG()、MIN() 和 MAX()。
4.1 COUNT() 函数
用于统计某列的记录数。
SELECT COUNT(*) FROM users;
4.2 SUM() 函数
用于计算某列的总和。
SELECT SUM(age) FROM users;
4.3 AVG() 函数
用于计算某列的平均值。
SELECT AVG(age) FROM users;
4.4 MIN() 和 MAX() 函数
分别返回某列的最小值和最大值。
SELECT MIN(age), MAX(age) FROM users;
4.5 使用 GROUP BY 分组数据
GROUP BY 子句用于将查询结果按照某列进行分组,并对每组数据应用聚合函数。
- 按年龄分组,统计每个年龄段的人数:
SELECT age, COUNT(*) FROM users GROUP BY age;
4.6 使用 HAVING 过滤聚合结果
HAVING 子句用于在 GROUP BY 后对分组的结果进行过滤。
- 只选择人数大于1的年龄段:
SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 1;
5. 数据过滤
5.1 使用 AND、OR、NOT 进行复合条件查询
可以使用 AND、OR 和 NOT 来组合多个条件。
- 查询年龄大于20且名字为 “John” 的用户:
SELECT * FROM users WHERE age > 20 AND name = 'John';
- 查询名字为 “John” 或 “Jane” 的用户:
SELECT * FROM users WHERE name = 'John' OR name = 'Jane';
- 查询不包含名字 “John” 的用户:
SELECT * FROM users WHERE NOT name = 'John';
5.2 BETWEEN 操作符
BETWEEN 用于查找指定范围内的数据。
- 查询年龄在 20 到 30 之间的用户:
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
5.3 IN 操作符
IN 用于匹配指定的多个值。
- 查询名字是 “John” 或 “Jane” 的用户:
SELECT * FROM users WHERE name IN ('John', 'Jane');
5.4 LIKE 操作符
LIKE 用于模式匹配,通常用于模糊查询。
- 查询名字以 “J” 开头的用户:
SELECT * FROM users WHERE name LIKE 'J%';
- 查询名字包含 “an” 的用户:
SELECT * FROM users WHERE name LIKE '%an%';
5.5 IS NULL 操作符
IS NULL 用于查找空值。
- 查询没有出生日期的用户:
SELECT * FROM users WHERE birth_date IS NULL;
总结
以上是 SQL 基础部分的详细教程,涵盖了 SQL 的核心概念与常用操作,包括查询、数据过滤、排序、聚合、以及数据分组等。掌握这些基础内容后,你将能够在 SQL 数据库中执行高效的查询与操作,为进一步深入学习 SQL 和高级数据库管理打下坚实的基础。