##サブクエリ
クエリの中に他のクエリを入れることができることで、2つ以上のクエリを1つにまとめることができる。これにより複雑なデータを取得することができる。
-# 平均得点数より高いレコードからデータを取得している。
SELECT name,goals
FROM players
WHERE goals > (
SELECT AVG(goals)
FROM players
);
##AS
カラム名などに別名を定義することができる。
-# カラム名が身長180cm以上の選手と表示され、180cm以上のデータを取得している。
SELECT name AS "身長180cm以上の選手"
FROM players
WHERE height >= 180;
##JOIN
複数のテーブルを1つに結合したい時に使用。ONで条件を指定して、1つのテーブルとしてデータを取得する。
-# playersテーブルとcountriesデーブルを結合し、NULL以外のデータを取得。
SELECT *
FROM players
JOIN countries
ON players.country_id = countries.id;
##LEFT JOIN
テーブルのレコードを全て取得する。外部キーがNULLのレコードもNULLのまま実行結果に表示する。
-# playersテーブルとcountriesデーブルを結合し、NULLを含めたデータを取得。
SELECT *
FROM players
LEFT JOIN teams
ON players.previous_team_id = teams.id;
##複数テーブルのJOIN
JOINを複数書くことで、複数のテーブルをつなげることができる。
-# playersテーブルと、countriesテーブルと、teamsテーブルをつなげている。
SELECT *
FROM players
JOIN countries
ON players.country_id = countries.id
LEFT JOIN teams
ON teams.id = players.previous_team_id;
##INSERT
テーブルにレコードを挿入したい時に使用。多くの場合、IDカラムにはAUTO INCREMENTという機能があり、データが作成される時に自動で値が割り当てられる。
-# studentsテーブルにnameがKate, courseがJavaのデータを追加する。
INSERT INTO students (name, course)
VALUES ("Kate", "Java");
select * from students;
##UPDATE
データを更新したい時に使用。複数変更したいカラムがある場合、コンマ(,)で区切る。WHEREで更新するレコードを指定しないとカラム内の全データが更新される。
-# studentsテーブルのIDが6のデータにnameがJordan, courseがHTMLのデータを更新する。
UPDATE students
SET name = "Jordan", course = "HTML"
WHERE id = 6;
SELECT * FROM students WHERE id=6;
##DELETE
レコードを削除するときはDELETEを使用。WHEREでレコードを指定しないとテーブル内の全レコードが削除される。
-# studentsテーブルのIDが7のデータを削除する
DELETE FROM students
WHERE id = 7;
SELECT * FROM students;