REPLACE INTO 语法完全 与 INSERT INTO 一样工作,只是在新行已插入。这意味着您应该将主键添加到被替换的值中,而不是 WHERE 子句以限制更新。replace into语句会根据少数键/主键删除原有的一条记录, 并且插入一条新的记录来替换原记录。
一、mysql中,replace into后怎么连接where子句
REPLACE INTO 语法完全 与 INSERT INTO 一样工作,只是在新行已插入。
这意味着您应该将主键添加到被替换的值中,而不是 WHERE 子句以限制更新。
REPLACE INTO myTable (
myPrimaryKey,
myColumn1,
myColumn2
) VALUES (
100,
‘value1’,
‘value2’
);
…将提供与…相同的结果
UPDATE myTable
SET myColumn1 = ‘value1’, myColumn2 = ‘value2’
WHERE myPrimaryKey = 100;
…或更准确地说:
DELETE FROM myTable WHERE myPrimaryKey = 100;
INSERT INTO myTable(
myPrimaryKey,
myColumn1,
myColumn2
) VALUES (
100,
‘value1’,
‘value2’
);
replace into语句会根据少数键/主键删除原有的一条记录, 并且插入一条新的记录来替换原记录。如果没有表不存在少数键/主键 或者 插入的数据少数键/主键没有重复的,那么会新增一条记录。
新建一个test表,三个字段,uid,name,mobile, id是自增的主键,mobile是少数索引;
create table test(
uid int(11) NOT NULL AUTO_INCREMENT,
name varchar(50),
mobile varchar(11) unique,
PRIMARY KEY (uid)
);
#插入两条数据进行演示
insert into test(name,mobile) VALUES (‘张三’,’135′);
insert into test(name,mobile) VALUES (‘李四’,’137′);
延伸阅读:
二、为什么要持久化连接
这和 web 服务器的工作方式有关。web 服务器可以通过三种方法来利用 PHP 生成 web 页面。
名列前茅种方法是将 PHP 自以为 CGI“包装器”用作一个单独运行的语言解释器(CGI Wapper)。当以这种方法运行时,PHP 会为向 web 服务器的每个 PHP 页面请求创建并销毁 PHP 解释器的时候实例。由于其会随每个请求的结束而销毁,因此其获取的任何资源(例如指向 SQL 数据库服务器的链接)都会在销毁时关闭。在这种情况下,不会从使用持久连接中获得任何好处——因为根本不会持久。
第二,也是最流行的方法是把 PHP 用作多进程 web 服务器的一个模块,这种方法目前只适用于 Apache。多进程的服务器通常有一个父进程和一组子进程协调运行,子进程负责提供网页的工作。每当接收达到客户端提出请求时,该请求会传递给尚未给其它客户端提供服务的某个子进程。这也就是说当相同的客户端第二次向服务端发出请求时,它将有可能由与名列前茅次不同的某个子进程提供服务。在开启了一个持久连接后,所有请求 SQL 服务的后继页面都能够重用与 SQL 服务器建立的相同连接。
最后一种方法是将 PHP 用作多线程 web 服务器的插件。目前 PHP 支持 WSAPI 和 NSAPI(在 Windows 上),允许 PHP 作为 Netscape FastTrack(iPlanet)、Microsoft 的 Internet Information Server (IIS) 和 O’Reilly 的 WebSite Pro 等多线程服务器的插件使用。该行为与前面描述的多过程模型相同。