てきとーにのんびりだらだら

毎日更新目標!SEブログ!

sql勉強をしてみようと思った

勉強するにあたって、いろんな方法があるが
今回は過去の知見を活かしてoracleSQLの試験を参考にやってみたいと思う

出会った単語たちをただ羅列していく

シノニム:テーブルの別名、どうやら移行の際はviewになるようだ
USING:結合するテーブルに同一名がある場合に使い、結合時一つの列となる

updraft.hatenadiary.com

同じ価格の製品名と価格をselect:
同じ表をjoinしてusingとして価格、whereで表1と表2の製品名が異なるものを指定、distinctで重複をなくす
or
groupbyとhavingCount>1を使用して同列に同じ価格が複数あるものをselectし、それをwhere inで取得

一部だけのdistinct:できません。

distinctとgroupbyの違い:distinctは射影で最終的に重複を排除、groupbyは重複処理を行ったうえで結果に対して処理を加える際に使用

distinctのパフォーマンス:データが多いときはインデックスを使用、すべての列が異なる場合はdistinctを使用しない

distinctのnull扱い:nullも一つの値

表データすべて削除:truncateするか行指定なくdelete

truncateとdeleteの違い:
deleteは「データを1つづつ削除、データのみ(dropしない)削除、incrementが初期化されない、rollbackできる」

qiita.com

シーケンスの作り方: CREATE SEQUENCE文で作成
トランザクションのコミットやロールバックに関係なく、採番(取得)した時点でインクリメント
dual表に対して指定することで取得

dual表とは: