一、MySQL是什么?¶
MySQL是一款开源的关系型数据库管理系统,就像一个“数字仓库”,可以用来存储、管理大量结构化数据。比如电商网站的用户信息、学校的学生档案、企业的订单数据等,都可以用MySQL来存储和提取。对于编程或数据分析来说,学会从MySQL中提取数据是基础技能。
二、准备工作:连接数据库¶
在开始查询前,你需要先确保MySQL已安装并运行。如果是新手,推荐使用图形化工具(如Navicat、SQLyog)或命令行工具(MySQL Command Line Client)连接数据库。连接成功后,你会看到类似 mysql> 的提示符,就可以开始输入查询语句了。
三、理解“表”和“字段”¶
在MySQL中,数据存储在“表”中,每个表由多个“字段”组成,每个字段对应一类信息(比如姓名、年龄)。举个例子:假设我们有一个学生信息表 student,它的字段可能有:
- id:学号(数字,唯一标识)
- name:姓名(文本)
- age:年龄(数字)
- class:班级(文本)
四、最基础的查询:查询所有数据¶
语法:SELECT * FROM 表名;
- * 表示“所有列”,FROM 后面跟表名。
示例:查询学生表中所有学生的信息:
SELECT * FROM student;
执行后,你会看到表中所有行和列的数据。
五、查询指定列:只看需要的信息¶
如果不想看所有列(比如只关心姓名和年龄),可以指定列名。
语法:SELECT 列1, 列2, ... FROM 表名;
示例:查询学生的姓名和年龄:
SELECT name, age FROM student;
执行后,结果只显示 name 和 age 两列。
六、给列取别名:让结果更清晰¶
如果列名不够直观(比如 name 可能显示为“姓名”),可以用 AS 给列取别名:
语法:SELECT 列名 AS 别名 FROM 表名;
示例:给姓名和年龄取更友好的别名:
SELECT name AS 学生姓名, age AS 年龄 FROM student;
结果中的列名将显示为“学生姓名”和“年龄”。
七、条件查询:只查符合要求的数据¶
实际场景中,我们很少需要查所有数据,而是根据条件筛选。用 WHERE 子句实现条件过滤。
1. 比较运算符:查满足条件的行¶
>(大于)、<(小于)、=(等于)、>=(大于等于)、<=(小于等于)、!=或<>(不等于)
示例1:查年龄大于18岁的学生:
SELECT * FROM student WHERE age > 18;
示例2:查班级是“一班”的学生(注意:字符串需用单引号):
SELECT * FROM student WHERE class = '一班';
2. 逻辑运算符:组合多个条件¶
AND(且)、OR(或)、NOT(非)
示例1:年龄大于18岁 且 班级是“一班”:
SELECT * FROM student WHERE age > 18 AND class = '一班';
示例2:年龄小于15岁 或 班级是“二班”:
SELECT * FROM student WHERE age < 15 OR class = '二班';
3. 模糊查询:匹配部分内容¶
用 LIKE 实现模糊匹配,% 代表任意多个字符,_ 代表单个字符。
示例1:查姓名以“张”开头的学生:
SELECT * FROM student WHERE name LIKE '张%';
示例2:查姓名中包含“明”的学生(中间有“明”):
SELECT * FROM student WHERE name LIKE '%明%';
八、排序:让结果有序¶
用 ORDER BY 对结果排序,默认是升序(ASC),降序用 DESC。
语法:SELECT ... FROM 表名 ORDER BY 列名 [ASC/DESC];
示例:按年龄降序排列学生(年龄大的在前):
SELECT * FROM student ORDER BY age DESC;
九、限制结果:只取前N条¶
用 LIMIT 限制返回的行数,常用于分页或快速查看部分数据。
语法:SELECT ... FROM 表名 LIMIT 数量; 或 LIMIT 偏移量, 数量;(偏移量=从第几条开始,从0开始)
示例1:只查前3条学生信息:
SELECT * FROM student LIMIT 3;
示例2:从第2条开始,取3条数据(偏移量=1,因为第1条是0):
SELECT * FROM student LIMIT 1, 3;
十、去重:排除重复数据¶
如果表中有重复行(比如多条相同信息),用 DISTINCT 去重。
语法:SELECT DISTINCT 列名 FROM 表名;
示例:查所有不重复的班级:
SELECT DISTINCT class FROM student;
十一、综合示例:组合多个功能¶
假设我们要查:
- 班级是“一班”
- 年龄大于18岁
- 姓名以“李”开头
- 只显示姓名和年龄
- 按年龄降序排列
- 取前2条
SQL语句:
SELECT name AS 学生姓名, age AS 年龄
FROM student
WHERE class = '一班'
AND age > 18
AND name LIKE '李%'
ORDER BY age DESC
LIMIT 2;
十二、练习建议¶
- 自己创建一个简单的表(比如学生表),插入几条测试数据。
- 尝试修改上述示例,比如改条件、换列名、调整排序方式。
- 用不同的条件组合(AND/OR/NOT),练习模糊查询(%和_)。
通过不断尝试,你会逐渐熟悉MySQL查询的逻辑,从“写简单语句”到“灵活提取数据”。
记住:MySQL查询的核心是 明确需求→选表→定列→加条件→排序/限制,多练几次就能熟练掌握!