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中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。
INSERT语句
用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:
INSERT INTO EMPLOYEES VALUES
('Smith','John','1980-06-10',
'Los Angles',16,45000);
......
create database test1
use test1
create table admin
(
id int primary key ,
name varchar(50),
pwd varchar(50),
)
insert into admin values(1,'aa','aa')
alter table admin add tel varchar(50) ......
数据库所有者 (DataBase Owner)
dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 ......
bit:0或1的整型数字
int:从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字
smallint:从-2^15(-32,768)到2^15(32,767)的整型数字
tinyint:从0到255的整型数字
decimal:从-10^38到10^38-1的定精度与有效位数的数字
numeric:decimal的同义词
money:从-2^63(-922,337,203,685,477.5808)到2^ ......