0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

データベース、SQL・MySQLの基礎(データの登録〜並び替えて参照)

Last updated at Posted at 2022-01-22

テーブルへデータの登録

テーブルが用意できたら、次はテーブルへデータを登録する。
データの登録は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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?