1. SQL Server: Oracle: Select top 1 * from tablename Select * from tablename where rownum < 2 Select A.*, B.* from A left Join B on A.bh=B.bh Select A.*, B.* from A, B where A.bh=B.bh(+) Select A.*, B.* from A right join B where A.bh=B.bh //oracle 9i 以後也支持了 Select A.*, B.* from A, B where A.bh(+)=B.bh Select * from tablename where lrsj >= ‘2002-11-11’ Select * from tablename where lrsj>= to_date(‘2002-11-11’,’yyyy-mm-dd’) Select getdate() Select sysdate from dual Select Field1+Field2 from A Select Field1 || Field2 from A (指字符串的) Oracle和SQL Server的語句區別 1.Oracle如何實現自增列 如果你一直都是用SQL Server作爲開發數據庫的,而新的項目需要使用Oracle數據庫,那麼你會突然發現SQL Server和Oracle還是有着很大的差別的。首先,我在SQL Server中用得很順手的自增長字段就在Oracle中找不到了,取而代之,Oracle可以用序列來實現。示例如下。
2.Parameter的區別 在SQL Server中我們可以按以下方式使用SQL語句:"Insert into Table (Field1,field2) values(@Value1,@Value2)",然後我們再new 幾個Paramter:new SqlParameter("@Value1",value)... 在查詢字符串中使用@+字符來描述參數,在SqlParameter中的參數名也要使用"@"符號。而在Oracle中SQL語句不能使用@符號,以冒號":"代替,如:
3.存儲過程的不同 Oracle中的存儲過程叫做包(Packages),一個包分爲包頭和包體,類似於C++中的類聲明。包頭定義了存儲過程的名稱和參數,包體除了名稱和參數,還包括存儲過程的所有語句。與SQL Server不同,在Oracle中存儲過程一般寫成Function,而不是Procedure。Oracle存儲過程並不直接返回記錄集,記錄集以遊標的形式通過參數返回。一個包(Packages)可以包含多個存儲過程,使用存儲過程時採用"包名.存儲過程名"的方式,下面是一個典型的Oracle存儲過程,它位於名稱爲"Test"的包(Packages)中,它的使用方式應爲Test.GetList。
1、基本SQL語句的區別 l SELECT 語句 l SQL Server 不支持 Oracle 的 INTERSECT 和 MINUS 集合運算符。可使用 SQL Server EXISTS 和 NOT EXISTS 子句,實現相同的結果。 下面兩條語句返回的數據是相同的。
下面兩條語句返回的數據是相同的。
l 將 SELECT 語句做爲表名使用 Microsoft SQL Server 和 Oracle 均支持在執行查詢時,把 SELECT 語句作爲表的來源使用。SQL Server 需要一個別名;Oracle別名的使用是可選的。
l INSERT 語句 T-SQL 語言支持對錶和視圖的插入,但不支持對 SELECT 語句的 INSERT 操作。如果 Oracle 應用程序代碼執行對 SELECT 語句的插入操作,則必須對它進行修改。如:
Transact-SQL values_list 參數提供了 SQL-92 標準關鍵字 DEFAULT,但 Oracle 不支持。此關鍵字指定了執行插入操作時使用列的默認值。如果指定列的默認值不存在,則插入 NULL。如果該列不允許 NULL,則返回一個錯誤消息。如果該列數據類型定義爲 timestamp,則插入下一個有序值。 l DELETE 語句 如果要對 Oracle 中的 SELECT 語句執行刪除操作,則必須修改 SQL Server 語法,因爲 Transact-SQL 不支持這一功能。 Transact-SQL 支持在 WHERE 子句中使用子查詢,以及在 FROM 子句中使用聯接。後者可產生更有效的語句。請參見後面“UPDATE 語句”中的示例。
l EXISTS
2、表數據複製 l 庫內數據複製 MS SQL Server Insert into 複製表名稱 select語句 (複製表已存在) Select 字段列表 into 複製表名稱 from 表(複製表不存在) Oracle Insert into 複製表名稱 select語句(複製表已存在) create table 複製表名稱 as select語句(複製表不存在) l 文本文件轉入、轉出的批量處理 MS SQL Server BCP命令行程序 Oracle SQLLDR命令行程序 3、表數據更新 l 根據其它表數據更新你要更新的表。 MS SQL Server Update A SET 字段1=B字段表達式 字段2=B字段表達式 From B WHERE 邏輯表達式 如: UPDATE titles SET ytd_sales = t.ytd_sales + s.qty FROM titles t, sales s WHERE t.title_id = s.title_id AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales) Oracle Update A SET 字段1=(select 字段表達式 from B WHERE) 字段2=(select 字段表達式 from B WHERE) WHERE 邏輯表達式 假如A需要多個字段更新,顯然MS SQL 語句更簡練。 l T-SQL UPDATE 語句不支持對 SELECT 語句的更新操作。 如果 Oracle 應用程序代碼對 SELECT 語句進行更新,則可以把 SELECT 語句轉換成一個視圖,然後在 SQL Server UPDATE 語句中使用該視圖名稱。請參見前面“INSERT 語句”中的示例。 Oracle UPDATE 命令只能使用一個 PL/SQL 塊中的程序變量。而Transact-SQL 語言並不需要使用塊。 如下圖:
在 SQL Server 中,DEFAULT 關鍵字可用於將一列設爲其默認值。但不能使用 Oracle UPDATE 命令,將一列設爲默認值。 Transact-SQL 和 Oracle SQL 均支持在 UPDATE 語句中使用子查詢。但是,Transact-SQL FROM 子句可用來創建一個基於聯接的 UPDATE。這一功能使 UPDATE 語法可讀性更好,在某些情況下還能改善性能。
|
Sql server 與 Oracle
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.