Oracle的SQL是稱為PL/SQL(Procedural Language/Structured Query Language).
PL/SQL不能稱之為嚴謹, 應稱之為與Oracle資料庫整合度相當好的一套資料庫維護語言.
在Oracle中的所有資料庫元件幾乎都可以用PL/SQL寫成程式來運作, 要學好Oracle, PL/SQL是基本功. Oracle也有一套ERP系統: Oracle EBS, 其中很多Rules都用PL/SQL寫在資料庫的Stored Procedure及Trigger中.
基本上, Oracle PL/SQL和SQL Server T-SQL的差異有三大類:
除了這三個大不同外, DML部份(SELECT/INSERT/DELETE/UPDATE)的指令架構共通的部份遵照ANSI/SQL的標準, 可是仍有許不同.
其實您問題是大哉問, 沒法很詳細的告訴您, 只能列書單給參考了:
Oracle PL/SQL Programming
關於Oracle資料庫系統的版本, 有:
Oracle
用PL/SQL
http://en.wikipedia.org/wiki/PL/SQL
額外的功能擴充用C或Java寫External Procedures
http://www.datadisk.co.uk/html_docs/oracle/external_procedures.htm
Microsoft SQL Server
用T-SQL
http://en.wikipedia.org/wiki/Transact-SQL
額外的功能擴充用C#或VB.NET寫SQL CLR函數
http://en.wikipedia.org/wiki/SQL_CLR
SQL 全名是結構化查詢語言(Structured Query Language),包含3個部分:
「資料定義語言」(DDL : Data Definition Language)
「資料操縱語言」(DML : Data Manipulation Language)
「資料控制語言」(DCL : Data Control Language)
由 IBM 首先提出,ANSI 後納為資料庫查詢標準,再由 ISO 國際標準組織採用,目前已有 SQL-89、SQL-92、SQL-99、SQL:2003、SQL:2008、SQL:2011 等標準。
雖然 SQL 有上述標準,但各家資料庫發展廠商並沒有完全遵循標準,而在標準之外,各自開發自己的SQL方言,這是商業考量,一方面替自己的資料庫最佳化,一方面綁自己的開發工具,反正每家心裡面都想『只要我的市場夠大,我就是標準!』
而比較常見的方言就是 Oracle 的 PL/SQL 跟 Microsoft SQL Server 的 T-SQL。事實上幾乎每個市面上看到的資料庫都有自己的SQL方言,沒人100%遵循SQL標準。
不論是PL-SQL還是T-SQL,請先學好標準的ANSI-SQL。
基本功打不好就會在程式撰寫上寫出SELECT * FROM 這樣沒有效率的查詢。