MySQL入门(7)——表数据的增、删、改

插入数据

使用INSERT···VALUES语句插入数据

INSERT语句最常用的格式是INSERT···VALUES:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] 数据表名 [(字段名,...)]
VALUES ({值 | DEFAULT},...),(...),...
[ON DUPLICATE KEY UPDATE 字段名=表达式,...]

参数说明如下:

  • [LOW_PRIORITY | DELAYED | HIGH_PRIORITY]:可选项,其中LOW_PRIORITY是INSERT、UPDATE和DELETE都支持的可选修饰符,通常应用在多用户访问数据库的情况下,用于指示MySQL降低INSERT、DELETE或UPDATE的执行优先级;DELAYED是INSERT语句支持的可选修饰符,用于指定MySQL将待插入的行数据放到一个缓冲器中,直到待插入数据的表空闲时,才会真正执行插入;HIGH_PRIORITY是INSERT和SELECT语句支持的可选修饰符,用于指定INSERT和SELECT操作优先执行。
  • [IGNORE]:可选项,表示执行INSERT语句时,所出现的错误都会被作为警告处理。
  • [INTO] 数据表名:可选项,用于指定被操作的数据表。
  • [(字段名,...)]:可选项,当不指定该项时,表示要向表中所有列插入数据,否则表示向表的指定列插入数据。
  • VALUES({值 | DEFAULT},...),(...),...:必选项,用于指定需要插入的数据清单,其顺序必须与字段的顺序相对应。其中每一列的数据可以是常量、变量、表达式或NULL,但是数据类型必须和字段类型匹配;也可以直接使用DEFAULT关键字,表示该列插入默认值,但是使用的前提是已经明确默认值,否则会出错。
  • ON DUPLICATE KEY UPDATE子句:可选项,用于指定向表中插入行时,如果导致UNIQUE KEY或PRIMARY KEY出现重复值,系统会根据UPDATE后的语句修改表中原有行的数据。

使用INSERT···SET语句插入数据

这种语法格式用于通过直接给表中的某些字段指定对应的值来实现插入指定数据,对于未指定的字段将采用默认值进行添加。语法格式如下:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] 数据表名
    SET 字段名={值 | DEFAULT},...
    [ON DUPLICATE KEY UPDATE 字段名=表达式,...]

参数说明如下:

  • [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] :可选项,其作用与INSERT···VALUES语句相同。
  • [INTO]数据表名:用于指定被操作的数据表,其中[INTO]为可选项,可省略。
  • SET 字段名={值 | DEFAULT}:用于给数据表中的某些字段设置要插入的值。
  • ON DUPLICATE KEY UPDATE子句:可选项,其作用与INSERT···VALUES语句相同。

插入查询结果

MySQL支持将查询结果插入到指定的数据表中,通过INSERT···SELECT语句实现:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] 数据表名 [(字段名,...)]
    SELECT ...
    [ON DUPLICATE KEY UPDATE 字段名=表达式,...]

参数说明:

  • [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]:可选项,其作用与INSERT···VALUE语句相同。
  • [INTO] 数据表名:用于指定被操作的数据表,其中[INTO]为可选项,可省略。
  • [(字段名,...)]:可选项,当不指定该项时,表示要向表中所有列插入数据,否则表示向表的指定列插入数据。
  • SELECT子句:用于快速地从一个或多个表中取出数据,并将这些数据作为行数据插入到目标数据表中。SELECT子句返回结果集中的字段数、字段类型必须与目标数据表完全一致。
  • ON DUPICATE KEY UPDATE子句:可选项,其作用与INSERT···VALUES语句相同。

修改数据

使用UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] 数据表名
SET 字段1=值1[,字段2=值2...]
[WHERE 条件表达式]
[ORDER BY...]
[LIMIT 行数]

参数说明:

  • [LOW_PRIORITY]:可选项,表示多用户访问数据库的情况下可用于延迟UPDATE操作,知道没有别的用户再从表中读取数据为止。该过程仅适用于表级锁的存储引擎(如IyISAM、MEMORY和MERGE)。
  • [IGNORE]:MySQL中,通过UPDATE语句更新表中多行数据时,如果出现错误,则整个UPDATE语句操作都会被取消,错误发生前更新的所有行将被恢复到原先的值。若需要在发生错误后继续更新,需要IGNORE关键词。
  • SET子句:必选项,用于指定表中要修改的字段名及其字段值。其中的值可以是表达式,也可以是该字段所对应的默认值。若指定默认值,则使用关键词DEFAULT指定。
  • WHERE子句:可选项,用于限定表中要修改的行,若不指定该子句,则UPDATE语句会更新所有行。
  • ORDER BY子句:可选项,用于限定表中的行被修改的次序。
  • LIMIT子句:可选项,用于限定被修改的行数。

删除数据

MySQL可以使用DELETE语句或TRUNCATE TABLE语句删除表中的一行或多行数据。

通过DELETE语句删除数据

语法格式如下:

DELETE [LOW_PRIOITY] [QUICK] [IGNORE] FROM 数据表名
[WHERE 条件表达式]
[ORDER BY ...]
[LIMIT 行数]

参数说明如下:

  • [LOW_PRIOITY]:可选项,表示多用户访问数据库的情况下可用于延迟UPDATE操作,知道没有别的用户再从表中读取数据为止。该过程仅适用于表级锁的存储引擎(如IyISAM、MEMORY和MERGE)。
  • [QUICK]:可选项,用于加快部分种类的删除操作速度。
  • [IGNORE]:MySQL中,通过DELETE语句删除表中多行数据时,如果出现错误,则整个DELETE语句操作都会被取消,错误发生前更新的所有行将被恢复到原先的值。若需要在发生错误后继续删除,需要IGNORE关键词。
  • 数据表名:用于指定要删除的数据表的表名。
  • WHERE子句:可选项,用于限定表中要删除的行,若不指定该子句,则DELETE语句会删除表的所有行。
  • ORDER BY子句:可选项,用于限定表中的行被删除的次序。
  • LIMIT子句:可选项,用于限定被删除的行数。

通过TRUNCATE TABLE语句删除数据

若需要从表中删除所有行,可使用TRUNCATE TABLE语句:

TRUNCATE [TABLE] 数据表名

由于TRUNCATE TABLE语句会删除数据表中的所有数据,并且无法恢复,因此使用TRUNCATE TABLE语句时需谨慎。

DELETE语句和TRUNCATE TABLE语句的区别

DELETE语句与TRUNCATE TABLE语句具有如下区别:

  • 使用TRUNCATE TABLE语句后,表中的AUTO_INCREMENT计数器会被重新置为该列的初始值。
  • 对于参与了索引和试图的表,不能使用TRUNCATE TABLE语句来删除数据,应当使用DELETE语句。
  • TRUNCATE TABLE操作与DELETE操作相比,使用的系统和事务日志资源少。DELETE语句每删除一行都会在事务日志中添加一条记录,而TRUNCATE TABLE语句是通过释放存储表数据所用的数据页来删除数据的,仅在事务日志中记录页的释放。

MySQL入门(7)——表数据的增、删、改的更多相关文章

  1. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  2. 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

    第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...

  3. PreparedStatement实现表数据的增删改 & 封装数据库链接和关闭操作

    PreparedStatement实现表数据的增删改 PreparedStatementUpdateTest package com.aff.PreparedStatement; import jav ...

  4. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  5. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  6. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  7. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  8. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  9. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

随机推荐

  1. Python_变量作用域与修改

    引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表.字典等如果只是修改其中元素的值(而不是整体赋值的形式),可以直接使用全局变量,不需要global声明. 参考 ...

  2. anaconda python3.7 安装 tensorflow-gpu 2.0.0 beta1 配置PyCharm

    参考tensorflow 公众号<tensorflow2.0 安装指南> https://mp.weixin.qq.com/s/7rNXFEC5HYe91RJ0-9CKdQ # 1. NV ...

  3. codefforces 877B

    B. Nikita and stringtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inpu ...

  4. C# Arrays

    Arrays 数组是一系列items 的集合,可以进行各种操作,比如sorting等 定义方式: 数据类型[] 数组名; 使用之前需要实例化,这就是实例化了一个含有2个元素的string 数组 还记得 ...

  5. Springboot 基本认识

    不管是 spring cloud alibaba 还是 spring cloud netflix,都 是基于 springboot 这个微框架来构建的,所以我希望花一 点时间来讲一下 springbo ...

  6. tfrecords转np.array

    import tensorflow as tf import numpy as np from keras.utils import to_categorical import sys def tfr ...

  7. GraphQL All In One

    GraphQL All In One refs https://github.com/hasura/learn-graphql xgqfrms 2012-2020 www.cnblogs.com 发布 ...

  8. 扫码登录 & 实现原理

    扫码登录 & 实现原理 二维码扫描登录是什么原理? https://time.geekbang.org/dailylesson/detail/100044032 xgqfrms 2012-20 ...

  9. DOM & Shadow DOM & Virtual DOM

    DOM & Shadow DOM & Virtual DOM What is the difference between Shadow DOM and Virtual DOM? ht ...

  10. PAA房产智慧社区:解决社区管理服务的痛点难点

    社区,是社交与生活的舞台,更是家的延伸.社区之所有能够有所创新发展,得益于借助数字化和智能化.智能化给社区带来的便利体现在社区门禁可以人脸识别:AI的摄像头可以自动捕获异常的现象,便于社区管理员第一时 ...