Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

SQLの基本的な記述方法 : SQL入門講座



SQLには、基本形と呼ばれるものがあります。この基本形から発展させると記述も楽になります。

SQLの基本形

下記のSQLステートメントは、SQLの基本形です。

SELECT 〜 FROM
SELECT fieldname1,  fieldname2,・・・・
FROM tablename ;
解説
fieldname : 参照するフィールド名
tablename : 参照するテーブル名
事例

「出張管理」テーブルをサンプルデータとして用います。

ID 社員名 出発日 帰社日 目的地 旅費額
2 橘 修平 2004/07/04 2004/07/05 京都支店 \28,400
4 柴田 喜一 2004/07/17 2004/07/21 東京支店 \78,310
1 正道 良一 2004/07/02 2004/07/05 広島支店 \56,720
3 田中 邦子 2004/07/10 2004/07/15 福井支店、石川支店 \98,200

このテーブルを元に選択クエリのSQLステートメントを作成します。

  1. 新規クエリを作成します。
  2. 作成したクエリをデザインビューで開きます。
  3. メニューバーのクエリからSQL、次にパススルーをクリックします。
  4. SQLパススルークエリ が開きます。

  1. これを、複写、貼り付けを行いそのまま利用します。
大文字、小文字は問わず

SQLに記述する句、演算子は大文字、小文字を問いません。例えば、

  • select * from T_テーブル名
  • Select * From T_テーブル名
  • SELETE * FROM T_テーブル名

は、全て同じ働きをします。

テーブル名の省略

FROM句に記述するテーブルが1つだけの場合、SELECT句にはテーブル名を省略できます。つまり、フィールド名だけを記述することで事足ります。

下記のSQLステートメントを省略形に書き換えます。

  • SELECT 出張管理.ID, 出張管理.社員名, 出張管理.出発日, 出張管理.帰社日, 出張管理.目的地, 出張管理.旅費額 FROM 出張管理;

  • SELECT ID, 社員名, 出発日, 帰社日, 目的地, 旅費額 FROM 出張管理;
アスタリスク( * )の使用

FROM句に指定するテーブルの全フィールドを対象にする場合、SELECT句にそれぞれのフィールド名に代えてアスタリスク(*)を用いることができます。

下記のSQLステートメントにアスタリスト(*)を用いて書き換えます。

  • SELECT ID, 社員名, 出発日, 帰社日, 目的地, 旅費額 FROM 出張管理;

  • SELECT * FROM 出張管理;

かなりスッキリした感じになります。

テーブル名とフィールド名をドット( . )で結ぶ

FROM句に複数のテーブルでリレーションを結んだテーブルを指定する場合、SELECT句に指定するフィールドのテーブル名を省略することはできません。

では、事例に用いるサンプルテーブルを変更し、下記のようにリレーションを結んだ「社員マスター」と「出張管理」テーブルを用意します。

社員マスターテーブル
 
社員ID 社員名
0001 橘 修平
0002 柴田 喜一
0003 正道 良一
0004 田中 邦子
出張管理テーブル
 
ID 社員ID 出発日 帰社日
100032004/07/022004/07/05
200012004/07/042004/07/05
300042004/07/102004/07/15
400022004/07/172004/07/21

これらテーブルを元に、選択クエリのSQLステートメントを作成します。

  • SELECT 出張管理.ID, 出張管理.社員ID, 社員マスター.社員名, 出張管理.出発日, 出張管理.帰社日
    FROM 社員マスター INNER JOIN 出張管理 ON 社員マスター.社員ID = 出張管理.社員ID;
ダブルクォーテーション( " )で囲む

プロシージャ内で利用する場合、SQLステートメント全体をダブルクォーテーション( " )で囲む必要がありますみます。

  • "DELETE * FROM 出張管理;"

なお、Where句で文字列を抽出条件とする場合は、文字列自体をシングルクォーテーション( ' )で囲む必要があります。ダブルクォーテーション( " )で囲むことはできませんので注意して下さい。

  • "DELETE * FROM 出張管理 WHERE 社員名 = '田中 邦子';"
複数に分散して記述する - その一

好き好きがありますが、文章は短いほど視認性が高いです。よって、VBA内では長々と続く SQL を分散して記述する方法があります。

事例
Dim mySQL As String
mySQL = "DELETE * FROM 出張管理 WHERE 社員名 = '田中 邦子';"

これを下記のように複数に分散します。

Dim mySQL As String
mySQL = "DELETE * FROM 出張管理 "
mySQL = mySQL & "WHERE 社員名 = '田中 邦子';"
解説
  1. 複数に分けて記述するときは、それぞれのSQL文をダブルクォーション(")で囲む必要があります。
  2. SQLの構文は、半角スペースでそれぞれ繋がっていますので、"DELETE * FROM 出張管理 "のように 出張管理とダブルクォーション(")の間に半角スペースを代入する必要があります。
  3. mySQL = mySQL & ・・・、この構文は左辺のmySQLに、右辺のmySQL("DELETE * FROM 出張管理 ")を代入します。
複数に分散して記述する - その二

アンパサンド(&)、アンダースコア(_) を用いて複数行に分散させることもできます。アンパサンドは、文字列連結の演算子、アンダースコアは行継続文字と呼ばれています。

事例
Dim mySQL As String
mySQL = "DELETE * FROM 出張管理 WHERE 社員名 = '田中 邦子';"

これを下記のように複数に分散します。

Dim mySQL As String
mySQL = "DELETE * FROM 出張管理 " _
        & "WHERE 社員名 = '田中 邦子';"
解説
  1. 複数に分けて記述するときは、それぞれのSQL文をダブルクォーション(")で囲む必要があります。
  2. SQLの構文は、半角スペースでそれぞれ繋がっていますので、"DELETE * FROM 出張管理 "のように 出張管理とダブルクォーション(")の間に半角スペースを代入する必要があります。

2004/08/06

ページの先頭へ 前ページへ戻る

 


SQLの基本的な記述方法 : SQL入門講座


-Microsoft Access Club-

アメリカ合衆国やヨーロッパのデータセンターからcPanelレンタルサーバーをご提供します。お支払いは日本国内の銀行振込で...。1ヵ月契約からOKです。
アメリカ合衆国やヨーロッパからcPanelレンタルサーバー。
お支払いは日本国内の銀行振込。
最短契約期間は1ヵ月契約からOKです。