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
搭配WHERE
、ORDER BY
、LIMIT
实现各种查询。 - Update:可更新单列、多列,支持表达式运算。
- Delete :可删除部分或全部数据,
TRUNCATE
更高效但不可回滚。 - 聚合与分组 :结合
COUNT
、SUM
、AVG
、MAX
、MIN
与GROUP BY
实现统计分析。
熟练掌握这些基本操作,就能为复杂的 SQL 开发打下坚实基础。