日期:2014-05-16  浏览次数:20546 次

常用数据库的DML语句的比较和总结

DML = Data Manipulation Language 数据操纵语言 ,使用户能够查询 数据库 以及操作已有数据库中的数据的计算机语言。具体是指是 UPDATE更新、 INSERT插入、 DELETE删除。

最近为了做新旧系统异构数据库的同步,另外为了确保新旧系统实现的业务功能更加趋于一致,所以有点小懒的我也啃了一段时间的旧系统的存储过程(旧系统的业务功能全部依赖 SQL Server中的存储过程,而新系统采用 Oracle数据库, 而且数据库语句都通过上层的业务编写),对一些 DML语句有一些总结和体会,分享给大家。

本文进行对比的地方基于常用的几种数据库: Oracle MySQL SQL Server

1、 尽量避免不够通用的 SQL 语句

有一些语句写法只在某一种数据库中使用,而其余数据库会导致执行失败,若需要在编程时写 SQL语句,因为可能引起的数据库迁移问题,何不尽量避免这种迁移陷阱呢?

1 INSERT 后不加 INTO

??????? INSERT后不加 INTO,在 SQL Server MySQL数据库都会执行成功,但 Oracle会提示“ ORA-00925: missing INTO keyword”的错误信息,例如:

INSERT ?userbarring(UserName,?PhoneNumber,?Areanum,?LimitType)? VALUES ?( ' amigo ' ,? ' 13233334444 ' ,? ' 010 ' ,? 1 );

2 DELETE 后不加 FROM

??????? DELETE后不加 FROM的情况,在 SQL Server Oracle数据库中可以执行成功,但在 MySQL数据库中会提示“ SQL 执行错误 # 1064. 从数据库的响应 :?You have an error in your SQL syntax; check the manual that corresponds to you’re my SQL server version from the right syntax to use near ‘…….’”,例如:

DELETE ?cld_callbarring? WHERE ?UserName = ' amigo '

3 )获取当前时间