はじめに
明日の訓練所でのテスト対策で、SQLコマンドを整理してみました。投稿数稼ぎです。
とってもとっても初歩的なので、将来データベース忘れた時には役立つかもしれません。
なのでチートシートなんて名乗れません、そんな程度です。
あとPHPもテスト範囲に含まれているので、そっちの方もいずれ投稿しようと思っています。
Linux、HTML、JavaScript、PHP、JAVAと、この4ヶ月で詰め込んで来たので、もうどれがどうだったか。。。
XAMPPをインストールしての授業だったので、MariaDBです。
MariaDBのサイトの『A Quick SQL Cheat Sheet』を自分用に簡単にまとめてみました。
英語に苦しくなってきた時はこっちの『MySQL5.6リファレンスマニュアル 第13章SQLステートメントの構文』を見てました。
データベースオブジェクトの操作
作成
-- データベースの作成
CREATE (OR REPLACE) DATABASE db_name;
-- テーブルの作成 PRIMARYとUNIQUEは最後に記述してもカラムの都度でもいい。
CREATE (OR REPLACE) TABLE tbl_name (create_definition,...,PRIMARY KEY(coi_name) UNIQUE KEY(col_name));
-- ビューの作成
CREATE (OR REPLACE) VIEW view_name AS select_statement;
-- インデックスの作成
CREATE (OR REPLACE) INDEX index_name;
# Columnの追加(作成)
/* CREATE COLUMN はナイよテーブルを先に作っちゃってて、後から追加する時。
1個ずつしか追加できない。(コレ間違い 出来る。)
*/
ALTER TABLE tbl_name ADD col_name column_definition,[FIRST|AFTER col_name];
/* create_definition */
{col_name column_definition} #index_definitionとかperiod_definitionとか省略
/* column_definition */
data_type [NOT NULL|NULL][UNIQUE|PRIMARY KEY][COMMENT 'string'] #もっとあるけど省略
data_typeはいっぱいあるので、Data Typesを参照。
変更
-- データベースの変更
#ALTER DATABASEはあるけど。。。使わないな
#RENAME DATABASEはナイ 新しくデータベース作ってコピーするとか。。。面倒らしい
-- テーブルとカラムの変更・追加
RENAME TABLE old_tbl_name TO new_tbl_name;
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition; #カラムの名前と定義の変更
ALTER TABLE tbl_name MODIFY col_name colmun_definition; #カラムの定義の変更
ALTER TABLE tbl_name ADD col_name column_definition; #カラムの追加
-- ビューの変更
ALTER VIEW view_name AS select_statement;
表示
--データベースの表示
SHOW DATABASES;
--テーブルの表示
SHOW TABLES; #データベース内のテーブル一覧
SHOW CREATE TABEL tbl_name; #テーブルを作るときのCREATE TABLE文
{DESCRIBE|DESC} tbl_name; #テーブルの構造
SHOW COLUMNS FROM tbl_name;
--ビューの表示
SHOW CREATE VIEW view_name;#ビューを作るときのCREATE VIEW文
--インデックスの表示
SHOW {INDEX | INDEXES | KEYS} FROM tbl_name [FROM db_name];
削除
-- データベースの削除
DROP DATABASE db_name;
-- テーブルの削除
DROP TABLE tbl_name;
-- ビューの削除
DROP VIEW view_name;
-- インデックスの削除
DROP INDEX index_name;
レコードの操作
--追加
INSERT INTO tbl_name(col_names,...) VALUES(values,...);
INSERT INTO tbl_name VALUES([values|null],...);
--更新
UPDATE tbl_name SET col_name = value,[col_name = value],...[WHERE where_condition];
--置換
REPLACE [INTO] tbl_name VALUES([values|null],...);
--削除
DELETE FROM tbl_name WHERE where_condition;
テーブル結合
--UNION
SELECT * FROM tbl_1 UNION tbl_2; #重複なし
SELECT * FROM tbl_1 UNION ALL tbl_2; #重複あり
--内部結合
SELECT * FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.col = tbl_2.col;
--外部結合
SELECT * FROM tbl_1 LEFT OUTER JOIN tbl_2 ON tbl_1.col = tbl_2.col; #tbl_1全部とtbl_2の共通部分
SELECT * FROM tbl_1 RIGHT OUTER JOIN tbl_2 ON tbl_1.col = tbl_2.col; #tbl_1の共通部分とtbl_2の全部
--
ユーザー関係
-- 作成
CREATE (OR REPLACE) USER user_name IDENTIFIED BY password;
-- 変更
RENAME USER old_user_name TO new_user_name;
ALTER USER IDENTIFIED BY new_password;
-- 表示
SHOW CREATE USER user_name
--削除
DROP USER user_name;
まとめ
ほんとサラッとしか習ってない印象です。
まちがいも多々あると思います、明日のテストには間に合いませんが、後学のためにもご教示くださいますと助かります。
自分でも気がついたらちょこちょこ直していきます。
あらためて、SQLを調べてみて、アレこんなの習ったっけ?てのがありました。
ユーザー関係はほとんど触れてませんでしたし、UPDATEなんで怪しいもんです。。。
なかなか普段は自分でデータベースを作ることが無いので、課題を見つけて作ってみないと理解は深まりませんね。