MySQL replace into 用法
在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。
在 SQL Server 中可以这样处理:
if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time = getdate() where id = 1
那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace into
replace into t(id, update_time) values(1, now());
或
replace into t(id, update_time) select 1, now();
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...) 2. replace into tbl_name(col_name, ...) select ... 3. replace into tbl_name set col_name=value, ...
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
相关文档:
升级mysql数据库的方法:
1. 下载安装介质mysql-essential-5.1.46-win32.msi
可以到官网http://www.mysql.com/click.php?e=35166或其他网站去下载;
2. 备份mysql的数据;
运行cmd打开命令提示符,进入到mysql软件的 ......
/*clear fastload tables*/
%let gdw_dir =( user="XXXXX" password="XXXXX" database="XXXXX" tdpid="XXXXX");
proc sql;
connect to teradata as TD &gdw_dir;
execute (drop table STG_MYSQL_lkp_verticals)
by TD;
execute (commit) ......
1. 连接mysql:
mysqlbinmysql -h主机地址 -u 用户名 -p 用户密码
2.退出mysql:exit
3. 修改密码:
mysqlbinmysqladmin -uroot -p(oldpassword) password newpassword
4.增加用户:
添加一个用户test1 密码为ABC;让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入
mysq ......
1.mysql
在如下页面下载mysql的for linux rpm包
http://www.mysql.com/downloads/down...3.52-1.i386.rpm ;
http://www.mysql.com/downloads/down...3.52-1.i386.rpm ;
存至/home/tmp目录
命令列表:
cd /home/tmp
rpm -ivh MySQL-3.23.52-1.i386.rpm #安装mysql serv ......
/*演示一个JDBC程序,从Mysql的LMD数据库中读出表admin的一个信息*/
import java.sql.*;
public class TestMysqlConnection {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = ......