文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-01 19:36

关注

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

🛰️🛰️系列专栏:【通关MySQL】

✈️✈️本篇内容:MySQL增删改查(CRUD)。

🚀🚀代码存放仓库gitee:Java数据结构代码存放!

⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,你我同行!

目录

一、新增(Create)

一、插入数据方式

1.单行数据+全列插入

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

 二、 查询(Retrieve)

一、查询方式

1、全列查询

​编辑 2、指定列查询

3、查询字段为表达式

4 、别名

5 、去重:DISTINCT

 6、 排序:ORDER BY

7、条件查询 WHERE

1、基本查询

 2、AND、OR

3、观察AND、OR优先级

4、范围查询

5、模糊查询:LIKE

​编辑6、 分页查询:LIMIT  

 四、 修改(Update)

 五. 删除(Delete)


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

-- 表达式不包含字段 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 为降序(从大到小)-- 默认为 ASCSELECT ... 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、范围查询

between …… and……

查询语文成绩在80-90之间的学生姓名;

SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;

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进阶增删改查的内容,创作不易,期待你的一键三连!

来源地址:https://blog.csdn.net/m0_62426532/article/details/127706624

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯