データベース操作
SELECT文
SELECT カラム名 FROM テーブル名 WHERE 条件;
SELECTはカラムの値を表示する
FROMはテーブルからデータを取得する
WHEREは条件
データベースの作成
新しいデータベースを作成するときはコマンドでデータベース名を指定して作成する。
データベース名は後から見てなんのデータベースなのか区別しやすい名前にしておく。
My SQLでは
CREATE DATABASE データベース名;
で作成できる。
データベースの削除
データベースが必要なくなったときは削除することができこの時データベースの中に保存されている内容が消えてしまうので注意。
「DROP DATABASE データベース名;」で削除できる。
データベースの一覧表示
作成したデータベースの名前は一覧で確認することができる。
SHOW DATABASE;
データベースの選択
データベースに対して何か作業を行う際には数あるデータベースの中から
どのデータベースに対して作業を行うかあらかじめ指定をしておく必要がある。
USE データベース名;
もしあるデータベースに対して作業していて
他のデータベースに作業を切り替えたいときは再度USEコマンドを実行する。
テーブルの作成
データを格納しておくための表の事をテーブルと言う。
CREATE TABLE テーブル名(カラム名 データ型、カラム名 データ型);
1つのデータベースの中には複数のテーブルを作成することができる
そして1つのテーブルには最初に作成したカラムの項目しか格納できない。
他の種類のデータを保存する場合は別のテーブルを作成しテーブルを分けて管理するのが一般的。
テーブルの削除
テーブルが必要なくなった時や間違えて作成してしまった時はテーブルを削除することができる。
DROP TABLE テーブル名;
また作成されているテーブルを確認することもでき
正しくテーブルが作成されているかどうかや
データベースにどのようなテーブルがあるかどうかを確認することができる。
SHOW TABLES;
レコードを追加
INSERT INTO テーブル名(カラム名,カラム名)VALUES(内容1,内容2);
レコードを追加する際には
カラムのデータ形に合わせた値を指定する必要がある.
レコードを取得
テーブルに保存されているレコードを
様々な形で取得して目的のデータを確認することができる。
SELECT カラム名 FROM テーブル名;
レコードの条件検索
条件に位置するレコードを絞り込む。
SELECT カラム名 FROM テーブル名 WHERE 条件名
条件の書き方は
「カラム名 = ‘条件’ AND カラム名 = ‘条件’ 」や
「カラム名 = ‘条件’ OR カラム名 = ‘条件’ 」など
検索に用いる記号
いずれかの値が含まれるか
INを使うと 指定したいずれかの値が含まれているデータを検索することができる。
「SELECT カラム名 FROM テーブル名 WHERE カラム名 IN (条件1,条件2) 」
ある文字が含まれるか
LIKEを使うと 指定した文字が含まれているデータを検出することができる。
「SELECT カラム名 FROM テーブル名 WHERE カラム名 LIKE ’条件%’」
%は 0文字以上の文字列を表す。
%で挟むと中間検索や
%のほかに1文字の文字列を表す_もある。
NULLかどうか
値がないフィールドはNULLが表示される。
IS NULLを使うとNULLのデータを検索できる。
「SELECT カラム名 FROM テーブル名 WHERE カラム名 IS NULL」
レコードの更新
テーブルに保存されているレコードは後から違う内容に編集することができる。
UPDATEを使う
更新対象のテーブル名やカラム名、更新後の値、更新したいレコードの条件を指定して使う。
「UPDATE テーブル名 SET カラム名= ‘条件’ WHERE 条件」
データを削除する
テーブルに保存されているレコードは必要に応じて削除できる。
DELETEを使う
削除対象のテーブル名や削除したいレポートの条件を指定する。
「DELETE FROM テーブル名 WHERE 条件」
レコードの並び替え
テーブルに保存されているレコード保存されている値の順に並べ替えて取得することができる。
ORDER BYを使う。
その後にカラム名を指定するとそのカラム名の値の昇順で並べ替えができる。
また絡む名の後ろにDESCをつけると降順にできる。
「SELECT カラム名 FROM テーブル名 WHERE 条件 ORDER BY カラム名」
取得するレコード数の指定
通常セレクト分でテーブルからレコードを取得する時は
すべての対象のレコードが取得されてしまう。
これだと想定よりも大量のデータを取得することになってしまったり
最初のデータだけしか必要ない場合に余分なデータまで取得することになってしまう。
LIMITを 使うことで取得するレコードの上限を決めてそれ以上のデータが取得されないようにすることができる。
「SELECT カラム名 FROM テーブル名 ORDER BY カラム名 LIMIT 取得上限数」
またOFFSETを使うと取得開始の位置を指定することができる。
「SELECT カラム名 FROM テーブル名 LIMIT 取得上限数 OFFSET 開始起点」
データの数を取得する
カウント関数を使うとテーブルに保存されている
レコードの数をカウントしてその値を取得することができる。
「SELECT COUNT(*) FROM テーブル名;」
データの最大値と最小値を取得
MAX関数を使えば、
そのカラムに保存されている値の最大値を取得できる。
MIN関数を使えば、
そのカラムに保存されている値の最小値を取得できる。
どちらもセレクトのすぐ後ろに記述する。
「SELECT MAX(カラム名)FROMテーブル名」
データの合計と平均を取得
SUM関数を使えば、 そのカラムに保存されている値の合計値が取得できる。
AVG関数を使えば、そのカラムに保存されている値の平均値を取得できる。
どちらもセレクトのすぐ後ろに記述する。
「SELECT SUM(カラム名)FROMテーブル名」
レコードのグループ化
テーブルに保存されているカラムの値が同じでレコードをグループにしてまとめて出力できる。
レコードをグループ化するためにGROUP BYを使う。
「SELECT カラム名 FROMテーブル名 GROUP BY カラム名」
グループ化データに絞り込み条件を追加
グループ化した後の結果から必要なデータだけに絞って取得する。
HAVINGを使う
「SELECT カラム名 FROMテーブル名 GROUP BY カラム名 HAVING 条件」
WHEREとの違い
検索条件を指定すると言う意味では似ているが
実行される順番違いがありWHEREはグループが前に実行されるがHAVINGはグループ化後に実行される
テーブル結合
コマンドを使ってのテーブル結合は結合元となるテーブルに結合先となるテーブルをくっつけるイメージ。
その際結合元と結合先それぞれのテーブル名と2つのテーブルどうしで
共通のキーとなる値を格納しておくカラムの名前が必要。JOINを使う
内部結合
キーとなるカラムの値がテーブル間で一致するレコードのみを結合して
取得する方法を内部結合と呼ぶ。
INNER JOINを使う
「SELECT * FROM テーブル名 INNER JOIN テーブル名2 ON テーブル名1.カラム名 =テーブル2.カラム;」
外部結合
結合下のテーブルのデータと
それに加えてキーとなるカラムの値が一致する結合先のデータを結合して取得する方法を外部結合と呼ぶ。
LEFT JOIN と RIGHT JOINがあり違いは結合先と結合元の順番
「SELECT * FROM テーブル名1 LEFT JOIN テーブル名2 ON テーブル名1.カラム名 =テーブル2.カラム;」