[MySql]表的增删查改

news2024/11/26 15:27:23

目录

前言:

1.插入数据

2.查询数据

2.1全列查询

2.2指定查询

2.3别名

2.4去重

2.5排序

2.6条件查询 

2.7聚合查询 

2.7.1group by语句

2.7.2havin语句

2.8联合查询

2.8.1内连接

2.8.2外连接

2.8.3自连接 

2.8.4子查询

3.修改 

4.删除 


前言:

本次大多数使用案例中使用到的表格的结构为:

1.插入数据

insert into table_name (column1,column2......) valus(...  , ...  , ....),(...  , ...  , ....); 

使用案例

单行数据+全列插入(表中的每一个列都插入相应的数据)

insert into goods values ('记事本',10.2,5,null);
//本条语句往goods表中根据表中的每一个列,插入一行数据

多行数据+指定列插入(选定表中的指定列进行插入)

insert into goods (name,price) values ('长裤',52.6),('短袖衬衫',34.5);
//本条语句,只往goods表中的特定列(name,price)中,插入两行数据

 结果展示:

2.查询数据

2.1全列查询

select * from table_name;

全列查询,使用*代替表中的每一个列,即本语句可以查询出所查表中的所有数据

(在1.1的使用案例中,最后一张图有所展示) 

2.2指定查询

select column1,column2,... from table_name;

指定查询,即只查询所需的表的特定列

使用示例

select name price from goods;
//本语句只查询goods表中的name列与price列,并按指定顺序展示

 2.3别名

select column [as] alias_name [...] from table_name;

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

使用示例

select name as 物品名称,price as 价格 from goods;
//本语句中,查询goods表中的name列并命其别名为物品名称,price列命其别名为价格

 

2.4去重

select distince .... ....

 作用为:将查询出的某一列的数据进行去重操作

使用案例:

表内数据更新为如下 

 

 去重前:

 去重后:

 明显的可见,查询出的结果被进行了去重操作

2.5排序

select column... from table_name

order by cloumn [asc/desc];        //asc为升序排列,desc为降序排列,默认即不写时为asc

将查询出的数据根据某一列的数据进行升序/降序进行排列

使用示例

select name,price from goods
order by price;
//本语句为将goods表中查询出的name列与price列数据按price列数据升序进行排序

select name,price,amount from goods 
order by price desc ,amount;
//查询name,price与amount数据,按price降序与amount升序进行展示

2.6条件查询 

2.6.1比较运算符:

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于
BETWEEN a0 AND
a1
范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字

逻辑运算符:

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0)

使用示例:

select name,price,amount from goods where price > 20 and amount > 3;
//本语句 查询goods表中name,price,amount的数据,且为price>20,amount>3的数据

select name,price,amount from goods where price between 30 and 60;
//本语句为,查询name,price与amount的数据,且满足price的范围在[30,60];
  • between 30 and 60 等价于 price >= 30 and price <= 60

select name ,price from goods where price in (2,10.2,999);
//本语句查询goods表中name,price的数据,且满足price的数据在(2,10.2,999)集合中
  • in (2,10.2,999) 等价于 price = 2 or price = 10.2 or price = 999; 

select name from goods where name like '%袖%';
//本语句使用模糊查询,查询name中含有'袖'的数据

select name from goods where name like '_袖_';
//本语句使用模糊查询,查询name中为'某袖某'的数据,即满足条件的数据为三个字,且袖在中间
//如,满足条件的可能为'长袖套'(三个字,且袖在中间)

 在模糊查询中'%'匹配多个字符,包括0个字符,而'_'严格的任意的1个字符

select name ,amount from goods where amount is null;
//查询amount为空的数据

select name ,amount from goods where amount is not null;
//查询amount不为空的数据

select * from goods limit 2 offset 0;
//本语句为查询goods的所有数据,并使用分页查询,每一页只有2行数据,并展示第1页

select * from goods limit 2 offset 2;
//使用分页查询,每一页只有2行数据,并展示第2页

select * from goods limit 2 offset 4;
//使用分页查询,每一页只有2行数据,并展示第3页

 

2.7聚合查询 

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最小值,不是数字没有意义

 使用示例:

select count(name) from goods;
//本语句计算goods表中的name列有多少行数据

 

select sum(amount) from goods;
//本语句计算goods表中的amount列中的数据总数

 

select avg(price) from goods;
//本语句查询goods表中的price列的数据的均值

 

select max(price) from goods;
//本语句查询goods表中的price的数据的最大值

 2.7.1group by语句

select column1, sum(column2), .. from table group by column1,column3;

SELECT 中使用 GROUP BY 子句可以对指定列进行分组查询。需要满足:使用 GROUP BY 进行分组查询时,SELECT 指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT 中则必须包含在聚合函数中。

使用示例:

本次group by与having举例使用的表如下,

select role,avg(salary) from emp group by role;
//本语句查询emp表中,先按role列分组再求出每一个role的平均salary数据

 

2.7.2havin语句

group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where 语句,而需要用having

使用示例: 

本示例使用的表格与2.8中的相同

select role,avg(salary) from emp group by role having avg(salary)<= 2500;
//本语句查询emp表,每一个职业平均salary小于等于2500的数据

 2.8联合查询

本次联合查询所用到的表格

book表:

borrow表: 

 

reader表: 

 

2.8.1内连接

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

所查询到的数据为,在两个表中,满足条件的数据.

使用示例: 

想要知道每一个学生接了什么书,从一个表中不能直接得知,就需要通过内连接进行查询.

select reader.readerno,readername,book.bookno,book.bookname 
from reader ,book,borrow 
where borrow.readerno = reader.readerno and borrow.bookno = book.bookno;

 

2.8.2外连接

-- 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;

 左连接

查询的是每一个同学的借书情况,就算同学不借书,也会完整的展示reader表

select reader.readerno,readername,book.bookno,bookname
 from reader left join borrow on reader.readerno = borrow.readerno 
             left join book on book.bookno = borrow.bookno;

 

右连接

查询的是每一本书的被借情况,就算书没有被借也会完整的展示book表

select reader.readerno,readername,book.bookno,bookname 
from reader right join borrow on reader.readerno = borrow.readerno 
            right join book on book.bookno = borrow.bookno;

 

2.8.3自连接 

 自连接是指在同一张表连接自身进行查询,当我们要比较的数据在不同行但同一列的情况时,我们可以考虑自连接来查询

使用示例:

查询score表中course_id = 3的score > course_id = 1的score的student

select * from score as s1,score as s2 
where s1.student_id = s2.student_id and
      s1.course_id = 1 and 
      s2.course_id = 3 and
      s1.score < s2.score;

2.8.4子查询

 子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询

使用示例:

查询与王小明同一群体的借书情况(即查询学生中有多少人借了多少书)

select reader.readerno,readername 
from borrow,reader 
where borrow.readerno = reader.readerno and 
      readertype = (select readertype from reader where readername = '王小明');

3.修改 

update table_name set colmun1 = value1,colmun2 = value2 [where...] [order by...] [limit...]

将某个表中的某条数据更新为

使用示例:

update goods set amount = 10 order by amount limit 3;
//本语句将goods表中amount中升序排列的前3行数据的amoun更新为10;

 

4.删除 

delete from table_name [where...] [order by...] [limit...];

delete from goods where name = '记事本';
//本语句在goods表中删除一行name为'记事本'的数据

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉】MobileSAM论文解读:比SAM小60倍,比FastSAM快4倍,速度和效果双赢

文章目录 一、导读二、摘要三、Introduction三、Related work3.1 SAM&#xff1a;泛化和通用功能性3.2 ViT&#xff1a;轻巧高效 四、Mobile-Friendly SAM4.1 Background and Project Goal4.1.1 Background on SAM4.1.2 Project goal 4.2 Proposed Method4.2.1 耦合蒸馏4.2.2 从…

这个工具,补齐了 JMeter性能分析最后一公里短板

要说现在企业中主流的性能测试工具是什么&#xff1f; 答案肯定有 JMeter。 但是Jmeter 贵为测试工具界的“大牛”&#xff0c;在性能分析能力方面&#xff0c;还是有些欠缺的。 像Allen巨佬在高级性能实际教学的过程中就会经常遇到&#xff0c;学生截取一个监听器的图&…

使用传统的jdbc方式操作数据库

现在开发中有了mybatis、jdbcTemplate之后&#xff0c;已经很少公司会直接使用jdbc来连接数据库了&#xff0c;但是无论是mybatis还是jdbcTemplate&#xff0c;其底层都是jdbc。 这篇文章就主要介绍一下怎么通过jdbc来连接数据库。 在这之前&#xff0c;创建数据库jdbc&#xf…

JS相关介绍

1.JS引入&#xff1a; 内部&#xff1a;直接在html文件内部使用script标签调用 外部&#xff1a;另外新建JS文件&#xff0c;再在html文件中调用 2.输入输出&#xff1a; 输入&#xff1a;prompt(请输入您的姓名&#xff1a;) 输出&#xff1a;document.write(你们真是天才) 注…

2.9 Bootstrap 辅助类

文章目录 Bootstrap 辅助类文本背景其他更多实例关闭图标插入符快速浮动内容居中清除浮动显示和隐藏内容屏幕阅读器 Bootstrap 辅助类 下面将讨论 Bootstrap 中的一些可能会派上用场的辅助类。 文本 以下不同的类展示了不同的文本颜色。如果文本是个链接鼠标移动到文本上会变…

【自定义类型】(结构体、枚举、联合)

结构体内存对齐&#xff1a; 计算结构体的大小 结构体成员不是按照顺序在内存中连续存放的而是有一定的对齐规则的 结构体内存对齐的规则&#xff1a; 1、结构体的第一个成员永远放在相比于结构体变量起始位置的偏移量为0的位置。 2、从第二个成员开始&#xff0c;往后的每…

我打赌!这个 SQL 题,大部分人答不出来

周末的时候&#xff0c;一个读者问了我一个很有意思的问题&#xff0c;是关于 MySQL 中 update 加锁的问题。 他用下面这张数据库表&#xff0c;做了个 MySQL 实验的时候。 发现事务 B 的 update 不会阻塞&#xff0c;而事务 C 的 update 会阻塞&#xff0c;都是对 id 10 这条…

使用 uniswap 模拟交易时遇到一个问题

使用 uniswap 模拟交易时遇到一个问题 Error: VM Exception while processing transaction: socket hang upat web3.js:6365:9(39)at send (web3.js:5099:62(29))at <eval>:1:20(11)我的入参是 > eth.sendTransaction({from:0xe26a357fcc5A010421A49B8a5A99Af14CDe2…

Elasticsearch 中的矢量搜索:设计背后的基本原理

作者&#xff1a;Adrien Grand 你是否有兴趣了解 Elasticsearch 用于矢量搜索&#xff08;vector search&#xff09;的特性以及设计是什么样子&#xff1f; 一如既往&#xff0c;设计决策有利有弊。 本博客旨在详细介绍我们如何选择在 Elasticsearch 中构建矢量搜索。 矢量搜索…

科研 | 入门大全

文章目录 1. 读文献1.1 文献查阅与管理、如何快速找到与研究方向相关文章如何快速了解国内外发展现状找到后&#xff0c;怎么高效阅读&#xff1f;需要逐词逐句阅读吗&#xff1f;需要顺序阅读&#xff1f;读完之后&#xff0c;好像懂了&#xff0c;好像也没懂读过的文章&#…

通过GWO算法对8个发电机进行了最佳调度编码(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 通过GWO&#xff08;Grey Wolf Optimization&#xff09;算法对8个发电机进行最佳调度编码是一种优化问题的解决方法。GWO算法灵…

【C++】C++异常机制

文章目录 C异常C语言传统的错误处理方式C错误处理方式异常的使用方法异常的使用规范异常安全问题异常规范自定义异常体系STL中的异常体系异常的优缺点 C异常 C语言传统的错误处理方式 终止程序&#xff0c;如assert直接断言报错&#xff0c;缺陷&#xff1a;非常麻烦&#xff…

密码学总结杂七杂八的wp

快捷键 折叠&#xff08;展开&#xff09;所有代码这里是指按下快捷键后凡事.py文件里可折叠的都折叠。 折叠所有代码&#xff1a;Ctrl Shift - &#xff08;减号&#xff09; 展开所有代码&#xff1a;Ctrl Shift &#xff08;加号&#xff09; 折叠&#xff08;展开&…

Linux运维面试题(一)之网络基础类面试题

Linux运维面试题&#xff08;一&#xff09;之网络基础类面试题 1.简述ISO/OSI的七层模型的分层与作用2.TCP/IP 四层&#xff08;网络接口层&#xff09;/五层模型&#xff08;数据链路层物理层&#xff09;3.TCP协议与UDP协议工作在哪一层&#xff0c;作用是什么&#xff1f;4…

Java安全——JAAS

Java安全 从保护终端用户不受攻击的角度讨论&#xff1a; 默认沙箱可以保护终端用户不受恶意java程序的破坏数字签名可以保护终端用户数据的完整性加密则可以保护终端用户数据的机密性 如何防止终端用户的破坏的&#xff1f; 鉴别与授权&#xff08;Java Authentication and Au…

渗透专题丨Vulnhub-DC-1靶机打靶

打开靶机&#xff0c;使用nmap进行网段扫描&#xff1a; 排除主机和kali IP&#xff0c;锁定靶机IP&#xff1a;192.168.38.141&#xff1a; 接下来进行端口扫描&#xff1a; 扫描服务详细信息&#xff1a; 这里扫到内容管理系统&#xff0c;网站也扫出来了&#xff1a;http-ge…

每天高频算法题-DAY3

题目一 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 示例: 现有矩阵 ma…

电路分析 day01 一种使能控制电路

本次分析的电路为 一种使能控制电路 &#xff08;站在别人的肩膀上学习&#xff09; 资料来源 &#xff1a; 洛阳隆盛科技有限责任公司的专利 申请号&#xff1a;CN202022418360.7 1.首先查看资料了解本次电路 1.1 电路名称&#xff1a; 一种使能控制电路 1.2 电路功能…

Can转RTU网关can总线转以太网设备

YC-CAN-RTU 是一款用于 CAN-Modbus 现场总线与 RS-232 总线或 RS-485 总线之间数据转换的协议型转换器&#xff0c;支持标准 Modbus RTU 协议。集成 1 路RS-232 通道、1 路RS-485 通道、1 路CAN-Modbus 通道&#xff0c;可以方便地嵌入使用 RS-232 接口和 RS-485 接口的节点上&…

通过层级列表循环生成树结构

列表生成树结构 应用 前提: 列表有字段能表示所处层级(如Deep、Level).根据自己业务来。主要是针对列表对象来处理&#xff0c;组织成树结构。如下图&#xff1a; 在得到如图类似数据后&#xff0c;采取使用函数来组织树结构&#xff0c;同时生成层级序号&#xff08;1&…