Structured Query Languageを使用してデータベースとテーブルを作成する準備はできましたか?この記事では、CREATE DATABASEコマンドとCREATE TABLEコマンドを使用して手動でテーブルを作成するプロセスについて説明します。 SQLの初心者であれば、まずいくつかのSQLの基本を見直したいかもしれません。
ビジネス要件
キーボードに座る前に、顧客の要件を確実に理解する必要があります。この洞察を得るための最良の方法は何ですか?もちろん、顧客と話すこと! XYZのHuman Resources Directorと座った後、彼らはウィジェット販売会社であり、営業担当者の情報を追跡することに主に関心があることが分かりました。
XYZ Corporationは、営業担当を東西地域に分けています。それぞれの地域は、個々の営業担当者が担当する多数の地域に分かれています。 HR部門は、各従業員の給与情報と監督構造だけでなく、各従業員がカバーする領域を追跡したいと考えています。これらの要件を満たすために、このページのエンティティリレーションシップダイアグラムに示す3つのテーブルで構成されるデータベースを設計しました。
データベースプラットフォームの選択
私たちは、Structured Query Language(SQL)に基づいて構築されたデータベース管理システム(またはDBMS)を使用することに決めました。したがって、私たちのデータベースとテーブル作成コマンドはすべて、標準のANSI SQLを念頭に置いて記述する必要があります。
さらに、ANSI準拠のSQLを使用することで、OracleおよびMicrosoft SQL Serverを含むSQL標準をサポートするすべてのDBMSでこれらのコマンドが動作するようになります。データベース用のプラットフォームをまだ選択していない場合、データベースソフトウェアオプションは選択プロセスを案内します。
データベースの作成
最初のステップは、データベース自体を作成することです。多くのデータベース管理システムでは、このステップでデータベースパラメータをカスタマイズするための一連のオプションが用意されていますが、データベースでは簡単なデータベースの作成のみが可能です。すべてのコマンドと同様に、DBMSのドキュメントを参照して、特定のシステムでサポートされている高度なパラメータがニーズを満たしているかどうかを判断することもできます。 CREATE DATABASEコマンドを使ってデータベースを設定しましょう:
CREATE DATABASEの担当者
上記の例で使用した大文字小文字に特に注意してください。 "人事"データベース名のようなユーザー定義の名前のすべての小文字を使用している間、 "CREATE"や "DATABASE"などのSQLキーワードにすべての大文字を使用するのは、SQLプログラマの間の一般的な習慣です。これらの規則は、読みやすくするためのものです。 これで、データベースを設計して作成したので、XYZ Corporationの人事データを格納するために使用する3つのテーブルを作成する準備が整いました。 当社の最初の表は、当社の各従業員の個人データで構成されています。各従業員の名前、給与、身分証明書、および管理者を含める必要があります。最後の名前と最初の名前を別々のフィールドに分けて、後でデータの検索と並べ替えを簡単にするのは良い設計方法です。また、各従業員の記録にマネージャの従業員IDへの参照を挿入することによって、各従業員のマネージャを追跡します。最初に、目的の従業員テーブルを見てみましょう。 ReportsTo属性には、各従業員のマネージャIDが格納されます。示されたサンプルレコードから、スー・スクランピはトム・ケンドールとジョン・スミスの両方のマネージャーであると判断できます。ただし、Sueのマネージャのデータベースには、その行にNULLエントリが表示されているため、情報はありません。 これで、SQLを使用して人事データベースにテーブルを作成できます。これを行う前に、USEコマンドを発行して正しいデータベースにいることを確認しましょう。 使用人員;
あるいは、「データベース要員」は、コマンドは同じ機能を実行します。ここで、従業員のテーブルを作成するために使用されるSQLコマンドを見てみましょう。 CREATE TABLEの従業員 (employeeid INTEGER NOT NULL、 lastname VARCHAR(25)NOT NULL、 firstname VARCHAR(25)NOT NULL、 INTEGER NULLを報告する);
上記の例のように、プログラミング規約では、ユーザー名付きの列と表のSQLキーワードと小文字のすべてに大文字を使用するように指示されています。上記のコマンドは最初は混乱しているように見えるかもしれませんが、実際は単純な構造の背後にあります。ここでは、物事を少しはっきりさせる一般化されたビューがあります: CREATE TABLE table_name (attribute_nameデータ型オプション、 …, attribute_nameデータ型オプション); 前の例では、テーブル名はemployeesで、employeeid、lastname、firstname、およびreportstoの4つの属性が含まれています。データ型は、各フィールドに格納する情報の種類を示します。従業員IDは単純な整数であるため、employeeidフィールドとreportstoフィールドの両方にINTEGERデータ型を使用します。従業員の名前は可変長の文字列になります。従業員は25文字よりも長いファーストネームまたはファーストネームを持つことはありません。したがって、これらのフィールドにはVARCHAR(25)型を使用します。 また、CREATEステートメントのoptionsフィールドにNULLまたはNOT NULLを指定することもできます。これはデータベースに行を追加するときにその属性にNULL(または空の)値が許可されているかどうかをデータベースに通知するだけです。この例では、HR部門では、各従業員の従業員IDと完全な名前を格納する必要があります。しかし、すべての従業員がマネージャを持っているわけではありません(CEOは誰にも報告しません!)ので、そのフィールドにNULLエントリを許可します。NULLがデフォルト値であり、このオプションを省略すると、暗黙的に属性のNULL値が許可されることに注意してください。 さて、地域表を見てみましょう。このデータを簡単に見てみると、整数と2つの可変長文字列を格納する必要があるようです。前述の例と同様に、地域IDは25文字以上を消費するとは考えていません。しかし、地域によっては名前が長いものもありますので、その属性の許容長を40文字に拡張します。 対応するSQLを見てみましょう: CREATE TABLEの領域 (territoryid INTEGER NOT NULL、 テリトリ説明VARCHAR(40)NOT NULL、 regionid VARCHAR(25)NOT NULL);
最後に、EmployeeTerritoriesテーブルを使用して従業員と地域の関係を保存します。各従業員および地域の詳細情報は、前の2つの表に格納されています。したがって、このテーブルには2つの整数識別番号を格納するだけで済みます。この情報を拡張する必要がある場合は、データ選択コマンドでJOINを使用して複数のテーブルから情報を取得できます。 このようにデータを格納する方法は、データベースの冗長性を減らし、ストレージドライブ上のスペースを最適に使用できるようにします。 JOINコマンドについては、今後のチュートリアルで詳しく説明します。最終的なテーブルを実装するためのSQLコードは次のとおりです。 CREATE TABLEの採用情報 (employeeid INTEGER NOT NULL、 territoryid INTEGER NOT NULL); 今日特に気に入っているのであれば、データベーステーブルを実装する際の設計要件の1つを「偶然に」省いたことに気づいたかもしれません。 XYZ CorporationのHRディレクターは、データベースに従業員の給与情報を記録するように要請し、作成したデータベーステーブルにこれを提供することを怠りました。 しかし、すべてが失われることはありません。 ALTER TABLEコマンドを使用して、この属性を既存のデータベースに追加することができます。我々は、給与を整数値として保存したい。構文はCREATE TABLEコマンドの構文と非常によく似ています。ここでは次のようになります。 ALTER TABLEの従業員 ADD salary INTEGER NULL;
この属性にNULL値が許可されていることに注意してください。ほとんどの場合、既存のテーブルに列を追加するときにオプションはありません。これは、表にすでにこの属性のエントリのない行が含まれているためです。したがって、DBMSは空白を埋めるためにNULL値を自動的に挿入します。 最初のテーブルを作成する
属性とデータ型
NULL値
残りのテーブルの作成
メカニズムSQLは、作成後のデータベースの構造を変更するためのものです




