SQLについて軽くまとめてみた
参考サイト ■MySQLの使い方 初級: MySQL初心者入門講座
ユーザ作成
一覧する(mysqlのuserテーブルから見る)
SELECT user FROM Mysql.user;
作成する
GRANT {権限(all, selectなど)} {DB名}.* TO {ユーザ名}@localhost IDENTIFIED BY {'パスワード文字列'};
権限見る
SHOW GRANTS FOR {ユーザ名}@localhost;
{DB名}での権限を剥奪する
REVOKE SELECT ON {DB名}.* FROM {ユーザ名}@localhost;
削除する
DROP user {ユーザ名}@localhost;
データベース作成
一覧する
SHOW DATABASE;
作成する
CREATE DATABASE {DB名};
切り替える
USE {DB名};
削除する
DROP DATABASE {DB名};
テーブル作成
一覧する
SHOW TABLES;
作成する(※varcharには最大長さを設定しなければいけない)
CREATE TABLE {テーブル名}( {フィールド名} {データ型} [PRIMARY KEY (またはほかの属性((AUTO_INCREMENTなど)))], {フィールド名} {データ型}, ... [PRIMARY KEY({フィールド名} [, {フィールド名}])] );
//外部キーを設定する場合 CREATE TABLE {テーブル名}( {フィールド名A} {データ型}, index({フィールド名A}), FOREIGN key({フィールド名A}) REFERENCES {親テーブル名}[(親フィールド名)] [ON UPDATE {挙動}] [ON DELETE {挙動}], ... );
外部キーの挙動 | 親テーブルに対して更新や削除を行うと |
---|---|
RESTRICT | エラー |
CASCADE | 子の同じフィールドが更新・削除 |
SET NULL | 子の同じフィールドの値がNULLになる |
NO ACTION | エラー(RESTRICTと同じ(MySQLでは)) |
変更する
ALTER TABLE {テーブル名} RENAME TO {テーブル名};
削除する
DROP TABLE {DB名};
レコード追加
一覧する
SELECT * FROM {テーブル名};
追加する
INSERT INTO {テーブル名} VALUES({値}, {値}, ...); //フィールド順の挿入 INSERT INTO {テーブル名}({フィールド名}, {フィールド名}, ...) VALUES({値}, {値}, ...) [, ({値}, {値}, ...)]; INSERT INTO {テーブル名} SET {フィールド名} = {値} [, {フィールド名} = {値}];
変更する
UPDATE {テーブル名} SET {フィールド名}={値}, {フィールド名}={値}, ... WHERE {条件}
- {テーブル名}の前にFROMはいらないよ気をつけて
削除する
DELETE FROM {テーブル名} [WHERE {フィールド名} = {値}]; //条件なしだと全件
フィールド追加
構成を確認する
DESC {テーブル名};
追加する
ALTER TABLE {テーブル名} ADD {フィールド名} {型名}; ALTER TABLE {テーブル名} ADD ({フィールド名} {型名}, {フィールド名} {型名}, ...);
変更する
ALTER TABLE {テーブル名} CHANGE {フィールド名} {型名}; //型変更 ALTER TABLE {テーブル名} CHANGE {旧フィールド名} {新フィールド名} {型名}; //名前変更 ALTER TABLE {テーブル名} MODIFY {フィールド名} {型名} AUTO_INCREMENT; //AUTO_INCREMENT属性の付加
削除する
ALTER TABLE {テーブル名} DROP {フィールド名};
where条件について
WHERE {フィールド名} = {値}; WHERE {フィールド名} <> {値}; //否定 WHERE {フィールド名} LIKE '_(ワイルドカード"?"任意の一文字) %(ワイルドカード"*"任意の0文字)' WHERE {フィールド名} BETWEEN {値} AND {値}; WHERE {フィールド名} IN({値},{値},{値},...); WHERE {フィールド名} >= {値} AND {フィールド名} <= {値}; WHERE {フィールド名} IS NULL; WHERE {フィールド名} IS NOT NULL;
- NULLの扱いに注意 (数値や文字と,比較も計算もできない) 【初級】新人SEのためのSQLの基礎 第2回(後半) NULL値,複合インデックスの注意点:ITpro
NOT IN
NOTはあとの条件を否定。INは後の条件のうちのどれか(OR)。ANYと同じだが、INだけはNOT foo IN(bar, baz)だけでなく、foo NOT IN(bar, baz)という形も認められる。
あと、INの後の()にはレコードを指定してもよい。
データのファイル入出力について
//バックアップ $ MYSQLDUMP -u ユーザ名 -p DB名 > "パス/backup.sql" //リストア $ MYSQL -u ユーザ名 DB名 < "パス/backup.sql"
csv読み込み
LOAD DATA INFILE "パス" INTO TABLE {読み込み先テーブル名} FIELDS TERMINATED BY "," //フィールド区切り LINES TERMINATED BY "\r\n" //改行コード