オープンソースのリレーショナルデータベース
リレーショナルデータベース(RDB)
データを表形式で表すデータベース
phpMyAdmin
MySQLの管理ツール
DBMS
DataBase Management Systemの略でデータベース管理システム
照合順序
DBでの文字の並び替え順、比較などを決めるものでDBの文字コードもこれで決まる
ユーザー
DBにアクセスする人を区別し、権限を与えて検索や更新を許可する
テーブル
データを保存する二次元の表のようなもの
カラム
列をカラム、またはフィールドという
レコード
行単位のデータをレコードという
データ型
数値
INT 整数
FLOAT,DOUBLE 小数
文字列
VARCHAR(len) 可変長文字列
text 文字列(文字数が多い場合)
日付
DATETIME 日付時刻
DATE 日付
TIME 時刻
バイナリ
BLOB
設定情報
デフォルト値、NULLを許可、A/I(オートインクリメント)、インデックス(索引)
主キー(プライマリーキー)
レコードを一意に識別する列、全てのテーブルに設定すべき
SQL
基本
・大文字、小文字を区別しない
・キーワードの区切りは空白
・文の末尾はセミコロン(;)
・識別子(列名など)をバッククォートで囲んでもよい
SELECT
`sid`
FROM
`schedule`
利用できるデータベースの表示
SHOW DATABASES;
INSERT
テーブルに新規データを挿入する
INSERT INTO テーブル名 (
フィールド名1,
フィールド名2,
・・・
)
VALUES (
値1,
値2,
・・・
);
例)タイトル「打ち合わせ」日付「2014/12/25」のレコードを挿入
INSERT INTO schedule (
title,
sdate
)
VALUES (
'打ち合わせ',
'2014-12-25'
);
複数の行を一度に挿入
VALUESの後の値をカンマ区切りで複数指定する
INSERT INTO schedule
(title, sdate)
VALUES
('打ち合わせ', '2014-12-25'),
('会議', '2014-12-27');
自動でセットされる値
INSERTで値をセットしなかった値には以下の優先順で値がセットされる
1.自動連番(オートインクリメント)
2.デフォルト値
3.NULL
文字列、日付
文字列、日付は値をシングルクォート(')で囲まなければならない
INSERT INTO schedule (sid, title, sdate)
VALUES (7, 'WINGS忘年会', '2012-11-23');
UPDATE
データを更新する
UPDATE テーブル名
SET
フィールド名1 = 値1,
フィールド名2 = 値2,
・・・
WHERE
条件式
例)sidが「2」のレコードのタイトル「面接」を時刻を「18:00」に更新
UPDATE schedule
SET
title = '面接',
stime = '18:00:00'
WHERE
sid = 2;
※条件式は省略可だが、その場合は全てのレコードが更新される
DELETE
データを削除する
DELETE
FROM
テーブル名
WHERE
条件式
※条件式は省略可だが、その場合は全てのレコードが削除される
例)sidが「3」のレコードを削除
DELETE
FROM
schedule
WHERE
sid = 3;
SELECT
データを取得する
SELECT
フィールド名1,
フィールド名2,
FROM
テーブル名
WHERE
条件式
ORDER BY
ソート式
例)sidが「2~8」のレコードを取得(日付の降順で「タイトル」「日付」のみ)
SELECT
title,
sdate
FROM
schedule
WHERE
sid BETWEEN 2 AND 8
ORDER BY
sdate DESC
アスタリスク
フィールド名を「*」だけにすると全ての列が表示される
WHERE句
取り出すデータを絞り込む
比較演算子
BETWEEN X AND Y …X~Yの範囲
IN (X, Y, Z) …X,Y,Zのいずれか
IS NULL …NULLであるか
LIKE 文字列 …含まれるか(%をワイルドカードとして使う)
例)LIKE '%山%' …山が含まれているかどうか
ORDER BY句
列名と並び順を指定して並び替える
並び順
ASC…昇順
DESC…降順
※並び順を省略した場合はASC(昇順)
GROUP BY句
特定の列でレコードをまとめて集計などをするためにグループ化し、集計関数と共に使う
集計関数
AVG…平均
COUNT…件数
MAX…最大値
MIN…最小値
SUM…合計
例)同じ日付の件数を集計する
SELECT
sdate,
COUNT(*)
FROM
schedule
GROUP BY
sdate
句の並び順
WHERE → GROUP BY → ORDER BY
列別名
SELECT句の列名に別の名前を付けることができる
SELECT
列名 as 列別名
FROM
・・・
例)memoをdescriptionという別名で表示する
SELECT
memo as description
FROM
schedule
LIMIT句
取得したレコードの件数を制御する
※LIMIT句が無いDBもあるので注意(Oracleは無い)
LIMIT [開始位置,] 取得する行数
※開始位置は省略可
例)データを5件取得
SELECT *
FROM schedule
LIMIT 5
例)データを3件目から10件取得
SELECT *
FROM schedule
LIMIT 3, 10
HAVING句
グループ化したデータを絞り込む
※WHERE句はグループ化したデータには使えない為
例)平均年齢が30以上のデータを取得
SELECT blood, AVG(age)
FROM persons
GROUP BY blood
HAVING AVG(age) >= 30
0 件のコメント:
コメントを投稿