DB(SQL)について学習する(第一回)

・前提

手前味噌な話、インフラ周りの知識や経験はジュニアエンジニアの中ではそれなりに積んできた自負があるが、

DB・言語・フレームワークなどの開発よりの知識が机上の知識しかないためハンズオンで鍛える

とりわけDBが弱いので、「すっきりわかるSQL入門」という書籍の内容を参考に学習する

また、ハンズオンを積極的に取り入れて学習したいため、本書籍が紹介するブラウザでDBを学習できる

「dokoQL」というサービスを利用する

※今回は全12章の内3章を消化

・第一章


DBMS(データベース管理システム)にSQLで書かれた命令文を送信してDBファイルの内容を編集す

また、DBMSに対して各DBが定める特有の手順や形式に従いNW経由でSQL文を送り、各製品はDBMSと通信するための専用ソフト(ドライバ)を提供しており、我々は言語でプログラムを組んでその中からドライバの命令を呼び出すことでDBMSに対してSQL文を送信できる→しかし、前述のプログラムの記述はドライバが行ってくれるため実際は、我々はSQL文を書くだけでよい

・第二章

末尾に文の終了を表す「;」を付ける

データ型は列ごとに指定するため,違う型のデータ(データ部にリテラルを入力など)を入力しても実行されないような仕組みがある

ほとんどの処理を実現できる4大命令であるDML(SELECT,UPDATE,DELETE,INSERT)+WHERE

以下のようにASがエイリアスの役割を持つ

SELECT 費目 AS ITEM, 入金額 AS RECEIVE
FROM 家計簿 AS MONEYBOOK
WHERE 費目 = ‘給料’


※実務上では以下のコマンドを使用するのは控えたい(DB運用に伴う全数検索の結果が変わってしまう)

SELECT * FROM ~
SELECT…テーブルから目的のデータを指定して取得
UPDATE…既にテーブルに存在するデータを書き換える(ほぼWHEREセットで使用)
DELETE…既にテーブルに存在する行を削除する(ほぼWHEREセットで使用)
INSERT…テーブルに新しいデータを追加する

・第三章

WHERE句には真or偽の結果を返すものしか入力できない

格納データがNULL→格納データが不明or無意味な時に使用

NULLの判定は以下のコードを使用(NULLは値でないため等式などの演算子は使えないことに注意)

式 IS (NOT) NULL
以下、WHERE句と併用する演算子

LIKE演算子でパターンマッチングによる処理が可能(%で任意の0文字以上の文字列,_で任意の一文字)
BETWEEN演算子はある範囲に値が収まっているかの判定に使用→AND演算子に含まれるから使用することはないか
IN/NOT IN演算子はカッコ内に列挙した複数の値のいずれかにデータが合致するかを判定する(=演算子の複数版)
ANY/ALL演算子は対象の前に付けることで合致する対象を絞ることが出来る
※論理演算子はORよりANDの方が優先順位が高い→ANDが登場したらカッコで優先順位付け

※テーブルの中に重複した行を作成しない→削除などの際困る→主キーの必要性に通じる

主キーとなる列が持つべき特性→例:社員番号などが代表的なキーであるが出納帳など一意の列を作るのが難しいときはIDなどの人工キーを作成

NULLでないデータ
他の行と値が重複しない
一度決めた値は変化しない
他にも、複数列で一意に特定できるため、複数列を以て主キーとして扱う複合主キーもある→氏名だけでは同姓同名の方はいるが、生年月日・住所を追加すれば一意になる

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です