Oracle與MySQL總結(jié)

Oracle數(shù)據(jù)庫與MySQL數(shù)據(jù)庫總結(jié)


? ? ? ? 數(shù)據(jù)庫(DataBase)就是數(shù)據(jù)(Data)的集合驱显,數(shù)據(jù)就是描述事物的符號拆祈,用戶可以通過這個集合進(jìn)行增、刪究飞、改置谦、查等操作,且可共享,并與應(yīng)用程序獨立的數(shù)據(jù)集合

????常見名詞:

????????數(shù)據(jù)庫管理系統(tǒng)(DBMS)

????????數(shù)據(jù)庫應(yīng)用程序(DBAS)

????????數(shù)據(jù)庫管理員(DBA)

完整的數(shù)據(jù)庫包括:1.數(shù)據(jù)庫? ? 2.數(shù)據(jù)庫管理系統(tǒng)

表之間的關(guān)系

????????一對多:處理數(shù)據(jù)冗余,把外鍵添加到多方亿傅,再引用關(guān)聯(lián)到一方的主鍵

????????一對一:特殊的一對多媒峡,外鍵可以在任意一方,只需把外鍵加上唯一約束

????????多對多:可以看成兩個一對多

Mysql與Oracle主要區(qū)別

????實例區(qū)別:

????????MySQL是輕量級數(shù)據(jù)庫袱蜡,開源免費丝蹭,Oracle是收費的而且價格非常高

????????MySQL一個實例可以操作多個庫,而Oracle一個實例只能對應(yīng)一個庫

????????MySQL安裝安后300M而Oracle有3G左右

????操作區(qū)別:

????????主鍵:MySQL一般使用自動增長類型坪蚁,而Oracle則需要使用序列對象

????????單引號的處理:MySQL里可以用雙引號包起字符串,Oracle里只可以用單引號包起字符串

????????分頁的SQL語句:MySQL用limit,而Oracle需要使用內(nèi)建視圖和rownum偽列

????事務(wù)處理:

????????MySQL默認(rèn)是自動提交镜沽,可以通過 start transaction語句來開始執(zhí)行事務(wù)

Commit提交? rollback 回滾 來手工確認(rèn)對事務(wù)的處理

MySQL關(guān)閉事務(wù)提交

????????而Oracle默認(rèn)不自動提交敏晤,需要用戶TCL語言進(jìn)行事務(wù)提交

????????MySQL不支持檢查約束


Oracle的數(shù)據(jù)類型

varchar2
整型
浮點類型
日期
二進(jìn)制
long

MySQL中沒有varchar2類型


SQL語言約束的作用

約束

Oracle中的約束類型

約束類型

MySQL中沒有檢查約束類型


SQL語言的分類

Oracle與MySQL中的增、刪缅茉、改嘴脾、查、基本語句都是相同的

? ??1.DQL(數(shù)據(jù)查詢語言)select語句

????????a.基本查詢

????????b.帶條件的查詢(精確查找,模糊查找,范圍查找...)

????????c.連接查詢(等值連接,非等值連接,外連接:左外連接,右外連接,全外連接,自然連接,交叉

連接,內(nèi)連接,自然連接...)

????????d.排序:order by

????????e.分組:group by

????????f.函數(shù)(單行函數(shù)/多行函數(shù)/(又稱為組函數(shù)..))

????????g.子查詢

????2.DML(數(shù)據(jù)操作語言)

????????新增:insert語言

????????修改:update語句

????????刪除:delete語句

????3.DDL語句(數(shù)據(jù)定義語言)

????????創(chuàng)建:create語句

????????修改:alter語句

????????刪除:drop語句

????4.TCL(數(shù)據(jù)事務(wù)控制語言)

????????提交事務(wù):commint語句

????????回滾事務(wù):rollback語句

????5.DCL(數(shù)據(jù)控制語言)

????????授權(quán):grant語句

????????撤銷:revoke語句

Oracle數(shù)據(jù)庫默認(rèn)端口號:1521蔬墩,MySQL默認(rèn)端口為:3306

????select選擇語句:列選擇译打;(投影操作)

????基本查詢語句:

????????seclect +列名1,列名2...? from +表名拇颅;

????????改表名:select +舊表名 as +新表名奏司,(可操作多個表) from +來自哪個表中;

????????escape:轉(zhuǎn)義字符樟插,跟在like后面 'XX\_' escape '\'韵洋;告訴查詢語句,當(dāng)前的'\'為轉(zhuǎn)移字

????????符,后面跟的為具體的字符竿刁,轉(zhuǎn)移符號可以是任意的

????????not:取反

????????邏輯條件:and or not

????????排序:order by 列名 [asc/desc]

????????查哪些數(shù)據(jù),來自哪個表

????????行選擇:(選擇操作)

????????連接:(多表操作)

????????包含空值的算術(shù)表達(dá)式結(jié)算結(jié)果為空

什么是函數(shù):

????????函數(shù)是數(shù)據(jù)庫中提供的能夠處理查詢結(jié)果的方法

函數(shù)的作用:

????????1.執(zhí)行數(shù)據(jù)結(jié)算

????????2.修改單個數(shù)據(jù)項

????????3.格式化顯示日期和數(shù)字(本地語言環(huán)境)

????????4.轉(zhuǎn)換列數(shù)據(jù)類型

????????5.函數(shù)有輸入?yún)?shù),并且總有一個返回值

單行函數(shù):僅對單行做出運(yùn)算搪缨,并且每行返回一個結(jié)果

單行函數(shù)包括

? ??????字符函數(shù):接收字符輸入食拜,可以返回字符或數(shù)字之

? ??????數(shù)字函數(shù):接收數(shù)字輸入,返回數(shù)字值

? ??????日期函數(shù):輸入日期副编,轉(zhuǎn)換為字符串

轉(zhuǎn)換函數(shù):從一個數(shù)據(jù)類型到另一個數(shù)據(jù)類型轉(zhuǎn)換一個值

通用函數(shù):

????????多行函數(shù)(聚合函數(shù)):可以操縱成組的行,每個行組給出一個結(jié)果负甸,也被稱為組函數(shù)

????????轉(zhuǎn)換函數(shù):(數(shù)據(jù)類型的轉(zhuǎn)換:包含隱式轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換)

????隱式轉(zhuǎn)換(不推薦)

????????select '1'+1 from dual

????????select '1'||1 from dual

????強(qiáng)制轉(zhuǎn)換:使用轉(zhuǎn)換函數(shù)對類型進(jìn)行強(qiáng)制轉(zhuǎn)換

????????to_char(num,format):num代表等待轉(zhuǎn)換的數(shù)字,format:代表需要轉(zhuǎn)換的格式

????????-9:代表一位數(shù)字(占位符號)

????????-0:代表一位數(shù)字,如果該位沒有則強(qiáng)制顯示0,小數(shù)點后面的也會強(qiáng)制顯示

????????-$:代表美元符號

????????-L:代表本地貨幣符號

????????-.:代表小數(shù)點

????????-,:代表千分位符號

????????to_char(date,format):將日期轉(zhuǎn)換為字符串

????????to_date(char,'fomat_model'):可以將字符串轉(zhuǎn)換為日期類型

????????to_number:將字符轉(zhuǎn)換為數(shù)字

函數(shù)嵌套:

????????單行函數(shù)能夠被嵌套任意層次,嵌套函數(shù)的計算是從最里層到最外層

????NVL(exp1,exp2)函數(shù):轉(zhuǎn)換一個空值到一個實際的值

????exp1,exp2:可用的數(shù)據(jù)類型可以是日期痹届、字符和數(shù)字,兩個參數(shù)的數(shù)據(jù)類型必須匹配

????exp1:是包含控制的源值或者表達(dá)式

????exp2:是用于轉(zhuǎn)換控制的目的值

????NVL2(exp1,exp2,exp3)函數(shù):NVL函數(shù)檢查第一個表達(dá)式,如果第一個表達(dá)式不為空,那么NVL2函數(shù)返回第二個表達(dá)式;如果第一個表達(dá)式為空,那么第三個表達(dá)式返回

????exp1:是可能包含空的源值或表達(dá)式

????exp2:當(dāng)exp1非空時的返回值

????exp3:當(dāng)exp1為空時的返回值

? ??多表連接查詢:主要解決目標(biāo)數(shù)據(jù)分布在不同的表中(如果目標(biāo)數(shù)據(jù)不在同一張表,可以通過多表連接查詢來解決)

????????笛卡爾乘積(總記錄數(shù)=A表的總記錄*B表的總記錄數(shù)),會出現(xiàn)大量的冗余數(shù)據(jù)........可以使用添加where子語句限制查詢結(jié)果 從而避免笛卡爾乘積

????????多表查詢的語法: select 表名1呻待,列名1,表名2短纵,列名2 ...from 表名1带污,表名2...where子語句

????????實現(xiàn)思路:先確定需要查詢的列分布在哪些表中,再確定表之間的關(guān)聯(lián)關(guān)系(主外鍵關(guān)聯(lián)關(guān)系)

????多表查詢包括等值查詢和非等值查詢

????一個用戶查詢請求涉及到多個表的時候,連接兩個表的條件為=時香到,就是等值連接查詢鱼冀;其他的運(yùn)算符連接的就是非等值查詢。

????????自連接:表自身連接自身(代表父子關(guān)系/遞歸關(guān)系)

????????外連接:外連接是指查詢出符合連接條件的數(shù)據(jù)同時還包含孤兒數(shù)據(jù)

????????孤兒數(shù)據(jù):孤兒數(shù)據(jù)是指被連接的列的值為空的數(shù)據(jù)

????????左外(left [out] join):包含左表的孤兒數(shù)據(jù)(兩種表分別是A表和B表相關(guān)聯(lián),使用左外連接查詢以"左表為主"悠就,左邊的表記錄全部展現(xiàn),右邊的只展示與左邊相關(guān)聯(lián)的數(shù)據(jù))

????????右外(right [out] join):包含右表的孤兒數(shù)據(jù)(兩種表分別是A表和B表相關(guān)聯(lián),使用右外連接查詢以"右表為主"千绪,右邊的表記錄將全部展現(xiàn),左邊只展示與右邊相關(guān)聯(lián)的數(shù)據(jù))

????????全外(full [out] join):包含兩個表中的孤兒數(shù)據(jù)(關(guān)聯(lián)的兩張表中的所有數(shù)據(jù)均會出現(xiàn))

????內(nèi)連接取交集,外連接分左和右梗脾,左連接左邊的全取荸型,右連接右邊的全取

????????內(nèi)連接? inner join (join)

????????交叉連接? cross join? 笛卡爾積 效率低

????????外連接? outer join? (left join ,right join ,full join)

????????沒有約束條件(沒有where。炸茧。)時候瑞妇,inner join 和 cross join 結(jié)果集一樣

????????組函數(shù)/統(tǒng)計函數(shù)/多行函數(shù)/聚合函數(shù)

????????max(列名):求最大值

????????min(列名):求最小值

????????sum(列名):求和

????????avg(列名):求平均值

????????count(*):計算總數(shù)

????????count(expr):返回在列中有expr指定的非控制的總數(shù)

????????count(distinct expr):去重,在expr指定的列

????????count(列名):會忽略空值,count(*):不忽略空值

????????單行函數(shù)對查詢到每個結(jié)果集做處理,而組函數(shù)只對分組數(shù)據(jù)做處理單行函數(shù)對每個結(jié)果集返回一個結(jié)果梭冠,而組函數(shù)對每個分組返回一個結(jié)果

????????avg和sum函數(shù)參數(shù)類型只能是數(shù)字

????????count/max/min參數(shù)類型可以是日期辕狰,字符和數(shù)字

????????組函數(shù)會默認(rèn)忽略控制,可以在組函數(shù)中使用nvl來處理空值

????????group:查詢分組的作用,顯示每列不同組的數(shù)據(jù)

????????group by 列名1,列名2...

????????HAVING子語句:在分組函數(shù)中添加篩選條件

????????where子語句不允許在分組函數(shù)作為條件直接使用

????????子查詢是一個select語句,他是嵌套在另一個select語句中的子句(把一個查詢語句的結(jié)果當(dāng)作條件查詢)

????????1.子查詢語句必須用括號括起來(區(qū)分優(yōu)先級)且在主查詢之前執(zhí)行一次

????????2.若需要放在比較中,子查詢放在比較條件的右邊

????????3.子查詢的結(jié)果被用于主查詢

????????單行子查詢:子查詢語句只返回一行的查詢(使用單行比較符)

????????多行子查詢:子查詢語句返回多行的查詢(使用多行比較符)

????新增語句:insert into 表名[列名1,列名2...] values(值1,值2..)

????????修改語句:

????????1.update 表名 set 列名1=值1,列名2=值2...where子句

????????2.update 表明 set 列名 = (子查詢語句) where子句

????????刪除語句:delete [from] 表名 where子句---->刪除哪列或者表全刪除

????????事務(wù):(不可分割的邏輯執(zhí)行單元,要么全部成功,要么全部失敗)指作為單個邏輯工作單元執(zhí)行的一系列操作,要么完全的執(zhí)行,要么完全的不執(zhí)行,事務(wù)主要是對DML語言進(jìn)行控制

????事務(wù)特性:

????????1.原子性????2.一致性????3.隔離性????4.持久性

????????事務(wù)提交:commit? 事務(wù)的回滾: rollback

????創(chuàng)建表:create table

????????視圖是基于一個表或另一個視圖的邏輯表,一個視圖并不包含它自己的數(shù)據(jù)控漠,像一個窗口蔓倍,數(shù)據(jù)保存在"基"表

視圖的優(yōu)點

????????1.限制數(shù)據(jù)的訪問,選擇顯示"基表"中的列

????????2.視圖通過簡單的查詢返回復(fù)雜的結(jié)果

????????3.視圖針對特別的用戶和應(yīng)用程序提供數(shù)據(jù)獨立性

????簡單視圖:數(shù)據(jù)來自一個表,不包含函數(shù)或數(shù)據(jù)分組,能通過視圖執(zhí)行DML操作

????復(fù)雜視圖:數(shù)據(jù)來自多個表,包含函數(shù)或數(shù)據(jù)分組,不允許通過視圖進(jìn)行DML操作

????視圖本身是一張邏輯表(虛擬表),可以進(jìn)行DML操作

????創(chuàng)建視圖 create view 視圖名 as select語句

????只讀視圖: 添加 with read only

????也可以通過可視化操作創(chuàng)建視圖

????刪除視圖:drop view 視圖名

????內(nèi)建視圖

????????內(nèi)建視圖由位于From子句中命名了別名的子查詢創(chuàng)建(將一個查詢語句的結(jié)果看作一張?zhí)摂M的表/視圖,可以和其他表進(jìn)行連接查詢或執(zhí)行子查詢)

????TOP—N 查詢:查詢排名

????Rownum:偽列(行號):每個表都有默認(rèn)的連續(xù)偽列值

Oracle分頁查詢的實現(xiàn)思路:在內(nèi)建視圖中通過rownum偽列的值來判斷指定獲取數(shù)據(jù)的數(shù)量

????分頁單位:每頁展示數(shù)據(jù)的條數(shù)????當(dāng)前頁:展示的第幾頁

Oracle分頁語句規(guī)律(反人類的Oracle):

?????????select????t1.*????from (select????t.*,rownum????rn????from? ??表名????t????where????rowunum????<=????分頁單位*當(dāng)前頁) t1????where????t1.rn????>=????(當(dāng)前頁-1)*分頁單位????and????t1.rn????<=????分頁單位*當(dāng)前頁序列

MySQL中的分頁語句規(guī)律實現(xiàn)思路: 使用limit關(guān)鍵字實現(xiàn)分頁

MySQL中分頁

MySQL中沒有序列

? ? Oracle數(shù)據(jù)庫中序列是用戶創(chuàng)建的數(shù)據(jù)庫對象,序列會產(chǎn)生唯一的整數(shù)。序列的一個典型用途是創(chuàng)建一個主鍵的值,它對于每一行必須是唯一的

????????創(chuàng)建語法:使用 create sequence 序列名,默認(rèn)緩存為20

????????特點1:默認(rèn)沒有值特點????2:序列名.nextval每執(zhí)行自增1特點????3:序列名.currval查看當(dāng)前序列的值

????????作用:作為主鍵使用

????????可以創(chuàng)建自定義序列且設(shè)置序列開始位置以及自增值

????????create sequence aa? --創(chuàng)建序列????start with 5 --起始位置? ? increment by 2 --設(shè)置自增

????????刪除序列:drop sequence 序列名

????????索引:類似于目錄,作用:提升查詢效率,但是對增/刪/改效率有影響

????????索引分類:唯一索引/非唯一索引

????????唯一索引:當(dāng)前在指定的裂傷添加了主鍵約束或唯一約束時,該列自動添加了唯一索引

????????非唯一索引:單行索引,復(fù)合索引(組合索引),函數(shù)索引

????命名語法:create index 索引名 on 表名(列名)

????????特點:顯示的創(chuàng)建,隱式的執(zhí)行????注意:oracle會自動給表的主鍵創(chuàng)建索引

刪除索引:drop index 索引名

????三大范式

????????第一范式:保證列的原子性(字段不能再分)

????????第二范式:限制多對多(不存在局部依賴)

????????第三范式:限制一對多(不含傳遞依賴)

????????優(yōu)點:結(jié)構(gòu)合理盐捷,冗余較小偶翅,盡量避免插入刪除修改異常????缺點:性能降低,多表查詢比單表查詢速度慢

????????數(shù)據(jù)庫的設(shè)計應(yīng)該根據(jù)當(dāng)前情況和需求做出靈活的處理

????????特定表的設(shè)計可以違反第三范式碉渡,增加冗余提高性能

SQL語言執(zhí)行順序:select? ? ---> from? ? --->where? ? --->? ??group by? ? ---> having? ??---> order by

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末聚谁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子爆价,更是在濱河造成了極大的恐慌垦巴,老刑警劉巖媳搪,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骤宣,居然都是意外死亡秦爆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門憔披,熙熙樓的掌柜王于貴愁眉苦臉地迎上來等限,“玉大人,你說我怎么就攤上這事芬膝⊥牛” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵锰霜,是天一觀的道長筹误。 經(jīng)常有香客問我,道長癣缅,這世上最難降的妖魔是什么厨剪? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮友存,結(jié)果婚禮上祷膳,老公的妹妹穿的比我還像新娘。我一直安慰自己屡立,他們只是感情好直晨,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膨俐,像睡著了一般勇皇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上焚刺,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天儒士,我揣著相機(jī)與錄音,去河邊找鬼檩坚。 笑死,一個胖子當(dāng)著我的面吹牛诅福,可吹牛的內(nèi)容都是我干的匾委。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼氓润,長吁一口氣:“原來是場噩夢啊……” “哼赂乐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咖气,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤挨措,失蹤者是張志新(化名)和其女友劉穎挖滤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浅役,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡斩松,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了觉既。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惧盹。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞪讼,靈堂內(nèi)的尸體忽然破棺而出钧椰,到底是詐尸還是另有隱情,我是刑警寧澤符欠,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布嫡霞,位于F島的核電站,受9級特大地震影響希柿,放射性物質(zhì)發(fā)生泄漏诊沪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一狡汉、第九天 我趴在偏房一處隱蔽的房頂上張望娄徊。 院中可真熱鬧,春花似錦盾戴、人聲如沸寄锐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橄仆。三九已至,卻和暖如春衅斩,著一層夾襖步出監(jiān)牢的瞬間盆顾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工畏梆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留您宪,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓奠涌,卻偏偏與公主長得像宪巨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子溜畅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時捏卓,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,182評論 0 9
  • 關(guān)系型數(shù)據(jù)庫和SQL SQL語言的三個部分DML:Data Manipulation Language慈格,數(shù)據(jù)操縱語...
    Awey閱讀 1,937評論 0 13
  • --- layout: post title: "如果有人問你關(guān)系型數(shù)據(jù)庫的原理怠晴,叫他看這篇文章(轉(zhuǎn))" date...
    藍(lán)墜星閱讀 777評論 0 3
  • 今天看到一位朋友寫的mysql筆記總結(jié)遥金,覺得寫的很詳細(xì)很用心,這里轉(zhuǎn)載一下蒜田,供大家參考下稿械,也希望大家能關(guān)注他原文地...
    信仰與初衷閱讀 4,725評論 0 30
  • 最繁忙的兩天又過去了,其實每到周末物邑,都有一種莫名的恐懼溜哮,從早上到晚,中間幾乎沒有休息的時間色解,身體和大腦處在高速的運(yùn)...
    龍航007閱讀 246評論 0 0