【まとめ】ADO、SQLの書きかたすべて【基本・JOIN結合・使える、使えない構文】
「ADO、SQLの書きかたすべてをここに記す...」

ADOは他のSQLとちがって特殊。ここで覚えておくことを推奨する。

基本の書きかた

SELECT name, AVG(age), birthplace
FROM [data]
WHERE age > 3
GROUP BY name, birthplace
  • SELECT句...ほしい列を設定
  • FROM句...どこから情報をもってくるのか
  • WHERE句...~以上などの条件を設定
  • GROUP BY句...グループ化したい項目を設定

ここからは、それぞれの書きかたについて見ていこう。

SELECT句の書きかた

ほしいデータ列を, + 半角スペースで区切って設定する。

SELECT name, age, birthplace

*はムダなデータまで取得してしまうのでなるべく使わない。

SELECT *

SELECT句にDISTINCTを使うと重複が削除される。

SELECT DISTINCT birthplace

FROM句の書きかた

CSVを設定する場合、[]内にCSVファイル名を拡張子つきで書く。

FROM [file.csv] 

Excelシートを設定する場合、[]内にシート名を書き$を追加する。

FROM [Sheet1$]

Accessの場合、[]内にテーブル名、またはクエリ名を書く。

FROM [people_table]

WHERE句の書きかた

文字列で条件設定する場合、シングルクォーテーション内に文字列を設定する。

WHERE name = '佐藤'

日付で条件設定する場合、シャープ内に日付を設定する。

WHERE date = #2021-01-01#

日付で条件範囲を設定する場合、BETWEEN 日付から AND 日付まで

WHERE date BETWEEN #2021-01-01# AND #2021-05-01#

数字を条件にする場合、数字のみで設定する。

WHERE age > 3

GROUP BY句の書きかた

GROUP BYの左側から優先的にグループ化される。

SELECT birthplace, age
FROM [people]
GROUP BY age, birthplace

COUNT、MAX、MIN、AVG、SUMは、設定していない列をGROUP BYに書く

SELECT birthplace, AVG(age)
FROM [people]
GROUP BY birthplace

関連記事SQLでSELECT句のCOUNTをきわめる【複数の条件指定も可能】

JOINの書きかた

~ JOINで2つのデータを選択し、ONで条件を設定する。

INNER JOINは、2つのON以降のデータ条件と一致したデータのみ抽出

SELECT name, age, [prefecture].town
FROM [people] INNER JOIN [prefecture]
ON [people].birthplace = [prefecture].town

LEFT JOINとRIGHT JOIN

  • LEFT JOIN...左側全データと右側データに一致したデータを抽出
  • RIGHT JOIN...右側全データと左側データに一致したデータを抽出

複数JOIN

複数JOINする場合は、つぎのように。2つ目以降はONの条件に()をつけるだけでOK。

SELECT name, age, [prefecture].town, [school].class_name
FROM ([people] INNER JOIN [prefecture]
ON ([people].birthplace = [prefecture].town))
INNER JOIN [school]
ON ([people].class_id = [school].class_id)

上記のように、INNER JOINだけじゃなくLEFT JOIN、RIGHT JOINも組み合わせてつかうことが可能。

ADO SQLで使える構文

  • TRANSFORM
  • PIVOT

関連記事SQLのTRANSFORMとPIVOTで簡単にクロス集計しようぜ

ADO SQLで使えない構文

  • WITH
  • COUNT(DISTINCT ~)
  • CASE
  • FULL JOIN
  • CONVERT
関連キーワード