はい
ターブルって思い出しました。ベジータの弟という設定でした。
コマンド
- SELECT * FROM tb_name WHERE column1 = 'サンプル';
データの「取得」、「検索」「選択」、色んな言葉が使われますね。
-
- SELECTとFROMの間には、「命令によって返され表示される列」が入ります。
- *は「スター」と呼ばれ、「全ての列を選択」を意味します。*の形状から「スター」となったのかと思いきや、「セレクトアスタリスクフロム」→「セレクトスターフロム」→「スター」という事情のようです。
- WHERE以降は、「表示するもの」ではなく、「条件を満たした行を返せ」というものです。
- 端的に表現すると、【SELECT 表示列 FROM テーブル名 WHERE 検索列 = '検索文字';】のようです。
- 検索文字の部分は、データ型が「INT」や「DEC」のような数値型であれば、シングルクォートは不要です。
- 数値型をクォートで囲ってしまっても、文字型でダブルクォートを使ってしまっても、恐らく動作します。文字型でクォートを忘れるのはアウトです。
- INSERT INTO tb_name (artist) VALUES ('B\'z');
- 「B'z」のように、データにシングルクォートを入れたい場合は、二つ重ねる('')か、円記号(\)を前につける必要があります。
- SELECT column1, column2 FROM tb_name;
- スターで表示してしまうと画面をすべて占領してしまいます。SELECTとFROMの間に特定列を記述すれば、限定して表示されます。
- SELECT ab_name FROM tb_mymusic WHERE at_name = 'B\'z' AND year = '1998';
「AND」を使うことによって、条件を増やすことができます。
-
- ANDで挟んで【検索列 = '検索文字';】を追加します。
- ANDでは、「両方の条件を満たしたもののみ」が取得されます。一文でより細かい選択が可能になります。
- SELECT sg_name FROM tb_mymusic WHERE at_name = 'B\'z' AND rating > 4;
「比較演算子」がでてきました。データ型の数値型に適用できるのは分かりますが、文字型にも適用できるのは想定外でした。
日本語には「以上」「以下」がありますが、「未満」の反対ってあるんでしょうか?
-
- 「=」… 等しいもの。
- 「<>」… 等しくないもの。後に出てくる「NOT」と似ています。
- 「<」… 右に数字または文字がくるので、「小なり」「数字より小さいものを返せ」を意味します。
- 「>」… 上の逆です。
- 「<=」… 小なりイコール。日本語でいう「以上」にあたり、「自身を含めて」考えます。
- 「=>」… 上に同じく、「以下」にあたります。
面倒なのが、テキストデータでも動作するみたいなんですこれ。
アルファベット順・50音順で、後にいくほど数字が大きいものとして扱うようです。
特に下記の50音順が気になりました。でも名簿から抽出することを考えれば、こうでなければ困りますね。
-
- ア、イ、ウ、エ、オ…ハ、バ、パ、ヒ、ビ、ピ、フ、ブ、プ、ヘ、ベ、ぺ、ホ、ボ、ポ…
- SELECT sg_name FROM tb_mymusic WHERE category = 'soundtrack' OR category = 'OST';
「OR」が出てきました。使い方は「AND」と同じでが、機能が違います。
-
- ANDでは「両方の条件を満たしたもののみ」でしたが、ORでは「いずれかの条件を満たせば」になります。
- ANDとORを組み合わせたWHEREも可能なようですが、まだ試してないです。
- SELECT sg_name FROM tb_mymusic WHERE category IS NULL;
未記入項目は、デフォルト文字を設定してないければ「NULL」になります。
そのNULLを抽出しようとしても、【= NULL;】【= 0;】【= 'NULL';】では動作しません。
-
- 【WHERE 検索列 IS NULL;】とすることで、抽出できます。
- SELECT at_name FROM tb_mymusic WHERE category LIKE '%metal';
メタルにはいろんなジャンルがありますが、各名称をいちいちORで入力してはいられません
-
- 【WHERE 検索列 LIKE '%metal';】とすることで、パーセントの部分は「あらゆる長さの文字」に代わってくれます。
- パーセントの部分がアンダースコア【LIKE '_metal';】に代われば、「一文字の代わり」を意味します。
- SELECT sg_name FROM tb_mymusic WHERE rating BETWEEN 2 AND 4;
「一定以上一定以下」であれば、不等号を複数用いなくても可能です。
-
- 【WHERE rating BETWEEN 2 AND 4;】つまりは【WHERE rating >= 2 AND rating <=4;】の代わりです。
- 【WHERE rating > 2 AND rating <4;】の場合は、数字を変えなければ使えません。
- SELECT sg_name FROM tb_mymusic WHERE category IN ('deathmetal', 'melodicdeathmetal', 'slashmetal');
- ORをいくつもつなげるのが面倒な場合は、【WHERE 検索列 IN (' ', ' ',...etc);】ができます。
- いずれかに該当すれば拾ってきてくれるので、OR文をいくつも入れるよりかは効率的ですね。
- SELECT at_name FROM tb_mymusic WHERE category LIKE '%metal' AND NOT at_name = 'Labyrinth';
「指定排除」という表現でいいでしょうか。
-
- WHEREの後や検索列の前など、できるだけ前に置いた方がいいようです。
数学チックになってきました。
テキスト通りにサンプルのテーブルを作成する箇所があったんですけど、DECを使うところがイマイチ思い通りにいきません。
データ型の文字数のあたりも、完全に掌握してない感じです。