ホームページ  >  記事  >  データベース  >  SQL データ操作の基礎 (初級) 4

SQL データ操作の基礎 (初級) 4

黄舟
黄舟オリジナル
2016-12-17 14:31:06888ブラウズ

SQL を使用して新しいテーブルを作成します

注:

まだ独自のデータベースを設定していない場合は、第 3 章に戻ってこのライブラリを作成してください。 master、tempdb、またはその他のシステム データベースにデータを追加しないでください。

SQLより (タスクバーの) サーバー プログラム グループで ISQL/w プログラムを起動します。クエリ ウィンドウが表示されたら、ウィンドウの上部にあるドロップダウン リストから第 3 章で作成したデータベースを選択します。次に、クエリ ウィンドウに次の SQL ステートメントを入力し、[クエリの実行] ボタンをクリックしてこのステートメントを実行します:

CREATE TABLE ゲストブック (訪問者 VARCHAR(40)、コメント TEXT、エントリ日付

DATETIME)

すべてが正常であれば、結果ウィンドウに次のテキストが表示されます (例外が発生した場合は、第 3 章を参照してください):

This コマンド dit はデータを返さず、行も返されませんでした

おめでとうございます。最初のテーブルが作成されました。

作成したテーブルはゲストブックと呼ばれ、このテーブルを使用してサイトの訪問者に関する情報を保存できます。リートを使っていますか TABLE ステートメントによって作成されるテーブルには 2 つの部分があります。最初の部分はテーブルの名前を指定し、2 番目の部分はカンマで区切られた括弧で囲まれた各フィールドの名前と属性です。

ゲストブック テーブルには 3 つのフィールドがあります: 訪問者、コメント そして入社日。訪問者フィールドには訪問者の名前が保存され、コメント フィールドにはサイトに対する訪問者の意見が保存され、entrydate フィールドには訪問者がサイトを訪問した日時が保存されます。

各フィールド名の後には特別な式が続くことに注意してください。たとえば、フィールド名 comments の後に式 TEXT が続きます。この式はフィールドのデータ型を指定します。データ型によって、フィールドに格納できるデータの種類が決まります。フィールドのコメントにはテキスト情報が含まれるため、そのデータ型はテキストとして定義されます。

フィールドにはさまざまなデータ型があります。次のセクションでは、SQL でサポートされるいくつかの重要なデータ型について説明します。

フィールド タイプ

異なるフィールド タイプは、異なるタイプのデータを保存するために使用されます。テーブルを作成および使用するときは、一般的に使用される 5 つのフィールド タイプ (文字、テキスト、数値、論理、日付) を理解する必要があります。

キャラクターデータ

キャラクターデータはとても便利です。短い文字列情報を保存する必要がある場合は、常に文字データを使用します。たとえば、HTML を使用できます。 フォームのテキストボックスに収集された情報が文字フィールドに配置されます。

可変長の文字列情報を保存するフィールドを作成するには、式を使用できます VARCHAR。前に作成したゲストブック テーブルについて考えてみましょう:

CREATE TABLE guestbook (visitor VARCHAR(40),コメント TEXT,エントリ日付

DATETIME)

この例では、フィールド訪問者のデータ型は VARCHAR です。データ型の後に続く括弧内の数字に注意してください。この数値は、このフィールドに保存できる文字列の最大長を指定します。この例では、訪問者フィールドに最大 40 文字の文字列を保存できます。名前が長すぎる場合、文字列は 40 文字に切り詰められます。

VARCHAR 型は、最大 255 文字の文字列を格納できます。長い文字列データを保存するには、テキスト データを使用できます (次のセクションで説明します)。

別のタイプの文字データは、固定長の文字データを格納するために使用されます。このデータ型を使用した例を次に示します:

CREATE TABLE ゲストブック (訪問者 CHAR(40)、コメント TEXT、エントリ日

DATETIME)

この例では、フィールド ビジターを使用して 40 文字の固定長文字列を保存します。式 CHAR は、このフィールドが固定長文字列であることを指定します。

VARCHAR データと CHAR データの違いは微妙ですが、非常に重要です。長さ 40 文字の VARCHAR フィールドにデータ Bill を入力するとします。 ゲイツ。後でこのフィールドからこのデータを取得する場合、取得するデータの長さは 10 文字 (文字列 Bill) になります。 ゲートの長さ。

ここで、CHAR フィールドに 40 文字の長さの文字列を入力すると、データを取得すると、取得されるデータの長さは 40 文字になります。文字列の末尾に余分なスペースが追加されます。

独自のサイトを構築するときは、CHAR フィールドよりも VARCHAR フィールドを使用した方がはるかに便利であることがわかります。 VARCHAR フィールドを使用する場合、データ内の余分なスペースをトリミングすることを心配する必要はありません。

VARCHAR フィールドのもう 1 つの顕著な利点は、CHAR フィールドよりもメモリとハードディスクの占有スペースが少ないことです。データベースが大きい場合、このメモリとディスク領域の節約が非常に重要になります。

テキスト データ

文字データは、文字列の長さを 255 文字以下に制限します。テキスト データの場合は、20 億文字を超える文字列を保存できます。大きな文字列を保存する必要がある場合は、テキスト データを使用する必要があります。

テキスト データの使用例を次に示します:

CREATE TABLE ゲストブック (訪問者 VARCHAR(40)、コメント TEXT、エントリ日付

日時)

この例では、コメント フィールドは、サイトに関する訪問者の意見を保存するために使用されます。前のセクションで説明した文字データには長さがあるのに対し、テキスト データには長さがないことに注意してください。通常、テキスト フィールドのデータは空であるか、非常に大きいデータです。

HTMLから移動する場合 フォームの複数行のテキスト編集ボックス (TEXTAREA) でデータを収集する場合は、収集した情報をテキスト フィールドに保存する必要があります。ただし、テキスト フィールドの使用を避けられる場合は、使用しないでください。テキスト フィールドは大きくて遅いため、テキスト フィールドを過剰に使用するとサーバーの速度が低下する可能性があります。テキストフィールドも多くのディスクスペースを消費します。

警告:

テキスト フィールドにデータ (null 値も含む) を入力すると、そのデータに 2K のスペースが自動的に割り当てられます。レコードを削除しない限り、このストレージを取り戻すことはできません。

数値データ

SQL サーバーは、さまざまな数値データ型をサポートしています。整数、小数、金額を保存できます。

通常、テーブルに数値を保存する必要がある場合は、整数 (INT) データを使用します。 INT型データのテーブル番号の範囲は、-2,147,483,647~2,147,483,647の整数です。以下は INT 型データの使用方法の例です:

CREATE TABLE 訪問ログ (訪問者 VARCHAR(40),numvisits INT)

このテーブルは、サイトが訪問された回数を記録するために使用できます。サイトに 2,147,483,647 回を超えてアクセスする人がいない限り、nubvisits フィールドにアクセス数を保存できます。

メモリスペースを節約するために、SMALLINT型のデータを使用できます。スモールント type データには、-32768 から 32768 までの整数を格納できます。このデータ型の使用法は INT 型とまったく同じです。

最後に、本当にスペースを節約する必要がある場合は、TINYINT 型のデータを使用できます。同様に、このタイプの使用法は INT タイプと同じですが、このタイプのフィールドには 0 ~ 255 の整数のみを格納できる点が異なります。 TINYINT タイプのフィールドは、負の数値を格納するために使用できません。

一般に、スペースを節約するために、可能な限り最小の整数データを使用する必要があります。 TINYINT 型のデータは 1 バイトのみを占有しますが、INT 型のデータは 4 バイトを占有します。これは大きな違いのように思えないかもしれませんが、テーブルが大きい場合、バイト数は急速に増加します。一方、フィールドを一度作成すると、それを変更するのは困難です。したがって、安全を期すために、フィールドに格納する必要がある最大値を予測し、適切なデータ型を選択する必要があります。

フィールドに保存されたデータをより詳細に制御するには、NUMERIC データを使用して数値の整数部分と小数部分の両方を表すことができます。 NUMERIC データを使用すると、INT データよりもはるかに大きい、非常に大きな数値を表すことができます。 NUMERIC フィールドには、-1038 から 1038 の範囲の数値を格納できます。 NUMERIC データを使用すると、小数部分を使用して数値を表すこともできます。たとえば、10 進数の 3.14 を NUMERIC フィールドに格納できます。

NUMERIC フィールドを定義するときは、整数部分のサイズと小数部分のサイズの両方を指定する必要があります。このデータ型を使用した例を次に示します:

CREATE TABLE numeric_data (bignumber NUMERIC(28,0),

fraction NUMERIC (5,4) )

このステートメントが実行されると、2 つのフィールドを含む numeric_data という名前のテーブルが作成されます。フィールド bignumber には、最大 28 ビットの整数を格納できます。フィールド分数には、整数部が 5 桁、小数部が 4 桁の小数を格納できます。

NUMERIC データの整数部分は最大 28 桁のみです。小数部分の桁数は整数部分の桁数以下でなければなりません。小数部分はゼロにすることができます。

金額を格納するにはINT型またはNUMERIC型のデータを使用できます。ただし、この目的に特に使用されるデータ型が他に 2 つあります。アウトレットでたくさんのお金を稼ぎたい場合は、MONEY タイプのデータを使用できます。それほど意欲的でない場合は、SMALLMONEY タイプのデータを使用できます。 MONEY タイプのデータには、-922,337,203,685,477.5808 から 922,337,203,685,477.5807 までのお金を保存できます。これより大きい量を保存する必要がある場合は、NUMERIC データを使用できます。

SMALLMONEY タイプのデータは、-214,748.3648 から 214,748.3647 までのみ保存できます 金額。同様に、可能であれば、スペースを節約するために、MONEY 型データの代わりに SMALLMONEY 型を使用する必要があります。次の例は、お金を表すこれら 2 つのデータ型の使用方法を示しています。 TABLE 製品 (製品 VARCHAR(40)、価格 MONEY,

Discount_price SMALLMONEY)

このテーブルは、製品の割引価格と通常の販売価格を保存するために使用できます。フィールド価格 のデータ型は MONEY で、フィールドdiscount_priceのデータ型は SMALLMONEY です。

論理値の保存

チェックボックス (CHECKBOX) を使用して Web ページから情報を収集する場合、この情報を BIT フィールドに保存できます。 BIT タイプのフィールドは、0 または 1 の 2 つの値のみを取ることができます。このようなフィールドの使用例を次に示します:

CREATE TABLE 意見 (訪問者 VARCHAR(40)、良い ちょっと)

このテーブルは、アウトレットのアンケートからの情報を保存するために使用できます。訪問者はあなたのサイトが好きかどうか投票できます。賛成票を投じると、BIT フィールドに 1 が格納されます。それ以外の場合、ユーザーが NO に投票した場合は、フィールドに 0 を保存します (投票の数え方は次の章で学びます)。

テーブルを作成した後は、テーブルに BIT フィールドを追加できないことに注意してください。テーブルに BIT フィールドを含める予定がある場合は、テーブルの作成時に行う必要があります。

保存日時

Web サイトを設定するとき、一定期間の訪問者数を記録する必要がある場合があります。日付と時刻を保存できるようにするには、次の例に示すように、DATETIME 型のデータを使用する必要があります。 TABL 訪問者ログ(訪問者 VARCHAR (40), 到着時刻 DATETIME 、

出発時刻 DATETIME)

このテーブルは、訪問者が Web サイトに出入りする日時を記録するために使用できます。 DATETIME 型フィールドには、1753 年 1 月 1 日の最初のミリ秒から 9999 年 12 月 31 日の最後のミリ秒までの日付範囲を格納できます。

それほど広範囲の日付と時刻をカバーする必要がない場合は、SMALLDATETIME 型のデータを使用できます。 DATETIME 型データと同様に使用されますが、表現できる日時の範囲が DATETIME 型データよりも狭く、DATETIME 型データほど正確ではありません。 SMALLDATETIME 型フィールドには、1900 年 1 月 1 日から 2079 年 6 月 6 日までの日付を格納できますが、精度は秒単位までしかありません。

DATETIME 型フィールドには、日付と時刻を入力するまで実際のデータは含まれません。これを認識することが重要です。次の章では、さまざまな SQL 関数を使用して日付と時刻を読み取り、操作する方法を学習します (下記の「デフォルト値」セクションを参照)。 VBScript や JScript も使用できます 日付と時刻の関数を使用して、DATETIME フィールドに日付と時刻を入力します。

フィールド属性

前のセクションでは、さまざまな種類のフィールドを含むテーブルを作成する方法を紹介しました。このセクションでは、フィールドの 3 つのプロパティの使用方法を学習します。これらのプロパティを使用すると、null、デフォルト、および ID 値を制御できます。

null 値の許可と禁止

ほとんどのフィールドは null 値 (NULL) を受け入れることができます。フィールドが null 値を受け入れる場合、変更しないと null のままになります。厳密に言えば、NULL は値がないことを意味します。

フィールドが NULL 値を受け入れられるようにするには、フィールド定義の後に式 NULL を使用します。たとえば、以下の表の両方のフィールドでは null 値が許可されます:

CREATE TABLE 空 (空 1 CHAR (40) NULL,空 2 INT NULL(

注:

BIT 型のデータは null にすることはできません。この型のフィールドは 0 または 1 でなければなりません。

場合によっては、フィールドでの null 値の使用を禁止する必要があります。たとえば、クレジット カード番号とクレジット カードの有効期限の両方のフィールドにデータを強制的に入力させるには、

CREATE を使用してテーブルを作成します。 TABLE クレジットカード (creditcard_number CHAR(20) NOT NULL、

Creditcard_expire DATETIME NOT NULL)

フィールド定義の後に式 NOT NULL が続くことに注意してください。 NOT という式を含めることにより、 NULL を指定すると、他のフィールドにデータを入力せずに 1 つのフィールドのみにデータを挿入することを防ぐことができます。

Null 値を禁止するこの機能は、独自のネットワークを構築する過程で非常に役立つことがわかります。フィールドが NULL 値を受け入れられないことを指定した場合、NULL 値を入力しようとするとエラー メッセージが表示されます。これらのエラー警告は、プログラムのデバッグに貴重な手がかりを提供します。

デフォルト値

このテーブルのフィールドには、番地、都市、州、郵便番号、国が含まれているとします。住所の大部分が米国にあると予想される場合は、この値を国フィールドのデフォルト値として使用できます。

テーブルの作成時にデフォルト値を指定するには、式 DEFAULT を使用できます。テーブルの作成時にデフォルト値を使用する次の例を考えてみましょう:

CREATE TABLE アドレス (番地 VARCHAR(60) NULL,

市 VARCHAR(40) NULL,

州 VARCHAR(20) NULL

zip VARCHAR(20) NULL,

国 VARCHAR(30) デフォルト ‘USA’)

この例では、フィールド国のデフォルト値は米国として指定されています。これが文字データであることを示す一重引用符の使用に注意してください。文字以外のフィールドのデフォルト値を指定するには、値を引用符で囲まないでください:

CREATE 表の注文(価格デフォルト$38.00、

数量INTデフォルト) 50,

entrydate DATETIME DEFAULT GETDATE())

この CREATE TABLE ステートメントでは、各フィールドにデフォルト値が割り当てられます。 DATETIME型フィールドentrydateで指定されるデフォルト値は、現在の日付と時刻を返す関数Getdate()の戻り値であることに注意してください。

識別フィールド

各テーブルには、1 つまたは 1 つのみの識別フィールドを含めることができます。識別フィールドは、テーブル内の各レコードを一意に識別する特別なフィールドです。たとえば、pubs データベースのjobs テーブルには、各ジョブを一意に識別するフィールドが含まれています。

job_id job_desc

………………………………………………………………………….

新規採用ジョブではありません
最高経営責任者
Bushness Operations Managerに指名
最高財務責任者
出版社
フィールド job_id は、ジョブごとに一意の番号を提供します。新しいジョブを追加すると、新しいレコードの job_id フィールドに新しい一意の値が自動的に割り当てられます。

識別フィールドを作成するには、フィールド定義の後に式 IDENTITY を追加するだけです。 NUMERIC または INT タイプのフィールドのみを識別フィールドとして設定できます。例を次に示します:

CREATE TABLE 訪問者 ID (ID NUBERIC(18) IDENTITY,name VARCHAR(40))

このステートメントによって作成されたテーブルには、theid という名前の識別フィールドが含まれています。新しい訪問者名がテーブルに追加されるたびに、このフィールドには新しい値が自動的に割り当てられます。このテーブルを使用して、サイトの各ユーザーに一意の識別子を提供できます。

ヒント:

ラベルフィールドを作成するときは、十分な大きさのデータ型を使用することに注意してください。たとえば、TINYINT タイプのデータを使用する場合、テーブルに追加できるレコードは 255 件のみです。テーブルが非常に大きくなることが予想される場合は、NUMERIC データを使用する必要があります。

識別フィールドの存在は、さまざまな不可能なことを試してみたくなります。たとえば、識別フィールドを使用して、テーブル内の位置に基づいてレコードに対して操作を実行することができます。この意図は放棄すべきです。各レコードの識別フィールドの値は互いに異なるが、これは、識別フィールドの識別番号間にギャップが存在することを禁止するものではない。たとえば、テーブルの最初の 10 レコードを取得するためにテーブルの識別フィールドを使用しないでください。この操作は失敗の原因になります。たとえば、レコード No.6 とレコード No.7 がまったく存在しません。

上記は SQL データ操作の基礎 (初級) 4 の内容です。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。