1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RDB/SQL復習②

Last updated at Posted at 2021-01-30

RDB/SQL復習①からの続きです。

サブクエリ

sample1.sql
①マイケルの得点数を取得する
SELECT goals
FROM players
WHERE name = "マイケル";
sample2.sql
②取得した結果を自分で入力する
SELECT name
FROM players
WHERE goals > 20;

サブクエリを使った場合、以下のようにまとめることができる。

SQL
# サブクエリが実行された後に外側にあるクエリが実行される
SELECT name
FROM players
WHERE goals > (
  SELECT goals
  FROM players
  WHERE name = "マイケル"
);

AS

ASを使うことで、カラム名などに別名を定義できる

SQL
SELECT goals AS "マイケルの得点数"
FROM players
WHERE name = マイケル";

JOIN

複数のテーブルを一つに結合したい時にJOINを使う。
ONで条件を指定して、テーブルAにテーブルBを結合する

SQL
SELECT *
FROM テーブルA
JOIN テーブルB
ON 結合条件;
SQL
SELECT *
FROM players (テーブルA)
JOIN countries (テーブルB)
ON players.country_id = countries.id; (テーブルA.カラム名 = テーブルB.カラム名)

JOINの実行順序

SQL
SELECT * #②結合された後にSELECTが実行される
FROM players 
JOIN countries #①まずは最初にテーブルを結合する
ON players.country_id = countries.id;

複数テーブルでのカラムの指定

SQL
SELECT players.name, countries.name #テーブル名を指定することで取得するカラムを指定できる
FROM players 
JOIN countries 
ON players.country_id = countries.id; 
SQL
SELECT *
FROM players 
JOIN countries 
ON players.country_id = countries.id
WHERE players.name = "マイケル" #WHEREでもテーブル名を指定することで、取得するカラムを指定できる

全体の実行順序

①テーブルの指定 FROM ②テーブルの結合 ON JOIN ③取得条件 WHERE ④グループ化 GROUP BY ⑤関数 COUNT,SUM,AVG,MAX,MIN ⑥HAVING ⑦検索 SELECT,DISCINCT ⑧順序 ORDER BY ⑨LIMIT

LEFT JOIN

LEFT JOINを使うと、FROMで取得したテーブルのレコードを全て取得する。
外部キーがNULLのレコードもNULLのまま、実行結果に表示される。

SQL
SELECT *
FROM players 
LEFT JOIN teams #LEFT JOINを使うと、もととなるテーブルのレコードを全て取得する
ON players.previous_team_id = teams.id;

複数テーブルのJOIN

SQL
# JOINを複数回使用しても、FROMは一度だけ書けばOK
SELECT *
FROM players 
JOIN countries
ON players.country_id = countries.id
LEFT JOIN teams
ON players.previous_team_id = teams.id;

INSERT

テーブルにレコードを挿入したい時、INSERTを使う

SQL
INSERT INTO students (id, name, course)
VALUES (8, "Taro", "Ruby");

AUTO INCREMENT

多くの場合、idカラムにはAUTO INCREMENTという機能が使われる。 AUTO INCREMENTのカラムは省略可能
SQL
#id AUTO INCREMENTであり、省略可能
INSERT INTO students (name, course)
VALUES ("Taro", "Ruby");

UPDATE

UPDATEでデータの更新ができる。複数変更したいカラムがある場合は、コンマで区切る。 WHEREで更新するレコードを指定しないとカラム内の全データが更新されてしまうので、注意!
SQL
UPDATE students
SET name = "Michael", course = "JavaScript"
WHERE id = 5; #更新するレコードをWHEREで指定する

DELETE

DELETEでレコードの削除ができる。 WHEREで削除するレコードを指定しないとテーブル内の全レコードが削除されてしまうので、注意!
SQL
DELETE FROM students
WHERE id = 9; #削除するレコードをWHEREで指定する

CREATE TABLE

SQL
CREATE TABLE テーブル名();

RDB/SQL復習以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?