|
CONTENTS |
| |
●はじめに
●当マガジンの内容・方針
●記事のサンプル
●あとがき |
◆ご購読をご検討くださいまして、誠にありがとうございます。少しでもお役に立てる記事を配信できるようにがんばります。よろしくお願いいたします。
◆創刊準備号では当マガジンの内容と方針、および、記事のサンプルをご覧ください。
◆当マガジンは有料となっております。この創刊準備号をよくお読みになり内容などにご納得の上、ご登録をお願いいたします。
◆ただし、ご登録いただいても最初の一ヶ月間は無料となっております。是非、お試しください。
◆当サイトでは有料メールマガジン「覚えなくても理屈でわかる!ACCESSクエリ&SQL活用術」も発行しております。
内容はACCESSのデータ活用法をSQLから解説してあります。是非、合わせてご購読ください。
◆当マガジンは、2002年12月6日より発行してまいりました無料版「SQLは覚えなくても理屈でわかる!」をグレードアップしたマガジンです!
◆読者の皆様のおかげを持ちまして、無料版「SQLは覚えなくても理屈でわかる!」は、まもなく発行から1年がたちます。そして、この間、2600名以上の方にご登録いただきました。
◆当マガジンはSQLの知識が必要なデータベースソフトの初級・中級ユーザを対象とし、SQLの基礎から応用までをカバーするものです。SQLといってもデータベースソフトによって異なる部分があることから、説明はISOで標準化されたSQL92に準拠します。
◆当マガジンは「覚えるよりも理屈でわかること」を目指します。それは、ただ単に暗記しただけでは応用ができないからです。応用できないのでは、ビジネスでも学校でも意味がありません。
◆ACCESSのような「ビジュアルな」RDBMSもSQLを理解していないと本当に使いこなすことはできません。
◆無料版の読者の皆様からのご質問等からわかりにくかったところや舌足らずだった部分、冗長すぎた所を改めます。
◆HTML化することで図を盛り込んでいきます。さらにわかりやすいビジュアルなSQL解説を目指します。
特典
ご購読期間中はe-learning-club.comオリジナルの160以上の事例を集めた「ACCESSクエリ&SQL活用事例集」(200円/週)も無料でご利用いただける特典がつきます。合わせてご活用ください。
◆以下のような章立てで進んでいく予定です。
■第一章 リレーショナルデータベース概論
◆SQLを学習する前に、リレーショナルデータベースの基本を説明します。
■第二章 SQLの概要
◆SQL全体を俯瞰し、第三章以下の学習内容の概略を説明します。
■第三章 データ操作言語(DML: Data Manipulation Language)
◆SQLを使ったデータの活用方法(検索・抽出、加工・集計、出力を説明します。
◆SQLを使ったデータのメンテナンス方法(入力、更新、削除)を説明します。
■第四章 データ定義言語(DDL: Data Definition Language)
◆データベースの設計や構造の変更に関するSQL文を説明します。
■第五章 データ管理言語(DCL: Data Control Language)
◆データベースの整合性維持や機密保持に関するSQL文を説明します。
|
注意:
以下はサンプルなので実際の記事とは異なります。これから、内容や説明方法、レイアウトなどの改良を行ってまいりますので、実際の発行のときには
スタイルや説明方法が変わることがあることをご了承ください。
|
■リレーショナルモデルの検索体系について■
◆SQLが基礎としているリレーショナルデータモデルでは、次の二つのデータ検索体系が提案されており、両者とも同じ検索能力をもつことがわかっています。言い換えるとこれを超える検索体系はないわけです。
■リレーショナル代数
■リレーショナル論理
◆したがってRDBMSの言語として、SQLもこれらと同等の検索能力を持つように設計されています。
◆当マガジンでは、これら二つの検索体系のうちリレーショナル代数と比較しながらSQLの検索・抽出機能を説明していきます。
■リレーショナル代数について■
◆リレーショナル代数は、数学的な代数演算を、リレーションに対して行い、演算の結果としてリレーションを得るものです。
◆リレーションは集合ですから、タプルの重複は演算結果としても許されません。(SQLでは演算結果の行の重複を利用できるようになっています。)
◆リレーショナル代数は大きく二つに分類できます。まず、集合一般に共通である「集合演算」です。これは、集合の性質をもったものには全てに適用することができるものです。もう一つが、リレーショナルデータベースのためにつくられた「関係演算」です。
■集合演算と関係演算■
◆集合演算は集合一般で定義される基本的な演算(操作)です。二つの集合を足して一つの集合をつくったり、二つの集合の共通でない部分や共通部分を求めたりするものです。リレーションをタプルの集合として扱いこの演算を当てはめます。以下の四つの種類があります。
■和集合演算
■差集合演算
■共通集合演算
■直積演算
◆関係演算はリレーショナルデータベースのために作られた演算です。タプルの属性に注目した演算(操作)です。ある属性のみをリレーションから切りとったり、属性値に注目してタプルを選択したり比較したりします。以下の四つの種類があります。
■射影演算
■選択演算
■結合演算
■商演算
◆これら8種類の演算は全てが独立ではありません。つまり、他の演算を使うことで表現できるものも含まれています。結論からいえば、このうち5つ(和集合、差集合、直積、射影、選択演算)は独立で、残りの三つは、この五つがあれば、組み合わせることで表現できます。
(したがって、リレーショナル代数と同等の検索能力を持つためにはこの五つの検索機能をもてば必要かつ十分ということになります。)
◆今回は、共通集合演算について説明します。
■リレーショナル代数の共通集合演算■
◆共通集合演算は、二つの和両立なリレーションから共通するタプルを取り出してリレーションを構成する演算です。
◆テーブルAとテーブルBの共通集合は和集合と差集合演算(ここではマイナス記号で表してあります)を使って次のように表現できます。図で表現すると次の様になります。
(共通集合)
=(テーブルA)−{(テーブルAとテーブルBの和集合)−
(テーブルB)}

◆共通集合演算の結果もリレーションであり、重複するデータは除かれます。
■SQLでの共通集合演算を表現■
EXCEPTとUNIONを使う方法
◆上記のように共通集合演算は、和集合と差集合演算に分解できます。したがって、この式をUNIONとEXCEPTを使って書き換えれば共通集合演算をSQLで表現することとなります。全体でひとつのSQL文ですので、セミコロン(;)を最後につけることを忘れないでください。
SELECT * FROM テーブルA
EXCEPT
((SELECT * FROM テーブルA UNION SELECT * FROM テーブルB)
EXCEPT
SELECT * FROM テーブルB);
INTERSECTを使う方法
◆これで、問題はありませんが、SQLではもっと簡潔に表現できる集合演算子INTERSECTが用意されています。基本構文は次のようになります。こちらも、セミコロン(;)を最後につけることを忘れないでください。
SELECT * FROM テーブルA
INTERSECT
SELECT * FROM テーブルB;
◆UNIONやEXCEPTを使う場合と同様にRDBMSは、まずそれぞれのSELECT文でテーブルよりデータを抽出し、その結果からINTERSECTによって共通集合演算を行い最終的な結果を出力します。元のテーブルそのものの共通な行を抽出するのではないので注意してください。UNIONやEXCEPT同様SELECT句で指定する列は対応する列同士同じ順番で指定する必要があります。気をつけてください。
◆INTERSECTもUNIONやEXCEPTと同じく結果から重複を省きます。
◆次の例をみてください。テーブル「顧客」には列「都道府県」があり、データとして東京が3件、神奈川が1件、大阪が1件、テーブル「取引先」には東京が2件、神奈川が2件のデータがあります。次のSQL文の結果はどうなるでしょうか?
SELECT 都道府県 FROM 顧客
INTERSECT
SELECT 都道府県 FROM 取引先;

◆この例では、東京2件、神奈川が1件が共通しています。しかし、重複は省かれるので、結果は、東京が1件、神奈川が1件出力されます。
INTERSECT ALLについて
◆重複する行も個別に扱いたい場合にはEXCEPTと同様にALLを使います。重複する行も個別と考えるので、東京2件と神奈川1件が出力されます。
SELECT 都道府県 FROM 東京大阪
INTERSECT ALL
SELECT 都道府県 FROM 大阪神奈川;
|
これは、サンプルなので、これ以上は本編をお待ちください。
|
■■■■■■■■
■あとがき
■
◆無料版の第1号発行から約1年たちました。今回は、有料版ということで緊張しています。読者の皆様がご満足いただける記事をお送りできるようにがんばります。
◆無料版を発行しながら、こんな説明が必要だったとか、表現が悪かったなどの反省ばかりでした。今回は、一年間の経験を活かしてよりわかりやすく、使えるSQLのテキストを目指します。
◆ビジュアルなインターフェースを持つACCESSなどは、誰でも使えると思われがちですが、基礎理論や基礎スキルをある程度は学習しないと提供されている機能の意味が
理解できません。しかし、マニュアルや解説本には基礎理論についてほとんど説明がないため、初心者にはいつまでも謎が残ってしまいがちです。
◆謎が解けないと、いつまでたっても自分で操作を組み立てる応用力がつきません。
◆当マガジンではその謎解きを少しでもお手伝いできればと考えています。よろしくお願いいたします。
---------------------------------------------------------------▲▲▲
=====================================================================
■注意事項
当マガジンの内容の利用については読者の皆様の責任においてなさってください。
万一、損害を被った場合でも当マガジンは一切の責任を負いかねます。
当マガジンの記載の内容に関して引用、転載の際には必ず事前にご連絡いただき、当方の許可を得てから行ってくださるよう
お願い申し上げます。
登録・解約につきましては
◆http://www.e-learning-club.com/Course_SQL Premium/intromm.htm
からいつでも行うことができます。
ただし、メールマガジン配信の仕組みから当方では本人確認ができないため、登録・解除につきましては
読者の皆様ご自身で行ってくださるようお願いいたします。また、登録・解除に関する一切のお問合せについては
受け付けておりませんのでご了承ください。
---------------------------------------------------------------------
|