# CMU DB 2. Advanced SQL
tags: CMU DB
今回も授業外のビデオです. 去年の映像を使っているのかな
Relational Languages
DBMSは効率的なクエリの評価をするので, ユーザーはどのように計算するかを記述する必要はない
宣言的な言語でほしい結果を書くだけで良い(SQL)
SQLの歴史
- Structured English Query Language
- オラクルに採用された
ANSI, ISOでは"Structured Query 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の文法にはあまり興味がないので退屈だった