テーブルへデータの登録
テーブルが用意できたら、次はテーブルへデータを登録する。
データの登録はINSERTを利用する。構文は次の通り。
INSERT INTO テーブル名(
カラム名1,
カラム名2,
カラム名3
)VALUES(
データ1,
データ2,
データ3
);
上記を踏まえ、早速テーブルにデータを登録する。
INSERT INTO languages(
Id,
language,
purpose,
use
)VALUES(
1,
'Java',
'業務システム',
'バックエンド'
);
尚、INSERTは一度で複数のデータを登録する事も可能。
INSERT INTO languages(
Id,
language,
purpose,
use
)VALUES(
2,
'SQL',
'データベース',
'バックエンド'
),(
3,
'HTML',
'テキスト',
'フロントエンド'
),(
4,
'CSS',
'装飾',
'フロントエンド'
);
データの参照
テーブルに登録できたデータを参照したい時に使用。
参照するにはSELECTを使用。構文は以下の通り。
SELECT カラム名 FROM テーブル名
テーブルのデータを全て参照する場合は以下を使用。
SELECT * FROM languages
カラムを指定して参照する場合は以下を使用。
SELECT language FROM languages
データの更新
テーブルのデータを更新するために使用。UPDATEを使用する。構文は以下の通り。
UPDATE テーブル名 SET
列名1 = データ1,
列名2 = データ2,
列名3 = データ3
WHERE
更新するレコードを特定する条件
構文の中にある「WHERE」という句は、条件を指定するためのもの。
「WHERE以降のレコードを特定する条件」は「WHERE句」と呼ばれ、たとえば、「IDが1のレコードを更新する」というときに利用する。
WHERE句を指定しないことも可能。指定しない場合は、すべてのレコードが更新される。
全データを一律同じ値にするということは稀なので、通常はUPDATE文にはWHERE句を付ける。
UPDATE languages SET
purpose = 'アプリケーション'
WHERE
Id = 1;
データの削除
データの削除をしたい時に使用。DELETEを使用する。構文は以下の通り。
DELETE FROM テーブル名 WHERE 削除するレコードを特定する条件
DELETE文もUPDATE文と同様で、WHERE句で削除対象となるレコードを指定して削除を行う。
WHERE句がない場合は、全データが削除されるので注意。
例えば、Idが1のデータを削除する場合は以下のようになる。
DELETE FROM authors WHERE Id = 1;
色々なSELECT文
SELECTはWHERE句を追記し条件を追加することで、色々な参照を行える。
= ⇨ 等価
<> ⇨ 非等価
> ⇨ より大きい
< ⇨ より小さい
>= ⇨ 以上
<= ⇨ 以下
AND ⇨ 論理積。両方が成り立つ
OR ⇨ 論理和。どちらかが成り立つ
NOT ⇨ 論理否定
LIKE ⇨ 対象のフィールドがパターンに一致
BETWEEN x AND y ⇨ 対象のフィールドがxとyの範囲内
IN ⇨ 対象のフィールドが式の一覧の1つに一致
なつめ% ⇨ 〜で始まる
%そうせき ⇨ 〜で終わる
%めそう% ⇨ 〜を含む
LIKEは正規表現の簡易版のようなもの。
「%」は「任意のゼロ文字以上の文字列」「_」は「任意の1文字」に相当する。
「%」をつける位置によって「前方一致検索」「後方一致検索」「部分一致検索」と呼ぶことがある。
様々な条件のSELECT文
SELECT * FROM authors;
SELECT * FROM authors WHERE id = 1;
SELECT * FROM authors WHERE id <> 1;
SELECT * FROM authors WHERE id > 1;
SELECT * FROM authors WHERE 1 <= id AND id < 2;
SELECT * FROM authors WHERE 2 <= id OR id <= 1;
SELECT * FROM authors WHERE NOT(2 <= id OR id <= 1);
SELECT * FROM authors WHERE name LIKE '%エンド%';
SELECT * FROM authors WHERE name LIKE '%_a_%';
SELECT * FROM authors WHERE name LIKE '%_y%';
SELECT * FROM authors WHERE id BETWEEN 1 AND 2;
SELECT * FROM authors WHERE id IN (1, 4);
並び替えて参照
通常のSELECT文の実行結果で得られるデータの順序は決まっておらず、得られるデータ自体は同じでも厳密には順序は決まっていない。
参照するデータのソート順を指定するためには「ORDER BY句」を利用する。
WHERE句が条件を指定するように、ORDER BY句はソート順を指定する。構文は以下の通り。
SELECT
カラム1,
カラム2,
カラム3
FROM
テーブル名
ORDER BY
ソートに利用するカラム1 ASC or DESC,
ソートに利用するカラム2 ASC or DESC,
ソートに利用するカラム3 ASC or DESC
昇順(たとえば、1,2,3...という順)でソートしたい場合はASCを指定し、
その逆の降順(たとえば、10,9,8...という順)でソートしたい場合はDESCを指定する。
ASCもDESCも記述しない場合は昇順(ASC)になる。
languagesテーブルをid順でソートする場合は、次のSQLを実行する。
/*1から順番にソート*/
SELECT * FROM languages ORDER BY Id;
/*4から順番にソート*/
SELECT * FROM languages ORDER BY Id DESC;
また、複数条件をかけてソートすることも可能。
SELECT * FROM authors ORDER BY language, id;
多くのDBでは、日本語を含む文字列は読み仮名順でソートすることはできない。
とくに漢字を含む場合には、日本語を含む文字列でのソートは期待できない。
日本語でソートする場合には仮名のカラムを用意し、仮名のカラムでソートすること。
<前回の記事>
・データベース、SQL・MySQLの基礎
https://qiita.com/TaikiTkwkbysh/items/8efc5faf8da2062a8a95
・データベース、SQL・MySQLの基礎(テーブルの作成から削除)
https://qiita.com/TaikiTkwkbysh/items/8efc5faf8da2062a8a95
<次回の記事>
・データベース、SQL・MySQLの基礎(カラムの別名取得~シーケンス番号)
https://qiita.com/TaikiTkwkbysh/items/6bd3b6e873f33fbd898e