-1

ダミーの質問で申し訳ありません。

次のようなデータベース構造があります。

CREATE TABLE "CLIENT" (
  "AFM" INTEGER not null primary key,
  "FIRSTNAME" VARCHAR(30),
  "LASTNAME" VARCHAR(30),
  "ADDRESS" VARCHAR(30),
  "PHONE" INTEGER,
  "MAIL" VARCHAR(60)
);

質問:

1)Netbeansの「SQLの実行」ボタンを押すと、データベースが作成されます。「メール」フィールドを「電子メール」フィールドに編集する場合、同じボタンをもう一度押しますが、データベースが既に存在するため、エラーが発生します。データベースのフィールドの名前を編集するにはどうすればよいですか?

2) 上記のように、「LASTNAME」フィールドを 30 文字未満で構成したいと考えています。フィールドに同じものが必要な場合:「AFM」INTEGER ?? "AFM" INTEGER(10) と書くと、エラーが発生します。

前もって感謝します。

4

2 に答える 2

2

数値列の値を制限するには、チェック制約を使用する必要があります。

CREATE TABLE CLIENT 
(
    AFM INTEGER not null primary key,
    FIRSTNAME VARCHAR(30),
    LASTNAME VARCHAR(30),
    ADDRESS VARCHAR(30),
    PHONE INTEGER,
    MAIL VARCHAR(60),
    constraint check_afm check (afm <= 10)
);

主キー列の値を制限しなければならない理由はわかりませんが。

そのテーブルが既に存在する場合は、エラーが発生します。テーブルにまだデータがない場合 (または、データをなくしてもかまわない場合) は、次のコマンドを使用して簡単に削除できます。

drop table client;

上記の CREATE TABLE を実行します。

それ以外の場合 (データを保持する場合)、alter table ステートメントが必要です。

alter table client 
  add constraint check_afm check (afm <= 10);

そのチェック制約に違反する行がテーブルにある場合、これは失敗することに注意してください。

于 2013-02-18T12:50:24.723 に答える
0

1) テーブルを 2 回作成することはできません。テーブルが既に存在する場合は、" alter table " を使用してフィールド名を変更する必要があります。

2) どのエラーが表示されますか? 補足として: Integer(n) は、この事実を認識していない場合に備えて、値の範囲ではなく、表示幅 (こちらを参照) を定義します。

于 2013-02-18T10:03:49.043 に答える