なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

職業訓練の授業~31日目~

内容:SQL

事前にVMWAREにインストール済みのMYSQLを使っての 授業です。

だいたいわかるけど細かい部分はよくわかんない という私としては待ちに待った授業です。

というわけで貰った資料を見ながら授業そっちのけで ザバザバこなしていきます。

ごめんなさい。今日は授業を全く聞いてませんでした!

SQLの種類

DDLDML、DCLってな3種類。 情報技術者試験に出てたからおぼえよー。

がんばってコマンド

create tableからはじまり一通りやりますよー。 Accessのときはさっぱり使わないのでよい練習でした。

データ型の説明

foreign keyの存在は初めて知りました。 要復習です。

  • enum あらかじめのリスト設定。他のDBでもあるのかな。

  • リテラル 文字通りって意味だそうな。

エスケープという概念

特別な意味を持つ記号はそのまま入力すると使えない。 大抵使用したいときは「¥」とかつけます。 プログラム中もでてくるよー。

MySQLサイトからサンプルデータのダウンロード

https://dev.mysql.com/
→ Documentation → More → World database

以外にもサンプル探すのは面倒だし、自分で作るのはもっと。 こういうのあるのはありがたいです。

SELECTしつついろいろ

忘れがち
  • between 不等号式に頼りがち。あっちだと順番きにしなくていいんだもん。 betweenのがいい理由は何かあるのかな。

  • null where id is null と where id is not null ね。

group

これは慣れてない人がコマンドベースで理解できるのか本当に謎。

内部結合

外部結合との違いがよくわかんにゃい。Accessではあんまり使ってこなかったかもしれない。

外部結合

rightとleftの違いって矢印の向きというか順番の問題だけ?

サブクエリ

クエリの結果を条件に使うというパターン。Accessで使うと 極端に遅くなったことが多かったので印象が悪い。 これからはどんどん使えそう?

  • Anyとall これの使い方ははじめてしったー。

疑問点

  • サブクエリ使って抽出結果が「含まれる」フィールド抽出 できそうで出来ないっぽい?

  • IN 資料にはどーものってないぽい。補足説明はあるのかあったのか。

  • Whereの()の区切り位置 実は試してないけどだいじょーぶ・・・よね。

Where id >5 and (sex =‘male’ or sex =‘female’)

Where (id >5 and sex =‘male’) or sex =‘female’

上下で抽出されるレコード違うよーというお話。