mysql中timestamp的使用

mysql> CREATE TABLE t1 (

->   id mediumint(9) NOT NULL auto_increment,

->   name char(11) default NULL,

->   rq timestamp default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

->   PRIMARY KEY (id)

-> ) ;

Query OK, 0 rows affected (0.04 sec)

mysql> select * from t1; +----+------+---------------------+

| id | name | rq                  |

+----+------+---------------------+

| 1 | a    | 2008-03-22 10:36:30 |

| 2 | b    | 2008-03-22 10:36:33 |

+----+------+---------------------+

2 rows in set (0.00 sec)

mysql> update t1 set name='f'where id=2;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from t1;

+----+------+---------------------+

| id | name | rq                  |

+----+------+---------------------+

| 1 | a    | 2008-03-22 10:36:30 |

| 2 | f    | 2008-03-22 10:37:04 |

+----+------+---------------------+

2 rows in set (0.00 sec)

注意:id=2的字段的日期字段值由“2008-03-22 10:36:33”自动变为了“”2008-03-22 10:37:04!

★思考:rq字段自动变化有什么好处呢?

★解决:现在要根据两个表找出哪些记录变化了,哪些记录是增加的。

演示步骤:

★将t1表备份为t2表,注意备份表t2与t1表中的rq字段值也是完全相同的:

mysql> create table t2 as select * from t1

Query OK, 2 rows affected (0.08 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from t2;

+----+------+---------------------+

| id | name | rq                  |

+----+------+---------------------+

| 1 | a    | 2008-03-22 10:36:30 |

| 2 | f    | 2008-03-22 10:37:04 |

+----+------+---------------------+

2 rows in set (0.00 sec)

★修改id=2的字段:

mysql> update t1 set name='g'where id=2;

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1 Warnings: 0

★增加新记录:

mysql> insert into t1(name) values('h');

Query OK, 1 row affected (0.01 sec)

mysql> select * from t1;

+----+------+---------------------+

| id | name | rq                  |

+----+------+---------------------+

| 1 | a    | 2008-03-22 10:36:30 |

| 2 | g    | 2008-03-22 10:43:38 |

| 3 | h    | 2008-03-22 10:44:46 |

+----+------+---------------------+

3 rows in set (0.00 sec)

★查出新增加的记录(ID不在t2表中的):

mysql> select a.*

-> from t1 a

-> where not exists

-> (

-> select b.*

-> from t2 b

-> where a.id=b.id

-> );

+----+------+---------------------+

| id | name | rq                  |

+----+------+---------------------+

| 3 | h    | 2008-03-22 10:44:46 |

+----+------+---------------------+

1 row in set (0.00 sec)

★说明:查询哪些记录是被修改过的(ID相同而RQ不同)

mysql> select a.*

-> from t1 a

-> where exists

-> (

-> select b.*

-> from t2 b

-> where a.id=b.id

-> and   a.rq!=b.rq

-> )

-> ;

+----+------+---------------------+

| id | name | rq                  |

+----+------+---------------------+

| 2 | g    | 2008-03-22 10:43:38 |

+----+------+---------------------+

1 row in set (0.00 sec)

★同理,也可以删除哪些记录是被删除的(id在t2中却不在t1中的):

mysql> delete from t1 where id=2;

Query OK, 1 row affected (0.00 sec)

mysql> select a.*

-> from t2 a

-> where not exists

-> (

-> select b.*

-> from t1 b

-> where a.id=b.id

-> );

+----+------+---------------------+

| id | name | rq                  |

+----+------+---------------------+

| 2 | f    | 2008-03-22 10:37:04 |

+----+------+---------------------+

1 row in set (0.00 sec)

说明:

1、在数据仓库系统的设计中,经常会将系统1的定期送到系统2中中,但是系统1中的数据有增加的、删除的和修改的。其中,哪些记录修改的,一直是比较难于解决的问题。

2、在Oracle、SQLServer都有类似的字段,所以上面的方法是通用的。

来源:hi.baidu.com/it培训网

分享到:

2010-03-15 14:51

浏览 1552

分类:数据库

评论

mysql添加timestamp有什么用_mysql中timestamp的使用相关推荐

  1. mysql timestamp 默认值是什么#039;_MYSQL中TIMESTAMP类型的默认值

    MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样.1.自动UPDATE 和INSERT 到当前的时间:表:/*DDL Information For - test.t1*/----- ...

  2. mysql时间戳是什么意思_mysql中TIMESTAMP时间戳详解

    在mysql数据库中,时间戳TIMESTAMP有如下的一些变体: 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在 ...

  3. mysql截取前几个字符串_mysql中截取指定字符前后的字符串

    使用SUBSTRING_INDEX()函数 substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:分隔符计数 例子 取出上述表中数组 ...

  4. mysql添加字段基本语法格式_MySQL添加字段 修改字段 删除字段-Mysql常用命令-吾爱编程网...

    作为程序员mysql的操作是必须要学会的,有时候我们需要使用命令行对数据表进行操作,接下来吾爱编程就为大家介绍一下MySQL 添加字段.修改字段.删除字段等常用命令,有需要的小伙伴可以参考一下: 1. ...

  5. mysql什么情况会加意向锁_MySQL中的锁4-插入意向锁和自增锁

    插入意向锁(Insert Intention Lock) 插入意向锁本质上可以看成是一个Gap Lock 普通的Gap Lock 不允许 在 (上一条记录,本记录) 范围内插入数据 插入意向锁Gap ...

  6. mysql数据库添加数据语句怎么写_mysql中多种插入数据的语句

    摘抄自:https://yjclsx.blog.csdn.net/article/details/83898545 mysql中常用的三种插入数据的语句 insert into表示插入数据,数据库会检 ...

  7. mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程

    MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...

  8. mysql添加字段时定义候选键_MySQL 表约束

    约束概述 对数据表中数据的限制条件叫表的约束,目的是为了保证表中记录的完整和有效.例如非空.唯一等. 查看约束 1 通过查看建表语句 查看表中的约束 show create table tb_name ...

  9. mysql两个字段相减_MySQL 中NULL和空值的区别?

    作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别.大兄弟,不行啊,要面试! 前些天我 ...

最新文章

  1. MySQL Online DDL的改进与应用
  2. IHttpModule.Init方法被执行多次的原因
  3. rootca.pem 微信支付api 秘钥验证
  4. jquery官网打不开难以下载,不妨试试webjars
  5. Python练习-从小就背不下来的99乘法表
  6. c语言打印空心等腰梯形乐学,C语言做激光发射
  7. 仿Jquery链式操作的xml操作类
  8. 基于深度学习模型WideDeep的推荐
  9. centos java mvn_Linux(centos7)安装JDK1.8与maven
  10. Akka适用于分布式系统《five》译
  11. 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
  12. Ubuntu16.04 + TITAN XP 深度学习服务器环境搭建(驱动安装,CUNN7.6.5, CUDA9.0) (避坑篇)
  13. AR技术从无到有浅谈AR市的未来场发展
  14. Vista硬盘安装详细图解
  15. C++实验3-税收计算
  16. 计算机通信中ip,macid的主要作用和区别
  17. liquibase-数据库脚本升级管理
  18. “左手画圆,右手画方”
  19. 复数/复频域计算器介绍(解方程组)
  20. 哈工大计算金融本科新专业 | 全国首发

热门文章

  1. LightOJ - 1140 How Many Zeroes?
  2. JavaScript基础5——关于ECMAscript的函数
  3. SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
  4. flex和js进行参数传递
  5. C++学习——C++中的四个智能指针
  6. linux的驱动开发——字符设备驱动
  7. python取数字第一位数_python基础:8.切片和缩进
  8. 9008刷机怎么刷_OV快捷进入高通进9008或fastboot模式刷机解锁,和MTK关机解锁
  9. 实现两个点集的欧式距离和cos距离和索引值寻找(含有两种解法,for循环和矩阵操作)
  10. BPP 相关——02