[MySql]表的增删查改

目录

前言:

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,booknamefrom 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 ands1.course_id = 1 and s2.course_id = 3 ands1.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.hqwc.cn/news/20280.html

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

相关文章

STL算法篇之拷贝修改类算法

STL算法篇之拷贝修改类算法 拷贝类算法copy与copy_backwardremove与remove_copyremove_if与remove_copy_if 修改类算法replace与replace_copyreplace_if与replace_copy_ifiter_swap与swap与swap_range、unique与unique_copy 拷贝类算法 1.copy 区间拷贝 2.copy_backward 逆向拷…

基于单片机的恒温恒湿温室大棚温湿度控制系统的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前温湿度按键设置温湿度报警上限和下限&#xff1b;温度低于下限继电器闭合加热片进行加热&#xff1b;温度超过上限继电器闭合开启风扇进行降温湿度低于下限继电器闭合加湿器进行加湿湿度高于上限继电器闭合开启风扇进行…

6. Springboot快速回顾(集成Dubbo)

Dubbo是实现远程调用的一个框架&#xff0c;阿里巴巴开源的。远程调用就是B服务器可以调用A服务器的方法。大型项目会被拆分成多个模块&#xff0c;部署在不同的服务器上。若将公共模块集中部署在一台服务器上&#xff0c;可以方便其他服务器调用。因此&#xff0c;需要Dubbo。…

MATLAB 的函数计算与作图

基本初等函数的输入系统运算与操作函数的输入函数值的计算1. 数值计算方式2. 符号计算方式2.1 函数&#xff1a;sym2.2 函数&#xff1a;syms 函数的作图1. 一般函数 yf(x) 的作图&#xff08;二维&#xff09;作图基本形式作多重线作图的线型和颜色作图的网格和标记、图例、字…

如何在SQL Server中实现Ungroup操作

概要 我们经常在SQL Server中使用group by语句配合聚合函数&#xff0c;对已有的数据进行分组统计。本文主要介绍一种分组的逆向操作&#xff0c;通过一个递归公式&#xff0c;实现ungroup操作。 代码和实现 我们看一个例子&#xff0c;输入数据如下&#xff0c;我们有一张产…

【新版系统架构】第十七章-通信系统架构设计理论与实践

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 第一章-绪论第二章-计算机系统基础知识&#xff08;一&#xff09;第二章-计算机系统基础知识&#xff08;二&#xff09;第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

【webrtc】ProcessThreadAttached

RegisterModule 调用所在的线程指针传递给ProcessThreadAttached ProcessThreadAttached 调用不是在worker thread 而是在 registers/deregister 这个module或者 start stop 这个module的时候 ** ** pacedsender是一个moudle -实现了

用Arthas快速定位线上JVM问题!

Arthas分析FullGC问题定位 对于FullGC那一定不会陌生,一般来说会采用横切FullGC前置拦截(-XX:+HeapDumpBeforeFullGC)和后置拦截(-XX:+HeapDumpAfterFullGC),导出FullGC发生前后的heap dump文件,以便于我们进行FullGC原因的分析和定位。 推测分析问题之FullGC的频率过高…

Kubernetes基础知识点

k8s可以看做是一个集群操作系统&#xff0c;能够对容器进行调度和编排。 Kubernetes中的基本对象 pod 是k8s中的最小单位&#xff0c;一个pod封装一个或者多个容器&#xff0c;存储资源。 deployment 是对pod的服务化封装&#xff0c;可以包含一个或多个pod statefulset 为…

【面试题34】什么是MVC,为什么要使用它

文章目录 一、前言二、MVC介绍2.1 模型&#xff08;Model&#xff09;2.2 视图&#xff08;View&#xff09;2.3 控制器&#xff08;Controller&#xff09; 三、MVC模式的优点四、总结 一、前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP面试专区。 计划将全覆盖PHP开发领域…

opencv4.7.0编译opencv-contrib-4.7.0以及CUDA

0、引言 最近工作中需要用到使用CUDA加速后的opencv进行传统算法的开发&#xff0c;在编程之前&#xff0c;需要先解决环境编译和lib库问题&#xff0c;本文就是记录自己编译opencv-4.7.0的全过程。 1、CUDA下载和安装 可参考我之前的博客WIN10安装配置TensorRT详解中的前几…

我爱学QT-QT信号和槽

1.给控件改名字 为了分析代码方便&#xff0c;我们要给控件改名字。要通俗易懂。 2.信号和槽 信号&#xff1a;信号就是指控件发出的特定的信号。 比如按钮的信号 槽&#xff1a;槽就是槽函数的意思&#xff0c;我们可以把槽函数绑定在某一个控件的信号上。 3.怎么关联信号…