テーブル作成
order_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
customer_id INTEGER,
order_date DATE
);
INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,はMySQLのオートインクリメントキーと一緒(連続した数値をカラムに自動で設定する機能)
テーブルの削除
DROP TABLE テーブル名;
カラム(列)のデータ型変更
ALTER TABLE テーブル名 ALTER COLUMN カラム名 TYPE データ型;
テーブルにカラム(列)を追加
ALTER TABLE テーブル名 ADD COLUMN カラム名 データ型;
テーブルのカラム(列)を削除
ALTER TABLE テーブル名 DROP COLUMN カラム名;
テーブルにデータの追加
INSERT INTO テーブル名(カラム名) VALUES (追加する内容);
例)INSERT INTO threads(content,title,user_id)VALUES ('ないよう','タイトル',3);
複数のカラムを追加するときは、(カラム名,カラム名,カラム名)でカンマで区切る
追加する内容はカラムの内容と同じ順番になるようにする。
複数の情報を追加するときは、(カラム名)VALUES VALUES (追加する内容), (追加する内容) ,(追加する内容);みたいな感じでカンマで区切る。
文字列は。「' '」で囲う。
テーブルのデータを取得する(一部のカラムを取る場合)
SELECT 列1(カラム),列2(カラム名)・・・ from テーブル名;
テーブルのデータを取得する(全ての列を取得したい場合)
SELECT * FROM テーブル名;
テーブルの特定のデータを取得する(WHERE句)
SELECT * FROM テーブル名 WHERE 条件;
テーブルの特定のデータを取得する(ORDER BY句)
SELECT * FROM テーブル名 ORDER BY カラム名 ASC; (昇順)
SELECT * FROM テーブル名 ORDER BY カラム名 DESC; (降順)
クエリの結果セットに返される⾏数を制限する(limit句)
-- 最初の10⾏を返す
SELECT * FROM example_table LIMIT 10;
-- 11⾏⽬から始まる5⾏を返す
SELECT * FROM example_table ORDER BY price DESC;
データを更新する
UPDATE テーブル名 SET カラム名 = 変更する内容;
一括で全部置き換わる
データの変更(条件に一致したデータのみ変更)
UPDATE テーブル名 SET カラム名 = 変更する内容 WHERE 条件式;
データの変更(複数のデータ変更)
UPDATE テーブル名 SET カラム名 = 変更する内容,カラム名 = 変更する内容 WHERE 条件式;
または
UPDATE テーブル名 SET (カラム名,カラム名) =(変更する内容,変更する内容) WHERE 条件式;
データの削除
DELETE FROM テーブル名 WHERE 条件式;
レコード
データベース内のテーブル含まれる1行分のデータ、または関連することの集まり。
統合結合(UNION/UNION ALL)の基本構文
SELECT句
UNION/UNION ALL
SELECT句
統合結合は、2つ以上のSELECTの結果を統合して取得する。「UNION」は、統合した結果で重複したデータをまとめて表示し、「UNION ALL」は、重複したデータもそのまま全て表示する。複数のSELECTクエリの結果を結合して1つの結果セットとして返すための構⽂だから、各SELECTクエリ は同じ数のカラムを持ち、それぞれの対応するカラムが互換性のあるデータ型でないといけない。
内部結合(INNER JOIN)の基本構文
SELECT 項目X,項目a,項目b
FROM テーブルY
INNER JOIN テーブルZ ON テーブルY.項目A = テーブルZ.項目A;
両方のテーブルに一致するレコードのみ取得。(テーブルyの項目aとテーブルzの項目aに一致してるテーブルzの項目x、項目a,項目bを取得)
内部結合LEFT JOIN (LEFT OUTER JOIN)の基本構文
SELECT 項目X,項目a,項目b
FROM テーブルY
LEFT JOIN テーブルZ ON テーブルY.項目A = テーブルZ.項目A;
左側のテーブルのすべてのレコードと、右側のテーブルに⼀致するレコードを取得する。右側に⼀致 するレコードがない場合、NULLが返される。
内部結合RIGHT JOIN (RIGHT OUTER JOIN)の基本構文
SELECT 項目X,項目a,項目b
FROM テーブルY
LEFT JOIN テーブルZ ON テーブルY.項目A = テーブルZ.項目A;
右側のテーブルのすべてのレコードと、左側のテーブルに⼀致するレコードを取得する。左側に⼀致 するレコードがない場合、NULLが返される。
GROUP BY句
SELECT [カラム名]
FROM [テーブル名]
GROUP BY [グループ化したいカラム名、条件];
が基本文。重複しないカラム名を取得する場合は、SELECT name AS 'カラム名' FROM sample01 GROUP BY name;、各カラムのvalue(カラム名)の合計値を取得する場合はSELECT name AS '商品名', SUM(value) FROM sample01 GROUP BY name;等いろんな使い方がある。
HAVING句
SELECT カラム名, COUNT(*) AS count
FROM テーブル名
GROUP BY カラム名
HAVING COUNT(*) 条件(>10とか);
: GROUP BY句でグループ化されたデータに対して条件を指定する
サブクエリ(副問合せ)
SELECT カラム名1, カラム名2
FROM テーブル名
WHERE カラム名3 = (SELECT カラム名3 FROM テーブル名 WHERE カラム名2 = '加藤');
テーブル名のカラム名2が’加藤’であるカラム名3を持つテーブル名のレコードを取得する。