MySQL数据的数据操作

学习目标

  • 熟悉掌握INSERT语句的语法。
  • 熟悉掌握UPDATE语句的语法。
  • 熟悉掌握DELETE语句的语法。
  • 能使用图形化管理工具和命令行方式实现数据插入操作。
  • 能使用图形化管理工具和命令行方式实现数据修改操作。
  • 能使用图形化管理工具和命令行方式实现数据删除操作。

4.1数据插入

INSERT [IGNORE] [INTO]表名[(列名,…)]VALUES ((表达式|DEFAULT},…),(…),…1 SET列名=(表达式|DEFAULT},·
  • 列名:需要插入数据的列名。如果要给全部列插入数据,列名可以省略。如果只给表的部分列插入数据,需要指定这些列。对于没有指出的列,它们的值根据列默认值或有关属性来确定,MySQL处理的原则如下。
  1. 具有AUTO_INCREMENT属性的列,系统生成序号值来唯一标识列。
  2. 具有默认值的列,其值为默认值。
  3. 没有默认值的列,若允许为空值,则其值为空值;若不允许为空值,则出错。
  4. 类型为timestamp的列,系统自动赋值。
  • VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若表名后不给出列名,则在VALUES子句中给出每一列的值;如果列值为空,则值必须置为NULL,否则会出错。

表达式:可以是一个常量、变量或一个表达式,也可以是空值NULL,其值的数据类型要与列的数据类型一致。例如,列的数据类型为int,插入的数据是“aaa”时就会出错。当数据为字符型和日期型时要用单引号括起来。

DEFAULT:指定为该列的默认值,前提是该列原先已经指定了默认值。如果列清单和VALUES清单都为空,则INSERT会创建一行,每个列都设置成默认值。

  • IGNORE:当插入一条违背唯一约束的记录时,MYSQL不会尝试去执行该语句。

    4.2数据修改

  1. 单表数据修改

语法格式如下

UPDATE [IGNORE]表名
SET 列名1=表达式1[,列名2=表达式2…]
[WHERE 条件

语法说明:

  • SET 子句:根据WHERE子句中指定的条件对符合条件的数据行进行修改。若语句中不设定WHERE子句,则更新所有行。
  • 列名1、列名2…:如果要修改列值的列名,可以同时修改所在数据行的多个列值,中间用逗号隔开。
  • 表达式1、表达式2…:可以是常量、变量或表达式。

2.多表数据修改

语法格式如下

UPDATE [IGNORE]表名列表
SET 列名1=表达式1[,列名2=表达式2…]
[WHERE 条件]

条件语法说明如下。
表名列表:包含了多个表的联合,各表之间用逗号隔开。
多表修改语法的其他部分与单表修改语法相同。
例子:订单号为6的客户因某种情况退回2本图书,请在sell表中修改订购册数,
同时书退回后,book表中该图书的数量增加2。

UPDATE sell ,book
SET sel1.订购册数=订购册数-2,book.数量=数量+2
WHEREsell.图书编号=book.图书编号 and se11.订单号='6'

当用UPDATE修改多个表时,要修改的表名之间用逗号隔开。字段名如果涉及多个表,可用“表名.字段名”表示,如例子中的“sell.图书编号”“book.图书编号”。多表连接条件须在WHERE子句中指定。


4.3.1数据删除

使用DELETE语句删除数据

  1. 从单个表中删除行

语法格式如下

DELETE [IGNORE] FROM 表名
[WHERE 条件]

语法说明:

  • FROM子句:用于说明从何处删除数据,表名为要删除数据的表名。
  • WHERE子句:条件中的内容为指定的删除条件。如果省略WHERE子句,则删除该表的所有行。

2.从多个表删除行

语法格式如下。

DELETE [IGNORE]表名工[.*][,表名2[.*1…]
FROM
表名列表
[WHERE条件]
或
DELETE [IGNORE]
FROM表名1[.*][,表名2[.*]…]
USING
  • 表名列表:包含了多个表的联合,各表之间用逗号隔开。

多表删除语法的其他部分与单表删除语法相同。
以上两种语法只是写法不同,作用都是同时删除多个表中的行,并且在删除时可以使用其他表来搜索要删除的记录。第一种语法只删除列于FROM子句之前的表中对应的行,第二种语法只删除列于FROM子句之中(在USING子句之前)的表中对应的行。


4.3.2使用TRUNCATE TABLE语句删除表数据

使用DELETE语句删除记录时,每次删除一行,并在事务日志中为所删除的每行进行记录,当要删除表中所有记录,且记录很多时,命令执行较慢。这时使用TRUNCATE TABLE语句会更加快捷。TRUNCATE TABLE语句也称为清除表数据语句。
语法格式如下。

TRUNCATE TABLE 表名

语法说明如下。

  • 使用TRUNCATE TABLE语句后,AUTO INCREMENT计数器被重新设置为该列的初始值。
  •  对于参与了索引和视图的表,不能使用TRUNCATETABLE语句删除数据,而应使用DELETE语句。

TRUNCATE TABLE 语句在功能上与不带 WHERE子句的 DELETE语句相同,如TRUNCATE TABLE book 与 DELETE FROM book 功能相同,二者均删除book表中的全部行。但TRUNCATE TABLE语句比 DELETE语句执行速度快,且使用的系统和事务日志资源少。这是因为DELETE 语句每删除一行,都在事务日志中为所删除的行记录一项;而TRUNCATE TABLE语句通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
由于TRUNCATE TABLE语句将删除表中的所有数据,且无法恢复,因此使用时必须十分小心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值