MSSQL vs ORACLE 筆記

MSSQL vs ORACLE 筆記

架構圖

clip_image001

clip_image002

 

 

管理工具

 

MSSQL

ORACLE

管理工具

SQL Server Management Studio (SSMS)

SQL Developer

開啟快捷鍵

Ctrl + r => ssms.exe

 

執行快捷鍵

F5 / alt + x

Ctrl + Enter

執行計畫

Ctrl + L

F10

管理伺服器兼容性

高版 SSMS 可管理低版 Server

超過兩版某些功能會限縮

(: 2012 無法使用 2000 proflier)

4.0.3可連 9i (11g)

4.1以上只支援12c+

           

 

 

語法

 

MSSQL

ORACLE

Update

UPDATE 資料表 SET 欄位2 = b.欄位2

FROM 資料表 a

JOIN 資料表2 b ON a.欄位1 = b.欄位1;

UPDATE (

SELECT a.col1 as old_col1,

       b.col1 as new_col1,

FROM 資料表 a, 資料表2 b

WHERE a.col = b.col)

   SET old_col1 = new_col1;

複製表

SELECT * INTO 新資料表
FROM
資料表;

CREATE 新資料表 AS
SELECT * FROM
資料表;

自訂欄位名稱

SELECT 'a' AS [aa]

SELECT 'a' AS "aa"

字串連接

SELECT 'a' + 'b'

SELECT 'a' || 'b'

批次分隔符號

GO

;

自定義參數

DECLARE @var varchar(20);

SET @var = '209996';

 

SELECT *

FROM 資料表

WHERE 欄位 = @var;

define var = '209996';

 

 

SELECT *

FROM 資料表

WHERE 欄位 = '&var';

取得前10筆資料

SELECT TOP 10 * FROM 資料表;

SELECT * FROM 資料表

WHERE ROWNUM <= 10;

建立連結伺服器

EXEC sp_addlinkedserver  
   @server=N'S1_instance1',
   @srvproduct=N'',
   @provider=N'SQLNCLI',
   @datasrc=N'S1\instance1';

CREATE DATABASE LINK "連結伺服器名稱"

CONNECT TO "帳號" IDENTIFIED BY "密碼"

USING '(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 這邊輸入IP)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = 這邊輸入Service名稱)

)

)';

使用連結伺服器

SELECT *FROM 伺服器.資料庫.結構.資料表;

SELECT * FROM 資料表@伺服器;

切換資料庫

(Oracle 是切換使用者)

USE 資料庫;

GO

ALTER SESSION SET current_schema = 使用者;

第幾字

CHARINDEX(尋找字元, 完整字串)

INSTR(完整字串, 尋找字元)

table 無關的運算式

SELECT (1+2) AS [a];

SELECT (1+2) AS "a" FROM DUAL;

取得 table 的所有欄位名

SELECT b.name FROM sys.tables a

JOIN sys.columns b ON a.object_id = b.object_id WHERE a.name = '資料表名';

SELECT column_name FROM user_tab_cols

WHERE table_name = '資料表名'

ORDER BY column_id;

 

 

 

參考資料

USE DATABASE command on SQL PLUS ORACLE 11gr1

SQL Server - Oracle Architectural comparison

 

創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權,文章歡迎轉載,請註明出處,謝謝~~~