MySQL数据修改语句_mysql修改数据语句-程序员宅基地

技术标签: mysql  所有文章  数据库  sql  

MySQL数据修改语句

在 MySQL中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。

基础语法

UPDATE 语句的基本语法

使用 UPDATE 语句修改单个表,语法格式为:

UPDATE <表名> SET 字段 1=1 [,字段 2=2] 
[WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]

语法说明如下:

  • <表名>:用于指定要更新的表名称。
  • SET 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。
  • WHERE 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。
  • ORDER BY 子句:可选项。用于限定表中的行被修改的次序。
  • LIMIT 子句:可选项。用于限定被修改的行数。

注意:修改一行数据的多个列值时,SET 子句的每个值用逗号分开即可。

修改表中的数据

【实例 1】在 tb_courses_new 表中,更新所有行的 course_grade 字段值为 4,输入的 SQL 语句和执行结果如下所示。

mysql> UPDATE tb_courses_new
    -> SET course_grade=4;
Query OK, 3 rows affected (0.11 sec)
Rows matched: 4  Changed: 3  Warnings: 0
mysql> SELECT * FROM tb_courses_new;
+-----------+-------------+--------------+------------------+
| course_id | course_name | course_grade | course_info      |
+-----------+-------------+--------------+------------------+
|         1 | Network     |            4 | Computer Network |
|         2 | Database    |            4 | MySQL            |
|         3 | Java        |            4 | Java EE          |
|         4 | System      |            4 | Operating System |
+-----------+-------------+--------------+------------------+
4 rows in set (0.00 sec)

根据条件修改表中的数据

【实例 2】在 tb_courses 表中,更新 course_id 值为 2 的记录,将 course_grade 字段值改为 3.5,将 course_name 字段值改为“DB”,输入的 SQL 语句和执行结果如下所示。

mysql> UPDATE tb_courses_new
    -> SET course_name='DB',course_grade=3.5
    -> WHERE course_id=2;
Query OK, 1 row affected (0.13 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> SELECT * FROM tb_courses_new;
+-----------+-------------+--------------+------------------+
| course_id | course_name | course_grade | course_info      |
+-----------+-------------+--------------+------------------+
|         1 | Network     |            4 | Computer Network |
|         2 | DB          |          3.5 | MySQL            |
|         3 | Java        |            4 | Java EE          |
|         4 | System      |            4 | Operating System |
+-----------+-------------+--------------+------------------+
4 rows in set (0.00 sec)

注意:保证 UPDATE 以 WHERE 子句结束,通过 WHERE 子句指定被更新的记录所需要满足的条件,如果忽略 WHERE 子句,MySQL 将更新表中所有的行。

复杂修改案例

案例1 (自己为条件修改自己数据)

错误写法

update  t_student_gradeclass_course   
set gradeClassID=gradeClassID+5
WHERE id in(
        SELECT b.id FROM  t_student as a 
        INNER JOIN  t_student_gradeclass_course  as b on a.id=b.studentID
        WHERE b.gradeClassID NOT IN  (SELECT id FROM t_grade_class WHERE grade='十六年级')
) 

1093 - You can’t specify target table ‘t_student_gradeclass_course’ for update in FROM clause

翻译: 你不能在表子句中指定更新的目标表’t_student_gradeclass_course’

因为在mysql中不允许修改的表作为,修改表where的子查询,oracle就可以

解决办法 : 将修改条件放入一个虚拟表中就行了

正确写法

update  t_student_gradeclass_course   
set gradeClassID=gradeClassID+5
WHERE id in(
    -- 虚拟表
    SELECT id FROM (
    	-- 修改条件
        SELECT b.id FROM  t_student as a 
        INNER JOIN  t_student_gradeclass_course  as b on a.id=b.studentID
        WHERE b.gradeClassID NOT IN  (SELECT id FROM t_grade_class WHERE grade='十六年级')
        ) as a
) 

案例2(多表协同更新)

方式一(关联方式)

在这里插入图片描述

方式二(内外连接方式)
在这里插入图片描述

点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
如有侵权,请私信联系我
感谢,配合,希望我的努力对你有帮助^_^

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45203607/article/details/120600096

智能推荐

Spring源码之@Import注解解析_@import spring 问题-程序员宅基地

文章浏览阅读376次。Spring中@Import注解以及源码对@Import的解析_@import spring 问题

1497 取余运算-程序员宅基地

文章浏览阅读122次。1497 取余运算时间限制: 1 s空间限制: 128000 KB题目等级 : 钻石 Diamond题解查看运行结果题目描述Description输入b,p,k的值,编程计算bpmodk的值。其中的b,p,k*k为长整型数(2^31范围内)。输入描..._jmeter 取余

phpmyadmin大数据导入问题_phpmyadmin 导入数据较大时,出现apache http server 已停止工作-程序员宅基地

文章浏览阅读435次。使用phpmyadmin数据库导入出错:You probably tried to upload too large file!解决方法The first things to check (or ask your host provider to check) are the values ofupload_max_filesize,memory_limit and post_max__phpmyadmin 导入数据较大时,出现apache http server 已停止工作

GoogleMap(通过输入地址,查询显示在google 地图上)-程序员宅基地

文章浏览阅读268次。主Activity:[code="java"]package net.blogjava.mobile.map;import java.util.List;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import ..._google maps 根据输入地址,返回对应的地址组

数据库MySQL-查询练习2_查询选修“3105”课程的成绩高于“109”号同学成绩的所有同学的记录。-程序员宅基地

文章浏览阅读3.6k次。11.查询每门课的平均成绩关键字 avg()单门课: SELECT c_no,AVG(sc_degree) FROM SCORE where c_no = '3-105';每门课:SELECT c_no,AVG(sc_degree) FROM SCORE GROUP BY c_no;_查询选修“3105”课程的成绩高于“109”号同学成绩的所有同学的记录。

windows10安装MongoDB基础详细教程_mongodb安装教程win10-程序员宅基地

文章浏览阅读1.5w次,点赞13次,收藏62次。MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。......_mongodb安装教程win10

随便推点

GPS开发、定位修改_virtualposition-程序员宅基地

文章浏览阅读7.4k次。GPS开发、定位修改修改于AOSPandroid7.1.1_r1NMF26Fopenjdk8.0Mint-linuxnexus5x原作者:https://blog.csdn.net/aggresss/article/details/54323034指出文中错误(自己编译时候遇到的)并修正固件共享出来是不可能的,谁知道我的固件里有没有后门,还是用源码自己编译的比较放心新鲜的源码..._virtualposition

Ionic 创建自定义模块(module)_ionicmodule-程序员宅基地

文章浏览阅读903次。在Angular中组件和组件之间可以实现通信,而在 Ionic中每个page是一个模块,而模块里面的组件和其他 page 模块中的组件是无法直接通信的,此时就可以使用自定义模块间接的实现模块之间的通信,类似ng中的模块配置过程,把需要把 page(模块module)暴露出来给其他外部page(模块module)使用,实现步骤如【ionic自定义模块】所示。..._ionicmodule

Java从入门到入坟_Day01_java 从入门到入坟-程序员宅基地

文章浏览阅读263次。个人Java学习请求 —— 协议—— ip—— 端口号—— 资源路径端口号:运行时端口号才回被占用,未运行时端口号可以被其他使用是约束浏览器和服务的请求与响应,是特定数据交互格式,是一个超文本传输协议。作用:写一个美观的呈现程序且能交互的页面,html:书写静态的页面css:美化页面js:让页面能进行交互作用:给前端提供数据的,Java编程:让计算机帮人做事情程序:计算机能识别的是二进制,开发者不能使用二进制开发,使用字母,汉字,标点符号组成的高级语言进行编写虚拟机:Jvm将编写好的代码转换为计算机能看懂的_java 从入门到入坟

React生命周期详解-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏31次。整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析_react生命周期

Qt5入门教程--模板库、对话框_学qt需要学模版吗-程序员宅基地

文章浏览阅读512次。Qt5 study1.QT5模板库1.1 字符串类 QString(传递const char*类型的ASCII字符串)操作字符串QString 提供+ ,+=的操作符QString::append()函数用于追加字符串,使用:str1.append(str2)QString::sprintf(): str.sprintf("%s,%s","welcome ",“to you”) 相..._学qt需要学模版吗

(4-1)Unity3D/工具:6步学会在Unity中读取Excel配置文件_excelresolutionforunity-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏26次。第一步:下载Unity3D读取Excel工具【ExcelResolutionForUnity】并解压,下载地址:这里写链接内容 下载解压后文件目录如下: 第二步:把这3个文件导入到你的Unity项目目录中(也可以直接把整个文件夹拖拽进项目目录中): 第三步:新建一个Excel文件(这里命名为test),打开并编辑一些测试内容,其中第一行是设计的字段,其余行是数据内容: 第四步:将这个Exce_excelresolutionforunity

推荐文章

热门文章

相关标签