当前位置: 首页 > news >正文

mysql语句之insert语句DML事务的结束

INSERT语句
DML:数据操纵语言。用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括insert、delete、update和select等(增删改查)
DATA MANIPULATION LANGUAGE(数据操纵语言)
由INSERT、UPDATE、DELETE等语句构成,用来修改表中的数据,带VALUES子句的INSERT语句。
INSERT [INTO] tbl_name[(col_name,…)]
{VALUES | VALUE} (expr ,…),(…),…
用来把一个新行插入到表中
为和其它数据库保持一致,不要省略INTO关键字以及使用VALUES而不是value关键字
插入一行时,要求必须对该行所有的列赋值。但是赋值方式可以是显式赋值(直接给出值)和隐式赋值(由MySQL自动赋值)

1、在表名后面列出所有的列名
例1: 插入一个新的球队到teams表中
INSERT INTO teams(teamno,playerno,division)
VALUES(3,6,‘third’);
2、在表名后面省略所有的列名
这种写法要求VALUES子句中的值必须按照列在表结构中的顺序来一一赋值
INSERT INTO teams
VALUES(4,104,‘third’);
3、在表名后面只列出部分的列名
所有没有明确赋值的列,将通过隐式赋值自动得到null值
例2: 添加一个新球员
INSERT INTO players(playerno,NAME,initials,sex,joined,street,town)
VALUES(611,‘Jones’,‘GG’,‘M’,1997,‘Green Way’,‘Stratford’);

例4: 创建一个表,存储球员数量和罚款总额
CREATE TABLE totals(
numberplayers INTEGER NOT NULL,
sumpenalties DECIMAL(9,2) NOT NULL
); 
INSERT INTO totals(numberplayers,sumpenalties)
VALUES((SELECT count(*) FROM players),
(SELECT sum(amount) FROM penalties));
注意:子查询必须放在单独的小括号中。

一条INSERT语句可以插入多个行:
例5:添加4个新的球队
INSERT INTO teams(teamno,playerno,division)
VALUES (6,7,‘third’),
(7,27,‘fourth’),
(8,39,‘fourth’),
(9,112,‘sixth’); 
注意:这种语法只要有1行出错,则插入全部取消 
INSERT语句中可以使用IGNORE选项来当INSERT语句出错时,不显示错误消息。INSERT语句不会执行
例6:向teams表中再次添加1号球队
INSERT IGNORE INTO teams VALUES(1,39,‘second’);

例题: 把那些罚款额大于平均罚款额的所有罚款添加到penalties表中。
表:penalties表
字段:所有字段
条件:罚款额大于平均罚款数额
子查询:平均罚款数
INSERT INTO penalties
SELECT paymentno + 100,playerno,payment_date,amount
FROM penalties
WHERE amount > (SELECT avg(amount)
FROM penalties);

=============UPDATE语句 =====
UPDATE [IGNORE] table_reference
SET col_name1=expr1 [, col_name2=expr2,],…
[WHERE where_condition]
[ORDER BY …]
[LIMIT row_count]
将满足WHERE条件的所有行的一个或多个列值改为新的值。没有WHERE子句则修改所有的行

例1: 把95号球员的联盟会员号码改为2000
UPDATE players
SET leagueno = 2000
WHERE playerno = 95;
共 1 行受到影响
例2: 把所有的罚款增加5%
UPDATE penalties
SET amount = amount*1.05; 
共 8 行受到影响 
例3: 把住在Stratford的球员的获胜局数设为0
UPDATE matches
SET won = 0
WHERE playerno IN(SELECT playerno
FROM players
WHERE town=‘Stratford’);
共 4 行受到影响

UPDATE语句中可以使用ORDER BY子句,要求以排序的顺序来依次更新行。这在某些场景可能有用。例如,如果想要把所有罚款的罚款编号都加1,如果从罚款编号为1的行开始更新,要么就会发生主键值重复异常。如果从罚款编号最大的行开始更新,就没有问题。
UPDATE语句中可以使用LIMIT子句,指定一次更新的行数。

例7:把4个最高的罚款额增加5%(罚款额相同则更新编号小的球员)
UPDATE penalties
SET amount= amount *1.05
ORDER BY amount DESC, playerno ASC
LIMIT 4;
IGNORE选项用于当UPDATE语句出错时,不显示错误消息。

更新多个表中的值
MySQL允许我们使用1条UPDATE语句就更新两个或多个表中的行
语法:
UPDATE [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2,],…
[WHERE where_condition]
其中, table_references可以使用任何合法的连接语法。不能使用ORDER BY和LIMIT子句

=REPLACE语句==
替代已有的行
REPLACE语句是INSERT语句的一个变种。当添加新行时,如果主键值重复,那么就覆盖表中已有的行。如果没有主键值重复,则插入该行。
语法:
REPLACE [INTO] tbl_name [(col_name,…)]
VALUES (expr,…),(…),…
或者
REPLACE [INTO] tbl_name [(col_name,…)]
SELECT …

例题:添加一个新的球员。如果主键值已经存在,则覆盖该行
REPLACE INTO players(playerno,NAME,initials,
sex,joined,street,town)
VALUES(611,‘john’,‘GG’,‘M’,1977,‘Green Way’, ‘Startford’);
共 1 行受到影响

========DELETE语句 ===========
语法:
DELETE [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY …]
[LIMIT row_count]
从表中删除满足WHERE条件的所有行。没有WHERE条件,则删除表中的所有行 
例 1: 删除44号球员的罚款
DELETE FROM penalties
WHERE playerno=44;
共 3 行受到影响 。

带子查询
例2: 删除球员,条件是他们加入俱乐部的年份晚于来自于Stratford的球员加入俱乐部的平均年份
CREATE TABLE players_copy2
AS SELECT * FROM players;
DELETE FROM players
WHERE joined > (
SELECT avg(joined)
FROM players_copy2
WHERE town = ‘Stratford’);
注意,在WHERE子句的子查询中,不允许访问要删除行的表。

用在DELETE语句中的ORDER BY子句和LIMIT子句的含义和用在UPDATE语句中是类似的

====TRUNCATE语句:清空=
清空一张(大)表更有效的方法是使用TRUNCATE语句,它比DELETE快得多
语法:
TRUNCATE [TABLE] tbl_name
示例:
Truncate table committee_members;

=truncate和delete相比的区别:=
速度:
truncate的删除速度更快。(对于大文件),删除表结构;对于小文件的话:delete删除比较快。
整张表删除:理解为删除表空间里的数据,没有删除表结构文件里的数据。
delete:
一行一行的删除。
产生日志:
二进制文件:
truncate:删除数据不产生二进制日志。

http://www.dtcms.com/a/427655.html

相关文章:

  • 单机 6 节点打造Redis Cluster(3主3从)——从零到可用与踩坑速修
  • Cesium快速入门到精通系列教程二十:Cesium 1.95 给实体添加事件
  • 02、命令行的介绍
  • 三五互联网站管理登录地址wordpress 黑色
  • 小杰深度学习(four)——神经网络可解释性、欠拟合、过拟合
  • 【手撕机器学习 03】从“生数据”到“黄金特征”:机器学习项目中价值最高的一步
  • 网站关键字优化教程株洲发布信息网
  • 昆明优化网站公司在与客户谈网页广告时如何让客户相信网站流量
  • UNIX下C语言编程与实践21-UNIX 文件访问权限控制:st_mode 与权限宏的解析与应用
  • 瑞芯微RK35XX系列FFmpeg硬件编解码实测,详细性能对比!
  • php网站后台搭建wordpress购买返现
  • 首架机下线!“四川造”大型载客eVTOL筑低空新里程碑
  • 基于STM32与influxDB的电力监控系统-13
  • 250925-0930技术总结
  • AI 重塑实体经济:从技术落地到价值创造的实践路径
  • 认识软件测试
  • 网站服务器数据库湛江网站建设公司哪个好
  • 动手实现简单Vue.js ,探索Vue原理
  • UNIX下C语言编程与实践18-UNIX 文件存储原理:目录、i 节点、数据块协同存储文件的过程
  • 珠宝怎么做网站wordpress 活动报名插件
  • 除自身以外数组的乘积
  • 爬虫逆向--Day25Day26--原型链补环境
  • 拍拍灯电路(用咪头识别拍拍动作)
  • 极限!ubuntu系统联网
  • 第三章 字典与集合
  • 网站设计的价格沪深300指数基金
  • Java-01-基础篇-JDK日志(JUL)
  • (基于江协科技)51单片机入门:7.LED点阵屏
  • 江协科技 CAN总线入门课程(错误处理)
  • 网站的建设与规划方案企业网站建设要素