Skip to content

SQL Cracking the Code Interview Study Group 10

edwardyi edited this page Jan 19, 2018 · 1 revision

結構化查詢語言(查詢修改動作)

>> 小型與大型資料庫的設計方式
>> 多資料不同分類
    >>> 更好的組織資料(結構可以幫助我們)
>> 像容器一樣(Table)
    >>> Column:資料的一個區塊
        >>>> 用逗號分別
    >>> Row:一列(描述的組合)
>> CommandLine或圖形介面
    >>> 創造後可以使用資料庫和資料表
    >>> 以分號結尾,Use資料庫名字
    >>> INSERT INTO:順序要正確對應
>> *:選擇所有Column
    >>> WHERE:查詢某個Column的條件
    >>> 如果有兩個OR AND(左/右優先)
    >>> 加小括弧

denormalize的方式處理(書中建議)

  >>> 存在很多Table不同的地方
  >>> 很多都要去Update
  >>> Column改變其他Table也要跟著改變
    >>>> 寫一段有用到Column就要跟著改變(有機制可以防範)
    >>>> 資料丟失或壞了
  >>> 員工資料不太會改變,薪水職等、家庭資料、紙本(Table)
    >>>> 員工id去join起來
    >>>> 兩個Tables:
       >>>>> 薪水職等
       >>>>> 家庭資料
       >>>>> 改了一個全部都要修改
 >>> 考慮者個DB的Schema
    >>>> 用甚麼點分支

先選DB(USE)

 >>> NULL不知道是甚麼東西,只能用IS_NULL篩選出來
 >>> between IN(有沒有在這個集合內)
 >>> 子查詢不能OR(模糊篩選)
 >>> LIKE:任意字元

JOIN

   >>>> implicit/explicit
       >>>> tableA有5000筆,3000筆
   >>> CROSS JOIN
        >>>> 狄卡爾(語法還是設計方式)
        >>>> 是一個概念(少用)
        >>>> 不指定條件,把所有條件取出來(table)
        >>>> 張三李四王武(五種貨品)
        >>>> 有做過實際的案例(Login的時候)
        >>>> CROSS JOIN(User甚麼時候有login過、history)
        >>>> Member id(login history)
    >>> INNER JOIN
        >>>> Natural Join要有相同名稱
    >>> OUTER JOIN
        >>>> 找出沒有資料集的資料
    >>> 差集/交集
    >>> GROUP BY分組(計算/一組一組的結果)
    >>> ORDER BY排序(呈現出來的結果,不是改原始資料的排序)

Normalization

        >>>> 設計規則(重複儲存資料)
        >>>> 空間耗費大(語法複雜)
        >>>> 相同的東西存好幾個地方(DISTINCT)
        >>>> 瘦身之後跑比較快
        >>>> 標準形式
    >>> KEY
        >>>> 不能有NULL(不能有重複)
        >>>> 不能被改(你的ID改了就不是你了阿)
        >>>> Unique(可以自己設ID,身分證)
        >>>> 變成另外一個
        >>>> 他的資料變成再見了(變成ERROR)
        >>>> 可以動,但通常不會去動他
        >>>> 如果是一個Table無傷大雅,兩個Table
        >>>> 某個學校的畢業生,回學校工作(KEY不一樣)
        >>>> 兩個Table來存(不會Merge找到名字)
        >>>> 討論要怎麼合起來(兩個不同的人,DB design)
        >>>> 看甚麼時候enroll進來(休學DROP OUT,再次申請又上了)
        >>>> 學校系統ID編號不一樣(學號)
        >>>> 同樣中文名字但實際不一樣
        >>>> 新的借閱紀錄(用身分證有點危險、secondary key,比較安全)
        >>>> 護照、外國人(會變護照號碼)
        >>>> 有一個欄位,有一個key是身分(出生日期,檢查的機制)
        >>>> 性別不可能當,只有兩種(區別不容易)
        >>>> 轉出轉入交易時間(查詢的時候固定扣掉六個月)
        >>>> FOREIGN KEY,不一定是主鍵(NULL、重複)
    >>> 關聯
        >>>> ONE TO ONE
        >>>> ONE TO MANY
            >>>>> 一個人可能有多個職業
        >>>> MANY TO MANY

三個正規化

        >>>> 單元性
        >>>> 部分功能相依姓(partial funtional dependency)
        >>>> 遷移功能相依姓(transitive dependency)
    >>> 房仲
        >>>> 大樓(格局)
        >>>> 承租人(職業、家庭)
        >>>> 單位
        >>>> 房東
        >>>> 同一個人租兩個空間(設計有點不一樣)
>> extendable database
    >>> 比較少用到(擴充不容易?)
    >>> MongoDB
>> 很少寫資料進去
    >>> 外面很常讀取(反正規化,可以更快的獲取資料)
    >>> 外部的User去讀取比較頻繁
    >>> 更改不容易