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. leetcode 36 有效的数独 哈希表 unordered_set unordersd_map 保存状态 leetcode 37 解数独

    leetcode 36 感觉就是遍历. 保存好状态,就是各行各列还有各分区divide的情况 用数组做. 空间小时间大 class Solution { public: bool isValidSud ...

  2. codeforces 1039B Subway Pursuit【二分+随机】

    题目:戳这里 题意:一个点在[1,n]以内,我们可以进行4500次查询,每次查询之后,该点会向左或向右移动0~k步,请在4500次查询以内找到该点. 解题思路:一边二分,一边随机. 交互题似乎有好多是 ...

  3. C++ part7

    1.C++ 继承和组合 类的组合和继承一样,是复用的重要方式. 要优先使用组合而不是继承. 原因: 组合是黑箱复用,对局部类的内部细节不可见:继承是白箱复用,父类的内部细节可见,破坏封装性. 继承在编 ...

  4. 从.NET看微软的焦虑

    节日没事,就像聊聊微软的NET. 1.孩子静悄悄,必定在作妖 截止目前,微软的市值达到1.85万亿美元,按说,这样一个宙斯级的巨无霸应该过的非常舒坦, 但是,和微软市值成鲜明的反差,我们从.NET的发 ...

  5. 发布npm包时,发布源码,而不是dist后的打包文件

    基于webpack-scaffold 此脚手架配置 删除.gitignore文件中对dist文件夹的无视配置 修改package.json文件 { "private": true, ...

  6. NGK.IO会是一个投资优质项目吗?

    互联网发展至今,技术已经高度成熟,人们发现了互联网的好处后,互联网逐渐渗入到家家户户.随着时代的变迁,人们对HTTP长期作为主流霸占互联网食物链的顶端感到不满足.当人类开始变得挑剔,HTTP的劣势就逐 ...

  7. flask启动常见问题1:sqlalchemy.exc.ArgumentError: Mapper mapped class UserCode->data_system_user_email could not assemble any primary key columns for mapped table 'data_system_user_email'

    我的描述:当我编辑好flask以后,ORM映射数据库完成,启动项目时,发生现象: 解决: 看字面的意思是主键导致的错误,于是我查看了data_system_user_email的键参数配置,发现表没有 ...

  8. PHP中间件

    定义 首先什么是php的中间件? 根据zend-framework中的定义: 所谓中间件是指提供在请求和响应之间的,能够截获请求,并在其基础上进行逻辑处理,与此同时能够完成请求的响应或传递到下一个中间 ...

  9. 后台用JSONObject接收前端传过来的字符串数组,并转成集合(JSONObject---JSONArray---List)

    前端传递数据: handleSubmit() {this.dialogVisible = false; const param = { 'bidSampleImgList': this.fileLis ...

  10. smart-adminx项目导入依赖时,点击reinport时没反应且依赖全部报红的解决办法

    依赖报红的解决办法 报红效果如下: 原因分析:下载jar包时,出现大量以.lastUpdated结尾的无效文件. 解决办法:使用bat批处理文件批量删除无效文件 set REPOSITORY_PATH ...