MySQL数据检索入门:从零开始学SELECT查询

一、什么是MySQL数据检索?

简单理解

想象一下,你有一个Excel表格,里面记录了全班同学的信息:

学号

姓名

年龄

成绩

班级

数据检索就像是用"筛选"功能,快速找到你需要的信息。

二、最基础的查询:SELECT语句

2.1 基本格式(就像说话一样简单)

bash 复制代码
sql
SELECT 要查什么
FROM 从哪里查;

2.2 举个生活中的例子

假设我们有一个students(学生)表:

bash 复制代码
select * from students;
学号	姓名	年龄	成绩	班级
001	张三	18	85	一班
002	李四	19	92	二班
003	王五	18	78	一班

三、第一个查询:查看所有数据

3.1 查询所有信息(就像看整个表格)

bash 复制代码
sql
-- 星号(*)表示"所有列"
SELECT * 
FROM students;
查询结果:

text
学号  姓名  年龄  成绩  班级
001   张三   18    85   一班
002   李四   19    92   二班
003   王五   18    78   一班

四、SELECT子句:告诉MySQL你要看什么

4.1 只看部分信息(选特定列)

bash 复制代码
sql
-- 只看姓名和成绩
SELECT 姓名, 成绩 
FROM students;
结果:

text
姓名  成绩
张三   85
李四   92
王五   78

4.2 给列起个好记的名字(别名)

bash 复制代码
sql
-- 把"成绩"改名为"分数"
SELECT 
    姓名,
    成绩 AS 分数
FROM students;
结果:

text
姓名  分数
张三   85
李四   92
王五   78

4.3 做简单的计算

bash 复制代码
sql
-- 假设每个人成绩加5分
SELECT 
    姓名,
    成绩 AS 原分数,
    成绩 + 5 AS 新分数
FROM students;
结果:

text
姓名  原分数  新分数
张三    85      90
李四    92      97
王五    78      83

五、FROM子句:告诉MySQL从哪里找

5.1 最简单的用法:从单个表查

bash 复制代码
sql
-- 从学生表查
SELECT * FROM students;

-- 也可以给表起个别名(方便写)
SELECT s.姓名, s.成绩
FROM students AS s;

5.2 实际例子(一步步来)

bash 复制代码
第1步:创建练习用的表
sql
-- 创建一个简单的员工表
CREATE TABLE employees (
    id INT,           -- 员工编号
    name VARCHAR(20), -- 姓名
    age INT,          -- 年龄
    salary DECIMAL(10,2), -- 工资
    department VARCHAR(30) -- 部门
);
第2步:插入一些数据
sql
INSERT INTO employees VALUES
(1, '张三', 25, 5000.00, '销售部'),
(2, '李四', 30, 8000.00, '技术部'),
(3, '王五', 28, 6000.00, '销售部'),
(4, '赵六', 35, 10000.00, '技术部');
第3步:开始查询练习
练习1:查看所有员工

sql
SELECT * FROM employees;
练习2:只看姓名和部门

sql
SELECT name, department FROM employees;
练习3:给列起中文名

sql
SELECT 
    name AS '姓名',
    department AS '部门',
    salary AS '月薪'
FROM employees;
练习4:计算年薪

sql
SELECT 
    name AS '姓名',
    salary AS '月薪',
    salary * 12 AS '年薪'
FROM employees;

六、常用的小技巧

6.1 去掉重复的信息

bash 复制代码
sql
-- 查看有哪些不同的部门
SELECT DISTINCT department FROM employees;
结果:

text
department
销售部
技术部

6.2 组合信息显示

bash 复制代码
sql
-- 把姓名和部门组合显示
SELECT 
    CONCAT(name, '(', department, ')') AS '员工信息'
FROM employees;
结果:

text
员工信息
张三(销售部)
李四(技术部)
王五(销售部)
赵六(技术部)

七、实战练习:自己动手试试

bash 复制代码
练习表:图书信息表
sql
CREATE TABLE books (
    book_id INT,           -- 图书编号
    title VARCHAR(100),    -- 书名
    author VARCHAR(50),    -- 作者
    price DECIMAL(8,2),    -- 价格
    publish_date DATE      -- 出版日期
);

-- 插入数据
INSERT INTO books VALUES
(1, 'MySQL入门', '张三', 59.80, '2023-01-15'),
(2, 'Python编程', '李四', 79.90, '2022-11-20'),
(3, '网页设计', '王五', 49.90, '2023-03-10'),
(4, '数据分析', '李四', 69.90, '2022-09-05');

练习题和答案

bash 复制代码
题目1:查看所有图书信息

sql
-- 你的代码写在这里
答案:

sql
SELECT * FROM books;
题目2:只看书名和作者

sql
-- 你的代码写在这里
答案:

sql
SELECT title, author FROM books;
题目3:显示"书名-作者"格式

sql
-- 你的代码写在这里
答案:

sql
SELECT 
    CONCAT(title, ' - ', author) AS '图书信息'
FROM books;
题目4:计算打折后的价格(打8折)

sql
-- 你的代码写在这里
答案:

sql
SELECT 
    title AS '书名',
    price AS '原价',
    price * 0.8 AS '折后价'
FROM books;

八、常见错误和解决方法

错误1:表名或列名写错了

sql

bash 复制代码
-- 错误写法
SELECT nmae FROM employees;  -- 把name拼错了
bash 复制代码
-- 正确写法
SELECT name FROM employees;

错误2:忘记写FROM子句

bash 复制代码
sql
-- 错误写法
SELECT name;  -- 缺少FROM

-- 正确写法
SELECT name FROM employees;

错误3:SQL语句没有分号

bash 复制代码
sql
-- 错误写法
SELECT * FROM employees  -- 缺少分号

-- 正确写法
SELECT * FROM employees;
相关推荐
我真的是大笨蛋2 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化
shengli7222 小时前
机器学习与人工智能
jvm·数据库·python
2301_765703142 小时前
Python迭代器(Iterator)揭秘:for循环背后的故事
jvm·数据库·python
倔强的石头1062 小时前
关键信息基础设施的数据库选型:高可用、全链路安全与平滑替代的技术实践
数据库·安全·金仓数据库
人道领域2 小时前
javaWeb从入门到进阶(SpringBoot事务管理及AOP)
java·数据库·mysql
煎蛋学姐2 小时前
SSM音乐播放软件的开发与实现7g5j0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb 开发·前后端开发
2301_821369612 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
星空露珠2 小时前
速算24点所有题库公式
开发语言·数据库·算法·游戏·lua
m0_561359672 小时前
使用Kivy开发跨平台的移动应用
jvm·数据库·python