文章目录

  • 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')

MySQL 增加、更新、删除相关推荐

  1. Mysql增加、删除和修改列属性和约束,和一些有用的查询语句

    最近在整理关于MySql的东西,把一些需要记录的东西写下来,以便以后查询和浏览,以下是一些操作技巧. 如果[某数据库]存在就删除[某数据库] DROP DATABASE IF EXISTS db; 如 ...

  2. MYSQL - 创建/更新/删除表

    目录 一.创建表 CREATE PS1 数据类型 PS2 创建视图 PS3 创建索引 二.更新表 alter 1 添加列 2 删除列 3 改变数据类型 4 改变表名 三.删除表 PS1 删除视图or触 ...

  3. Qt学习(十):QT连接mysql(增加、删除、遍历)

    知识点 Qt连接数据库 数据库的插入+删除+遍历 数据库的批量插入 完整项目github地址: https://github.com/taw19960426/Qt_study/tree/main/Da ...

  4. pymysql(part1)--pymysql初识之检索/增加/更新/删除数据

    利用python调用pymysql来对数据库进行操作. 首先在cmd中查看我们将要操作的数据表infor: 查看infor表列的定义: 现在使用pymysql对mysql进行操作. (一)  SELE ...

  5. 10月25日学习内容整理:数据操作:增加更新删除,单表查询操作

    >>\G是按行显示,必须是大写 >>插入数据:补充另一种插入记录的方法 -->insert into 表名1(字段1,字段2,...) select 字段1,字段2,.. ...

  6. mysql 增加 修改 删除列名

    删除列名 alter table 表名  drop column 列名 添加列名 alter table 表名 add  column 列名 列名类型 修改列名和数据类型 alter table 表名 ...

  7. PHP+MySql+PDO实现简单增加、删除、修改、查询

    最近学习中要使用PHP+MySql实现表单的增加.删除.修改.查询,看了很多简单案例后,写了一个简单的表单,下面请看代码,有错误的地方希望大佬们指教! 数据库名itcast , 表名emp_info ...

  8. mysql 添加分区_创建,增加,删除mysql表分区

    1.测试添加分区和删除分区 ###添加删除range分区 (1)创建一个分区: CREATE TABLE titles ( emp_no      INT NOT NULL, title        ...

  9. mysql创建多表视图sql语句_SQL语法(包括建库、建表、建视图、查询、增加、删除、修改)...

    SQL语法(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE ...

  10. MySql增加字段、删除字段、修改字段名称、修改字段类型

    修改数据库字段 alter table biz_apply MODIFY CUSTOMER_ID bigint(60);  MySql增加字段.删除字段.修改字段名称.修改字段类型 MySql的简单语 ...

最新文章

  1. 三大测序平台芯片通量对比图
  2. Struts2和Struts1.x的全面比较一
  3. java继承与多态_Java继承与多态
  4. flash调用js中的方法,让js传递变量给flash (兼容 IE FF) (转)
  5. php nb2br,PHP中基本符号及使用方法
  6. 先序abdfcegh 中序bfdagehc 后序线索二叉树_二叉树的遍历(先序、中序、后序、层序)...
  7. [Luogu1462]通往奥格瑞玛的道路
  8. 【good】在CentOS 6.x上安装GlusterFS
  9. mysql initialsize,单机数据库优化
  10. cocos2d-x android游戏使用自己的字体
  11. 电子料盘 电容 物料标识识别
  12. Android各版本源码网盘下载(不断更新)
  13. 如何给 ReactJS 应用增加配置文件?
  14. MySQL基础学习_第016章节_简单的查询语句
  15. 遥感影像内部“白点”去除技巧
  16. CentOS报错make: *** [fuzz-commit-graph.o] Error 1
  17. echart旭日图_echarts(10):旭日图
  18. 第2章第24节:文字云:实现非常有创意的文字组织方式 [PowerPoint精美幻灯片实战教程]
  19. 支付宝SDK官方下载地址
  20. 软件系统复杂性灾难及解决方案探究

热门文章

  1. Flask-SQLAlchemy 中如何不区分大小写查询?
  2. opencv python教程简书_OpenCV-Python系列二:常用的图像属性
  3. php环境编译成品,PHPweb成品网站安装环境要求和安装方法
  4. 《DIY四轴飞行器》读书笔记1
  5. 使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法
  6. Java-Redis 热部署问题
  7. nodejs在cmd提示不是内部或外部命令解决方法
  8. JS高级——变量提升
  9. [LeetCode] [C++] 206 Reverse Linked List 反转单项链表
  10. BZOJ 1001 狼捉兔子