数据存在就更新不存在就插入数据sql语句

数据存在就更新不存在就插入数据sql语句
/*
在mysql教程网站制作中我们会碰到为了节省一点点资源就要把数据库教程操作更简单化,如数据存在就更新不存在就插入数据sql语句,下面我们就会用到 insert  on duplicate key update来实例,
语法:

insert [low_priority | delayed | high_priority] [ignore]
       [into] tbl_name [(col_name,...)]
       values ({expr | default},...),(...),...
       [ on duplicate key update col_name=expr, ... ]

   
下面我们根据上面的语句来做一个实例

创建一个数据表ips教程tats

create table ipstats (
ip varchar(15) not null unique,
clicks smallint(5) unsigned not null default '0'
);

*/

$cn = mysql_connect('127.0.0.1','root','root');
mysql_select_db('abc',$cn);
$sql ="insert into ipstats values('192.168.0.1', 1) on duplicate key update clicks=clicks+1";
mysql_query($sql) or die(mysql_error('插入数据失败'));
echo '操作成功';

//上面我们是用了insert into on duplicate key update来操作,那么我们来看看以前我用的方法

$sql = "select * from ipstats where ip='192.168.0.1'";
$query = mysql_query( $sql );
if( mysql_num_rows( $query ) )
{
 mysql_query( "update ipstats set clicks=clicks+1 where ip='192.168.0.1'");
}
else
{
 mysql_query(" insert into ipstats values('192.168.0.1',1)");
}

//从这里来看我们操作就复杂多了,当然还有一种方法直接在sql执行不过也要三步代码如下

$sql ="if (select * from ipstats where ip='192.168.0.1') {
  update ipstats set clicks=clicks+1 where ip='192.168.0.1';
  } else {
   insert into ipstats (ip, clicks) values ('192.168.0.1', 1);
  }";
mysql_query( $sql );

/*
总结:
    经过上面三种mysql 数据存在就更新不存在就插入数据sql语句实例代码,可以得出insert into on duplicate key update是最方便的快速的,所在我们在web开发是尽量选择最适合当前应用方法来处理问题,上面的三种方法都能实例数据插入如果说存在就更新,但第一种是最好了。
 本站原创教程,转载注明来源http://www.111cn.nethttp://www.111cn.net/database/database.html
*/

时间: 2024-10-02 10:34:36

数据存在就更新不存在就插入数据sql语句的相关文章

sql使用触发器当一张表插入数据就往另一张表插入数据

问题描述 sql使用触发器当一张表插入数据就往另一张表插入数据 日期格式是这样的但是使用触发器当上图插入了一条数据就往下图插入相同的数据,如下图为什么日期格式不一样呢? 解决方案 SQL(二) 将一张表数据插入另外一张表从表中插入数据到另外一张表oracle 将一张表的数据插入到另一张表 解决方案二: 日期格式的问题,先确保两张表对应列的数字类型一致,插入使用convert格式化一下:CONVERT(varchar(10), GETDATE(), 111).

同时插入两相同的数据-为什么通过php在向mysql插入数据时会同时插入两条相同的数据!

问题描述 为什么通过php在向mysql插入数据时会同时插入两条相同的数据! 这是url传递参数的代码(两端的html标签没有复制):href="choose.php?relation_id='.$row['user_id'].'&user_id='.$_COOKIE['user_id'].' 这是插入数据库的代码:<?php header("Content-Type:text/html; charset=utf-8"); include('MY_PHP_fil

我的数据访问函数库的源代码(二)—— SQL语句部分

/* 2008 4 25 更新 */ 我的数据访问函数库的源码.整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧. 第二部分:SQL语句部分.传入SQL语句,执行相关的操作.   1//查询语句部分  2        运行查询语句返回记录(DataSet.DataTable.DataRow.String[].String)#region 运行查询语句返回记录(DataSet.DataTable.DataRow.String[].String)  3      4      

C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)

原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高.  包装了一个简单的sqlbulkcopy类,用于数据从datatable导入到sqlserver.代码如下:   /// <summary> /// 将DataTable写入数据库的表中 /// </summary> /// <param name="source">数据源Da

在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据?

原文 http://blog.csdn.net/quou2002/article/details/596509 Sql2005中,提供了uniqueidentifier 数据类型.说白了,就是个GUID,这种类型开发时倒是很有必要的. 今天程序中遇到了这个问题:表里定义了一个uniqueidentifier 列,Asp.net程序需要向表中插入新的数据. Insert 语句由数据源控件自动生成:INSERT INTO [morning_Department] ([DepartmentId], [

ASP 插入数据, 换行问题解决方法

插入|解决|数据|问题 作用:当插入数据时, 把每行的回车符替换为 <br /> 方法, 只使用简单的 replace 方法-- content_ = replace(request.Form("content"),chr(13),"<br/>") 如使用函数, 可这样使用-- content_ = funcName(request.Form("content")) 文件: insertform.asp--插入数据表单页,

oracle从另一表插入数据的问题

问题描述 oracle从另一表插入数据的问题 我的oracle想插入数据,代码是这样的 declare temp varchar2(25):='admin'; lay varchar2(20); i number; begin for i in 1..66 loop insert into NSGL_USER_DATA(FID,DELETED,USERID,DATAID) values(i,1,tempm,lay); end loop; end; 然后我想DATAID是从另一个表DATA来的数据

java中前台可以修改数据成功,但是数据却不能更新到数据库中。

问题描述 java中前台可以修改数据成功,但是数据却不能更新到数据库中. 在前台修改了数据成功后,可是数据库的数据却没有更新,还是以前的数据. <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforg

hibernate 外键 插入数据问题

问题描述 <hibernate-mapping> <class name="com.pojo.HrBranchInfo" table="hr_branch_info" schema="public"> <id name="hbiNId" type="java.lang.Integer"> <column name="hbi_n_id" />