【MySQL】基本查询

MySQL 基本查询详解

在数据库应用开发中,增删改查(CRUD)是最常见的操作。掌握 MySQL 的基本查询语法,不仅能提升数据管理效率,还能为后续的复杂查询打下基础。本文将结合示例,从 Create、Retrieve、Update、Delete 四个方面详细介绍 MySQL 的基本查询。


一、Create(创建数据)

1.1 单行数据 + 全列插入

sql 复制代码
INSERT INTO students VALUES (101, 10001, '孙悟空', '11111');

要求插入的值与表中列的数量和顺序完全一致。


1.2 多行数据 + 指定列插入

sql 复制代码
INSERT INTO students (id, sn, name) VALUES 
(102, 20001, '曹孟德'), 
(103, 20002, '孙仲谋');

指定列时,可以让自增列自动赋值。


1.3 插入否则更新(ON DUPLICATE KEY UPDATE)

当主键或唯一键冲突时,可以选择更新:

sql 复制代码
INSERT INTO students (id, sn, name) VALUES (100, 10010, '唐大师')
ON DUPLICATE KEY UPDATE sn = 10010, name = '唐大师';

1.4 替换(REPLACE)

若存在冲突记录,则先删除再插入:

sql 复制代码
REPLACE INTO students (sn, name) VALUES (20001, '曹阿瞒');

二、Retrieve(查询数据)

2.1 SELECT 查询列

全列查询
sql 复制代码
SELECT * FROM exam_result;
指定列查询
sql 复制代码
SELECT id, name, english FROM exam_result;
查询字段为表达式
sql 复制代码
SELECT id, name, chinese + math + english 总分 FROM exam_result;
去重查询
sql 复制代码
SELECT DISTINCT math FROM exam_result;

2.2 WHERE 条件过滤

英语不及格的同学
sql 复制代码
SELECT name, english FROM exam_result WHERE english < 60;
语文成绩在 [80, 90] 分之间
sql 复制代码
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
模糊匹配(姓孙)
sql 复制代码
SELECT name FROM exam_result WHERE name LIKE '孙%';
NULL 查询
sql 复制代码
SELECT name, qq FROM students WHERE qq IS NOT NULL;

2.3 ORDER BY 排序

按数学成绩升序
sql 复制代码
SELECT name, math FROM exam_result ORDER BY math;
按总分降序
sql 复制代码
SELECT name, chinese + math + english 总分 FROM exam_result ORDER BY 总分 DESC;

2.4 LIMIT 分页

每页 3 条记录,第 1 页:

sql 复制代码
SELECT id, name, math, english, chinese 
FROM exam_result ORDER BY id LIMIT 3 OFFSET 0;

三、Update(更新数据)

3.1 更新单列

sql 复制代码
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';

3.2 更新多列

sql 复制代码
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';

3.3 基于原值更新

sql 复制代码
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3;

3.4 更新全表

sql 复制代码
UPDATE exam_result SET chinese = chinese * 2;

四、Delete(删除数据)

4.1 删除指定行

sql 复制代码
DELETE FROM exam_result WHERE name = '孙悟空';

4.2 删除整表数据

sql 复制代码
DELETE FROM for_delete;

4.3 截断表(清空并重置自增)

sql 复制代码
TRUNCATE TABLE for_truncate;

五、插入查询结果

可将查询结果插入新表:

sql 复制代码
INSERT INTO no_duplicate_table 
SELECT DISTINCT * FROM duplicate_table;

六、聚合函数

  • 统计人数:
sql 复制代码
SELECT COUNT(*) FROM students;
  • 平均分:
sql 复制代码
SELECT AVG(chinese + math + english) 平均总分 FROM exam_result;
  • 最高/最低分:
sql 复制代码
SELECT MAX(english), MIN(math) FROM exam_result;

七、Group By 分组查询

统计每个部门的平均工资和最高工资:

sql 复制代码
SELECT deptno, AVG(sal), MAX(sal) FROM EMP GROUP BY deptno;

总结

  • Create:插入单条、多条数据,支持冲突更新与替换。
  • Retrieve :利用 SELECT 搭配 WHEREORDER BYLIMIT 实现各种查询。
  • Update:可更新单列、多列,支持表达式运算。
  • Delete :可删除部分或全部数据,TRUNCATE 更高效但不可回滚。
  • 聚合与分组 :结合 COUNTSUMAVGMAXMINGROUP BY 实现统计分析。

熟练掌握这些基本操作,就能为复杂的 SQL 开发打下坚实基础。

相关推荐
東雪蓮☆2 小时前
MySQL 5.7 主主复制 + Keepalived 高可用配置实例
linux·运维·mysql
老朋友此林3 小时前
一文快速入门 MongoDB 、MongoDB 8.2 下载安装、增删改查操作、索引、SpringBoot整合 Spring Data MongoDB
数据库·mongodb·springboot
炬火初现4 小时前
SQL——子查询
数据库·sql
semantist@语校4 小时前
语校网500所里程碑:日本语言学校数据库的标准化与可追溯机制
大数据·数据库·人工智能·百度·语言模型·oracle·github
野犬寒鸦4 小时前
从零起步学习Redis || 第五章:利用Redis构造分布式全局唯一ID
java·服务器·数据库·redis·分布式·后端·缓存
yenggd4 小时前
QoS之流量整形配置方法
网络·数据库·华为
小星星程序员4 小时前
mysql数据库行转列
mysql
陪你在童年5 小时前
EXCEL根据类别分页预览或者直接生成PDF
数据库
l1t5 小时前
在duckdb 1.4中编译和使用postgresql协议插件duckdb-pgwire
开发语言·数据库·c++·postgresql·插件·duckdb
武子康5 小时前
Java-138 深入浅出 MySQL Spring Boot 事务传播机制全解析:从 REQUIRED 到 NESTED 的实战详解 传播机制原理
java·大数据·数据库·spring boot·sql·mysql·事务