mysql 更新删除数据,MYSQL数据的插入、删除、更新
insert插入数据
这里为了示例,我们创建一个新的表:
use new_world;
create table productins
pro_id int not null,
pro_name varchar(100) not null,
pro_type varchar(32) not null,
sale_price int default 0,
purchase_price int ,
regist_date date ,
primary key (pro_id)
结果是:
要用insert插入数据有两种方式
方式一:
insert into productins (pro_id,pro_name,pro_type,sale_price,purchase_price,regist_date) values (1,"t恤衫","衣服",1000,500,"2019-09-17");
表名后面的括号叫做列清单,values后面括号里面的叫做值清单。
方式二:
insert into productins values (1,"t恤衫","衣服",1000,500,"2019-09-17");
用insert插入多行内容:
insert into productins values
(2,"打孔器","办公用品",500,320,"2009-09-11"),
(3,"运动T恤","衣服",4000,2800,null) #有设置not null约束的地方不可以设置null值
一般不建议用用insert插入多行内容。因为一旦出问题了,相对于逐行插入,多行插入很难找出问题的根源。
插入默认值
我们之前在创建表格的时候把sale_price设置成默认值0了。现在我们插入内容的时候就要注意默认值了。
insert into productins values(7,"擦菜板","厨房用具",default,790,"2019-09-18");
这样结果出来sale_price就为0了,因为我们创建的时候就默认它的默认值是0,这里指定输出默认值,所以结果是0。
从其他表中复制数据
我们之前创建过其他的表格,现在我们要把这些表格的内容都复制走。
假如我们现在有两个表,一个是test1,这个表里面是有数据的。
另一个表叫做productins,这个表是空表没数据的。
那么我们现在想要将test1里面的数据导入到productins里面该怎么做呢?
insert into productins select *from test1;
这里要注意的是,首先productins和test1两个表格的列数量要一样,其次,他们各个列的数据类型也要一一对应,不可以一个是char一个是int,这样就无法复制。
还有一个复制的方式如下:
insert into productins (pro_id,pro_name,pro_type,sale_price,purchase_price,regist_date)
select id,name,type,quantity,price,pro_date from test;
这个方式其实和上面那个是一样的,只是这个代码更加详细的把每一个列名都列出来而已。
根据条件复制数据
我们先创建了一个表格,三个列分别是类型,数量的总和以及价钱的总和。同样的,我们将会根据type来分组,以及根据分组计算数量和价格的总和,然后将结果复制到我们这个test_type的表格中。
insert into test_type select type,sum(quantity),sum(price) from test group by type
这样就可以把分组计算后的数据复制导入到我们的新表当中。
除了group by以外还可以用where等任何sql语法,但是用order by并不会产生任何效果。
数据的删除:
如果想删除表可以用drop table,如果只想删除表中的数据,要用delete语句。
语法为delete from 表名
具体为:delete from test;
delete删除的对象不是表耶不是列,而是行。
删除指定对象数据:
现在我们有这个表格:
我们要将sum_quantity里面大于100的全部删除,代码为:
delete from test_type where sum_quantity >=100;
结果为:
我们成功删除了其中大于100的行。
这里要注意一下,第一次运行这个代码的时候往往会报错,报错提示为:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.。
这是因为mysql的安全机制造成的,是一个正常现象,我们只要在运行我们的代码之前先运行一行代码:
SET SQL_SAFE_UPDATES = 0;
将这行代码成功运行以后,那么你在运行delete删除代码就不会报错了。
delete语句中不可以使用group by、having、order by这三类子句,而只能使用where子句。原因很简单,无论是group by还是having都是用来选取数据的时候改变数据形式的,order by是用来指定结果的顺序的,所以在删除数据的时候,这些都起不到什么作用。
除了用delete删除数据以外还可以用truncate来删除,但是相对于delete来说,truncate只能删除表中的全部数据,而不能用where来删除指定数据,语法为:truncate 表明
具体为:truncate test_type
和delete比较起来truncate巨头速度快效率高的优势,如果你想把表中的数据全部删除的话,用truncate的速度会更快。
数据的更新(update):
对于表格数据的修改可以用update
我们现在有如下表格:
现在我们要用update来进行一个修改数据。
我们先把date里面的日期全部统一成2019年9月11号。代码如下:
update test_copy set date="2019-09-11"
结果是:
用这种方式修改的值,就算是null也会被修改成你指定的结果。
指定条件的update语句(搜索型update):
这是我们现在拥有的表格。
我们现在做如下修改:
update test_copy set price=price*2 where type="commodity"
当type是commodity的时候,我们将price的价格乘以2.
结果是:
可以看到,type是commodity的这两行价格都提高了两倍。
将数据更新为null:
我们现在有这个表格:
我们现在来将其中的一行数据里面的日期改为null,代码如下:
update test_copy set date = null where id =7
结果是:
可以看到,id为7的这一行,date这里变成了null。要注意,这里只能设置未设置not null约束的数据,如果设置了not null或者是主键约束,那么就无法修改成null。
多列更新:
如果要一次性修改多条数据的话,可以参照以下方式:
update test_copy set price=price+4,quantity=quantity-6 where type="pen"
这样当type是pen的时候price和quantity都会加4和减6.
要注意的是,执行这一条的时候有可能会报错,错误为1175,如果遇到这个报错要先执行:
SET SQL_SAFE_UPDATES = 0;
然后再执行修改代码即可。
事务是需要在同一处理单元中执行的一系列更新处理的集合。
语法为:
start transaction;
具体写法为:
假如我们要执行这两条语言,按理来说我们用update分别执行两次就可以了。但是有时候会造成只执行了一条,另一条忘记执行的情况,这里虽然只有两条一般不会忘记,但是如果要执行的特别多的话,难免会遗漏一两条,因此这里我们就要用到事务来处理这个情况。
start transaction;
update test_copy set price=price+4,quantity=quantity-6 where type="pen";
update test_copy set price=price*6,quantity=quantity+10 where type="ball";
用start transac和commit来开头结尾的即为一个事务。
rollback是取消事务包含的全部更新处理的结束指令,相当于文件处理中的放弃保存。,一旦回滚,数据库就会恢复到事务开始之前的状态。
mysql 更新删除数据,MYSQL数据的插入、删除、更新相关推荐
- Mysql创建触发器实现不同表的插入、更新、删除操作
说明:Mysql5.0以上的版本才支持下面的操作. Mysql 触发器的插入.更新.删除操作. 在这里建了两个表:其中这两个表的结构不一样,这里给表admin建立触发器 在对表admin操作的同时,触 ...
- 利用SQL语句对数据进行操作:插入、更新与删除数据行
My目录 前言 一.T-SQL的组成 二.插入数据行 1.一次插入一行数据 2.一次插入多行数据 三.更新数据行 四.删除数据行 前言 结构化查询语言(Structured Query Languag ...
- Oracle数据库----表中数据的操作(插入、更新、删除数据)
文章目录 一.插入数据 插入多行数据的简单方法: 1.将表一的全部数据添加到表二中 创建副本Courses1,只复制Courses的结构 将Courses表中的数据拷贝到Courses1中 创建副本的 ...
- mysql 百万级别 更新_mysql百万级数据高效插入和更新
测试环境:win10系统+16G内存+mysql5.7.25 1.创建测试表(表结构如下) 2.插入数据方法 @Override @Transactional(rollbackFor = Except ...
- 批量插入或更新数据(MyBatis-plus框架)
目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础 ...
- Java 技术篇-java连接并操作数据库实例演示,执行查询、插入、更新和删除操作
Java 操作数据库 第一章:Java 代码四个类实现 ① 项目结构展示 ② 数据库连接类 ③ 数据库查询类 ④ 数据库更新类 ⑤ 数据库主类 第二章:查询和更新操作实例演示 ① 查询操作演示 ② 更 ...
- VC++对Access数据库的操作(查询、插入、更新、删除等)
Microsoft Office Access是由微软发布的关系数据库管理系统.Access数据库常应用于小型软件系统中,比如:生产管理.销售管理.库存管理等各类企业管理软件,其最大的优点是:简单易学 ...
- 【Postgresql】触发器某个字段更新时执行,行插入或更新执行
[Postgresql]触发器某个字段更新时执行,行插入或更新执行 1. postgresql触发器 2. 触发器的创建及示例 1) 字段更新时,触发 2) 行插入或更新时,触发 3. 触发器的删除 ...
- mysql利用外连接删除数据_MySQL-快速入门(6)连接查询、子查询、正则表达式查询、数据的插入删除更新...
1.内连接查询:inner join ... on 只有满足条件的记录才能够出现在结果关系中,即完全相等.自连接查询是一种特殊的内连接查询. 2.外连接查询: 1>左外连接 / 左连接:返回包括 ...
- jdbc mysql 存储过程查询数据_JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。...
主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一 ...
最新文章
- kotlin + springboot启用elasticsearch搜索
- Go后台项目架构思考与重构 | 深度长文
- pandas.read_csv() 报错 OSError: Initializing from file failed
- 当精准广告遇到大数据
- c语言中将函数指针作为形参_在C中将有效指针作为NULL指针
- html5外置样式表,HTML5移动端通用css详解
- 我们到底为什么要用 IoC 和 AOP
- 因为安全层不能与远程计算机协商兼容的参数,L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误(转)...
- html二叉树遍历,二叉树的遍历(前序、中序、后序、层次)
- 高德地图上线武汉千家商超信息 可预约团购、查营业时间和电话
- 6678运行 linux,基于TMS320C6678的Linux镜像烧写演示
- Python自动化之操作PPT--更新模板数据,减少重复操作
- 全国大学生飞思卡尔智能车竞赛小记
- 绘制业务流程图—入门篇
- scikit-learn:4.3. Preprocessing data(standardi/normali/binari..zation、encoding、missing value)
- C语言记录按键次数,【视频】C语言实现键盘记录【c语言吧】_百度贴吧
- 苹果xsmax怎么开机_苹果XSMAX进水不开机苹果售后维修
- 区块链项目ICO评估模型
- golang $or $in $ge $gte 查询使用
- 笔记本插入麦克风被识别成耳机怎么办
热门文章
- 一个java文件可以有多个类嘛?
- 域名没备案使用七牛cdn加速
- 网吧的云计算机,云电脑和网吧开启线上网咖是新趋势?
- python快速整理excel_python批量处理excel文件数据
- 校园edu无网络访问解决方案
- linux汇编预处理,Linux程序在预处理、编译、汇编、链接、运行步骤的作用
- phpstorm ctrl 鼠标左键 无效_击败无聊的办公室重复操作,用 Python 控制鼠标和键盘...
- python平台无关性_Java是如何实现平台无关性的
- 关于IDEA中有关springboot快启动报错问题
- STM32——库函数版——超声波测距模块(HC-SR04)