✨哈喽,进来的小伙伴们,你们好耶!✨
🛰️🛰️系列专栏:【通关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进阶增删改查的内容,创作不易,期待你的一键三连!
转载:https://blog.csdn.net/m0_62426532/article/details/127706624