MYSQL增删改语句

news2024/12/23 19:45:38

INSERT

语法:

单行插入

INSERT INTO table_name (column_1, column_2, ...)
VALUES (value_1, value_2, ...);

多行插入

INSERT INTO table_name (column_1, column_2, ...)
VALUES (value_11, value_12, ...),
       (value_21, value_22, ...)
       ...;

INSERT INTO 和 VALUES都是关键词

INSERT INTO 后面接表名

表名 table_name 后跟要插入数据的列名列表。列名放在小括号中

VALUES 关键字之后的小括号中是值列表。值的数量要和字段的数量相同。值的位置和列的位置一一对应。

INSERT 语句返回插入的行数

实例

先创建个表

CREATE TABLE user (
    id INT AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    age INT,
    birthday DATE,
    PRIMARY KEY (id)
);

插入单行

INSERT INTO user (name,age) VALUES ('zhangsan',18);

我们可以看到 我们只在两列中插入了指 所以另一列没有值的就用NULL填充,而ID列是自增主键不用我们给值

多行插入

INSERT INTO user (name,age) VALUES ('lisi',4),('wangwu',6);

 

 

 插入日期字段

INSERT INTO user (name,age,birthday) VALUES ('zhaoliu',18,'2001-10-04');

DATE格式的数据插入就用一个YYYY-MM-DD的字符串

INSERT的修饰符

LOW_PRIORITY:

如果你指定了 LOW_PRIORITY 修饰符,MySQL 服务器将延迟执行 INSERT 操作直到没有客户端对表进行读操作。

LOW_PRIORITY 修饰符影响那些只支持表级锁的存储引擎(通过锁实现的延迟执行呗),比如: MyISAMMEMORY, 和 MERGE

HIGH_PRIORITY:

如果你指定了 HIGH_PRIORITY 修饰符,它会覆盖掉服务器启动时的 --low-priority-updates 选项(所有支持LOW_PRIORITY选项的语句都默认地按照低优先级来处理)。

关于LOW_PRIORITY

如果写入操作是一个LOW_PRIORITY(低优先级)请求,那么系统就不会认为它的优先级高于读取操作。在这种情况下,如果写入者在等待的时候,第二 个读取者到达了,那么就允许第二个读取者插到写入者之前。只有在没有其它的读取者的时候,才允许写入者开始操作。理论上,这种调度修改暗示着,可能存在 LOW_PRIORITY写入操作永远被阻塞的情况。如果前面的读取操作在进行的过程中一直有其它的读取操作到达,那么新的请求都会插入到 LOW_PRIORITY写入操作之前。
 

同样只影响那些只支持表级锁的存储引擎

IGNORE:

如果你指定了 IGNORE 修饰符,MySQL 服务器会在执行 INSERT 操作期间忽略那些可忽略的错误。这些错误最终会作为 WARNING 返回。

INSERT 限制

在 MySQL 中,max_allowed_packet 配置了服务器和客户端任何单个消息大小的上限。这同样适用于 SELECT 语句。当一个 SELECT 语句的大小超过 max_allowed_packet 值时,服务器就会给出一个错误。

以下语句显示了当前服务器上的 max_allowed_packet 配置:

SHOW VARIABLES LIKE 'max_allowed_packet';

max_allowed_packet 以字节为单位。并且不同服务器上的值可能不同。 

DELETE

语法:

DELETE FROM table_name
[WHERE clause]
[ORDER BY ...]
[LIMIT row_count]

table_name 表名 就是从这里面删除数据

尽量不要省略WHERE因为这会删除表中全部数据

你可能会问 我删除数据我还ORDER BY个鬼 啥顺序删不一样 实际上ORDER BY 和LIMIT都是修饰WHERE的 而非DELETE的

DELETE 语句返回删除的行数

DELETE和SElECT都是后面可以接WHRER ORDER BY LIMIT 但是DELETE后面不接列(一删就删一行 所以这里不是没有参数 而是默认为当前表 多表删除的时候可以体现出来)

实例:

单表删除:

准备数据:

使用 Sakila 示例数据库中的 actor 表 进行演示,但是在这之前先把表复制了,好不容易导入的,删了可就没了。

CREATE TABLE actor_copy AS (SELECT * FROM actor);

条件删除:

DELETE FROM actor_copy WHERE actor_id = 1;

删除actor_id = 1 的行

DELETE FROM actor_copy WHERE last_name LIKE 'S%';

删除首字母为S的行

限制删除的最大行数

要求删除十个注册最早的人

DELETE FROM actor_copy
ORDER BY actor_id DESC
LIMIT 10;

关于表别名

早期的MYSQL不支持别名删除 

像这样会报错:

DELETE FROM main_table m
WHERE NOT EXISTS (
    SELECT *
    FROM another_table a
    WHERE a.main_id = m.id
  );

但我们可以这样

DELETE FROM main_table m
WHERE NOT EXISTS (
    SELECT *
    FROM another_table a
    WHERE a.main_id = m.id
  );

或者直接用表本名删除多好

多表删除

多表删除语句中不能使用 LIMIT 子句和 ORDER BY 子句。

其他的,比如各种连接,都可以用

DELETE t1, t2
FROM t1 INNER JOIN t2
WHERE t1.id = t2.id;
DELETE t1
FROM t1 INNER JOIN t2
WHERE t1.id = t2.id;

这俩对比一下 就是说第一种里面会把t1 t2中的符合条件的行都删掉 而第二种只会删掉t1中符合条件的  (主体就是DELETE t1嘛)

FROM后面的t1 和 t2 之间一定要加JOIN吗? 原理上一定有,FROM后面如果是两个表的话中间即使什么不加只放个都好都默认为CROSS JOIN;

如果实在不想的话就不用联合查询呗

DELETE FROM t1 WHERE (SELECT * FROM t2 WHERE t1.id = t2.id);

和第二种等效

DELETE t1
FROM
  t1 LEFT JOIN t2 ON t1.id = t2.id
WHERE t2.id IS NULL;

DELETE 修饰符

  • LOW_PRIORITY: 如果你指定了 LOW_PRIORITY 修饰符,MySQL 服务器将延迟执行 DELETE 操作直到没有客户端对表进行读操作。这个修饰符影响那些只支持表级锁的存储引擎,比如: MyISAMMEMORY, 和 MERGE

  • QUICK: 如果你指定了 QUICK 修饰符,MyISAM 存储引擎不会在 DELETE 操作期间合并索引。这在某种程度上会加快 DELETE 操作。

  • IGNORE: 如果你指定了 IGNORE 修饰符,MySQL 服务器会在执行 DELETE 操作期间忽略那些可忽略的错误。这些错误最终会作为 WARNING 返回。

操作符用法和INSERT相同 在后面直接加就行

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM table_name

 

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

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

相关文章

libGL.so.1: cannot open shared object file: No such file or directory

不适用docker环境,在conda虚拟环境中出现如下错误: 解决办法: 参考资料 【解决方法】libGL.so.1: cannot open shared object file: No such file or directory

高性能分布式缓存Redis(三) 扩展应用

一、分布式锁 在并发编程中&#xff0c;通过锁&#xff0c;来避免由于竞争而造成的数据不一致问题 1.1、高并发下单超卖问题 Autowired RedisTemplate<String, String> redisTemplate;String key "maotai20210319001";//茅台商品编号ScheduledExecutorServ…

【线程池】史上最全的ScheduledThreadPoolExecutor源码分析

目录 一、简介 1.1 继承关系 1.2 使用 1.3 例子 二、源码分析 2.1 构造方法 2.2 主要的四种提交执行任务的方法 2.3 内部类 ScheduledFutureTask 2.3 scheduleAtFixedRate()方法 2.4 delayedExecute()方法 2.5 ScheduledFutureTask类的run()方法 2.6 内部类 Delaye…

Java设计模式(九)—— 工厂模式1

系列文章目录 披萨订购—传统方式 文章目录 系列文章目录前言一、传统方式案例1.具体需求案例2.传统方式实现3.传统方式优缺点 总结 前言 Hello&#xff0c;小伙伴们&#xff0c;欢迎来到柚子的博客~让我们一起成长吧o(&#xffe3;▽&#xffe3;)ブ 提示&#xff1a;以下是…

Java框架学习(一)JavaWeb基础:Maven、Spring、Tomcat、Mybatis、Springboot

文章目录 MavenMaven仓库Maven坐标为什么Maven进行了依赖管理&#xff0c;依然会出现依赖冲突&#xff1f;处理依赖冲突的手段是什么&#xff1f;详细讲讲scope依赖范围Maven的生命周期Maven高级分模块设计继承版本锁定聚合Maven的继承与聚合的异同私服 Tomcatservlet 分层解耦…

RISCV Reader笔记_4 乘除,浮点扩展

乘法和除法指令 前面了解过 RV32I不带乘除。扩展的RV32M里面有。 mul 较简单。div 是商&#xff0c;rem 是余数。 指令格式都差不多&#xff0c;基本就是靠 func 码确定变体。 因为两个32位数乘积是64位数&#xff0c;一条指令处理会比较复杂&#xff0c;因此分为两个指令计算…

二维地图中立体阴影效果实现

概述 前两天有个学员在群里发出来一张截图&#xff0c;效果是一个区域掩膜边框立体阴影效果&#xff0c;咨询我怎么实现&#xff0c;我看了下心里大概有了一个想法&#xff0c;只是前两天比较忙就没实现&#xff0c;趁着周末就想着验证实现一下。鉴于学员的要求&#xff0c;本…

116.实战网页实现平滑滚动

● 在导航中&#xff0c;我们使用#简单的实现了&#xff0c;现在我们要实现&#xff0c;点击导航自动跳转指定的节去&#xff0c;通过id去选择 <ul class"main-nav-list"><li><a class"main-nav-link" href"#how">工作流程&l…

Web APls-day01

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 变量声明 Web API 基本认知 1 作用和分类 2 什么是DOM 3 DOM树 4 DOM对象&#xff08;重要…

Powerbuilder项目文件太多,对象继承太多导致编译需要几个小时的解决方案

Powerbuilder项目文件太多&#xff0c;对象继承太多导致编译需要几个小时的解决方案&#xff1a; 项目文件太多&#xff0c;很多pbl是一个相对独立的库算法&#xff0c;而且还夹杂着pfc的一些老库。这些库的特点就是继承和封装比较好&#xff0c;但是导致编译速度特慢。我遇到…

全局异常处理

使用 ControllerAdvice 声明全局异常处理类使用ExceptionHandler(异常类.class) 指定哪一个异常处理 先会抛出指定异常&#xff0c;没有指定异常的情况下抛出全局异常。 3. 自定义异常 3-1. 自定义异常类&#xff0c;需要继承 extends RuntimeException 3-2. 在代码异常处声…

《JavaScript设计模式与开发实践》一篇文章带你读懂

《JavaScript设计模式与开发实践》是由曾探所著的一本经典技术书籍。该书详细介绍了JavaScript中常用的设计模式&#xff0c;并结合实际项目开发经验给出了实践示例和最佳实践建议。这本书首先介绍了设计模式的基本概念和作用&#xff0c;以及为什么要在JavaScript中使用设计模…

Leetcode链表刷题集合

链表 对链表类算法题做个小集合&#xff0c;题解基本来LeetCode题解与labuladong的算法网站&#xff0c;自己加以理解写注释。代码都是测试跑通的。 下面使用的链表结构&#xff1a; class ListNode{public ListNode next;public int val;public ListNode(ListNode next, in…

threejs光源

个人博客地址: https://cxx001.gitee.io 前言 没有光源&#xff0c;渲染场景将不可见。threejs中已经帮我们实现了大量的光源&#xff0c;我们可以直接使用&#xff0c;主要分为两类&#xff1a;基础光源和特殊光源&#xff0c;下面将依次详细介绍。 基础光源 1. THREE.Ambi…

单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)

目录 1 主要内容 目标函数 电动汽车负荷建模 算例系统图 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第五章《单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法》…

13 | 代码模型(上):如何使用DDD设计微服务代码模型?

目录 DDD 分层架构与微服务代码模型 微服务代码模型 微服务一级目录结构 各层目录结构 1. 用户接口层 2. 应用层 3. 领域层 4. 基础层 代码模型总目录结构 总结 上一篇文章中完成了领域模型的设计&#xff0c;接下来我们就要开始微服务的设计和落地了。那微服务落地时…

第十七章、Spring的事务处理

1.什么是事务&#xff1f; 保证业务操作完整性的一种数据库机制事务的特点&#xff1a;ACID 原子性 一致性 隔离性 持久性2.如何控制事务 JDBC:Connection.setAutoCommit(false);事务开启Connection.commit();Connection.rollback(); Mybatis:Mybatis自动开启事务sqlSession(…

Revit中桩的绘制及CAD生成桩

一、Revit如何用体量来绘制一个桩基础 如何用体量来绘制一个桩基础呢?这里采用BIM等级考试一级第十期的第三题来教大家 新建体量样板&#xff0c;选择公制体量来绘制 按题目要求先复制4个参照标高平面&#xff0c;同时按住ctrlshift拖动标高再修改高度就可以 开始绘制基础的最…

Axure教程——模糊搜索(中继器 )

本文介绍的是用Axure中的中继器制作模糊搜索 效果 预览地址&#xff1a;https://f16g7e.axshare.com 功能 输入关键字&#xff0c;可查询出相应的结果 制作 一、需要元件 矩形、中继器 二、制作过程 1、搜索框 拖入一个矩形元件&#xff0c;设置大小为21530,在矩形中加入一个…

多元分类预测 | Matlab麻雀算法(SSA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SSA-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab麻雀算法(SSA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SSA-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab…