Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL之增删改查(CRUD)

MySQL之增删改查(CRUD)使用及说明

作者:当战神遇到编程

文章主要述了CRUD操作,即数据库的增删查改四种核心操作,具体介绍了每种操作的语法、应用场景和注意事项,如插入表操作、条件查询、排序查询、分页查询等,文章还提供了大量示例,帮助读者更好地理解和掌握这些操作

一、什么是 CRUD?

CRUD 是数据库最核心的四种操作:

字母含义SQL语句
CCreate(新增)INSERT
RRetrieve(查询)SELECT
UUpdate(修改)UPDATE
DDelete(删除)DELETE

二、准备测试表

CREATE TABLE student(
    id INT,
    name VARCHAR(20),
    age INT
);

三、C:INSERT 新增数据

向表中插入记录。

1.插入一条数据

INSERT INTO student VALUES(1,'Tom',18);

2.指定字段插入

INSERT INTO student(id,name) VALUES(2,'Jerry');

3.插入多条数据

INSERT INTO student VALUES(3,'Alice',20),(4,'Bob',19);

4.插入查询结果

当你需要把一张表的数据“复制”到另一张表时使用。

-- 目标表(用于备份或迁移)
CREATE TABLE student_backup(
    id INT,
    name VARCHAR(20),
    age INT
);

场景一:两张表结构完全一样(快速全量备份)

如果你只是想做一个完全一致的备份,可以使用 * 简写。

-- 只要 student_backup 的字段数量、顺序、类型与 student 完全一致,即可使用
INSERT INTO student_backup SELECT * FROM student WHERE age > 18;

场景二:指定字段插入(灵活迁移)

如果两张表结构不同,或者你只想复制其中某几列,必须显式指定列名。

-- 仅将 id 和 name 备份,age 字段在目标表中可能是默认值或 NULL
INSERT INTO student_backup (id, name) 
SELECT id, name FROM student WHERE age > 18;

四、R:SELECT 查询数据

查询表中的记录。

1.查询全部数据

SELECT * FROM student;

2.查询指定字段

SELECT name,age FROM student;

3.查询时使用表达式

SELECT name, age + 1 AS next_age FROM student;

说明:

4.去重查询

SELECT DISTINCT age FROM student;

说明:

5.条件查询

运算符说明
>, >=, <, <=大于、大于等于、小于、小于等于
=等于
!=, <>不等于
BETWEEN … AND …范围查询
IN(…)在指定集合中
IS NULL判断为空
IS NOT NULL判断不为空
LIKE模糊查询
运算符说明
AND多个条件同时成立
OR任意一个条件成立
NOT条件取反

1.查询年龄大于18

SELECT * FROM student WHERE age > 18;

2.查询姓名为Tom

SELECT * FROM student WHERE name = 'Tom';

3.多条件查询

SELECT * FROM student WHERE age >= 18 AND age <= 20;

4.范围查询

SELECT * FROM student WHERE age BETWEEN 18 AND 20;

5.集合查询

SELECT * FROM student WHERE name IN ('Tom','Jerry');

6.模糊查询

SELECT * FROM student WHERE name LIKE 'T%';

说明:

7.空值查询

SELECT * FROM student WHERE email IS NULL;

6.排序查询

排序时,需要选取一个或多个列作为比较依据。

1.基础语法

-- 升序(默认):从小到大排。ASC 可省略。
SELECT * FROM student ORDER BY age ASC; 

-- 降序:从大到小排。
SELECT * FROM student ORDER BY age DESC;

-- 使用表达式别名排序(ORDER BY 在 SELECT 之后执行,所以认识别名)
SELECT name, age + 1 AS next_age FROM student ORDER BY next_age DESC;

2.多列排序(优先级)

-- 先按id升序,id相同时,再按age降序
SELECT * FROM student ORDER BY id ASC, age DESC;

核心要点

顺序未定义

针对行排序

排序关键字控制

NULL 的特殊性

多列排序的优先级

物理存储不变

7.分页查询

当数据库表中有成千上万条数据时,一次性全部查出来不仅速度慢,用户也看不过来。分页查询的作用就是按需分批取出数据。

-- 【格式 A】取前 n 条
SELECT * FROM student LIMIT 2;

-- 【格式 B】跳过 s 条,取 n 条
SELECT * FROM student LIMIT 1, 2;

-- 【格式 C】使用 OFFSET 关键字(逻辑最清晰,推荐!)
-- 效果:同样是跳过 1 条取 2 条
SELECT * FROM student LIMIT 2 OFFSET 1;

直白逻辑(跳过与取出)

边界情况:没数据了怎么办?

物理存储不变:最后再次强调,分页只是为了展示。它不会删除或移动数据库里的原始数据。

实战:网页分页公式

八、U:UPDATE 修改数据

修改数据库服务器硬盘上的原始数据。

修改Tom年龄为20

UPDATE student SET age = 20 WHERE name = 'Tom';

同时修改多个字段

UPDATE student SET name = 'Lucy', age = 21 WHERE id = 1;

注意:

九、D:DELETE 删除数据

删除Tom

DELETE FROM student WHERE name = 'Tom';

删除全部数据

DELETE FROM student;

注意:

十、总结速记

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文