Mysql表的增删查改(基础)

1.CRUD

1.  在SQL中,我们可以在 -- 后写注释的内容。

2. CRUD即增加(Create),查询(Retrieve),更新(Update),删除(Delete)的英文首字母缩写。

2.增加(Create)

SQL语句:

insert into 表名 (列名,列明...) values (值,值);

2.1 单行插入 

举例:

b70e038de37f445ba8e619bf1e8dd92b.png

在以上所示的结构的表中插入一条id=1,名字为张三的数据。 

 insert into student(id,name) values (1,'张三');

结果如下图

4ec60018b1a64cbe8178c34e2c47acda.png

注意事项:中文要用 ' ' 括起来,且后面括号中的赋值顺序要与前面括号里的列顺序一致。

 当有一列的属性没有手动赋值时,其就会被赋值为默认值。

insert into student(name) values ('李四');

bef0e76412b54d708f1b92bac91b27cd.png

2.2 多行插入

一条插入的SQL语句可以同时插入多条数据。

 insert into student(id,name) values (2,'王五'),(3,'赵六'),(4,'钱七');

运行结果

b31a665de95a41f68581d1c2b29ba259.png

小问题:一次插入一条数据和一次插入多条数据哪个的效率更高?

当我们执行所有的SQL语句时,都会有网络的开销,且插入数据时也有磁盘IO的开销,每次执行一条SQL语句都会形成一个新的事务,每个事务的开启与关闭都会消耗一定的系统资源,所以说,如果插入的数据的数量在可控的方位内,一次插入多条数据的效率要比一次插入一条数据效率高。

3.查询(Retrieve)

3.1 全列查询

SQL语句:

select * from 表名;

举例:查询student表中所有的学生信息

select * from student;

9392d13f7fbe4752892ce238ecf32a07.png

3.2 指定列查询

语法:

select 列名, [列名] from 表名;

b09fcde43bc748b6915d30bd2187e4cd.png

举例:在以上表中,查询exam表中的同学们的语文成绩。

 select name,chinese from exam;

运行结果 

1ab7ed68f3e848359009c489aa82c088.png

3.3 表达式和别名查询

1.我们想查询的列也可以是一个表达式。

举例:我们想查询同学们语数英三科总分的信息。

select id,name,chinese+math+english from exam;

a7d91eae2f994b399e58222623b7ec04.png

同时,我们也可以对查询的列起别名。

 select id as 学号,name as 名字,chinese+math+english as 总分 from exam;

关键字 as 也可以去掉。 

select id 学号,name 名字,chinese+math+english 总分 from exam;

运行结果 

d7150baf98744480844be1fe56bb5a08.png

 注意事项:起别名时,不论别名是英文还是中问,如果别名间有空格,那么别名要用 ‘ ’ 括起来,如果别名之间没有空格,‘ ’ 用或者不用都行。

3.4 去重查询(distinct关键字)

语法:

select distinct 列名 from 表名;

去重查询就是如果查询列的数据相同,那么查询之后出来的临时表就只会显示一条。要注意,这里的相同是指查寻列的数据相同就行了。

 举例说明,我们先向exam表中插入一条新的数据,如下图

4639c7f77a484d5590a70bd294286390.png

从上图可知,孙悟空和孙大圣的语数英三科成绩一样 ,如果我们这样实现去重查询,如下:

 select distinct id,chinese,math,english from exam;

结果如下 

c94eeaa5bbdd458a8e174889c02d69ff.png

我们发现语数英相同分数并没有实现去重,是因为所查询的列中的 id 的值不同。

 select distinct chinese,math,english from exam;

运行结果

90144a7a27a74edda571e876a0baca7c.png

这时候我们发现去重查询就成功了,去重中的数据中,他们的chinese,math和english的值是一样的。 

3.5 排序查询 (order by)

在Mysql中,提供了两种排序方式,分别为asc(升序)和desc(降序)。

语法:

select 列名 from 表名 order by 列名 asc | desc;

举例:将下列成绩按数学成绩的升序进行查询 

f7e3ba08a708472d9ec9c8b9cc065583.png

 select * from exam order by math asc;

运行结果

d7626bc83bcc41218a02c23ffea4ba88.png

排序时也可以用别名来查询。

举例:按总分大小以降序查询。

 select id,name,chinese+math+english total from exam order by total desc;

 964b6faad27d4d85a5a3a33fabc212ae.png 

 3.6 条件查询(where)

我们先来介绍以下在SQL中的运算符。

1.比较运算符

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,用于null之间不安全,null=null返回的结果为null
<=>等于,专门针对NULL来做判断的
!=,<>不等于
between a0 and a1a1<=values<=a1
in(option,...)如果属于集合任意一个,就得到返回值TRUE(1)
is NULL是NULL
is not NULL不是NULL
like模糊匹配,%表示任意多个字符(包括0个),_表示一个字符

2.逻辑运算符

运算符说明
and

多个条件都为true(1),表达式结果才返回true(1)

or多个条件中有一个为true(1),表达式结果就返回true(1)
not
条件为 TRUE(1),结果为 FALSE(0)

3.条件查询(where关键字)

条件查询就是根据一些指定条件来查询自己想要的结果。

语法:

select 列名 from 表名 where 条件;

9adf259e7eaf41f59d8f09399cddeab0.png

1.练习

1.基本查询

1.--查询英语成绩不及格的同学
 select id,name,english from exam where english<60;

b0610b15de64485b88b4dcf6ef04ff44.png

2.-- 查询语文成绩好于英语成绩的同学 

select name,chinese,english from exam where chinese>english;

819465ff3009482cb0033f9cac1f7eba.png

3.-- 查询总分在 200 分以下的同学

 select name,chinese+math+english from exam where chinese+math+english<200;

12b20665a985421cb8dca9bc5a2b173c.png

此时,有一个小细节,就是where后面不能使用前面定义的别名。 

如下图:

963c7d01acbf4536b207ed2c35c3925a.png

但下面这种写法就行

 select name,chinese+math+english  总分 from exam where chinese+math+english<200 order by 总分 asc;

1ec0d01bbc4840e987ef16b66ea58e33.png  

原因分析:这些与MySQL的内部实现有关,换句话说,就是与SQL语句的执行顺序有关。

5ad1773d414e4e258e08a6143b1b6fa6.png

1.首先,我们想要查询一些信息,我们现需要知道要从那张表中查询,所以要首先执行from 。

2. 确定那张表之后,要根据指定条件将特定的信息过滤出来,此时执行where,由于此时select还没执行,所以别名还没定义,此时使用别名就会报错。

3.接着要打印我们要查询的信息(字段),此时执行select

4.最后根据过滤出来的信息,进行排序,此时执行order by

2.and与or

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

select name,chinese,english from exam where chinese>80 and english>80;

911e53dc84164a849edba3dc980c8c39.png

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

select name,chinese,english from exam where chinese>80 or english>80;

f46e30e88c054368922233f4c2045420.png

3.--观察and和or的优先级

观察代码以下两列代码

select name,chinese,math,english from exam where chinese>80 or math>70 and english>70;

 运行结果

select name,chinese,math,english from exam where (chinese>80 or math>70) and english>70;

仔细观察,能得知and的优先级顺序大于or的优先级顺序。 整体的优先级顺序为not>and>or

4.范围查询

4.1 between...and...

1.--查询语文成绩在 [80, 90] 分的同学及语文成绩

 select name,chinese from exam where chinese between 80 and 90;

2.--使用 AND 也可以实现 

 select name,chinese from exam where chinese >=80 and chinese<=90;

4.2 in关键字

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

select name,math from exam where math in(58,59,98,99);

2.-- 使用 OR 也可以实现

select name,math from exam where math=58 or math=59 or math=98 or math=99;

5.模糊查询(like关键字)

1.-- % 匹配任意多个(包括 0 个)字符

select * from exam where name like '孙%';

2.-- _ 匹配严格的一个任意字符

select * from exam where name like '孙_';

6.分页查询(limit关键字) 

 1.语法:

1.select 列名 from [ where 条件 ] [order by 列名 asc|desc ] limit n;

说明:从0开始,筛选出n条数据。

2.select 列名 from [ where 条件 ] [order by 列名 asc|desc ] limit start,n;

说明:从start条数据开始筛选出n条数据。

3.select 列名 from [ where 条件 ] [order by 列名 asc|desc ] limit n offset start;

说明:从start条数据开始筛选出n条数据。

star=(当前页数-1)* 每页显示条数(n)

2.练习

id 进行分页,每页 3 条记录,分别显示 第 123  

第一页:

select * from exam limit 3;

第二页:

select * from exam limit 3,3;

 第三页:

select * from exam limit 6,2;
select * from exam limit 6,3;

4.修改(Update)

1.语法:

update 表名 set=新值 列名 [where 条件] [ order by...] [ limit n];

 2.练习

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

update exam set math=80 where name='孙悟空';

2.-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70

 update exam set math=60,chinese=70 where name='曹孟德';

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

update exam set math=math+10 order by chinese+math+english asc limit 3;

5.删除(Delete)

语法:

delete from 表名 [where 条件] [ order by 列名 asc|desc ] [limit ...]; 

注意事项:由于删除是一个非常有风险的操作,就不过多介绍了。

谢谢观看!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/426083.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java | Leetcode Java题解之第414题第三大的数

题目&#xff1a; 题解&#xff1a; class Solution {public int thirdMax(int[] nums) {Integer a null, b null, c null;for (int num : nums) {if (a null || num > a) {c b;b a;a num;} else if (a > num && (b null || num > b)) {c b;b num;…

海康威视相机在QTcreate上的环境配置教程(qt+opencv+海康SDK)

环境配置教程 前言&#xff1a;环境配置&#xff1a;1.海康SDK2.opencv 参考导入文件 前言&#xff1a; 配置环境是编程的第一步&#xff0c;所以写这篇文章来指导环境的配置。如果已经配置好了&#xff0c;想在qt上使用海康的摄像头&#xff0c;可以参考这篇文章&#xff1a;…

MFC实现对话框与控件的自适应调节

一.对话框属性设置 先将对话框的Border属性由Dialog Frame设置为Resizing。 二.添加消息处理函数 类向导 -> 消息&#xff08;WM-SIZE&#xff09;添加处理函数->void COnshowDlg::OnSize(UINT nType, int cx, int cy)。 三.添加代码 在.h文件中声明&#xff1a; vo…

影刀RPE学习——自动化

下载网址&#xff1a;影刀RPA - 影刀官网 (yingdao.com) 傻瓜式安装进入界面&#xff1a; 官方教程&#xff1a;影刀RPA零基础入门教程&#xff08;2024最新版&#xff09;&#xff1a;01 引入课-影刀初相识_哔哩哔哩_bilibili

[数据集][目标检测]高铁受电弓检测数据集VOC+YOLO格式1245张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1245 标注数量(xml文件个数)&#xff1a;1245 标注数量(txt文件个数)&#xff1a;1245 标注…

sqlgun靶场训练

1.看到php&#xff1f;id &#xff0c;然后刚好有个框&#xff0c;直接测试sql注入 2.发现输入1 union select 1,2,3#的时候在2处有回显 3.查看表名 -1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()# 4.查看列名…

安装node 报错需要:glibc >= 2.28

--> 解决依赖关系完成 错误&#xff1a;软件包&#xff1a;2:nodejs-18.20.4-1nodesource.x86_64 (nodesource-nodejs) 需要&#xff1a;libm.so.6(GLIBC_2.27)(64bit) 错误&#xff1a;软件包&#xff1a;2:nodejs-18.20.4-1nodesource.x86_64 (nodesource-nodej…

【AcWing】【双指针算法】799. 最长连续不重复子序列

最长连续不重复子序列 这是一道基于双指针算法的题目&#xff0c;但是想解这道题需要一点额外的思路&#xff0c;第一遍我没想出来&#xff0c;故在此对这道题的思路进行记录。 题目描述与输入输出 思路 这道题目的要求是寻找不包含重复的数的最长子序列&#xff0c;从题目来…

Python | Leetcode Python题解之第413题等差数列划分

题目&#xff1a; 题解&#xff1a; class Solution:def numberOfArithmeticSlices(self, nums: List[int]) -> int:n len(nums)if n 1:return 0d, t nums[0] - nums[1], 0ans 0# 因为等差数列的长度至少为 3&#xff0c;所以可以从 i2 开始枚举for i in range(2, n):i…

OpenCV calcHist()函数及其用法详解

OpenCV calcHist()函数原型共有三个&#xff0c;如下&#xff1a; 该函数计算一个或多个数组的直方图。用于递增直方图箱的元组的元素取自同一位置的相应输入数组。 函数参数&#xff1a; images 源&#xff08;图像&#xff09;数组。它们都应具有相同的深度、CV_8U、CV_16U…

若依-原理

1.代码生成器 1.1源码分析 代码生成器分为两个部分&#xff1a; 第一部分涉及将业务表结构导入到系统中 第二部分是点击生成按钮&#xff0c;系统将根据表结构生成相应的前后端代码&#xff0c;并提供下载。 1.表结构说明 gen_table&#xff1a;存储业务表的基本信息 &am…

硬件工程师笔试面试——无线通讯模块

目录 15、无线通讯模块 15.1 基础 无线通讯模块实物图 15.1.1 概念 15.1.2 常见的无线通讯模块及其特点 15.1.3 无线通讯模块参数 15.1.4 无线通讯模块工作原理 15.2 相关问题 15.2.1 如何根据项目需求选择合适的无线通讯模块? 15.2.2 无线通讯模块的安全性如何,如…

[机器学习]聚类算法

1 聚类算法简介 # 导包 from sklearn.datasets import make_blobs import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.metrics import calinski_harabasz_score # 构建数据 x,ymake_blobs(n_samples1000,n_features2,centers[[-1,-1],[0,0],[1…

硬件工程师笔试面试——电机

目录 18、电机 18.1 基础 电机原理图 电机实物图 18.1.1 概念 18.1.2 电机的一些基本分类和特点 18.2 相关问题 18.2.1 不同类型的电机在实际应用中有哪些具体的优势和劣势 18.2.2 在设计一个电机系统时,我应该如何考虑电机的选型和配置? 18.2.3 对于需要频繁启停的…

[SWPUCTF 2021 新生赛]Do_you_know_http

很基础的一题&#xff0c;就是修改发送的数据包 1.拿到题目&#xff0c;他让我们使用这个WLLM浏览器&#xff0c;那我们就用bp抓包&#xff0c;修改成User-Agent:WLLM 2.得到响应有个a.php文件&#xff0c;那我们就访问一下&#xff0c;发现请求权限不够&#xff0c;ip地址不对…

初始MYSQL数据库(5)—— 索引

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; MYSQL 目录 索引的概念 索引选择的数据结构 MySQL中的页的相关知识 索引的分类 主键索引 普通索引 唯一索引 非聚集索引 回表查询…

Qt 边框border - qss样式

border属性 实际上&#xff0c;border并不是一个单独的属性&#xff0c;在Qt样式表中&#xff0c;它通常指的是一系列与边框相关的属性的组合。然而&#xff0c;你也可以在一条样式规则中一次性设置所有这些值&#xff0c;如下所示&#xff1a; QPushButton { border: 2px sol…

Layout 布局组件快速搭建

文章目录 设置主题样式变量封装公共布局组件封装 Logo 组件封装 Menu 菜单组件封装 Breadcrumb 面包屑组件封装 TabBar 标签栏组件封装 Main 内容区组件封装 Footer 底部组件封装 Theme 主题组件 经典布局水平布局响应式布局搭建 Layout 布局组件添加 Layout 路由配置启动项目 …

Unity实战案例全解析:PVZ 植物放置分析

前篇&#xff1a;Unity实战案例全解析&#xff1a;PVZ 植物卡片状态分析-CSDN博客 植物应该如何从卡牌状态转为实物&#xff1f; 其实就只需要考虑两个步骤加一个后续处理&#xff1a; 1.点击卡牌后就实例化 需要一个植物状态枚举&#xff0c;因为卡牌分为拿在手上和种植下…

道路裂缝,坑洼,病害数据集-包括无人机视角,摩托车视角,车辆视角覆盖道路

道路裂缝&#xff0c;坑洼&#xff0c;病害数据集 包括无人机视角&#xff0c;摩托车视角&#xff0c;车辆视角 覆盖道路所有问题 一共有八类16000张 1到7依次为: [横向裂缝, 纵向裂缝, 块状裂缝, 龟裂, 坑槽, 修补网状裂缝, 修补裂缝, 修补坑槽] 道路病害&#xff08;如裂缝、…