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数据的插入、删除、更新相关推荐

  1. Mysql创建触发器实现不同表的插入、更新、删除操作

    说明:Mysql5.0以上的版本才支持下面的操作. Mysql 触发器的插入.更新.删除操作. 在这里建了两个表:其中这两个表的结构不一样,这里给表admin建立触发器 在对表admin操作的同时,触 ...

  2. 利用SQL语句对数据进行操作:插入、更新与删除数据行

    My目录 前言 一.T-SQL的组成 二.插入数据行 1.一次插入一行数据 2.一次插入多行数据 三.更新数据行 四.删除数据行 前言 结构化查询语言(Structured Query Languag ...

  3. Oracle数据库----表中数据的操作(插入、更新、删除数据)

    文章目录 一.插入数据 插入多行数据的简单方法: 1.将表一的全部数据添加到表二中 创建副本Courses1,只复制Courses的结构 将Courses表中的数据拷贝到Courses1中 创建副本的 ...

  4. mysql 百万级别 更新_mysql百万级数据高效插入和更新

    测试环境:win10系统+16G内存+mysql5.7.25 1.创建测试表(表结构如下) 2.插入数据方法 @Override @Transactional(rollbackFor = Except ...

  5. 批量插入或更新数据(MyBatis-plus框架)

    目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础 ...

  6. Java 技术篇-java连接并操作数据库实例演示,执行查询、插入、更新和删除操作

    Java 操作数据库 第一章:Java 代码四个类实现 ① 项目结构展示 ② 数据库连接类 ③ 数据库查询类 ④ 数据库更新类 ⑤ 数据库主类 第二章:查询和更新操作实例演示 ① 查询操作演示 ② 更 ...

  7. VC++对Access数据库的操作(查询、插入、更新、删除等)

    Microsoft Office Access是由微软发布的关系数据库管理系统.Access数据库常应用于小型软件系统中,比如:生产管理.销售管理.库存管理等各类企业管理软件,其最大的优点是:简单易学 ...

  8. 【Postgresql】触发器某个字段更新时执行,行插入或更新执行

    [Postgresql]触发器某个字段更新时执行,行插入或更新执行 1. postgresql触发器 2. 触发器的创建及示例 1) 字段更新时,触发 2) 行插入或更新时,触发 3. 触发器的删除 ...

  9. mysql利用外连接删除数据_MySQL-快速入门(6)连接查询、子查询、正则表达式查询、数据的插入删除更新...

    1.内连接查询:inner join ... on 只有满足条件的记录才能够出现在结果关系中,即完全相等.自连接查询是一种特殊的内连接查询. 2.外连接查询: 1>左外连接 / 左连接:返回包括 ...

  10. jdbc mysql 存储过程查询数据_JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。...

    主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一 ...

最新文章

  1. kotlin + springboot启用elasticsearch搜索
  2. Go后台项目架构思考与重构 | 深度长文
  3. pandas.read_csv() 报错 OSError: Initializing from file failed
  4. 当精准广告遇到大数据
  5. c语言中将函数指针作为形参_在C中将有效指针作为NULL指针
  6. html5外置样式表,HTML5移动端通用css详解
  7. 我们到底为什么要用 IoC 和 AOP
  8. 因为安全层不能与远程计算机协商兼容的参数,L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误(转)...
  9. html二叉树遍历,二叉树的遍历(前序、中序、后序、层次)
  10. 高德地图上线武汉千家商超信息 可预约团购、查营业时间和电话
  11. 6678运行 linux,基于TMS320C6678的Linux镜像烧写演示
  12. Python自动化之操作PPT--更新模板数据,减少重复操作
  13. 全国大学生飞思卡尔智能车竞赛小记
  14. 绘制业务流程图—入门篇
  15. scikit-learn:4.3. Preprocessing data(standardi/normali/binari..zation、encoding、missing value)
  16. C语言记录按键次数,【视频】C语言实现键盘记录【c语言吧】_百度贴吧
  17. 苹果xsmax怎么开机_苹果XSMAX进水不开机苹果售后维修
  18. 区块链项目ICO评估模型
  19. golang $or $in $ge $gte 查询使用
  20. 笔记本插入麦克风被识别成耳机怎么办

热门文章

  1. 一个java文件可以有多个类嘛?
  2. 域名没备案使用七牛cdn加速
  3. 网吧的云计算机,云电脑和网吧开启线上网咖是新趋势?
  4. python快速整理excel_python批量处理excel文件数据
  5. 校园edu无网络访问解决方案
  6. linux汇编预处理,Linux程序在预处理、编译、汇编、链接、运行步骤的作用
  7. phpstorm ctrl 鼠标左键 无效_击败无聊的办公室重复操作,用 Python 控制鼠标和键盘...
  8. python平台无关性_Java是如何实现平台无关性的
  9. 关于IDEA中有关springboot快启动报错问题
  10. STM32——库函数版——超声波测距模块(HC-SR04)