MySQL 增加、更新、删除

文章目录

    • 1. 增加 INSERT
    • 2. 更新 UPDATE
    • 3. 删除 DELETE
    • 练习 LeetCode 196. 删除重复的电子邮箱
    • 练习 LeetCode 627. 交换工资

学习自 廖雪峰的官方网站

1. 增加 INSERT

  • 添加一条记录
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (1,2, ...);INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80);

在这里插入图片描述

  • 没有列出id字段,因为id字段是一个自增主键,由数据库自己推算

  • 如果一个字段有默认值,那么在INSERT语句中可以不出现

  • 字段顺序随意,前后两个()内一一对应即可,如 INSERT INTO students (score, gender, name, class_id) …,对应的VALUES变成(80, 'M', '大牛', 2)

  • 一次添加多条记录,在VALUES子句中指定多个记录值,每个记录是由(...)包含的一组值

INSERT INTO students (class_id, name, gender, score) VALUES(1, '大宝', 'M', 87),(2, '二宝', 'M', 81);

2. 更新 UPDATE

  • 更新一条记录
UPDATE <表名> SET 字段1=1, 字段2=2, ... WHERE ...;UPDATE students SET name='大牛', score=66 WHERE id=1;
把id=1的人的名字和得分改掉
  • 更新多条记录
UPDATE students SET name='小牛', score=77 WHERE id>=5 AND id<=7;
  • 使用表达式更新
UPDATE students SET score=score+10 WHERE score<80;
得分小于80的,都加10
  • 如果where没有匹配到行,不报错,无操作
  • 操作时,如果没有where子句,会对整张表操作,小心

3. 删除 DELETE

DELETE FROM <表名> WHERE ...;DELETE FROM students WHERE id=1;
删除 id=1 的学生
DELETE FROM students WHERE id>=5 AND id<=7;
删除 多个学生
  • 如果where没有匹配到行,不报错,无操作
  • 操作时,如果没有where子句,会删除整张表,小心

练习 LeetCode 196. 删除重复的电子邮箱

题目:

编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
Id 是这个表的主键。
例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:
+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+
提示:
执行 SQL 之后,输出是整个 Person 表。
使用 delete 语句。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-duplicate-emails
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题:

自连接比对
# Write your MySQL query statement below
DELETE p1 FROM Person p1, Person p2 
WHERE p1.Email = p2.Email AND p1.Id > p2.Id;

1436 ms

# Write your MySQL query statement below
DELETE FROM Person
WHERE Id NOT IN
(SELECT Id FROM (SELECT MIN(Id) Id FROM Person GROUP BY Email) tempTableName
);

1169 ms

练习 LeetCode 627. 交换工资

题目:

给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。
交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。
要求只使用一个更新(Update)语句,并且没有中间的临时表。

注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。

例如:
| id | name | sex | salary |
|----|------|-----|--------|
| 1  | A    | m   | 2500   |
| 2  | B    | f   | 1500   |
| 3  | C    | m   | 5500   |
| 4  | D    | f   | 500    |运行你所编写的更新语句之后,将会得到以下表:
| id | name | sex | salary |
|----|------|-----|--------|
| 1  | A    | f   | 2500   |
| 2  | B    | m   | 1500   |
| 3  | C    | f   | 5500   |
| 4  | D    | m   | 500    |

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/swap-salary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题:

case <变量> when <value1> then <newValue1> ELSE <newValue2>
# Write your MySQL query statement below
UPDATE salary SET sex=CASE sex WHEN 'm' THEN 'f'ELSE 'm'END;

or if(condition,true选择1,not true 选择2)

# Write your MySQL query statement below
update salary set sex = IF(sex = 'm', 'f', 'm')

or 异或

# Write your MySQL query statement below
update salary set sex = char(ASCII(sex)^ASCII('m')^ASCII('f'))

更多练习:

  • LintCode 1927. 硬币翻面
update coin set side=if(side='n','p','n')

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

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

相关文章

ACM PKU 2663 Tri Tiling http://acm.pku.edu.cn/JudgeOnline/problem?id=2663

这题开始没有思路&#xff0c;后来看了流牛的解题报告才写出来&#xff1b; 递推公式我写一下&#xff1a; sign[i] 1 (当i 0 时&#xff0c;具体为什么我也没有具体的说明方法) 0 (i % 2 ! 0) 根据图最先想到的一定…

mysql去重取最大值,逻辑类似oracle的over(partition by)函数

像下表一样的数据&#xff0c;有重复的合同号&#xff0c;但是我只想保留同一合同号中回款金额最大的那一行&#xff0c;也就是图中红框里的数据。oracle方法&#xff1a;在oracle中&#xff0c;我们可以简单地用over(partition by)函数处理&#xff08;代码示例如下&#xff0…

LeetCode 1186. 删除一次得到子数组最大和(DP)

1. 题目 给你一个整数数组&#xff0c;返回它的某个 非空 子数组&#xff08;连续元素&#xff09;在执行一次可选的删除操作后&#xff0c;所能得到的最大元素总和。 换句话说&#xff0c;你可以从原数组中选出一个子数组&#xff0c;并可以决定要不要从中删除一个元素&…

可遇不可求的Question之不支持一个STA 线程上针对多个句柄的WaitAll

不支持一个 STA 线程上针对多个句柄的 WaitAll。 题设: 在.NET开发多线程控制台程序过程中,由于业务要求,需要实现"一次扫描多笔订单",然后,通过多线程实现并发提交的逻辑.因此,在控制台程序中采用了多线程记录.由于下一次操作必须等待所有的记录并发提交完成后,才能…

mysql一图秒懂秒清晰 - join连接 ,left join左连接 ,right join右连接 ,inner join内连接

前言&#xff1a;zuo表和you表短短五行涵盖了数据中所有可能遇见的情况&#xff1a; 1.左表有重复值&#xff08;合同号1134&#xff09;&#xff1b; 2.右表有重复值&#xff08;合同号1133&#xff09;&#xff1b; 3.左表存在右表没有的合同号&#xff08;合同号1188&#x…

LeetCode 904. 水果成篮(滑动窗口)

1. 题目 在一排树中&#xff0c;第 i 棵树产生 tree[i] 型的水果。 你可以从你选择的任何树开始&#xff0c;然后重复执行以下步骤&#xff1a; 把这棵树上的水果放进你的篮子里。如果你做不到&#xff0c;就停下来。移动到当前树右侧的下一棵树。如果右边没有树&#xff0c;…

mysql远程访问

MySQL 安装完成后只支持 localhost 访问&#xff0c;我们必须设置一下才可以远程访问&#xff0c;另外还有一些 MySQL 8.0 连接时的一些问题&#xff0c;本文也会一并进行讲解如何解决。1.登录MySQL并输入密码 &#xff0c;选择 mysql 数据库&#xff08;存储了用户信息的 user…

详细解析Java中抽象类和接口的区别(很容易理解错)

2007-09-28 12:17作者&#xff1a;doublel出处&#xff1a;论坛整理责任编辑&#xff1a;方舟在Java语言中&#xff0c; abstract class 和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在&#xff0c;才赋予了Java强大的 面向对象能力。abstract class和inter…

LeetCode 910. 最小差值 II(贪心)

1. 题目 给定一个整数数组 A&#xff0c;对于每个整数 A[i]&#xff0c;我们可以选择 x -K 或是 x K&#xff0c;并将 x 加到 A[i] 中。 在此过程之后&#xff0c;我们得到一些数组 B。 返回 B 的最大值和 B 的最小值之间可能存在的最小差值。 示例 1&#xff1a; 输入&a…

行业分析-实战价值方法

都是工作中总结的方法&#xff0c;可能理论基础不是那么高大上&#xff0c;但是非常有实战价值。 1.行业研究维度 2.行业景气度 3.行业间关系(敏感性计算) 4.行业成长性

java中finalizer终结方法学习心得

最近在看java的中finalizer终结方法&#xff0c;也就是用来释放内存的&#xff0c;但这绝对和C中的析构函数不相同 C中的析构函数是用来回收对象所占用的资源的方法&#xff0c;而在java中&#xff0c;当一个对象不可到达时&#xff08;也就是重堆栈和静态存储区开始&#xff0…

LeetCode 1296. 划分数组为连续数字的集合(map模拟)

1. 题目 给你一个整数数组 nums 和一个正整数 k&#xff0c;请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。 如果可以&#xff0c;请返回 True&#xff1b;否则&#xff0c;返回 False。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,3,4,4,5,6], k …

mysql 8.0.11-Windows (x86, 64-bit)下载地址与安装教程

1.下载安装包 Windows (x86, 64-bit), ZIP Archive官网下载安装包 点击链接&#xff0c;进入如下页面---点击Download下载---解压到目录&#xff08;例如E:\program\mysql-8.0.11-winx64&#xff09;2.添加配置文件my.ini 在目录E:\program\mysql-8.0.11-winx64下&#xff1a; …

LeetCode 1291. 顺次数(模拟)

1. 题目 我们定义「顺次数」为&#xff1a;每一位上的数字都比前一位上的数字大 1 的整数。 请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表&#xff08;从小到大排序&#xff09;。 示例 1&#xff1a; 输出&#xff1a;low 100, high 300 输出&#xff1a;[1…

织梦(DEDECMS)首页调用相关投票的方法(自动更新)

我使用的是 DEDECMS V5.3 方法一 此方法我没试过&#xff0c;但应该能行得通。 dede投票模块在首页的调用 本文介绍dedecms投票模块在首页的调用方法&#xff0c;大家可以参考写出更符合自己需要的效果。 先来看dedecms默认模板里的投票模块在首页调用的代码&#xff1a; <!…

Excel - 添加趋势线,显示趋势线公式 - 进行行业投融资曲线拟合

1.准备数据 本次是以人工智能行业为例&#xff0c;数据范围是2012年4月到2017年11月的&#xff0c;这是去年的时候采集的&#xff0c;这次就直接拿来用了&#xff0c;不影响曲线拟合的操作过程。但是想使用最新的数据的话&#xff0c;你也可以像我一样用火车头采集器采集最新的…

LeetCode 1169. 查询无效交易

1. 题目 如果出现下述两种情况&#xff0c;交易 可能无效&#xff1a; 交易金额超过 1000或者&#xff0c;它和另一个城市中同名的另一笔交易相隔不超过 60 分钟&#xff08;包含 60 分钟整&#xff09; 每个交易字符串 transactions[i] 由一些用逗号分隔的值组成&#xff0…

windows电脑快捷键大全 - 高手总是很酷的

1. WindowsL键&#xff0c;直接锁屏&#xff0c;这样就不用担心电脑的资料外泄了 2. 一般人会先找到“我的电脑”&#xff0c;然后点击打开&#xff0c;而高手总是很酷的&#xff0c; WindowsE键&#xff0c;直接打开电脑的资源管理器 3. 直接按下 WindowsD键&#xff0c…

Linux常用工具小结:(2) Mysql的rpm安装和编译安装

Mysql的rpm安装 1&#xff0c; 下载。 这里下载http://dev.mysql.com/downloads/mirror.php?id402502。 2&#xff0c; 安装。 下载到本地解压&#xff1a; tar -xvf MySQL-5.5.12-1.rhel5.x86_64.tar 安装以下rpm rpm -ivh MySQL-devel-5.5.12-1.rhel5.x86_64.rpm rpm -ivh M…

Power BI 的 最佳搭档 Excel(基础数据分析)

Powerbi和Excel l Power BI 和 Excel 本节将向你介绍将 Excel 工作薄导入 Power BI 是多么简单&#xff0c;并演示 Power BI 和 Excel 如何展现最佳搭档气质。 以下主题将指导你使用简单的表格将 Excel 工作薄上传到 Power BI。 然后你将了解如何上传使用 Excel 更高级的 B…