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;
相关推荐
火飞鹰40 分钟前
封装MinIO为starter
java·数据库·spring boot
升职佳兴2 小时前
SQL 进阶3:连续登录问题与 ROW_NUMBER 差值法完整解析
java·数据库·sql
Chris _data2 小时前
从宿主机(Windows)通过 NAT 模式连接虚拟机(Ubuntu)中的 MySQL
windows·mysql·ubuntu
我是永恒2 小时前
PostgreSQL数据库安装配置连接Paperclip
数据库·postgresql
巧妹儿2 小时前
AI Agent 实战:MySQL 监控指标查询 Skill|华为云 + 腾讯云双兼容可直接复用
python·mysql·ai·大模型·华为云·腾讯云
一个天蝎座 白勺 程序猿2 小时前
踩坑生产后整理:KingbaseES表空间管理、auto_createtblspcdir参数深度解析与运维最佳实践
运维·数据库·kingbasees
oG99bh7CK2 小时前
FastAPI + PostgreSQL 实战:从入门到不踩坑,一次讲透
数据库·postgresql·fastapi
Wait....2 小时前
MySQL事务知识复习
数据库·mysql
杨云龙UP2 小时前
Oracle 19c:RMAN Duplicate异机复制数据库实操_20260402
linux·运维·服务器·数据库·网络协议·tcp/ip·oracle
刘~浪地球2 小时前
Redis 从入门到精通(七):集合操作详解
数据库·chrome·redis