はじめに
このチュートリアルの目的は、独自のSQLステートメントを記述し、Microsoft Access 2007、2010、2013、2016、または2019内から実行する方法を示すことです(手順はすべてのバージョンで実質的に同じです)。すべてのリレーショナルデータベースと同様に、MicrosoftAccessはStructuredQuery Language(SQL)を使用して直接プログラムできます。ほとんどの場合、SQLはユーザーから隠されていますが、データベースの学生にとって、MS Accessは、SQLを探索し、かなり複雑なクエリを作成するための迅速で簡単な方法を提供します。これは、SQL Server、Oracle、MySQL、またはその他の大規模なリレーショナルデータベース管理システムをインストールする時間や忍耐力がない場合に特に便利です。
この簡単なチュートリアルで使用されるSQLの例は、Microsoft Access 2007、2010、および2013チュートリアルの一部として作成された単純なCustomerテーブルとAccountsテーブルに基づいています。
最初にそのチュートリアル(または少なくとも最初のチュートリアル)を実行することをお勧めします。いくつかのセクション)テーブルを作成し、これらの例を機能させるために必要なデータを追加します。
次のセクションでは、構造化照会言語(SQL)について簡単に紹介します。
構造化照会言語(SQL)
構造化照会言語(SQLは「Sequel」と発音)は、リレーショナルデータベース管理システム(RDBMS)を操作するために使用される宣言的プログラミング言語です。これは、1970年代後半にIBMのSystemRで最初に導入されました。現在、SQLは、Oracle、IBM DB2、Informix、Sybase、Microsoft SQL Server、MySQL、Postgres、SQLLite、MicrosoftAccessなどのすべての主要なリレーショナルDBMSで使用されています。各データベースベンダーは、いくつかの独自機能を追加して提供していますが、SQLのコアは、ほぼすべてのリレーショナルデータベースで使用できます。
構造化クエリ言語は、2つの主要な部分に分かれています。
- データ定義言語(DDL)–データベースを保護するために、スキーマ、テーブル、インデックス、クラスター、シーケンスなどのデータ構造を作成(定義)するために使用されます
- データ操作言語(DML)–テーブルからのデータの挿入、取得、更新、および削除に使用されます。
Microsoft Accessは、SQLのDDL部分とDML部分の両方をサポートしています。ほとんどの場合、SQLSELECTステートメントとして既存のデータベースからデータを取得するために使用されるSQLクエリに焦点を当てています。 SQLSELECTステートメントの基本的な構文は次のとおりです。
SELECT column1, column2, ... columnN FROM tableA, tableB, ... tableZ WHERE condition1, condition2, ...conditionM ORDER BY column1, column2, ... columnN
したがって、たとえば、FirstName、LastName、StreetAddress、City、state、Zipなどの列を持つCustomerという名前のテーブルがあるとすると、次のようなSQLSELECTステートメントを記述できます。
SELECT FirstName, LastName, City, State FROM customer
上記のクエリでは、FirstName、LastName、City、Stateの各列のデータのみを要求しており、このデータを取得するテーブルはcustomerと呼ばれます。 SQL言語は大文字や小文字を気にしないことに注意してください。したがって、 select firstName ...と書く SELECT FIRSTNAME ...と書くのと同じです 。
もう少し洗練されたクエリは、ジョージア州に住む顧客のみを表示し、結果を顧客の名前で並べ替える場合です。
SELECT FirstName, LastName, City, State FROM customer WHERE state = 'GA' ORDER BY LastName
ご覧のとおり、表示する列のリストはSELECTキーワードの後に続きます。クエリしているテーブルの名前は、FROMキーワード、条件 state ='GA'の後に続きます。 WHEREキーワードの後に続き、最後に、ORDERBYキーワードで説明されているように結果がLastName列で並べ替えられます。
SQL SELECTステートメントには、複数のテーブルを「結合」してクエリを実行したり、レコードのコレクションをグループ化して合計、最大、最小、または平均値を検索したり、ユーザーが最終的に表示する出力に対して他の操作を実行したりする機能があります。 SQLの機能に関するより包括的な議論は、このリンクにあります。
次のセクションでは、MSAccessのクエリデザインビューからSQLを使用する方法を紹介します。
MicrosoftAccessのSQL
このセクションでは、MSAccessで独自のSQLを作成する手順を説明します。この演習では、「銀行」データベース(顧客テーブルとアカウントテーブル)を開いた状態でMS Access 2007、2010、または2013を実行していることを前提としています。このデータベースを作成する手順のチュートリアルについては、ここをクリックしてください。
開始するには:
- 作成をクリックして新しいクエリを作成します タブをクリックし、クエリデザインをクリックします。 以下に示すアイコン。
- 「テーブルの表示」ダイアログボックスが次のように表示されます。 閉じるをクリックします ボタンを押して閉じます。
- [デザイン]タブをクリックします 次に、 SQLをクリックします。 左側のアイコン(または表示ボタンをプルダウンして SQL を選択します)
- この時点で、Query1クエリのSQLビューが表示されます。デフォルトでは、SELECTキーワードがウィンドウに表示されます。
- クエリを編集して完全なSQLステートメントを書き出します:
SELECT firstname, lastname FROM customer ORDER BY lastname
SQLビューのクエリウィンドウは次のように表示されます。
- この時点で、SQLステートメントを入力すると、感嘆符の[実行]ボタンをクリックしてデータベースに対してクエリを実行できます。
- クエリの結果は、データシートビュー(スプレッドシートなど)に表示されます。
- SQLクエリの編集に戻るには、[表示]メニューをプルダウンして、もう一度[SQL]を選択します。
- クエリを保存することもできます。これを行うには、現在のクエリ名でタブを右クリックします: Query1 保存を選択します 。
クエリの新しい名前の入力を求めるダイアログボックスが表示されます。次のような新しい名前を入力します: Customer_Names 次に、[ OK]をクリックします 保存します。
- 最後に、MS Accessは、クエリを新しい名前で保存する方法(「名前を付けて保存」)を提供していません。代わりに、クエリの名前を強調表示し、右クリックしてコピーを選択します。 次に、もう一度右クリックして、[貼り付け]を選択します 。次に、クエリの新しい名前の入力を求められます。
次に、SQLクエリの記述とデバッグに関するいくつかの秘訣とヒントを紹介します。
MSAccessでのSQLクエリの記述とデバッグ
SQLクエリの記述と実行の基本的な仕組みがわかったので、SQLをデバッグするためのヒントとコツをいくつか紹介します。
MSAccessSQLのエディター
MS AccessのSQLエディタウィンドウは、それほどインテリジェントで操作しやすいわけではありません。 SQLを操作する1つの方法は、別のエディターでコードを記述し、コードをコピーしてAccessに貼り付けて実行することです。利用可能な多くの異なるテキストエディタがあります。たとえば、Windows内では、アクセサリグループの下でメモ帳を利用できます。ここで私が与えることができる唯一の警告は、SQLを書くためにMSワードまたは他のワードプロセッシングソフトウェアを使用しないことです。この理由は、MS Wordやその他のワードプロセッサが、一重引用符と二重引用符をSQLが理解できない「派手な引用符」に変換するためです。
たとえば、 WHERE state ='GA'などのWHERE句がある場合
SQLは、テキストが単純な引用符で囲まれていることを想定しています。 MS Wordは、それらをSQLが理解できない派手な開始と終了の引用符文字に変換します。
「GA」のパラメータ値を入力などのエラーを受け取った場合 次に、テキストが一重引用符で囲まれていることを確認する必要があります。
構文エラーへの対処
多くの場合、データベースはコードのどこに問題があるのかを正確に特定できないため、SQLでは構文エラーが非常にイライラする可能性があります。 Accessが表示する主なエラーには次のものがあります。
________のパラメータ値を入力 | ほとんどの場合、これは、列(フィールド)の名前が正しく入力されていない場合(この場合は「lstname」のつづりが間違っている場合など)、または式で入力できない場合に発生します。 WHERE state =`GA'のように認識されます | |
MicrosoftAccessデータベースエンジンが入力クエリまたはテーブルを見つけることができません:______________ | これは、ほとんどの場合、クエリのFROM句にテーブルの名前が正しく入力されていない場合に発生します。たとえば、この場合、クエリは FROM Customers を指定しました FROMのお客様の代わりに | |
クエリ式の構文エラー(演算子がありません):______________ | この場合、クエリの構文にいくつかの重要な部分がありません。たとえば、「FROM」句がないため、Accessはクエリのテキストを表示して、問題が発生したおおよその場所を報告します。 |
次のセクションでは、プロジェクトまたは宿題のSQLクエリと結果を表示する方法に関する追加のヒントをいくつか紹介します。
SQL作業の文書化
このセクションでは、クエリと結果をフォーマットして、割り当てとプロジェクトで明確かつ簡潔に表示されるようにするためのヒントをいくつか説明します。
ここでの前提は、次のようなワードプロセッシングプログラムを使用することです。写真やテキストのコピーと貼り付けをサポートするMSWordまたはその他のワードプロセッシングプログラム。
MS Accessでは、SQLコードにコメントを入れることはできません。他のDBMSはこれを許可しますが、Accessはもう少し制限があります。
この演習では、宿題の質問がすべての顧客の名前と名前を表示し、結果を顧客の名前で注文することであると想定します。
- 前のセクションで説明したようにSQLクエリを入力し、それを実行して結果を取得します。
- データセットビューで、列見出しの左側と行選択ボックスの上部にある小さな四角いボックスをクリックします。これにより、結果のセット全体が強調表示されます。
- 隅にある同じ小さな四角いボックスを右クリックして、[コピー]を選択します。 ポップアップメニューから。
- MS Word(または他のワードプロセッシングプログラム)に切り替えて、結果を適切な場所に貼り付けます。
この課題文書を作成する際にも従ったその他の役立つヒント:
- 解決しようとしている質問を説明する全文を必ず入力してください(「質問1」だけを入力しないでください)。たとえば、宿題から質問をコピーして、それを回答の一部にしたい場合があります。
- クエリのSQLテキストを貼り付けるときは、Courier Newフォントを使用して、文字と間隔が揃うようにします。これにより、読みやすくなります。
- スクリーンショットを使用する代わりに、上記の手法を使用して結果を貼り付けます。これにより、Word文書ファイルが小さくなるだけでなく、印刷したときに非常に鮮明になります。
- 必ず、名前、クラス/コース、セクションを課題に記入してください。
- サブクエリまたはインラインクエリを含む可能性のあるより複雑なクエリの場合、読みやすくデバッグしやすいように、サブクエリをインデントして並べるのが最適です。たとえば、次のようなサブクエリを作成する代わりに、
SELECT accountnumber, balance FROM accounts WHERE balance = (SELECT MIN(balance) from accounts)
サブクエリを括弧に沿って並べます:
SELECT accountnumber, balance FROM accounts WHERE balance = ( SELECT MIN(balance) FROM accounts )
これらの手順に従うと、課題やプロジェクトを提出するときに素晴らしい印象を与えるでしょう。
結論
この簡単なチュートリアルでは、MSAccessを使用してSQLを操作する方法について説明しました。 SQLはかなり一般的なプログラミング言語であり、MSアクセスでSQLを記述しているときに学んだことは、SQL Server、Oracle、Sybaseなどの他のリレーショナルデータベースに簡単に転送できます。SQLの詳細については、構造化照会言語(SQL)にアクセスしてください。コースノートページ。
より入門的で高度なMSAccessチュートリアルについては、私のWebサイトのAccessカテゴリにアクセスしてください。