初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

中級者のためのExcel エクセルマクロVBA:Accessデータベースとつなぐその5(SQLについて)

SQLはほぼただの誰でもわかる単語でできた英語


です。今回はちょっと登録フォームとかそういうのをやる前にSQLについて書いておきたいと思います。前回でも少しだけ出ましたが、データベースから必要なデータを検索したり、データベースにデータを登録したり、更新したり、削除したりするためにできた命令言語を「SQL」と呼んでいます。略語なんですが、別に何の略かは覚えなくてもいいっす。


SQLはほぼ、簡単な単語で出来た英語です。しかもわかりやすいです。例えば、検索ならば、SELECT句を使いますが、これも「選ぶ」ですよね?データベースからデータを選ぶからSELECTです。登録ならばINSERTです。データを「挿入」ですね。それに更新するならUPDATEですし、削除ならDELETEです。そのままです。

後は、どのテーブル(表)から?というのをFROM句で指定します。そのままですよねw「~から」でFROM句です。


( ゚д゚)ソノママやんけ!


ツッコミをもらいそうですが、事実SQLってそんなもんです。はい。

後は、例えばidが13のものを検索したいとか、検索の条件がありますよね?これはWHERE句で指定します。

ですので、基本の検索ならば、

SELECT

FROM

WHERE

という順番で書けばOKです。

SQLはほぼ共通言語

Accessに限らずデータベースからデータを取り出すには必ずSQLを利用します。ソフトによって若干の違いはありますが、基本的なところは全く同じと言っていいほどです。
ですので、1度覚えれば後はずっとそのまま使えますのでこれを機会に簡単なものはとりあえず覚えてしまいましょう。

検索(SELECT)


簡単なところから、検索です。検索はSELECT~FROM~WHEREと書いて行きます。表から特定の列を検索する時に利用します。もちろんすべての列を検索することもできますし、検索の順番(ソート)も指定できます。基本は以下になります。

SELECT 列名1, 列名2, ・・・・ // ※すべての場合は*でも

FROM 表名

WHERE 条件

ORDER BY 列名 // ソートする列


例えば、商品のテーブルから400円以上の商品を価格の降順で検索したい場合は・・・

SELECT id, product_name, price
FROM Product
WHERE price >= 400
ORDER BY price DESC

となります。一応すべての列ですが、このように全部書いてもいいです。条件はこのように不等号やイコールなどで、条件を指定します。他にも条件の指定の方法は色々とありますが、それはおいおい覚えておきましょう。まずはこの基本形をしっかり理解してください。ORDER BYの後に列名を指定するとその列名の値でソートします。「DESC」は降順で。という意味です。昇順の場合は何も指定しなければそのまま昇順になります。ORDER BYやWHEREは任意です。指定したいときにだけ書けばいいのです。

いかがでしょうか?以外とわかりやすくないですか?

列を選んで「SELECT」どの表からを指定して「FROM」条件を指定して「WHERE」並び順を指定する「ORDER BY」だけです。

このようにSQLは意外とシンプルに出来ています。何も難しいことはありません。

登録(INSERT)


では、登録です。これも意外とシンプルです。

INSERT INTO 表名(列名1 [,列名2...]) 

VALUES(値1[,値2...])

データを挿入するには、どの表のどの列に、何の値を?という情報をSQLで書かなければいけないですよね?そのための書式が、このようになっているだけです。同じように商品テーブルにデータを追加してみます。

INSERT INTO Product(id, product_name, price)
VALUES('PB013', '商品AA', 587)

これでOKです。どうでしょう?これもなかなかシンプルではないでしょうか?表と列名と挿入するデータ(値)を書くだけです。

更新(UPDATE)


更新はもっと簡単です。これもどの表のどの列を?どの値で?更新するか?を書くだけです。後はどの行を?というのをWHERE句で指定します。

UPDATE 表名 SET 列名1=値[, 列名2=値・・・]
[WHERE]


例えば先ほど挿入した商品AAの行の価格を587から987に変更したい場合は・・・

UPDATE Product SET price = 987
WHERE id = 'PB013'

となるわけです。

削除(DELETE)


これで最後です。DELETEはさらにシンプルで、消したい表とどの行かがわかればそれでOKです。ですので、、、

DELETE FROM 表名
[WHERE]

これだけ。WHEREで条件を指定しなければその表のすべての行が削除されます。先ほどのPB013の商品を削除するなら

DELETE FROM Product
WHERE id ='PB013'


となります。


いかがでしょうか?ここですべてのSQLについて全部紹介するのはかなり無理なので、それはしませんがぶっちゃけこれだけ覚えておけばほとんど、問題なかったりもします。後は表と表をくっつけて検索する結合くらいですが、それはやりながら覚えましょう。


後は、このSQLVBAを駆使して、AccessExcelをつないでかっこいいシステムを作り上げましょう!


今日はここまで!

かしこ