0


【通关MySQL】MySQL增删改查(CRUD)详解

✨哈喽,进来的小伙伴们,你们好耶!✨

🛰️🛰️系列专栏:【通关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,'张三','[email protected]');
INSERT INTO student VALUES (2,201,'李四','[email protected]');

运行结果:

2、多行数据 + 指定列插入

insert into student (id,sn,name,qq_mail) values
(3,301,'王五','[email protected]'),
(4,401,'赵六','[email protected]');

运行结果:

二、 查询(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、查询字段为表达式

**-- 表达式不包含字段 **

SELECT id, name, 10 FROM exam_result;

**-- 表达式包含一个字段 **

SELECT id, name, english + 10 FROM exam_result;

**-- 表达式包含多个字段 **

SELECT id, name, chinese + math + english FROM exam_result;

**4 、别名 **

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

SELECT column [AS] alias_name [...] FROM table_name;

这里的总分就是我们定义的别名:

SELECT id, name, chinese + math + english 总分 FROM exam_result;

运行结果:

*5 去重:***DISTINCT **

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

比如我们这里对重复的数学成绩去重:

select distinct math from exam_result;

运行结果:

*6、 排序:ORDER BY*

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] 
 ORDER BY column [ASC|DESC], [...];
  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序 。

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

案例:-- 查询同学姓名和 English,按 English 排序显示

升序排列:

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. WHERE条件可以使用表达式,但不能使用别名。

  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分。

** 案列演示**

1、基本查询

-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;

-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;

运行结果:

2、AND、OR

-- 查询语文成绩大于80分,且英语成绩大于80分的同学

SELECT * FROM exam_result WHERE chinese > 80 and english > 80;

-- 查询语文成绩大于80分,或英语成绩大于80分的同学

SELECT * FROM exam_result WHERE chinese > 80 or english > 80;

运行结果:

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

-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

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)

语法:

UPDATE table_name SET column = expr [, column = expr ...]

[WHERE ...] [ORDER BY ...] [LIMIT ...]

案列:

-- 将孙悟空同学的数学成绩变更为 80 分

UPDATE exam_result SET math = 80 WHERE name = '孙悟空';

-- 将总成绩倒数前三的 3 位同学的数学成绩加上 1 分

UPDATE exam_result SET math = math + 1 ORDER BY chinese + math + english LIMIT

3;

运行结果:

五. 删除(Delete)

语法:DELETE FROM table_name [WHERE ...]

案列:删除孙权的考试成绩

DELETE FROM  exam_result where name = '孙权';

运行结果:(表中已无孙权的考试成绩)

OK以上就是关于MySQL增删改查的基础部分全部内容了,学习MySQL难度不是很高,重要的是多加练习提高熟练度,还有在写MySQL语句的时候我们可以先在记事本上来提前写好语句然后在粘贴到MySQL上,这样有助于提高我们的学习效率,同时发现语句错误可以及时更改,博主后续会持续更新MySQL进阶增删改查的内容,创作不易,期待你的一键三连!

标签: sql 数据库 java

本文转载自: https://blog.csdn.net/m0_62426532/article/details/127706624
版权归原作者 IT辰柒_Java 所有, 如有侵权,请联系我们删除。

“【通关MySQL】MySQL增删改查(CRUD)详解”的评论:

还没有评论