### MySQL单表查询知识点详解 #### 一、简单查询 **简单查询**是MySQL中最基本的查询类型之一,主要用于从数据库表中检索数据。 ##### 4.1.1 SELECT语句 - **基本语法**: `SELECT [DISTINCT] * | {字段名1, 字段名2, ...} FROM 表名;` - `[DISTINCT]`: 可选参数,用于去除查询结果中的重复行。 - `*`: 代表选择所有字段。 - `{字段名1, 字段名2, ...}`: 选择特定的字段。 ##### 4.1.2 查询所有字段 - **语法**: `SELECT * FROM 表名;` - **案例**: - 查询`student`表中的所有字段: `SELECT * FROM student;` ##### 4.1.3 查询指定字段 - **语法**: `SELECT 字段名1, 字段名2, ... FROM 表名;` - **案例**: - 查询`student`表中的`name`和`age`字段: `SELECT name, age FROM student;` #### 二、按条件查询 **按条件查询**允许用户根据一定的逻辑条件来筛选查询结果。 ##### 4.2.1 带关系运算符的查询 - **语法**: `SELECT * FROM 表名 WHERE 条件表达式;` - **案例**: - 查询`student`表中`id`为4的学生姓名: `SELECT name FROM student WHERE id = 4;` - 查询`student`表中`grade`大于80的学生姓名: `SELECT name FROM student WHERE grade > 80;` ##### 4.2.2 带IN关键字的查询 - **语法**: `SELECT * FROM 表名 WHERE 字段名 [NOT] IN (元素1, 元素2, ...);` - **案例**: - 查询`student`表中`id`为2或3的学生信息: `SELECT * FROM student WHERE id IN (2, 3);` - 查询`student`表中`id`不为2或3的学生信息: `SELECT * FROM student WHERE id NOT IN (2, 3);` ##### 4.2.3 带BETWEEN AND关键字的查询 - **语法**: `SELECT * FROM 表名 WHERE 字段名 [NOT] BETWEEN 值1 AND 值2;` - **案例**: - 查询`student`表中`id`在2和5之间的学生姓名: `SELECT name FROM student WHERE id BETWEEN 2 AND 5;` - 查询`student`表中`id`不在2和5之间的学生姓名: `SELECT name FROM student WHERE id NOT BETWEEN 2 AND 5;` ##### 4.2.4 空值查询 - **语法**: `SELECT * FROM 表名 WHERE 字段名 IS [NOT] NULL;` - **案例**: - 查询`student`表中`email`为空的学生信息: `SELECT * FROM student WHERE email IS NULL;` - 查询`student`表中`email`不为空的学生信息: `SELECT * FROM student WHERE email IS NOT NULL;` ##### 4.2.5 带DISTINCT关键字的查询 - **语法**: `SELECT DISTINCT 字段名 FROM 表名;` - **案例**: - 查询`student`表中不同的`city`值: `SELECT DISTINCT city FROM student;` ##### 4.2.6 带LIKE关键字的查询 - **语法**: `SELECT * FROM 表名 WHERE 字段名 LIKE '模式';` - **案例**: - 查询`student`表中名字以"w"开头的学生信息: `SELECT * FROM student WHERE name LIKE 'w%';` - 查询`student`表中名字包含"song"的学生信息: `SELECT * FROM student WHERE name LIKE '%song%';` ##### 4.2.7 带AND关键字的多条件查询 - **语法**: `SELECT * FROM 表名 WHERE 条件1 AND 条件2;` - **案例**: - 查询`student`表中`grade`大于80且`age`小于20的学生信息: `SELECT * FROM student WHERE grade > 80 AND age < 20;` ##### 4.2.8 带OR关键字的多条件查询 - **语法**: `SELECT * FROM 表名 WHERE 条件1 OR 条件2;` - **案例**: - 查询`student`表中`grade`大于80或`age`小于20的学生信息: `SELECT * FROM student WHERE grade > 80 OR age < 20;` #### 三、高级查询 **高级查询**涉及到聚合函数、排序、分组等更复杂的操作。 ##### 4.3.1 聚合函数 - **常用的聚合函数**: COUNT, SUM, AVG, MAX, MIN - **案例**: - 查询`student`表中学生的总数: `SELECT COUNT(*) FROM student;` - 查询`student`表中学生的平均成绩: `SELECT AVG(grade) FROM student;` ##### 4.3.2 对查询结果排序 - **语法**: `SELECT * FROM 表名 ORDER BY 字段名 [ASC | DESC];` - **案例**: - 查询`student`表中所有学生信息并按`age`升序排序: `SELECT * FROM student ORDER BY age ASC;` - 查询`student`表中所有学生信息并按`grade`降序排序: `SELECT * FROM student ORDER BY grade DESC;` ##### 4.3.3 分组查询 - **语法**: `SELECT 字段名, 聚合函数 FROM 表名 GROUP BY 字段名 [HAVING 条件];` - **案例**: - 查询`student`表中每个城市的平均成绩: `SELECT city, AVG(grade) FROM student GROUP BY city;` ##### 4.3.4 使用LIMIT限制查询结果的数量 - **语法**: `SELECT * FROM 表名 LIMIT [OFFSET] 记录数;` - **案例**: - 查询`student`表中的前5条记录: `SELECT * FROM student LIMIT 5;` - 查询`student`表中第6到第10条记录: `SELECT * FROM student LIMIT 5 OFFSET 5;` ##### 4.3.5 函数(列表) - **其他常用函数**: IFNULL, COALESCE, CASE WHEN - **案例**: - 将`student`表中`email`为空的字段用"unknown"替换: `SELECT IFNULL(email, 'unknown') FROM student;` #### 四、为表和字段取别名 **取别名**可以让查询结果更加易读。 ##### 4.4.1 为表取别名 - **语法**: `SELECT * FROM 表名 AS 别名;` - **案例**: - 查询`student`表,并将表名简化为`s`: `SELECT * FROM student AS s;` ##### 4.4.2 为字段取别名 - **语法**: `SELECT 字段名 AS 别名 FROM 表名;` - **案例**: - 查询`student`表中`name`字段,并将字段名简化为`姓名`: `SELECT name AS 姓名 FROM student;` 以上就是关于MySQL单表查询的主要知识点详解。通过这些知识点的学习,您可以更加熟练地进行数据库的查询操作,提高数据处理效率。
- 粉丝: 5951
- 资源: 676
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助