当前位置: 首页 > news >正文

学习MySQL(四):记录的增删改查

记录的增、删、改


-- 插入一条数据
INSERT INTO 表名(字段 1,字段2,字段3) VALUES(值 1,值2,值3) 
INSERT INTO 表名 VALUES(值 1,值2,值3)-- 插入多条数据
INSERT INTO 表名(字段 1,字段2,字段3) VALUES(值 1,值2,值3),(值4,值5,值6)··· 
INSERT INTO 表名 VALUES(值 1,值2,值3),(值4,值5,值6)···
-- 指定条件删除
DELETE FROM 表 WHERE 条件;-- 清空表
DELETE FROM 表;注:不加 WHERE条件,整个表数据都没了,慎用DELETE
思考:DROP TABLE与DELETE FROM 表的区别
-- 更新一个字段
UPDATE 表名 SET 字段 =新值 WHERE 条件;-- 更新多个字段
UPDATE 表名 SET 字段 1 =新值 1,字段2 =新值 2 WHERE 条件;

记录的单表查询

-- 语法:
SELECT DISTINCT 字段 1,字段 2 [,...] FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选条件 ORDER BY filed LIMIT 条数-- 注:
GROUP BY field 根据什么进行分组,一般是某个字段或多个字段 
ORDER BY field 根据什么进行排序,一般是某个字段或多个字段
HAVING主要配合GROUP BY使用,对分组后的数据进行过滤,里面可以使用聚合函数 WHERE是针对SELECT查询的过滤,各有区别和用处-- 优先级FROMWHEREGROUP BYSELECTDISTINCTHAVINGORDER BYLIMIT-- 解释说明:
1、先找到表:FROM
2、拿着WHERE指定的约束条件,去表中去除符合条件的一条条数据
3、将去除的数据进行分组GROUP BY,如果没有GROUP BY,则每行为一组
4、执行SELECT查询所指定的字段
5、若有DISTINCT则去重
6、将结果按照条件排序:ORDER BY
7、限制结果的显示条数:LIMIT
-- 创建员工表
CREATE TABLE emp (id INT PRIMARY KEY auto_increment,emp_name CHAR ( 20 ) NOT NULL,sex enum ( "male", "female" ) NOT NULL DEFAULT "male",age INT ( 3 ) UNSIGNED NOT NULL DEFAULT 28,hire_date date NOT NULL,post CHAR ( 50 ),post_comment CHAR ( 100 ),salary DOUBLE ( 15, 2 ),office INT,depart_id INT 
);-- 插入数据
-- 管理部
INSERT INTO emp ( emp_name, sex, age, hire_date, post, salary, office, depart_id )
VALUES( 'huahua', 'male', 18, '20170301', 'teacher', 7300.33, 401, 1 ),( 'weiwei', 'male', 78, '20150302', 'teacher', 10000000.31, 401, 1 ),( 'lala', 'male', 81, '20130305', 'teacher', 8300, 401, 1 ),( 'zhangsan', 'male', 16, '20170301', 'teacher', 3300, 401, 1 ),( 'liulaogen', 'male', 35, '20180506', 'teacher', 2100, 401, 1 ),( 'aal', 'female', 33, '20251015', 'teacher', 8300, 401, 1 ),( 'zhugeliang', 'male', 25, '20090623', 'teacher', 30000, 401, 1 ),
-- 以下是运维部( '歪歪', 'female', 48, '20150501', 'sale', 2300.13, 402, 2 ),( '丫丫', 'female', 38, '20110311', 'sale', 4300.35, 402, 2 ),( '梅梅', 'female', 18, '20160311', 'sale', 1300.25, 402, 2 ),( '丁丁', 'female', 28, '20220311', 'sale', 3300.65, 402, 2 ),
-- 以下是技术部( '七七', 'female', 38, '20120311', 'operation', 10300.65, 403, 3 ),( '卡卡', 'male', 20, '20180331', 'operation', 11000.65, 403, 3 ),( '程翔', 'female', 30, '20150321', 'operation', 11000.65, 403, 3 ),( '采薇', 'male', 18, '20140611', 'operation', 11000.65, 403, 3 ),( '玫瑰', 'female', 18, '20130312', 'operation', 11000.65, 403, 3 );

简单查询

SELECT * FROM  emp;-- 指定字段查询
SELECT emp_name, salary FROM emp;-- 去重查询
SELECT DISTINCT post FROM emp;-- 拼接字符串
SELECT concat( "姓名:", emp_name, "年龄:", age ) AS 信息 FROM emp;-- concat_ws() 第一个参数为分隔符
SELECT concat_ws( ":", emp_name, salary ) as 信息 FROM emp;-- 条件判断case when
SELECT emp_name, salary,
CASE    WHEN salary >= 10000 THEN"高级技工" WHEN salary >= 5000 THEN"中级技工" ELSE "初级技工" END AS 职级 
FROM emp;-- case when 结合聚合函数
SELECT office,count( CASE WHEN salary >= 10000 THEN emp_name ELSE NULL END ) AS 人数 FROM emp GROUP BY office;-- where表达,二者区别
SELECT office, count( emp_name ) AS 人数 FROM emp WHERE salary >= 10000 GROUP BY office;

where条件筛选

  • 比较运算符:> < >= <= <> !=
  • between...and
  • in("a","b","c")是否属于括号内的元素,满足其中一个就可以
  • like ”%好“ 通配符: %表示任意字符(0个到n个), _表示一个字符
  • 逻辑运算符and or not:多条件时使用
-- 男员工的相关信息
SELECT * FROM emp WHERE sex = 'male';-- 薪资大于等于1万,部门为管理部的员工信息
SELECT * FROM emp WHERE salary >= 10000 AND office = 401;-- between...and 都是闭区间
SELECT * FROM emp WHERE salary BETWEEN 1000.37 AND 3500;-- like 模糊查询 %表示任意字符,_表示一个字符
SELECT * FROM emp WHERE  emp_name LIKE '%h%';
SELECT * FROM emp WHERE  emp_name LIKE '_h%';-- in/not in
SELECT * FROM emp WHERE  office IN ( 401, 402 );-- is null/ is not null
SELECT * FROM emp WHERE  office IS NOT NULL;

group by 分组

-- 每个部门的员工人数,分组字段于查询字段要保持一致
SELECT office,count( emp_name ) AS 员工个数 FROM emp GROUP BY office;-- group_concat
SELECT office,group_concat( emp_name ) AS 员工个数 FROM emp GROUP BY office;-- 常用聚合函数
count() 计数
sum() 求和
avg() 求平均
max() 最大值
min() 最小值

having分组后过滤条件

-- 查找大于5个员工数以上的部门
SELECT office, count( emp_name ) AS 员工个数 FROM emp GROUP BY office HAVING count( emp_name )> 5;

order by排序

-- 排序,默认升序ASC,降序DESC
SELECT * FROM emp ORDER BY salary;-- 多列排序,字段越靠前,优先级越高
SELECT * FROM emp ORDER BY post,salary DESC;

limit

m,n m从第几条开始,n显示前多少条,m若等于0则默认不写

-- 从0开始,显示前三 select  from emp limit 3;-- 从0开始,显示前三
SELECT * FROM emp LIMIT 3;-- 从第2条开始,显示三条
SELECT * FROM emp LIMIT 2, 3;-- 从第2条开始,显示三条
SELECT * FROM emp LIMIT 2, 3;

记录的多表查询

笛卡尔积:交叉连接把表合并,没有其他操作

SELECT * FROM emp_new,dep;

内连接:join

SELECT e.name,e.sex,e.age,d.name 部门名称 FROM emp_new AS e
JOIN dep AS d ON e.dep_id = d.id;

左连接:left join

SELECTe.NAME,e.sex,e.age,d.NAME AS 部门名称 
FROMemp_new AS eLEFT JOIN dep AS d ON e.dep_id = d.id;

右连接: right join

SELECTe.NAME,e.sex,e.age,d.NAME AS 部门名称 
FROMemp_new AS eRIGHT JOIN dep AS d ON e.dep_id = d.id;

全外连接: union/union all

SELECTe.NAME,e.sex,e.age,d.NAME 部门名称 
FROMemp_new AS eLEFT JOIN dep AS d ON e.dep_id = d.id UNION
SELECTe.NAME,e.sex,e.age,d.NAME 部门名称 
FROMemp_new AS eRIGHT JOIN dep AS d ON e.dep_id = d.id;

子查询: in/not in/exits

  1. 子查询是将一个查询语句嵌套在另一个查询语句中
  2. 内层查询语句的查询结果,可以为外层查询语句提供查询条件
  3. 子查询中可以包含:in、not in、exists、not exists等关键字
  4. 还可以包含比较运算符:=、!=、>、<等
-- 查询平均年龄在25岁以上的部门名
SELECT NAME FROM dep WHERE id IN ( SELECT dep_id FROM emp_new GROUP BY dep_id HAVING avg ( age )>25 );-- 查询技术部员工姓名
SELECT id,NAME FROM  emp_new WHERE dep_id = ( SELECT id FROM dep WHERE NAME = "技术" );-- 联系方式
SELECT emp_new.id,emp_new.NAME,dep.NAME FROM emp_new
JOIN ( SELECT id, NAME FROM dep WHERE NAME = "技术" ) dep ON emp_new.dep_id = dep.id;-- 查询不足1人的部门名(子查询得到的是有人部门的id)--》换句话说就是查询没有人的部门
SELECT id,NAME FROM dep WHERE id NOT IN ( SELECT dep_id FROM emp_new GROUP BY dep_id HAVING count( id )>= 1 );-- dep表中是否存在dep_id=203
SELECT * FROM emp_new WHERE EXISTS ( SELECT id FROM dep WHERE id = 203 );

示例数据

CREATE TABLE dep ( id INT PRIMARY KEY, NAME CHAR ( 20 ) );
CREATE TABLE emp_new (id INT PRIMARY KEY auto_increment,NAME CHAR ( 20 ),sex enum ( "male", "female" ) NOT NULL DEFAULT "male",age INT,dep_id INT 
);-- 插入数据
INSERT INTO dep
VALUES( 200, '技术' ), ( 201, '人力资源' ), ( 202, '销售' ), ( 203, '运营' );
INSERT INTO emp_new ( NAME, sex, age, dep_id )
VALUES( 'ailsa', 'male', 18, 200 ),( 'lala', 'female', 48, 201 ),( 'huahua', 'male', 38, 201 ),( 'zhangsan', 'female', 28, 202 ),( 'lisi', 'male', 18, 200 ),( 'shenteng', 'female', 38, 204 );

来自: 学习MySQL(四):记录的增删改查

相关文章:

学习MySQL(四):记录的增删改查

记录的增、删、改 增 -- 插入一条数据 INSERT INTO 表名&#xff08;字段 1&#xff0c;字段2&#xff0c;字段3&#xff09; VALUES&#xff08;值 1&#xff0c;值2&#xff0c;值3&#xff09; INSERT INTO 表名 VALUES&#xff08;值 1&#xff0c;值2&#xff0c;值3&am…...

如何使用Python进行网页爬取

Python爬虫案例可以有很多种&#xff0c;但我会为你提供一个简单的案例&#xff0c;该案例使用Python的requests库来爬取一个网页的内容&#xff0c;并使用BeautifulSoup库来解析HTML并提取特定的信息。 假设我们要从某个新闻网站&#xff08;例如&#xff1a;示例网站&#x…...

Spring的IOC(Inversion of Control)设计模式

Spring的IOC&#xff08;Inversion of Control&#xff09;是一种设计模式&#xff0c;它通过控制反转的思想来降低组件之间的耦合度。在Spring框架中&#xff0c;IOC容器负责管理应用程序中的对象&#xff0c;使得对象之间的依赖关系由容器来维护和注入。 以下是Spring IOC的…...

深度学习知识点总结

深度学习是机器学习领域中的一个重要研究方向&#xff0c;它致力于模拟人脑的学习过程&#xff0c;使机器能够像人一样具有分析学习能力&#xff0c;识别文字、图像和声音等数据。以下是深度学习的一些关键知识点总结&#xff1a; 定义与目标&#xff1a; 深度学习是学习样本数…...

以色列人Andi Gutmans开发的php zend

虽然目前php语言不行了【相关的文章前几年已经有人发过】&#xff0c;但这不是重点&#xff0c;重点是zend引擎的东西具有极大的技术价值&#xff0c;负责zend引擎实现的大佬都现在差不多都是40&#xff0c;50岁左右了&#xff0c;从1997&#xff0c;1998&#xff0c;2000到202…...

Python筑基之旅-溯源及发展

目录 一、Python的起源 二、Python的版本更替及变化 三、Python的优缺点 四、Python的发展方向 五、Python之禅 六、推荐专栏/主页&#xff1a; 1、Python函数之旅&#xff1a;Functions 2、Python算法之旅&#xff1a;Algorithms 3、个人主页&#xff1a;https://mye…...

网页打开:为什么国内用新标签页,国外用当前页?

想写这个话题很久了&#xff0c;因为用百度和Google搜索时&#xff0c;打开搜索结果链接时的交互差异&#xff0c;几乎每天都要提醍我一下。 网页打开——这个交互&#xff0c;在设计里&#xff0c;算是极微小&#xff0c;但影响极广泛的操作设计。甚至&#xff0c;因此形成了…...

用户运营4大核心(C端版)

1、用户运营是什么 产品好比歌手&#xff0c;运营好比经纪公司&#xff0c;运营就是让一个有潜质的产品&#xff0c;从“草根”发展成“明星”&#xff01;C端用户的产品忠诚度不高&#xff0c;用户运营更要维护好“粉丝”关系&#xff0c;从“单向的吸引”发展成“双向的进步…...

SBM模型、超效率SBM模型代码及案例数据(补充操作视频)

01、数据简介 SBM&#xff08;Slack-Based Measure&#xff09;模型是一种数据包络分析&#xff08;Data Envelopment Analysis, DEA&#xff09;的方法&#xff0c;用于评估决策单元&#xff08;Decision Making Units, DMUs&#xff09;的效率。而超效率SBM模型是对SBM模型的…...

C#知识|上位机子窗体嵌入主窗体方法(实例)

哈喽,你好啊,我是雷工! 上位机开发中,经常会需要将子窗体嵌入到主窗体, 本节练习C#中在主窗体的某个容器中打开子窗体的方法。 01 需求说明 本节练习将【账号管理】子窗体在主窗体的panelMain容器中打开。 账号管理子窗体如下: 主窗体的panelMain容器位置如图: 02 实现…...

【汇编】算术指令

一、加法指令 &#xff08;一&#xff09;各加法指令的格式及操作 加法指令可做字或字节运算 &#xff08;1&#xff09;加法指令 ADD 格式&#xff1a;ADD DST,SRC执行的操作&#xff1a;(DST) ← (SRC)(DST) &#xff08;2&#xff09;带进位加法指令 ADC 格式&#xf…...

如何知晓自己手机使用状况-入网时长

手机入网时长查询的重要性 在当今的数字化时代&#xff0c;手机已经成为我们日常生活中不可或缺的一部分。从通讯、娱乐到工作&#xff0c;手机几乎涵盖了生活的各个方面。而在手机使用过程中&#xff0c;了解手机的入网时长信息显得尤为重要。本文将深入探讨手机入网时长查询…...

机器学习 - 决策树

1. 决策树基础 定义与概念 决策树是一种监督学习算法&#xff0c;主要用于分类和回归任务。它通过学习从数据特征到输出标签的映射规则&#xff0c;构建一个树形结构。在分类问题中&#xff0c;决策树的每个叶节点代表一个类别。 案例分析 假设我们有一个关于天气和是否进行…...

【scikit-learn007】主成分分析(Principal Component Analysis, PCA)ML模型实战及经验总结(更新中)

1.一直以来想写下基于scikit-learn训练AI算法的系列文章&#xff0c;作为较火的机器学习框架&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架主成分分析&#xff08;Principal C…...

还在花钱订购SSL证书吗?out啦!

SSL&#xff08;Secure Sockets Layer&#xff09;证书&#xff0c;以及其后续版本TLS&#xff08;Transport Layer Security&#xff09;证书&#xff0c;扮演了保护用户数据免遭窃听和篡改的核心角色。这些证书能够确保数据在客户端与服务器之间传输时的加密性与完整性&#…...

【GoLang基础】函数体的注意事项和细节讨论

在 Go 语言&#xff08;Golang&#xff09;中&#xff0c;函数是程序的基本构建块之一。理解函数的定义和使用是掌握 Go 语言的重要步骤。下面是关于 Go 语言中函数体的详细解释&#xff0c;包括函数的定义、参数传递、返回值以及闭包等方面。 1. 函数的定义 在 Go 语言中&am…...

YOLOv8训练流程-原理解析[目标检测理论篇]

关于YOLOv8的主干网络在YOLOv8网络结构介绍-CSDN博客介绍了&#xff0c;为了更好地学习本章内容&#xff0c;建议先去看预测流程的原理分析YOLOv8原理解析[目标检测理论篇]-CSDN博客&#xff0c;再次把YOLOv8网络结构图放在这里&#xff0c;方便随时查看。 ​ 1.前言 YOLOv8训练…...

实战使用Java代码操作Redis

实战使用Java代码操作Redis 1. 背景说明2. 单连接方式3. 连接池方式1. 背景说明 在工作中, 如果有一批数据需要初始化, 最方便的方法是使用代码操作Redis进行初始化。 Redis提供了多种语言的API交互方式, 这里以Java代码为例进行分析。    使用Java代码操作 Redis 需要借助…...

微信小程序之九宫格抽奖

1.实现效果 2. 实现步骤 话不多说&#xff0c;直接上代码 /**index.wxml*/ <view class"table-list flex fcc fwrap"><block wx:for"{{tableList}}" wx:key"id"><view class"table-item btn fcc {{isTurnOver?:grayscale…...

车牌检测识别功能实现(pyqt)

在本专题前面相关博客中已经讲述了 pyqt + yolo + lprnet 实现的车牌检测识别功能。带qt界面的。 本博文将结合前面训练好的模型来实现车牌的检测与识别。并用pyqt实现界面。最终通过检测车牌检测识别功能。 1)、通过pyqt5设计界面 ui文件如下: <?xml version="1…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...