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倍增表的内容_MySQL入门(7)——表数据的增、删、改相关推荐

  1. mysql删除原则_MySQL入门-11:数据的增、删、改

    1.数据插入 2.数据更新 3.数据删除 4.更新和删除的指导原则 1.数据插入-INSERT 插入数据可以使用以下几种方式:插入完整的行 插入行的一部分 插入多行 插入某些查询的结果Syntax: ...

  2. mysql并行dml_MySql的回顾九DML表数据的增,删,改,与DDL库表的增删改,约束

    雷霆空霹雳,云雨竟虚无.炎赫衣流汗,低垂气不苏.杜圣人热的时候不知是怎么解暑的???但这边这几天天气好像一直都不是太好哎! 不过无所谓了,都过了这么长时间,也习惯了,我还是继续带各位看官复习MySql ...

  3. 表单的增 删 改 查

    django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...

  4. java stringbuilder 替换字符串_StringBuilder修改字符串内容,增,删,改,插

    package seday01; /** * 字符串不变对象特性只针对字符串重用,并没有考虑修改操作的性能.因此String不适合频繁修改内容. * 若有频繁修改操作,使用StringBuilder来 ...

  5. mysql pdo 插入没效果_MySQL分库分表后用PHP如何来完美操作

    当单表达到几千万时,查询一次要很久,如果有联合查询,有可能会死在那 分库分表主要就是解决这个问题,减小数据库的负担,缩短查询时间分库 1)按功能分 用户类库.商品类库.订单类库.日志类.统计类库... ...

  6. mysql+表复制+效率_MySQL数据库复制表的几种方式讲解

    一.MySQL复制表的几种方式 我们首先创建表stuents_score,利用SQL语句查看创建表的结构与列名字段. 之后查看students_score表数据,便于之后观察对比. 1.CREATE ...

  7. mysql 共享表空间存储_MySQL InnoDB共享表空间

    简介ibdata1 ibdata1文件是InnoDB存储引擎的共享表空间文件,存放位置my.ini 中的 datadir="D:\phpStudy\MySQL\data",目录下. ...

  8. mysql常用表名大全_MySQL常用系统表大全

    MySQL5.7 默认的模式有:information_schema, 具有 61个表: m ysqL, 具有31个表: performance_schema,具有87个表; sys, 具有1个表, ...

  9. SQL数据库不用SQL语句能显示全表的内容_MySQL DBA必读:万字归总表设计与SQL编写技巧...

    作者介绍 刘书浩,"移动云"DBA,负责"移动云"业务系统的数据库运维.标准化等工作:擅长MySQL技术领域,熟悉MySQL复制结构.Cluster架构及运维优 ...

最新文章

  1. Python基础学习!容器:列表,元组,字典与集合!(1)
  2. python终结一个循环额_Python语言入门之内存管理方式和垃圾回收算法解析
  3. spring cloud API网关
  4. linux不保存退出命令_面试提问说出16个linux命令,能凑齐不!高频22个Linux命令在这里...
  5. JAVA判断输入的是数字、字符还是汉字
  6. MYSQL ERROR CODE 错误编号的意义
  7. if else if else语句格式_如何“干掉”if...else
  8. B端数据表格设计实战指南(建议收藏)
  9. 【转】Tomcat中部署java web应用程序
  10. leetcode955. Delete Columns to Make Sorted II
  11. 关于”要执行请求的操作,WordPress需要访问您网页服务器的权限”
  12. LeetCode Rearrange String k Distance Apart
  13. MYSQL数据库表操作pdf
  14. 【转】宝贝,我要出嫁了……
  15. [VB.NET]请教一个如何对姓名进行同音字查询?
  16. 跨境电商ERP系统功能有那些?
  17. struts全局视图与局部视图
  18. 下载神器aria2和他的客户端Persepolis
  19. Microsoft Visio 2010 - 编辑属性值
  20. 【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化

热门文章

  1. boost::set_intersection相关的测试程序
  2. 使用PORT对HOSTNAME执行DICOM Q / R操作的测试程序
  3. GDCM:生成标准SOP类的测试程序
  4. 宏BOOST_TEST_TRAIT_TRUE的用法
  5. Boost:bind绑定的转发测试
  6. ITK:二维高斯混合模型期望最大化
  7. ITK:在图像中查找连接的组件
  8. ITK:平方每个像素
  9. ITK:将itk :: Image转换为vtkImageData
  10. OpenCV改变图像的对比度和亮度