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;
相关推荐
rising start44 分钟前
二、全面理解MySQL架构
mysql·架构
星星也在雾里1 小时前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
bqq198610262 小时前
MySQL性能优化
mysql·mysql优化
雨辰AI3 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城20243 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有3 小时前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
Mr. zhihao4 小时前
深入解析redis基本数据结构
数据结构·数据库·redis
m0_748839494 小时前
利用天正暖通CAD快速掌握风管数量统计的方法
数据库
随身数智备忘录4 小时前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
海市公约5 小时前
MySQL更新语句执行全流程:从Buffer Pool修改到二阶段提交
数据库·mysql·binlog·innodb·undo log·二阶段提交·update执行原理