MySQL中INSERT,UPDATE和REPLACE的区别与用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中INSERT,UPDATE和REPLACE的区别与用法相关的知识,希望对你有一定的参考价值。
insert是插入数据update是更新数据
择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
SELECT * FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名 列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable。
4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 参考技术A insert是插入语句,update是修改,replace是替换。
用法例:insert into 表 value(字段名1,字段名2)
update 表名 set name=xiaoming where name=xiaoqiang. 这样名字就被改了
UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def');
REPLACE(str,from_str,to_str)
在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串
这个函数用来批量替换数据中的非法关键字是很有用的!如下例子:
例1:UPDATE BBSTopic SET tcontents = replace(replace(tcontents,'共产党','') ,'找死','') where tcontents like '%共产党%' or tcontents like '%找死%'
例2:UPDATE typetable SET type_description=REPLACE(type_description,'360','http://www.jb51.net');
记得给分啊!!!
为啥必须将表中的至少一列(在 MySQL 中)分配为 PRIMARY KEY,以便表通过 JDBC 接受 UPDATE 和 INSERT 语句?
【中文标题】为啥必须将表中的至少一列(在 MySQL 中)分配为 PRIMARY KEY,以便表通过 JDBC 接受 UPDATE 和 INSERT 语句?【英文标题】:Why is it necessary to assign atleast one column in a table (in MySQL) as PRIMARY KEY for the table to accept UPDATE and INSERT statements via JDBC?为什么必须将表中的至少一列(在 MySQL 中)分配为 PRIMARY KEY,以便表通过 JDBC 接受 UPDATE 和 INSERT 语句? 【发布时间】:2009-12-18 12:08:15 【问题描述】:还有;我可以通过 JDBC 在表内的 PRIMARY KEY 列中添加负 INT 吗?
【问题讨论】:
请尽量将您的问题限制为每个问题一个问题。 您遇到什么错误? JDBC 对主键没有要求。 @Thilo 以下链接指向我收到的异常:***.com/questions/1908646/…@Greg Hewgill 当我为一些简单的问题添加更多条款时,我有点内疚。 好的,对于可更新的结果集,您需要一个主键(用于标识要更新的行)。 @Greg Hewgill:这样我们就可以将答案限制为每个答案一个答案(抱歉,我无法抗拒)。 【参考方案1】:没有理由在主键字段中不能有负数,除非您使用无符号整数作为其数据类型。
当您没有定义主键(或唯一索引)时,数据库服务器无法知道行是唯一的。对于数据库而言,能够将一行与另一行区分开来是非常基本的,我认为也许 MySQL 的设计者可能是在强迫你这样做——我不知道,因为我不太使用 MySQL。 .. 老实说,这是我从未遇到过的问题,因为几乎我创建的每张表都有一个 PK!
【讨论】:
【参考方案2】:为什么必须在一个表中(在 MySQL 中)分配至少一列作为 PRIMARY KEY 以便该表通过 JDBC 接受 UPDATE 和 INSERT 语句?
这不是 JDBC 限制。这是数据库限制。请查阅特定于 DB 的文档以获取答案。
还有;我可以通过 JDBC 在表内的 PRIMARY KEY 列中添加负 INT 吗?
这不是 JDBC 限制。这是数据库限制。请查阅特定于 DB 的文档以获取答案。
为了清楚起见:JDBC 在这里只是一个简单的工具,让您能够使用 Java 语言执行 SQL 语言。如果你得到java.sql
包的异常,那么问题更多在于使用的错误SQL语法,或者有问题的数据库存在限制,或者在极少数情况下是DB提供的JDBC驱动程序中的错误,但它肯定不是' t 通常是由 JDBC API 引起的,正如您所想的那样。
【讨论】:
我绝对知道JDBC就像一个翻译器;但是,当我尝试在 MySQL 控制台中使用INSERT
语句时,尽管表没有 PRIMARY KEY
列,但它成功添加了新行,但是当从 JDBC 执行相同操作时,它给出了一个异常
UpdatableResultSet 需要主键是 JDBC 限制(或者更确切地说是 MySQL JDBC 驱动程序限制)。当您通过 ResultSet 进行更新时,JDBC 不仅仅是发布 SQL 的简单工具。
@Thilo:因此,这是一个实现细节,它仍然不会使其成为 JDBC API 限制。一周后,我仍然看不到您投反对票的任何价值。度过了糟糕的一天?
投反对票的原因是我有点忘记了这个话题。刚刚恢复了。虽然你的答案应该读起来像一个解决方案,而不是 - 它目前是什么 - 更像是从规则手册中读出......但话又说回来,我的问题也不是描述性的。以上是关于MySQL中INSERT,UPDATE和REPLACE的区别与用法的主要内容,如果未能解决你的问题,请参考以下文章
MySQL中INSERT,UPDATE和REPLACE的区别与用法
不同于Oracle:MySQL的insert会阻塞update
mysql远程执行select,insert into都可以,update执行不了,本机update却可以。
MySQL中的`REPLACE`和`INSERT ... ON DUPLICATE KEY UPDATE`之间有啥实际区别?