MySQL数据库的增删改查(初阶)

目录

插入数据(Insert)

单行插入

批量插入

查询数据(Select)

基本查询

别名

去重:DISTINCT

条件查询

[排序:ORDER BY](#排序:ORDER BY)

分页查询:LIMIT

更新数据(Update)

删除数据(Delete)


插入数据(Insert)

单行插入

sql 复制代码
INSERT INTO students (name, age, grade) VALUES ('Alice', 25, 'A');

批量插入

sql 复制代码
INSERT INTO students (name, age, grade)
VALUES
    ('Bob', 30, 'B'),
    ('Charlie', 22, 'C'),
    ('David', 28, 'A');

查询数据(Select)

基本查询

基本查询使用SELECT语句,你可以检索表中的数据。

sql 复制代码
SELECT * FROM students;

上面的*代表的是查询所有列,如果要查询指定列如下:

比如我要查询一个stuId,stuName

sql 复制代码
SELECT stuId,stuName FROM students;

别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称:

sql 复制代码
SELECT id, name, chinese + math + english 总分 FROM exam_result;

去重:DISTINCT

使用DISTINCT关键字对某列数据进行去重:

sql 复制代码
-- 98 分重复了
SELECT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     98 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+

去重后面的结果:

sql 复制代码
-- 去重结果
SELECT DISTINCT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+

条件查询

条件查询使用WHERE子句来筛选数据。

sql 复制代码
SELECT * FROM students WHERE grade = 'A';

排序:ORDER BY

  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

sql 复制代码
-- 查询同学姓名和 qq_mail,按 qq_mail 排序显示
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student  ORDER BY qq_mail DESC;

使用表达式及别名排序:

sql 复制代码
-- 查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result 
 ORDER BY chinese + english + math DESC;
SELECT name, chinese + english + math total FROM exam_result 
 ORDER BY total DESC;

还可以对多个字段进行排序,排序优先级随书写顺序

sql 复制代码
-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result 
 ORDER BY math DESC, english, chinese;

分页查询:LIMIT

按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

sql 复制代码
-- 第 1 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 0;
-- 第 2 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 6;

如果是只限制返回前三条数据,我们可以这样:

sql 复制代码
SELECT * FROM students ORDER BY age DESC LIMIT 3;

更新数据(Update)

使用UPDATE语句可以更新表中的数据。

sql 复制代码
UPDATE students SET age = 26 WHERE name = 'Alice';

删除数据(Delete)

使用DELETE语句可以从表中删除数据。

java 复制代码
DELETE FROM students WHERE name = 'Bob';

删除一整张表:

sql 复制代码
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
 id INT,
 name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;
相关推荐
q***08741 分钟前
MySQL压缩版安装详细图解
android·mysql·adb
A***27953 分钟前
MySQL外键约束导致的删除失败问题
数据库·mysql
共享家952714 分钟前
QT-系统(多线程)
开发语言·数据库·qt
风的归宿5520 分钟前
gitlab配置ai代码审核
后端
格格步入23 分钟前
线上问题:MySQL NULL值引发的投诉
后端·mysql
dessler24 分钟前
MYSQL-物理备份(xtrabackup)使用指南
linux·数据库·mysql
5***262024 分钟前
MySQL存储过程优化实例
数据库·mysql
hans汉斯29 分钟前
基于改进YOLOv11n的无人机红外目标检测算法
大数据·数据库·人工智能·算法·yolo·目标检测·无人机
Moe48830 分钟前
Spring Boot 自动配置核心:AutoConfigurationImportSelector 深度解析
java·后端·设计模式
Anthony_492634 分钟前
【踩坑】gorm 回写主键不正确
mysql·go·orm