✨哈喽,进来的小伙伴们,你们好耶!✨
🛰️🛰️系列专栏:【通关MySQL】
✈️✈️本篇内容:MySQL增删改查(CRUD)。
🚀🚀代码存放仓库gitee:Java数据结构代码存放!
⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,你我同行!
目录
一、新增(Create)
语法:
INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
1、首先创建一个学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT,
sn INT comment '学号',
name VARCHAR(20) comment '姓名',
qq_mail VARCHAR(20) comment 'QQ邮箱'
);
运行结果:
一、插入数据方式
1.单行数据+全列插入
INSERT INTO student VALUES(1,101,'张三','123@qq.com');
INSERT INTO student VALUES (2,201,'李四','1234@qq.com');
运行结果:
2、多行数据 + 指定列插入
insert into student (id,sn,name,qq_mail) values
(3,301,'王五','234@qq.com'),
(4,401,'赵六','345@qq.com');
运行结果:
二、 查询(Retrieve)
语法:
SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...
案列:创建一个考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98.5, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);
运行结果:
一、查询方式
1、全列查询
通常情况下不建议使用*全列查询
1、查询的列越多,意味着需要传输的数据量越大;
2、可能会影响到索引的使用。
select * from exam_result;
运行结果:
2、指定列查询
指定列的顺序不需要按照表中的列顺序来。
select id,name,chinese from exam_result;
运行结果:
3、查询字段为表达式



4 、别名
运行结果:
5 、去重:DISTINCT
select distinct math from exam_result;
运行结果:
6、 排序:ORDER BY
语法:
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
SELECT name, English FROM exam_result ORDER BY English;
降序排列:
SELECT name, English FROM exam_result ORDER BY English desc;
运行结果:
7、条件查询 WHERE
当使用 SELECT 语句进行查询时,MySQL 允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL。MySQL 支持的比较运算符如下表所示。
逻辑运算符:
案列演示
1、基本查询
-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
运行结果:
2、AND、OR
3、观察AND、OR优先级
select * from exam_result where chinese > 80 or math >70 and english >70;
select * from exam_result where( chinese > 80 or math >70) and english >70;
运行结果:
4、范围查询
1、between …… and……
查询语文成绩在80-90之间的学生姓名;
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
2、in
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
运行结果:
5、模糊查询:LIKE
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';__ 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';__ 匹配到孙权
运行结果:
6、 分页查询:LIMIT
语法:
-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
案例、按id进行分页,每页三条记录
select id,name,math,english,chinese from exam_result order by id limit 3 offset 0;
select id,name,math,english,chinese from exam_result order by id limit 3 offset 3;
select id,name,math,english,chinese from exam_result order by id limit 3 offset 6;
运行结果:
四、 修改(Update)
语法:

五. 删除(Delete)
语法:DELETE FROM table_name [WHERE ...]
案列:删除孙权的考试成绩
DELETE FROM exam_result where name = '孙权';
运行结果:(表中已无孙权的考试成绩)
OK以上就是关于MySQL增删改查的基础部分全部内容了,学习MySQL难度不是很高,重要的是多加练习提高熟练度,还有在写MySQL语句的时候我们可以先在记事本上来提前写好语句然后在粘贴到MySQL上,这样有助于提高我们的学习效率,同时发现语句错误可以及时更改,博主后续会持续更新MySQL进阶增删改查的内容,创作不易,期待你的一键三连!