mysql笔记(10)-数据的插入和更新(insertupdatecase)

mysql笔记(10)-数据的插入和更新(insertupdatecase),第1张

常见的插入方式有以下几种:

这种方式每次只能插入一行

且set从句内的values不能全部为空

这种方式可以一次性插入多行

不同行之间的数据 用逗号进行分隔

这种方式用于替换表中的某一行

若新插入记录的主码已经存在于表中,则用新记录替换旧记录

若新插入记录的主码不在表中,则直接插入新记录

普通的update语句写法如下:

例如:在instructor(教师信息)表中

我们想更新 ID为10101的教师的工资为70000

对于更复杂的数据更新 我们可以添加 case-when从句

从而实现对数据的分类更新

例如:在instructor(教师信息)表中 对所有教师进行涨薪

对工资小于等于100000的涨薪5%,其他人涨薪3%

本节介绍数据的插入,复制数据到另一张表的Sql语法,主要语法有: insert into,insert into select,select into from 等用法,下面将一一为大家详细说明:

以下面两张表进行sql脚本说明

insert into有两种语法,分别如下:

语法1:INSERT INTO table_name VALUES (value1,value2,value3,...)   --这种形式无需指定要插入数据的列名,只需提供被插入的值即可:

语法2:INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...)    --这种形式需指定要插入数据的列名,插入的值需要和列名一一对应:

eg:insert into customer values('1006','14006','王欣欣','27','深圳市')  --向表customer插入一条数据

eg:insert into customer values('1007','14007','孟一凡','27','')             --向表customer插入一条数据,最后一个值不填表示对应的值为空,非必填项可以不用插入值

eg:insert into customer (cus_id,cus_no,cus_name,cus_age,cus_adds) values('1008','14008','孔凡','26','广州市')      --向表customer插入一条数据,插入的值与列名一一对应

详解:insert into select    --表示从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

语法1:INSERT INTO table_name2 SELECT  * FROM table_name1  --表示将表table_name1中复制所有列的数据插入到已存在的表table_name2中。被插入数据的表为table_name2,切记不要记混了。

eg:insert into customer select * from asett   --将表asett中所有列的数据插入到表customer中

语法2:INSERT INTO table_name2 (column_name(s)) SELECT column_name(s) FROM  table_name1  --指定需要复制的列,只复制制定的列插入到另一个已存在的表table_name2中:

eg:insert into customer (cus_id,cus_no) select ast_id,ast_no from asett   --将表asett中列ast_id和ast_no的数据插入到表customer对应的cus_id,cus_no列中

详解:从一个表复制数据,然后把数据插入到另一个新表中。

语法1:SELECT * INTO newtable [IN externaldb] FROM table1                               --复制所有的列插入到新表中:

eg:select * into customer from asett     --将asett表中数据插入到customer中,被插入的 表customer不存在

eg:select * into customer from asett where ast_id = '1008'    --只复制表asett中ast_id=1008的数据插入到customer中,被插入的 表customer不存在

语法2:SELECT column_name(s) INTO newtable [IN externaldb] FROM table1   --只复制指定的列插入到新表中:

eg:select ast_id,ast_no into customer from asett  --将asett表中列ast_id,ast_no数据插入到customer中,被插入的 表customer不存在

区别1:insert into customer select * from asett where ast_id='1009' --插入一行,要求表customer 必须存在

区别2:select * into customer  from asett  where ast_id='1009' --也是插入一行,要求表customer  不存在

区别3:select into from :将查询出来的数据复制到一张新表中保存,表结构与查询结构一致。

区别4:insert into select :为已经存在的表批量添加新数据。

mysql中常用的三种插入数据的语句:

1、insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;

2、replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引的话,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;

3、REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7252043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存