Neunomizuの日記

俺だけが俺だけじゃない

# CMU DB 2. Advanced SQL

tags: CMU DB

今回も授業外のビデオです. 去年の映像を使っているのかな

Relational Languages

DBMSは効率的なクエリの評価をするので, ユーザーはどのように計算するかを記述する必要はない

宣言的な言語でほしい結果を書くだけで良い(SQL)

SQLの歴史

  • Structured English Query Language
  • ラクルに採用された

ANSI, ISOでは"Structured Query Language

  • DML
    • data manipulation language
  • DDL
    • data definition language
  • DCL
    • data control language

という言語を合わせたもので他にも含むものがある

SQLは複製を許す

  • AGGREGATES
    • タプルからある値を持つ列を返す
    • もし返す値が不定義だとエラーを返す
  • GROUP BY
    • tuplesから部分集合を作り, それぞれに対してAGGREGATESを返せる
    • SELECTで出てくる必要がある
  • HAVING
    • GROUP BYで使うフィルター

文字の大文字か小文字かは関係あるものが多い(MySQL以外は関係があることが多い)

  • LIKE
    • 文字列のマッチングに使う
    • %は部分文字列とマッチ
    • _はどんな文字ともマッチ
    • ||で文字列を繋げる(標準的には)
  • OUTPUT REDIRECTION
    • クエリの結果を他のテーブルに保持する
  • OUTPUT CONTROL
    • ソートが出来る
    • 出力の数を制限できる
  • NESTED QUERIES
    • クエリはネストすることが可能
  • WINDOW FUNCTIONS
    • 一部を切り出してそこにAGGREGATES的なものを施す
  • COMMON TABLE EXPRESSIONS
    • 一時的なテーブル(的なもの)が作れる

結論

SQLは死んだ言語ではない

SQLの単文で(ほぼ)毎回答えを計算しようと努力するべきだ

感想

SQLの文法にはあまり興味がないので退屈だった