1. 程式人生 > >期末總結(基礎)

期末總結(基礎)

文件 重點 aci 比較 clas 因此 null 為什麽 oss

(一)問題總結

  期末了,同學們學習數據庫的情緒高漲,問題湧現,讓我們總結一下都出現了哪些問題呢?

  1. delete,remove,drop都是“刪除”分別在啥時候用呢?alter什麽時候用呢?
  2. DML,DCL,DDL都是啥?
  3. 5種連接我還是不懂。。。。。。
  4. 範式的概念根本看不懂啊。。。(暫未寫完)
  5. 。。。。。(歡迎添加)

(二)問題解決

1.delete,remove,drop都是“刪除”分別在啥時候用呢?alter什麽時候用呢?

想解決這個問題我們可以先查查F1

  1. DELETE只有一行簡單的解釋:從表中刪除行。
  2. REMOVE則出現在ALTER目錄下:技術分享圖片
  3. DROP則有多個目錄:

    技術分享圖片

那麽現在你有兩個選擇:1.背下來remove,drop,alter,delete它們都在什麽時候出現。

           2.找到規律

有什麽規律呢?

  先說delete,它最單純,它只負責刪除“行”(刪除數據)別的地方你不會見到他

  再說drop,它最復雜,它負責刪除“東西”(刪除一些數據庫特有的“東西”),這裏我將東西加了引號,什麽意思?這裏的東西指數據庫的“庫”、“表”、“視圖”。。。。。。一些非實體數據庫特有。(非實體:不是文件)

  最後說 ALTER 和 REMOVE ,你可以將ALTER看成一個“高等級的”關鍵詞, REMOVE, ADD, MODIFY等是它的“附庸”關鍵詞

,這些“低級關鍵詞”是不可能單獨出現的,必須有ALTER出現時,它們才能出現。ALTER是對REMOVE,ADD,MODIFY的一種概括,ALTER是改變的意思,(刪除,重定義(名字,大小。。。),增加)這些都是比ALTER更為具體的行動,因此ALTER之後才能出現這些低級關鍵詞

  換個角度講,那去掉ALTER行不行呢?答案是不行,為什麽?我們的每一條語句都遵從一個最高原則:不能引起歧義.REMOVE, ADD, MODIFY這些關鍵詞只作用與(文件,數據庫的某些屬性)這些往往都是可能和其他數據庫混淆的,必須有一個關鍵詞來標識我要對哪個數據庫ADD,對哪個數據庫REMOVE......所以ALTER出現在這些具體操作前是必須的很有必要的.

2.DML,DCL,DDL都是啥?

  先看看它們的英文全拼:DML:data manipulation(操作) language,DCL:Data Control Language,DDL:data definition(定義) language

  它們都有一個Data開頭language結尾,所以它們各自代表一類操作數據(Data)的語言(language),其中我們常用的是DDL和DML,DCL幾乎不會用到,下面我們看看它們各自都包含哪些具體的關鍵詞.

  DDL:

      技術分享圖片

  DML:

      技術分享圖片

從這裏我們也能看出(DROPALTER)都和DELETE不是一個類型的關鍵詞.

最後還有DCL:(不常用也只能先記住)

      技術分享圖片

                                                            跟著數據庫學英語:manipulation(操作)

3.五種連接

  先來了解一下"連接"的樣子:

1 SELECT * FROM XS *** JOIN JY ON XS.借書證號 = JY.借書證號

  簡單解釋一下這句話,這句話意思是:以***這種方式連接兩個表,返回兩個表的所有列(區分XS,JY的即若兩表都存在的列也會輸出成兩列)

"***"三個星號省略的是連接方法,都有哪些連接方法呢?

ps:我接下來將用我們最熟悉的XS(學生信息表),JY(借閱信息表)為例來說明以下三種連接

先讓我們看看兩張表XS,JY原來是什麽樣的:

技術分享圖片技術分享圖片

  兩個表的連接大類分可以分為三大類:1.內連接(重要:自然連接,數據庫默認連接)2.外連接3.交叉連接.這其中最簡單的是交叉連接,我們先說交叉連接

  1.交叉連接(cross join):重點:(沒有代碼示例中的ON及以後的代碼)

最粗暴的一種連接方式,將A表的每一個數據與B表的每一個數據"懟"在一起,不太能想象出來那個情形????

下面看一下交叉後的結果吧:

技術分享圖片

和你想的一樣麽?

XS表的第一行王娟的記錄與JY表的所有記錄來了個依次連接,這張新連接的表有99行!!(9×11)XS表有9行JY表有11行,現在你理解什麽是交叉連接了麽?

  2.內連接(inner join):內連接的小名有很多:自然連接,數據庫默認連接,這些一定熟記,內連接相比其他連接的特點就是()它往往行數最少

在A表與B表同時滿足條件時它才會將兩行記錄連接在一起.我們先看一下結果再來仔細分析.

技術分享圖片

可以看出這張表中以趙朋中為首的不借書黨沒有出現在連接表中,why?因為我的要求是XS.借書證號 = JY.借書證號,必須兩張表裏都有的借書證號才能連接

  3.外連接(outer join):外連接分為左外連接,右外連接,全連接


左右連接比較粗暴(沒有交叉連接粗暴→_→)所以先講這兩個:

左(右)連接搞懂一個另一個就懂了

以左連接為例 : 首先, 左表全部輸出, 再檢查符合條件的借書證號在右表裏是否存在,若存在則連接並輸出,不存在用NULL補全

我們來看看實際情況:

技術分享圖片

王娟的記錄在左邊有,而且借了了6次書,所以在新表裏她的記錄出現了6次,趙朋中為首的不借書黨也出現了,但是右邊是NULL,因為他們沒有借過書.

那右連接你能想到是什麽樣的嗎?

可以翻到上面看一下XS,JY表,依據這兩張表自己想一下,再看答案

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答案在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

技術分享圖片

今天2018-06-18 22:46:40太晚了,明天繼續更新.....

動作描述 使用聚集索引 使用非聚集索引
列經常被分組排序
返回某範圍內的數據 不應
一個或極少不同值 不應 不應
小數目的不同值 不應
大數目的不同值 不應
頻繁更新的列 不應
外鍵列
主鍵列
頻繁修改索引列 不應

期末總結(基礎)