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;
相关推荐
一只叫煤球的猫24 分钟前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9651 小时前
tcp/ip 中的多路复用
后端
bobz9651 小时前
tls ingress 简单记录
后端
你的人类朋友2 小时前
什么是OpenSSL
后端·安全·程序员
bobz9652 小时前
mcp 直接操作浏览器
后端
程序新视界3 小时前
MySQL中什么是回表查询,如何避免和优化?
mysql
前端小张同学5 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook5 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康6 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在6 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net