草庐IT

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

IT辰柒_测试指导 2023-04-14 原文

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

🛰️🛰️系列专栏:【通关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 为降序(从大到小)
-- 默认为 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进阶增删改查的内容,创作不易,期待你的一键三连!

有关【通关MySQL】MySQL增删改查(CRUD)详解的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  3. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  4. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  5. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  6. ruby-on-rails - 当我通过 rvm 使用 rails3 时,如何在 ubuntu 上安装 mysql2 gem? - 2

    我正在尝试绕过rails配置这个极其复杂的迷宫。到目前为止,我设法在ubuntu上设置了rvm(出于某种原因,ruby在ubuntu存储库中已经过时了)。我设法建立了一个Rails项目。我希望我的测试项目使用mysql而不是mysqlite。当我尝试“rakedb:migrate”时,出现错误:“!!!缺少mysql2gem。将其添加到您的Gemfile:gem'mysql2'”当我尝试“geminstallmysql”时,出现错误,告诉我需要为安装命令提供参数。但是,参数列表很大,我不知道该选择哪些。如何通过在ubuntu上运行的rvm和mysql获取rails3?谢谢。

  7. ruby - Rails 3.2 CRUD : . 其中 'or' 有条件 - 2

    使用ruby​​onrails,我想做类似的事情:@tasks=Task.where(:def=>true||:house_id=>current_user.house_id)执行此操作的最有效/最干净的方法是什么? 最佳答案 你可以这样做:Task.where("def=?orhouse_id=?",true,current_user.house_id)一般情况是:Model.where("column=?orother_column=?",value,other_value)您还可以利用Arel:t=Task.arel_tabl

  8. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  9. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  10. Centos7-yum安装mysql-修改密码-无密码登录-安全配置 - 2

    目录1、yum安装mysql修改密码(1)在mysql里面修改(2)第二种方式,利用mysqladmin修改密码2、没有密码,登录mysql修改密码3、mysql的安全设置1、yum安装mysql在CentOS中默认安装有MariaDB(MySQL的一个分支),安装完成之后可以直接覆盖MariaDB。rpm-qa|grepmariadb查询是否安装了mariadbrpm-e--nodepsmariadb-libs-5.5.60-1.el7_5.x86_64卸载mariadwgethttp://dev.mysql.com/get/mysql57-community-release-el7-11.

随机推荐