SQL自分的チートシート

AWS Cloud9での使用が前提です。

DBの基本的なデータ構造(呼称)

①ユーザーテーブル:DB全体
②カラム:列
③レコード:行
④フィールド:セル

USE:使用するデータベースを指定するコマンド

--USE DATABASE データベース名

--例
USE example;

CREATE:色々生成

データベース作成

--CREATE DATABASE データベース名

--例
CREATE DATABASE example;

テーブル作成

/*
CREATE TABLE テーブル名(
 カラム名 データ型,
 カラム名 データ型
);
*/

--例
CREATE TABLE users(
 id int,
 user_name1 varchar(32),
 user_name2 varchar(32),
 birth date,
 age int
);

SHOW:色々確認

テーブルを確認

SHOW TABLES;

カラムを確認

--SHOW COLUMNS FROM データベース名

--例
SHOW COLUMNS FROM users;

SELECT:テーブルからデータを取得する

テーブルから任意の値を抽出する

(カラム名をカンマ区切りにすることで、複数のカラムを指定できる。)

--SELECT カラム名 FROM テーブル名;

--例1
SELECT user_name1 FROM users;

--例2
SELECT * FROM users;
--「* = 全部」の意味

--重複なしで抽出
SELECT DISTINCT user_name FROM users;

WHERE:SELECT文と一緒に使い、絞り込む

-- 基本的な使い方
ーーSELECT カラム名 FROM テーブル名 WHERE カラム名 比較演算子 条件値

-- 40歳のユーザーを抽出
SELECT * FROM users WHERE age = 40;

-- 氏名「日本太郎」をWHERE句を使って抽出
SELECT * FROM users WHERE user_name1  = "日本太郎";

-- 「タロ」を含むユーザーをWHERE句を使って抽出
SELECT * FROM users WHERE user_name2  like '%タロ%';

ORDER BY:SELECT文と一緒に使い、表示順を指定して抽出

-- ORDER BYの基本形
/*
SELECT [取得したい要素]
FROM テーブル名
ORDER BY ソートしたい要素 [昇順・降順の指定(省略時は昇順)];
*/

--例
-- ユーザーテーブルを年齢でソート(昇順)
SELECT * FROM users ORDER BY age;

-- ユーザーテーブルを年齢でソート(降順)
SELECT * FROM users ORDER BY age DESC;

GROUP BY:SELECT文と一緒に使い、グループ分けを行って抽出

-- 基本形
/*
SELECT [取得したい要素]
FROM [使用テーブル]
GROUP BY [グループ化したい要素];
*/

-- 都道府県でグループ分けをしてカウントします。
SELECT pref, count(*) FROM users GROUP BY pref;

UPDATE:データを更新するコマンド

-- 条件と一致する列の値を更新する
--UPDATE テーブル名 SET カラム名 = 値 WHERE 条件式; 

-- id1の都道府県を「埼玉」に更新
UPDATE users SET pref = "埼玉" WHERE id = 1;

-- id2~4の勝ち点を一気に更新
UPDATE acl_group_e SET 
 winning_point =
  case id
   WHEN 2 THEN 8
   WHEN 3 THEN 0
   WHEN 4 THEN 5
  END
WHERE id IN(2,3,4);

INSERT:テーブルに新しいレコードを追加する

-- 基本形
--INSERT INTO テーブル名 (カラム名) VALUES (値); 

--例
INSERT INTO users
 (user_name1,user_name2,birth,age,pref) 
VALUES 
 ("川口 隆介","カワグチ リュウスケ","1989/08/02","29","茨城");

-- 複数のデータをまとめて追加する。
/*
INSERT INTO テーブル名 
 (カラム名) 
VALUES 
 (値),
 (値),
 (値); 
*/

--例
INSERT INTO users 
(user_name1,user_name2,birth,age,pref) 
VALUES 
("岩上 定雄","イワカミ サダオ","1998/1/1",21,"兵庫"),
("若林 莉歩","ワカバヤシ リホ","2002/12/10",16,"埼玉"),
("砂川 勝彦","イサガワ カツヒコ","2008/12/18",10,"鹿児島"),
("浜口 広行","ハマグチ ヒロユキ","1969/6/15",50,"和歌山"); 

ALTER:テーブル構造に変更、追加、削除を行う

-- 基本形
--ALTER TABLE テーブル名 変更操作;

-- カラムを追加する。
--ALTER TABLE テーブル名 ADD (カラム名 データ型) 

-- データ型や制約変更
--ALTER TABLE テーブル名 MODIFY カラム名 データ型

--制約を追加
--ALTER TABLE テーブル名 ADD オプション(NOT NULL/PRIMARY KEYなど) (カラム名)

-- オプション削除(確認方法は別途掲載します。)
--ALTER TABLE テーブル名 DROP INDEX Key_name;

-- カラム削除
--ALTER TABLE テーブル名 DROP COLUMN カラム名

--例
-- 納品日カラムを追加する。
ALTER TABLE products ADD (delivery_date date);

-- 商品コードカラムをint型から文字列に変更
ALTER TABLE products MODIFY product_cd varchar(11);

-- 商品コードカラムにUNIQUE KEY(重複禁止オプション)を追加
ALTER TABLE products ADD UNIQUE KEY (product_cd);

-- 商品コードカラムのUNIQUE KEY(重複禁止オプション)を削除
ALTER TABLE products DROP INDEX product_cd;

-- 最後に追加したカラムを削除
ALTER TABLE products DROP COLUMN delivery_date;

-- product_cdを数値に変更
ALTER TABLE products MODIFY product_cd int(11);

-- テーブル名をfruitsに変更
ALTER TABLE products RENAME to fruits;

DELETE:テーブルやレコード、カラムを削除する

-- 基本形
--DELETE FROM テーブル名 WHERE 条件式; 

--例
-- usersテーブルのレコードを削除
DELETE FROM users WHERE birth = "1969-06-15";

LIMIT:使用するデータベースを指定するコマンド

-- 基本形
--DELETE FROM テーブル名 WHERE 条件 LIMIT 数値

-- ユーザーテーブルで都道府県が埼玉のユーザー2人のうち、1人を削除
DELETE FROM users WHERE pref = "埼玉" LIMIT 1;

TRUNCATE:テーブルの全レコードを削除(ほぼ使わない)

-- 基本形
--TRUNCATE TABLE テーブル名

--例
-- ユーザーテーブルを削除
TRUNCATE TABLE users;

DROP:テーブルを含めて全削除(使わない)

-- 基本形
--DROP TABLE テーブル名

--例
DROP TABLE products;

テーブル結合

INNER JOIN:内部結合

-- 基本形
/*
SELECT カラム名 FROM テーブル名1
  INNER JOIN テーブル名2 
  ON 結合の条件(共通するカラム名=共通するカラム名)
*/

-- 部署コードカラムが共通するので、部署コードカラムを基にemployeesテーブルと、deptsテーブルを結合させます。
SELECT * FROM employees
  INNER JOIN depts
  ON employees.dept_code = depts.dept_code;

OUTER JOIN:外部結合(基本的にLEFT JOINだけでOK)

-- LEFT JOINします。  
SELECT * FROM depts
  LEFT JOIN employees
  ON depts.dept_code = employees.dept_code;

とりまこんな感じで



 

あ、宜しければ・・・。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です