![MySQL及Oracle語法對比_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b2/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b21.gif)
![MySQL及Oracle語法對比_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b2/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b22.gif)
![MySQL及Oracle語法對比_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b2/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b23.gif)
![MySQL及Oracle語法對比_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b2/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b24.gif)
![MySQL及Oracle語法對比_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b2/22fcbe2e-aca5-4a24-99e8-7c2ff24bb7b25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、MySQL與Oracle語法對比Oracle中有NUMBER;MySQL中有INT/INTEGER/DECIMAL,INT=NUMBER(10),DECIMAL=NUMBER(10,2)Oracle中有VARCHAR2;MySQL有VARCHAROracle中有DATE,包含年月日時分秒信息;MySQL中有DATE/TIME/DATETIMEMySQL與Oracle語法比較之數(shù)據(jù)類型MySQL與Oracle語法比較之基本語法(一)- OracleSELECT a.* FROM t_test_a a, t_test_b b WHERE a.id = b.id(+);- MySQLSELECT a
2、.* FROM t_test_a a LEFT JOIN t_test_b b ON a.id = b.id;- OracleSELECT a.* FROM t_test_a a WHERE ROWNUM =0 AND SCORE = 60 AND SCORE = 80 AND SCORE 90 THEN 良好良好 ELSE 優(yōu)秀優(yōu)秀 END IF;mysql- WHILE 語句語句CREATE PROCEDURE prc_test_while()BEGIN DECLARE i INT; SET i=0; WHILE i=5 THEN LEAVE label; END IF; END IF;E
3、ND;MySQL與Oracle語法比較之存儲過程(一)Oracle使用CREATE OR REPLACE PROCEDURE 語法創(chuàng)建存儲過程;MySQL使用CREATE PROCEDURE創(chuàng)建,如果已經(jīng)存在,只能先DROP,再CREATEMySQL存儲過程名字后面的”()”是必須的,即使沒有一個參數(shù)Oracle中參數(shù)類型IN/OUT/INOUT寫在參數(shù)名后面且都不能省略;MySQL參數(shù)類型IN/OUT/INOUT寫在參數(shù)名前面,如果是IN,則可以省略,如果是OUT或INOUT則不能省略MySQL 存儲過程的參數(shù)不能指定默認值,不能在參數(shù)名稱前加“”O(jiān)racle變量的聲明在BEGINEND體之
4、前;MySQL變量的聲明在BEGINEND體內(nèi),BEGIN之后其他內(nèi)容之前,變量名不能和列名相同, MySQL不區(qū)分大小寫1.用戶變量:以“”開始,形式為“變量名”,用戶變量跟mysql客戶端是綁定的,設置的變量,只對當前用戶使用的客戶端生效2.全局變量:定義時,以如下兩種形式出現(xiàn),set GLOBAL 變量名 或者 set global.變量名 ,對所有客戶端生效。只有具有super權(quán)限才可以設置全局變量3.會話變量:只對連接的客戶端有效。4.局部變量:作用范圍在begin到end語句塊之間。在該語句塊里設置的變量declare語句專門用于定義局部變量。set語句是設置不同類型的變量,包括會
5、話變量和全局變量Oracle存儲過程和方法都可以使用RETURN退出當前過程;MySQL存儲過程中只能使用LEAVE退出當前存儲過程,不可以使用RETURN,如:LEAVE label;Oracle中NO_DATA_FOUND是游標的一個屬性,當SELECT沒有查到數(shù)據(jù)就會出現(xiàn) No Data Found的異常,程序不會向下執(zhí)行;MySQL中則沒有NO_DATA_FOUND屬性,但可以使用FOUND_ROWS()方法得到SELECT語句查詢出來的數(shù)據(jù),如果FOUND_ROWS()得到的值為0,就進入異常處理邏輯.Oracle中調(diào)用存儲過程直接寫存儲過程名即可,如:prc_Procedure_N
6、ame(參數(shù)),沒有參數(shù)時可省略“()”;MySQL需用CALL關(guān)鍵字,如CALL prc_Procedure_Name(參數(shù)),即使沒有一個參數(shù)也需要“()”MySQL與Oracle語法比較之存儲過程(二)- 創(chuàng)建存儲過程創(chuàng)建存儲過程DROP PROCEDURE IF EXISTS prc_test;CREATE PROCEDURE prc_test(parameter1 VARCHAR(20), OUT parameter2 VARCHAR(20)label : BEGIN DECLARE param1 VARCHAR(20);IF parameter1 = THENSELECT 空空;L
7、EAVE label;END IF;SET param1 := parameter1;SET param1 = param1;SET parameter2 = parameter1;SELECT param1;END;MySQL與Oracle語法比較之觸發(fā)器Oracle使用CREATE OR REPLACE TRIGGER 語法創(chuàng)建觸發(fā)器;MySQL使用CREATE TRIGGER創(chuàng)建觸發(fā)器,如果已經(jīng)存在,只能先DROP,再CREATEOracle可以在一個觸發(fā)器觸發(fā)INSERT、DELETE及UPDATE事件;MySQL每個觸發(fā)器只支持一個事件,也就是說,目前每個TRIGGER需要拆分成3個
8、MySQL TRIGGEROracle的TRIGGER中使用:NEW和:OLD取得新老數(shù)據(jù);MySQL的TRIGGER中使用NEW和OLD關(guān)鍵字來取得新老數(shù)據(jù),NEW和OLD不區(qū)分大小寫- 觸發(fā)器觸發(fā)器DROP TRIGGER IF EXISTS tr_update_age;CREATE TRIGGER tr_update_age AFTER UPDATE ON t_test_b FOR EACH ROW UPDATE t_test_a a SET a.age = new.age WHERE a.id = new.id;MySQL與Oracle語法比較之特有語法SELECT NOW();UPD
9、ATE t_test_a a, t_test_b b SET a.age = b.age WHERE a.id = b.id;SELECT a.* FROM t_test_a a LEFT JOIN (t_test_b b, t_test_c c) ON (a.id = b.id AND a.id = c.id);ALTER TABLE t_test_a ADD COLUMN phone varchar(255) NULL AFTER age;INSERT INTO t_test_a(name, age) VALURS(name7, 20), (name8, 20);UPDATE t_test
10、_a a SET a.age = (SELECT b.age FROM t_test_b b WHERE a.id = b.id) WHERE EXISTS(SELECT 1 FROM t_test_b b WHERE a.id = b.id);MySQL中的DEFINER和INVOKER 創(chuàng)建存儲過程、事件、視圖、觸發(fā)器以及函數(shù)的時候可以指定 SQL SECURITY屬性,設置為 DEFINER 或者INVOKER,用來告訴MySQL在執(zhí)行存儲過程、視圖等的時候,是以DEFINER用戶的權(quán)限來執(zhí)行,還是以調(diào)用者的權(quán)限來執(zhí)行。默認情況下,使用DEFINER方式,此時調(diào)用存儲過程的用戶必須有存儲
11、過程的EXECUTE權(quán)限,并且DEFINER指定的用戶必須是在mysql.user表中存在的用戶。DEFINER模式下,默認DEFINER=CURRENT_USER,在存儲過程執(zhí)行時,MySQL會檢查DEFINER定義的用戶user_namehost_name的權(quán)限;INVOKER模式下,在存儲過程執(zhí)行時,會檢查存儲過程調(diào)用者的權(quán)限。- 案例一:DEFINER CREATE DEFINER = adminlocalhost PROCEDURE prc_account_count() BEGIN SELECT Number of accounts:, COUNT(*) FROM mysql.user; END; 在這個案例中,不論哪個用戶調(diào)用存儲過程,存儲過程都會以adminlocalhost的權(quán)限去執(zhí)行,即使這個用戶沒有查詢mysql.user表的權(quán)限。- 案例二:INVOKER CREATE DEFINER = adminlocalhost PROCEDURE prc_account_count() SQL SECURITY INVOKER BEGIN S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職場溝通中的情緒管理技巧
- 食品企業(yè)安全生產(chǎn)事故綜合應急預案
- 工業(yè)環(huán)境下的安全教育及應急措施
- 兩人合作研發(fā)合同范本
- 事業(yè)單位臨時工勞動合同相關(guān)規(guī)定
- 二手車交易合同官方范本
- 個人業(yè)務合作合同版
- 二手房買賣合同模板全新版
- 專業(yè)育兒嫂勞動合同協(xié)議書范例
- 個人車輛抵押借款合同標準版
- 2024年農(nóng)村述職報告
- 2025-2030年中國減肥連鎖市場發(fā)展前景調(diào)研及投資戰(zhàn)略分析報告
- 2024年湖南司法警官職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 女性私密項目培訓
- 2025年麗水龍泉市招商局招考招商引資工作人員高頻重點提升(共500題)附帶答案詳解
- 《加拿大概況》課件
- 期末復習之一般疑問句、否定句、特殊疑問句練習(畫線部分提問)(無答案)人教版(2024)七年級英語上冊
- TD-T 1048-2016耕作層土壤剝離利用技術(shù)規(guī)范
- 抖音賬號租賃合同協(xié)議
- 直線加速器專項施工方案
- 2022年全國卷高考語文答題卡格式
評論
0/150
提交評論