国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
SQL Server與oracle兩者區(qū)別之語(yǔ)法區(qū)別

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的語(yǔ)句區(qū)別

1.Oracle如何實(shí)現(xiàn)自增列

如果你一直都是用SQL Server作為開(kāi)發(fā)數(shù)據(jù)庫(kù)的,而新的項(xiàng)目需要使用Oracle數(shù)據(jù)庫(kù),那么你會(huì)突然發(fā)現(xiàn)SQL Server和Oracle還是有著很大的差別的。首先,我在SQL Server中用得很順手的自增長(zhǎng)字段就在Oracle中找不到了,取而代之,Oracle可以用序列來(lái)實(shí)現(xiàn)。示例如下。

  1. (1)建立測(cè)試數(shù)據(jù)表。
  2. CREATE TABLE TEST
  3. (
  4. ID NUMBER,
  5. NAME VARCHAR2(20),
  6. PRIMARY KEY(ID)
  7. );
  8. (2)創(chuàng)建序列。
  9. CREATE SEQUENCE SEQ_TEST;
  10. (3)創(chuàng)建觸發(fā)器。
  11. CREATE OR REPLACE TRIGGER AUTOINCREMENT
  12. BEFORE INSERT ON TEST
  13. FOR EACH ROW
  14. WHEN (NEW.ID IS NULL)
  15. BEGIN
  16. SELECT SEQ_TEST.NEXTVAL INTO :NEW.ID FROM DUAL;
  17. END;
  18. (4)插入數(shù)據(jù)。
  19. INSERT INTO TEST(NAME) VALUES('NAME1');
  20. (5)查看插入結(jié)果。
  21. SELECT * FROM TEST;

 

2.Parameter的區(qū)別

在SQL Server中我們可以按以下方式使用SQL語(yǔ)句:"Insert into Table (Field1,field2) values(@Value1,@Value2)",然后我們?cè)賜ew 幾個(gè)Paramter:new SqlParameter("@Value1",value)...

在查詢(xún)字符串中使用@+字符來(lái)描述參數(shù),在SqlParameter中的參數(shù)名也要使用"@"符號(hào)。而在Oracle中SQL語(yǔ)句不能使用@符號(hào),以冒號(hào)":"代替,如:

  1. --Sql Server的Sql 語(yǔ)句
  2. insert into Table (Column1,Column2) values (@Value1,@Value2)
  3. --Oracel中的Sql 語(yǔ)句
  4. Insert Into Table (Column1,Column2) values (:Value1,:Value2)

 

3.存儲(chǔ)過(guò)程的不同

Oracle中的存儲(chǔ)過(guò)程叫做包(Packages),一個(gè)包分為包頭和包體,類(lèi)似于C++中的類(lèi)聲明。包頭定義了存儲(chǔ)過(guò)程的名稱(chēng)和參數(shù),包體除了名稱(chēng)和參數(shù),還包括存儲(chǔ)過(guò)程的所有語(yǔ)句。與SQL Server不同,在Oracle中存儲(chǔ)過(guò)程一般寫(xiě)成Function,而不是Procedure。Oracle存儲(chǔ)過(guò)程并不直接返回記錄集,記錄集以游標(biāo)的形式通過(guò)參數(shù)返回。一個(gè)包(Packages)可以包含多個(gè)存儲(chǔ)過(guò)程,使用存儲(chǔ)過(guò)程時(shí)采用"包名.存儲(chǔ)過(guò)程名"的方式,下面是一個(gè)典型的Oracle存儲(chǔ)過(guò)程,它位于名稱(chēng)為"Test"的包(Packages)中,它的使用方式應(yīng)為T(mén)est.GetList。

  1. Function GetList(keywords In varchar2,p_info_list_Cursor out

     

    get_data_cur_type)

  2.      Return Number
  3. As
  4. Begin
  5.         open p_info_list_Cursor For
  6.         Select * from Test where Key=keywords
  7. ;
  8.          Return 0;
  9. End;

 

1、基本SQL語(yǔ)句的區(qū)別

l         SELECT 語(yǔ)句

l         SQL Server 不支持 Oracle 的 INTERSECT 和 MINUS 集合運(yùn)算符??墒褂?SQL Server EXISTS 和 NOT EXISTS 子句,實(shí)現(xiàn)相同的結(jié)果。

   下面兩條語(yǔ)句返回的數(shù)據(jù)是相同的。

 

Oracle(返回兩個(gè)查詢(xún)都有的行)

 

Microsoft SQL Server

 

SELECT CCODE, CNAME

FROM    DEPT

INTERSECT

SELECT C.CCODE, C.CNAME

FROM   STUDENT G,

         DEPT C

WHERE C.CCODE = G.CCODE

 

SELECT CCODE, CNAME

FROM    DEPT C

WHERE EXISTS

(SELECT * FROM

          STUDENT G

WHERE C.CCODE = G.CCODE)

   下面兩條語(yǔ)句返回的數(shù)據(jù)是相同的。

 

Oracle

 

Microsoft SQL Server

 

SELECT CCODE, CNAME

FROM    DEPT

MINUS

SELECT C.CCODE, C.CNAME

FROM    STUDENT G,

          DEPT C

WHERE C.CCODE = G.CCODE

 

SELECT    CCODE, CNAME

FROM      DEPT C

WHERE    NOT EXISTS

(SELECT   * FROM

           STUDENT G

WHERE   C.CCODE = G.CCODE)

l       將 SELECT 語(yǔ)句做為表名使用

Microsoft SQL Server 和 Oracle 均支持在執(zhí)行查詢(xún)時(shí),把 SELECT 語(yǔ)句作為表的來(lái)源使用。SQL Server 需要一個(gè)別名;Oracle別名的使用是可選的。

 

Oracle

 

Microsoft SQL Server

 

SELECT   SSN,LNAME,SUM_PAID

FROM     STUDENT,

(SELECT SUM(TUITION)

         SUM_PAID FROM

         STUDENT)

 

SELECT    SSN, LNAME,SUM_PAID

FROM      STUDENT,

(SELECT   SUM(TUITION)

          SUM_PAID FROM

          STUDENT)   SUM_STUDENT

l        INSERT 語(yǔ)句

T-SQL 語(yǔ)言支持對(duì)表和視圖的插入,但不支持對(duì) SELECT 語(yǔ)句的 INSERT 操作。如果 Oracle 應(yīng)用程序代碼執(zhí)行對(duì) SELECT 語(yǔ)句的插入操作,則必須對(duì)它進(jìn)行修改。如:

 

Oracle

 

Microsoft SQL Server

 

INSERT INTO (SELECT SSN, CCODE, GRADE FROM GRADE)

VALUES ('11', '1111',NULL)

 

INSERT INTO GRADE (SSN, CCODE, GRADE)

VALUES ('11', '1111',NULL)

Transact-SQL values_list 參數(shù)提供了 SQL-92 標(biāo)準(zhǔn)關(guān)鍵字 DEFAULT,但 Oracle 不支持。此關(guān)鍵字指定了執(zhí)行插入操作時(shí)使用列的默認(rèn)值。如果指定列的默認(rèn)值不存在,則插入 NULL。如果該列不允許 NULL,則返回一個(gè)錯(cuò)誤消息。如果該列數(shù)據(jù)類(lèi)型定義為 timestamp,則插入下一個(gè)有序值。

l        DELETE 語(yǔ)句

如果要對(duì) Oracle 中的 SELECT 語(yǔ)句執(zhí)行刪除操作,則必須修改 SQL Server 語(yǔ)法,因?yàn)?Transact-SQL 不支持這一功能。 Transact-SQL 支持在 WHERE 子句中使用子查詢(xún),以及在 FROM 子句中使用聯(lián)接。后者可產(chǎn)生更有效的語(yǔ)句。請(qǐng)參見(jiàn)后面“UPDATE 語(yǔ)句”中的示例。

 

Oracle

 

Microsoft SQL Server

 

DELETE [FROM]

{table_name | view_name | select_statement}

[WHERE clause]

 

DELETE

[FROM ]

{

table_name [ [AS] table_alias] WITH ( <table_hint_limited> [Un])

| view_name [ [AS] table_alias]

| rowset_function_limited

}

[ FROM {<table_source>} [,Un] ]

[WHERE

{ <search_condition>

| { [ CURRENT OF

{

{ [ GLOBAL ] cursor_name }

cursor_variable_name

}

]

}

]

[OPTION (<query_hint> [,Un])]

注意:刪除記錄并不能釋放ORACLE里被占用的數(shù)據(jù)塊表空間. 它只把那些被刪除的數(shù)據(jù)塊標(biāo)成unused.如果確實(shí)要?jiǎng)h除一個(gè)大表里的全部記錄, 可以用 TRUNCATE 命令, 它可以釋放占用的數(shù)據(jù)塊表空間 TRUNCATE TABLE 表名,但此操作不可回退。

l         EXISTS

  

 

Oracle

 

Microsoft SQL Server

 

在SQL*PLUS中不能正確執(zhí)行這條語(yǔ)句:

BEGIN

IF EXISTS (SELECT * FROM

           ONLINEUSER) THEN

DBMS_OUTPUT.PUT_LINE('OK');

END IF;

END;

 

在查詢(xún)分析器中能正確地執(zhí)行這條語(yǔ)句:

IF EXISTS (SELECT * FROM ONLINEUSER)

   PRINT('OK')

注:在Oracle中函數(shù)或偽列 'EXISTS' 只能在 SQL 語(yǔ)句中使用

2、表數(shù)據(jù)復(fù)制

l         庫(kù)內(nèi)數(shù)據(jù)復(fù)制

MS SQL Server

Insert into 復(fù)制表名稱(chēng) select語(yǔ)句 (復(fù)制表已存在)

Select 字段列表 into 復(fù)制表名稱(chēng) from 表(復(fù)制表不存在)

Oracle

Insert into 復(fù)制表名稱(chēng) select語(yǔ)句(復(fù)制表已存在)

create table 復(fù)制表名稱(chēng) as select語(yǔ)句(復(fù)制表不存在)

l         文本文件轉(zhuǎn)入、轉(zhuǎn)出的批量處理

MS SQL Server

BCP命令行程序

Oracle

SQLLDR命令行程序

3、表數(shù)據(jù)更新

l         根據(jù)其它表數(shù)據(jù)更新你要更新的表。

MS SQL Server

Update   A   SET   字段1=B字段表達(dá)式  字段2=B字段表達(dá)式 

From B WHERE 邏輯表達(dá)式

如:

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   字段表達(dá)式 from B WHERE) 字段2=(select 字段表達(dá)式 from B WHERE)  WHERE 邏輯表達(dá)式

假如A需要多個(gè)字段更新,顯然MS SQL 語(yǔ)句更簡(jiǎn)練。

l        T-SQL UPDATE 語(yǔ)句不支持對(duì) SELECT 語(yǔ)句的更新操作。

如果 Oracle 應(yīng)用程序代碼對(duì) SELECT 語(yǔ)句進(jìn)行更新,則可以把 SELECT 語(yǔ)句轉(zhuǎn)換成一個(gè)視圖,然后在 SQL Server UPDATE 語(yǔ)句中使用該視圖名稱(chēng)。請(qǐng)參見(jiàn)前面“INSERT 語(yǔ)句”中的示例。

Oracle UPDATE 命令只能使用一個(gè) PL/SQL 塊中的程序變量。而Transact-SQL 語(yǔ)言并不需要使用塊。 如下圖:

 

Oracle

 

Microsoft SQL Server

 

DECLARE

VAR1 NUMBER(10,2);

BEGIN

VAR1 := 2500;

UPDATE STUDENT SET TUITION = VAR1;

END;

 

DECLARE

@VAR1 NUMERIC(10,2)

SELECT @VAR1 = 2500

UPDATE STUDENT SET TUITION =@VAR1

在 SQL Server 中,DEFAULT 關(guān)鍵字可用于將一列設(shè)為其默認(rèn)值。但不能使用 Oracle UPDATE 命令,將一列設(shè)為默認(rèn)值。

Transact-SQL 和 Oracle SQL 均支持在 UPDATE 語(yǔ)句中使用子查詢(xún)。但是,Transact-SQL FROM 子句可用來(lái)創(chuàng)建一個(gè)基于聯(lián)接的 UPDATE。這一功能使 UPDATE 語(yǔ)法可讀性更好,在某些情況下還能改善性能。

 

Oracle

 

Microsoft SQL Server

 

UPDATE STUDENT S SET TUITION = 1500

WHERE SSN IN (SELECT SSN

FROM GRADE G WHERE G.SSN = S.SSN

AND G.CCODE = '1234')

 

Subquery:

UPDATE STUDENT S SET TUITION = 1500

WHERE SSN IN (SELECT SSN

FROM GRADE G WHERE G.SSN = S.SSN

AND G.C

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
轉(zhuǎn)貼:SQL SERVER面試題1
SQL盲注攻擊技術(shù)綜述
【Access】SQL語(yǔ)句中全外連接的使用
oracle基礎(chǔ)sql語(yǔ)句
數(shù)據(jù)庫(kù)相關(guān)知識(shí)
常用SQL語(yǔ)句詞典
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服