SQL 92 标准
YoYo
项目终于结束了,总结的时候到了... hehe :)
在项目中我们遇到了很多的问题,标准SQL使用就是其中一个。 因为我们在做BI package的时候,一开始都是基于MS SQL 来做的,所以Universe的设计上也没有太多的考虑。 当后来老大告诉我偶们要同时release 一个基于 Oracle 的版本时,我们才发现问题来了。 因为在Universe里面我们使用的SQL很多都不是标准的SQL,很多都是MSSQL所独有的,也就是 T-SQL(Transcate SQL), 所以当把universe移植到Oracle上的时候,我们不得不为Oracle重新做了一套Universe。又因为Dashboard和Crystal Reports都是基于Universe来做的,所以最后我们的efforts 被扩大了一倍 ... 杯具啊!!
项目做完了,现在来研究下哪些SQL是通用的,防止以后不要犯同样的错误。 以下内容均为本人google 所得,转载喽~~ hehe~
【概念总结】
1. 基本应用上,sql server 和oracle都遵循sql 92语法标准。
2. 实际应用中大家都会超出以上标准,使用各家数据库厂商都提供的丰富的自定义标准函数库和语法。
3. 微软sql server的sql 扩展叫T-SQL(Transcate SQL).
4. Oracle 的sql 扩展叫PL-SQL.
5. 最简单的插入、删除操作都差不多,但是稍微复杂一点,都不一样了。比如涉及到跨数据表,跨数据库,跨用户的操作的语法不一样。
6. 一个很简单的例子,去数据库系统时间的写法
tsql: select getdate()
pl-sql: select sysdate from dual
【SQL 92国际标准】
1. HOWTO - SQL92 Syntax
- http://owen.sj.ca.us/rkowen/howto/sql92F.html
2. Wikipedia
- http://en.wikipedia.org/wiki/SQL-92
- http://en.wikipedia.org/wiki/SQL
【前人总结】
1. Oracle与SQL Server的几点不同
- http://www.programfan.com/blog/article.asp?id=9101
2. SQL 92语法标准
以下内容来自CSDN博客,转载请标明出处:http://blog.csdn.net/wnhoo/archive/2007/04/11/1560941.aspx
==================================================
SQL92 Syntax and common or <Oracle> additions (not = '!')
相关文档:
Sql Server 中一个非常强大的日期格式化函数
:
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), ......
在SQL Server里建Mysql和Oracle数据库链接还是比较容易的:我们先在服务器上安装Mysql和Oracle数据库相关的ODBC驱动程序,在[管理工具]->[数据源(ODBC)] 设置系统DSN,如下图:
设置好了以后,我们可以用SQL Server自带的导出和导入工具来实 ......
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。
INSERT语句
用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:
INSERT INTO EMPLOYEES VALUES
('Smith','John','1980-06-10',
'Los Angles',16,45000);
......
最近有朋友遇到省市的问题,想想自己今后也有可能会遇到,所以就自己在网上写写,搜搜,主要是对自己今后有参考
--创建数据库
create database NationalAll
Go
--使用NationalAll数据库
use NationalAll
Go
--创建省级表
Create Table Province
(
ProID int primary key not null,
ProName nvarchar(50) n ......