MySQL表的增删查改以及基本查询样例

文章目录

  • 表的增删查改
    • 创建表
    • 插入单行全列数据
    • 插入多行指定列数据
    • 插入失败则更新
    • 替换
  • select
    • 全列查询
    • 指定列查询
    • 查询字段为表达式
    • 为查询结果指定别名
    • 查询结果去重
  • where
    • 数学小于60的
    • 英语在70到100之间的
    • 名字为王开头的
    • 总分在 200 分以下的
    • 语文成绩 > 80 并且不姓王的
  • 结果排序
    • 升序
    • 降序
  • 筛选分页
  • update
  • 清空表
  • 聚合函数
  • group by
    • 按照组找出薪资最高和平均薪资
    • 显示平均工资低于2000的部门和它的平均工资
  • having和where的区别

表的增删查改

创建表

create table people( 
id int unsigned primary key not null, 
name varchar(20) not null, 
qq varchar(20), 
gender char(1) default '男'
);

一列:列名+类型+约束条件

image-20230825022803359

插入单行全列数据

insert into people values(100, '张三', '12345', '男');

image-20230825023040174

插入多行指定列数据

不指定的列必须能够置为NULL,或者有默认值

insert into people(id, name, gender) values(101, '李四', '男'), (102, '王五', '女');

image-20230825023521859

插入失败则更新

如果出现了由于 主键 或者 唯一键 对应的值已经存在而导致插入失败,可以选择性的进行同步更新操作。

on duplicate key update XXX = XXX, XXX = XXX;

 insert into people(id, name, qq, gender) values(101, '赵六', '123444', '女') on duplicate key update name = '赵六', qq = '123444', gender = '女';

image-20230825024002708

0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等

1 row affected: 表中没有冲突数据,数据被插入

2 row affected: 表中有冲突数据,并且数据已经被更新

替换

如果出现了由于 主键 或者 唯一键 对应的值已经存在而导致插入失败,可以删除旧数据插入新数据

不再使用insert 选用 replace

replace into people(id, name, qq, gender) values(100, '赵六', '123444', '女');

image-20230825024408170

1 row affected: 表中没有冲突数据,数据被插入

2 row affected: 表中有冲突数据,删除后重新插入

select

为了下列的演示方便,这里使用一张新的表,具体如图

image-20230825030208058

表中的数据可随意插入测试

全列查询

星号代表全部列,from后面跟上需要查询的表名

select * from people;

image-20230825024640143

指定列查询

指定列的顺序不需要按定义表的顺序来

select id, name from people;

image-20230825024744291

查询字段为表达式

表达式不包含字段 :

select id, name, 10 from stu;

image-20230825030226589

表达式包含一个字段:

select id, name, 10 + math from stu;

image-20230825030323985

表达式包含多个字段:

select id, name, chinese + math from stu;

image-20230825030414076

为查询结果指定别名

select id, name, chinese + math + english 总成绩 from stu;

image-20230825030518110

查询结果去重

select distinct math from stu;

where

where 可以指定条件去查询,包括运算符,逻辑运算符等

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,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)

数学小于60的

select name, math from stu where math < 60;

image-20230825030949651

英语在70到100之间的

select name, english from stu where english >= 70 and english <= 100;

image-20230825031124818

使用其他的逻辑运算符同理

名字为王开头的

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

_ 匹配严格的一个任意字符,使用该符号后面只能有一个字符

select name from stu where name like '王%';

image-20230825031335876

总分在 200 分以下的

需要特别注意别名不能用在 WHERE 条件中

select name, math + chinese + english 总分 from stu where math + chinese + english < 200;

image-20230825031528688

语文成绩 > 80 并且不姓王的

select name, chinese from stu where chinese > 80 and name not like '王%';

image-20230825031710798

结果排序

升序

order by XXX — XXX即为需要排序的列

NULL值比任何值都小

select name, math from stu order by math;

image-20230825032021739

降序

order by XXX desc

select name, math from stu order by math desc;

image-20230825032137945

筛选分页

可以指定从哪一列开始显示几行数据,

limit 跟上显示几行数据,offset 跟上开始的列

select * from stu limit 3 offset 0;

image-20230825032921191

update

更新指定的数据

注意不支持+=的写法

update stu set math = math + 30;

image-20230825034004278

可以搭配where使用

清空表

delete:

使用delete清空表,不会更新自增长值

truncate:

只会清空表,并且不可回滚,更新自增长值

聚合函数

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

group by

为了方便体现出效果,新增三张表,分别对应员工信息,部门信息,薪资等级。

image-20230901224331350

其中员工信息中的部门编号为外键,与部门信息表关联。

按照组找出薪资最高和平均薪资

select deptno, max(sal) 最高薪资, avg(sal) 平均 from emp group by deptno;

指定列名分组,根据列中不同行的数据进行分组。

image-20230901224918713

分组也可以已多个列作为条件,已多个列作为条件分组时就会出现一个列出现多次的情况

显示平均工资低于2000的部门和它的平均工资

select deptno, avg(sal) 平均 from emp group by deptno having 平均 < 2000;

image-20230901225927818

having通常和group by一起用,作用和where类似

having和where的区别

两者都能进行条件筛选。

但是where不能用来做分组后的条件筛选,而having可以充当where使用(不推荐)。因为一张表也可以看作是分组后只有一张表所以having也可以使用。

可以先用where对整体进行筛选之后再分组聚合统计之后再用having进行分组后的条件筛选。二者可以结合使用

image-20230901230705389

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

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

相关文章

软件UI工程师工作的岗位职责(合集)

软件UI工程师工作的岗位职责1 职责&#xff1a; 1.负责产品的UI视觉设计(手机软件界面 网站界面 图标设计产品广告及 企业文化的创意设计等); 2.负责公司各种客户端软件客户端的UE/UI界面及相关图标制作; 3.设定产品界面的整体视觉风格; 4.参与产品规划构思和创意过程&…

Matlab信号处理1:模拟去除信号噪声

由于工作内容涉及信号系统、信号处理相关知识&#xff0c;本人本硕均为计算机相关专业&#xff0c;专业、研究方向均未涉及信号相关知识&#xff0c;因此需进行系统地学习。之前已将《信号与系统》快速过了一遍&#xff0c;但感觉较抽象且理解较浅显。在此系统地学习如何使用Ma…

食品化妆品核辐射检测

GB 14883.3-2016 GB 14883.3-2016 这次核污水时间&#xff0c;对我们的生活影响是比较大&#xff0c;尤其是未来几十年几百年的伤害最深&#xff0c;因为这是不可磨灭的伤害&#xff0c;无法去除&#xff01; 所以我要抵制日本任何的食物&#xff0c;尤其是海鲜食品&#xff…

前端如何将后台数组进行等分切割

前端如何切割数组 目标&#xff1a;前端需要做轮播&#xff0c;一屏展示12个&#xff0c;后端返回的数组需要进行切割&#xff0c;将数据以12为一组进行分割 环境&#xff1a;vue3tselement plus 代码如下&#xff1a; function divideArrayIntoEqualParts(array, chunkSiz…

docker使用(二)提交到dockerhub springboot制作镜像

docker使用&#xff08;二&#xff09; dockerhub创建账号创建存储库成功&#xff01;开始推送获取image名 提交成功SpringBoot项目制作Dockerfile镜像部署打jar包 dockerhub创建账号 &#xff08;自认为可以理解为github一类的东西&#xff09; 单击创建存储库按钮。 设定存…

Linux以系统服务的方式启动Kafka(其他服务同理)

最终效果&#xff1a; 先回顾命令行的启动方式&#xff1a; kafka的启动 进入kafka的安装目录 1、首先启动zookeeper服务&#xff1a; bin/zookeeper-server-start.sh config/zookeeper.properties2、再启动kafka bin/kafka-server-start.sh config/server.properties &…

数学建模--最短路径算法的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 #最短路径算法 #针对有向图的最短路径问题,我们有很多的算法能解决. """ 目前主流算法如下所示: Dijkstra算法:Dijkstra算法是一种单源最短路径算法,用于计算从起点到其它所有节点的最短…

13 mysql date/time/datetime/year 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 datetime/date/time/year 类类型…

systemverilog运行的时候调用系统函数运行python等

systemverilog 运行的时候使用系统函数 使用场景&#xff0c;在仿真过程中&#xff0c;需要外部环境准备仿真参数&#xff0c;或者调整仿真参数的时候 创建一个python文件 print("123")创建一个sv文件 module dut ;initial begin$system("python 123.py"…

bat批处理——统计当前文件夹下的所有文件名

一、在当前文件夹下建立XX.txt文件&#xff0c;将指令dir *.* /b/s>test.txt写到XX.txt文件中 测试文件夹目录及文件结构图&#xff1a; 指令说明&#xff1a; dir *.* /b/s>test.txt /*** 此部分为注释内容* dir 获取当前目录下的目录及文件* *.* 对文件进行筛选&…

idea 链接mysql连不上

打开文件 C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.1\jbr\conf\security\java.security修改内容 搜索&#xff1a;jdk.tls.disabledAlgorithms 修改 链接地址 在链接后面添加 ?useSSLfalse jdbc:mysql://127.0.0.1:3306/db_admin3?useSSLfalse

详解4种类型的爬虫技术

聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序&#xff0c;而通用网络爬虫则是捜索引擎抓取系统&#xff08;Baidu、Google、Yahoo等&#xff09;的重要组成部分&#xff0c;主要目的是将互联网上的网页下载到本地&#xff0c;形成一个互联网内容的镜像备份。 增量抓取意…