mysql 常见数据处理 dml

        学习完,mysql正则表达式查询,把常见的数据处理,做一个汇总,便于查看。

        数据操纵语言(Data Manipulation Language, DML)。

1,新增数据:

1,单个插入:

insert into table (id, value) 
values(1,2);

2,多个插入:

insert into table (id, value) 
values(1,2),(2,3),(3,4)...;

3,复制表格插入:

0,只复制表结构

语法:

CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2;
-- 或者
CREATE TABLE 新表 LIKE 旧表;

例子:

CREATE TABLE staff LIKE employee;

1,指定字段:
insert into table2(field1,field2,…) 
select value1,value2,… from table1;

2,复制全部:
insert into table2 select * from table1;

3,复制部分数据:
insert into table2 select * from table1 where 条件 ;
比如:
INSERT into WARNING_NOTICE(mod, is_sms, is_mail)  
SELECT mod, '0BT', '0BT' FROM ws_open_model WHERE state = 'A';

2,修改数据:

1,更新单个字段:

 UPDATE open_transfer_link SET on_after_create_type = 'java'  WHERE link_id = 8;

2,更新多个字段:

UPDATE open_transfer_link SET on_after_create_type = 'java', on_after_create = "processService.turnAfter()"
WHERE link_id = 8;

3,联合更新:

join
 UPDATE table_a a
LEFT JOIN
table_b  b
ON a.id= b.id
SET a.name = b.name
WHERE a.name != '';
直接关联的
-- 写一起的方式
UPDATE staff sf, tenant t, role_assign ra 
SET ra.effect_type = t.tenant_level, ra.effect_id = t.tenant_id 
WHERE sf.staff_id = t.create_staff_id
AND sf.tenant_id = t.tenant_id;
        修改这个,mysql支持直接关联的,update直接带其它表的,pg的就不支持,平时写的时候,用join的方式去写。

   用子查询的方式:

        把目标值查出来。用in的方式:

UPDATE fc_basic  fb SET  fb.timeout = 0
WHERE fb.id IN (SELECT fb.id FROM  sc_table sc
WHERE fb.id = sc.id
AND fb.state = 'F' 
AND fb.timeout = 1) ;  

4,数据表修改优化

        MySQL 的 ALTERTABLE 操作性能对大表来说是个问题。MySQL 执行修改表结构操作的方法是,用新的结构创建一个空表,从旧表中查出所有数据插入新表,然后删除旧表。

        这一操作需要花费大量时间,如果内存不足而表数据很大,并且索引较多的情况,会造成长时间的锁表。有极端的情况,有些 ALTERTABLE 操作需要花费数个小时甚至数天才能完成。

这里推荐两种小技巧:

        1,先把数据库拷贝到一台非生产服务器上,在上面做修改表操作,此时的修改不会影响生产库。修改完毕以后在做数据库的切换,把非生产数据库切换成生产库。不过需要注意的时候,在做表结构修改的时候,生产库会生成一些数据。这里需要通过脚本根据时间区间导入这部分数据。

        2,“影子拷贝”,即生成一张表结构相同的不同名新数据表(更改数据结构以后的表)。

然后导入原表的数据到新表,导入成功以后停止数据库,修改原表和新表的名字,最终将数据访问指向新表。

        在运行正常以后,将原表删除。这里有现成的工具可以协助完成上述操作,“online schema change”,”openark toolkit”

        如果只是删除或者更改某一列的默认值,那么直接可以使用 Alert table modify column 和 Alert table alert column 来实现。

3,删除数据:

1,删除全部数据:

        TRUNCATE TABLE 表名:是全删,主键对应的字段会重新置为1,全表删除效率比delete要快。

1,删除数据,但id不变:
delete from 表名;

2,删除数据,id重置:
TRUNCATE TABLE 表名;

2,根据条件删除数据:

DELETE FROM person WHERE id=11;

        删除数据一定要注意,把条件放到一行。换行的,如果没选到,容易造成误删。

注意:

疑问1:插入记录时可以不指定字段名称吗?

        不管使用哪种 INSERT语法,都必须给出 VALUES的正确数目。如果不提供字段名,则必须给每个字段提供一个值,否则将产生一条错误消息。如果要在INSERT操作中省略某些字段,这些字段需要满足一定条件:该列定义为允许空值;或者表定义时给出默认值,如果不给出值,将使用默认值。

疑问2:更新或者删除表时必须指定WHERE子句吗?

        在前面章节中可以看到,所有的UPDATE和DELETE 语句全都在WHERE子句中指定了条件。如果省略WHERE子句,则UPDATE 或DELETE将被应用到表中所有的行。因此,除非确实打算更新或者删除所有记录,否则要注意使用不带WHERE子句的UPDATE或DELETE语句。建议在对表进行更新和删除操作之前,使用SELECT 语句确认需要删除的记录,以免造成无法挽回的结果。

总结:

        使用ddl操作数据的时候,尤其主要删除数据。尤其是重要环境!养成好习惯,以免误操作,带来大麻烦。

        上一篇: 《mysql 正则表达式查询》

        下一篇: 《mysql 变量查询》

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

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

相关文章

达梦数据库如何开启数据库审计

基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例1 官方文档 《DM8安全管理》 5 审计 2 开启审计 审计开关必须由具有数据库审计员SYSAUDITOR权限的管理员进行设…

Python学习之-深拷贝和浅拷贝

前言: Python中的拷贝主要分为浅拷贝(shallow copy)和深拷贝(deep copy),它们在处理复杂对象(例如包含其他对象的对象)时的行为有明显差异。浅拷贝仅复制对象的第一层,而…

测试框架pytest学习与实践

pytest是一个专业的测试框架,可以帮助我们对python项目进行测试,提高测试的效率。 pytest官网手册:pytest: helps you write better programs — pytest documentation 中文手册:Pytest 教程 入门学习 安装pytest pip instal…

jvm基础三——类加载器

类加载器 在Java中,类加载器(Class Loader)是Java虚拟机(JVM)的一部分,负责将类文件(.class文件)加载到JVM中,使得程序能够使用这些类。类加载器在Java中具有重要的作用&…

6 种事件驱动的架构模式

事件驱动架构(Event-Driven Architecture)是一种基于事件和事件处理的软件架构,它的核心思想是将系统的行为和逻辑抽象成一系列事件,这些事件在系统中按照一定的规则和顺序产生和传播,并被相应的处理器处理。事件驱动架构具有高度的灵活性、可…

【数据结构】考研真题攻克与重点知识点剖析 - 第 3 篇:栈、队列和数组

前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…

LogicFlow 在HTML中的引入与使用

LogicFlow 在HTML中的引入与使用 LogicFlow的引入与使用,相较于BPMNJS相对容易一些,更加灵活一些,但是扩展代码可能写得更多一些。 示例展示 使用方式 这个的使用方式就简单很多了,利用cdn把js下载下来,引入到HTML文…

c语言之向main函数传递参数

在c语言中&#xff0c;main函数也是可以传递传递参数的&#xff0c;业内向main函数传递参数的格式是 main(int argc,char *argv[]) 向main函数传递参数不是通过代码传递的&#xff0c;一般是通过dos命令传递 举个例子 #include<stdio.h> void main(int argc,char *ar…

PyTorch之计算模型推理时间

一、参考资料 如何测试模型的推理速度 Pytorch 测试模型的推理速度 二、计算PyTorch模型推理时间 1. 计算CPU推理时间 import torch import torchvision import time import tqdm from torchsummary import summarydef calcCPUTime():model torchvision.models.resnet18()…

使用pip install替代conda install将packet下载到anaconda虚拟环境

问题描述 使用conda install 下载 stable_baseline3出现问题 一番搜索下是Anaconda.org缺少源 解决方法 首先使用管理员权限打开 anaconda prompt 然后激活目标环境&#xff1a;conda activate env_name 接着使用&#xff1a;conda env list查看目标env的位置 如D:\anacon…

2023.4.7 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、过去方案和Motivation 4、Segment Anything模型 5、创新点 6、实验过程 7、实验结果 1、评价绩效 2、检测评价 3、跟踪评价 8、 结论 总结 引言 本周阅读了一篇关于高效的任意分割模型的文献&#xff0c;用于自…

JVM基础:类的生命周期详解

JDK版本&#xff1a;jdk8 IDEA版本&#xff1a;IntelliJ IDEA 2022.1.3 文章目录 一. 生命周期概述二. 加载阶段(Loading)2.1 加载步骤2.2 查看内存中的对象 三. 连接阶段(Linking)3.1 连接之验证3.2 连接之准备3.3 连接阶段之解析 四. 初始化阶段(Initialization)4.1 单个类的…

Arcgis Pro地理配准

目录 一、目的 二、配准 1、找到配准工具 2、添加控制点 3、选择控制点 4、添加更多控制点 5、配准完成、保存 三、附录 1、查看控制点或删除控制点 2、效果不好怎么办 一、目的 下面我们将两张地图进行配准&#xff0c;其中一张有地理位置&#xff0c;而另外一张没…

数据库的透视

在力扣做到这个题的时候&#xff0c;了解到了透视的概念&#xff0c;下面记录一下我对透视的理解&#xff0c;以及透视需要解决的一个很关键的问题。 一、题目描述 这个题要求重新格式化当前的表 表 Department&#xff1a; ------------------------ | Column Name | Typ…

前端面试高频: 理解 React/Vue 中 Key 的作用

一: 引言 在 React 或 Vue 项目中&#xff0c;我们经常在列表组件中使用key属性。key是给每一个vnode的唯一id&#xff0c;它在列表渲染和虚拟 DOM 操作中扮演着重要的角色。 当我们在渲染一个包含多个相同子组件的列表时&#xff0c;如果没有使用 key&#xff0c;React 或 Vue…

666666666666666666

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Linux (Ubuntu)- mysql8 部署

目录 1.基本部署 2.修改密码 3.开启root可远程连接配置 1.基本部署 01》》先查看OS类型&#xff0c;如果是Ubuntu在往下边看 rootspray:/etc/mysql/mysql.conf.d# lsb_release -a LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch Distributor ID: …

备战蓝桥杯---线段树应用2

来几个不那么模板的题&#xff1a; 对于删除&#xff0c;我们只要给那个元素附上不可能的值即可&#xff0c;关键问题是怎么处理序号变化的问题。 事实上&#xff0c;当我们知道每一个区间有几个元素&#xff0c;我们就可以确定出它的位置&#xff0c;因此我们可以再维护一下前…

Windows Edge 兼容性问题修复

修复Windows Edge兼容性问题的方法 如果你在使用Windows Edge浏览器时遇到了兼容性问题&#xff0c;可以尝试以下几种方法来解决&#xff1a; 方法一&#xff1a;更改注册表 使用WinR组合键打开运行对话框。在运行对话框中输入regedit并按回车键&#xff0c;打开注册表编辑器…

RK3568测试

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…