一、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;

执行后,结果只显示 nameage 两列。

六、给列取别名:让结果更清晰

如果列名不够直观(比如 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;

十二、练习建议

  1. 自己创建一个简单的表(比如学生表),插入几条测试数据。
  2. 尝试修改上述示例,比如改条件、换列名、调整排序方式。
  3. 用不同的条件组合(AND/OR/NOT),练习模糊查询(%和_)。

通过不断尝试,你会逐渐熟悉MySQL查询的逻辑,从“写简单语句”到“灵活提取数据”。

记住:MySQL查询的核心是 明确需求→选表→定列→加条件→排序/限制,多练几次就能熟练掌握!

小夜