TOP をテンプレートにして作成
ホーム
バックアップ
一覧
検索
最終更新
ヘルプ
ログイン
開始行
[[FrontPage]]へ~
-[[リファレンスガイド]]へ~
--[[Firebird SQLリファレンス]]へ~
&br;
----
*Firebird SQL リファレンス:ALTER TABLE, CREATE DOMAIN, AL...
#contents
----
&br;
&aname(alter_table);
*ALTER TABLE [#z6a25d65]
テーブルに変更を加えます。列や制約の追加・削除・変更が...
SQL,DSQL,isqlで使用できます。~
この文書は、公開されているIB6のSQLレファレンスを基とし...
各リリースノートにおける追加内容に関して反映・統合されて...
**構文 [#ffcf3b20]
ALTER TABLE table <operation> [, <operation> …];
<operation> = {ADD <col_def>
| ADD <tconstraint>
| ALTER [COLUMN] column_name <alt_col_clause>
| DROP col
| DROP CONSTRAINT constraint}
<alt_col_clause> = {TO new_col_name
| TYPE new_col_datatype
| POSITION new_col_position}
&br;
列の定義:
<col_def> = col {<datatype> | COMPUTED [BY] (<expr>) | d...
[DEFAULT {literal | NULL | USER}]
[NOT NULL] [<col_constraint>] [COLLATE collation]
&br;
データタイプ:
<datatype> =
{SMALLINT | INTEGER | BIGINT | FLOAT | DOUBLE PRECIS...
[<array_dim>]
| {DATE | TIME | TIMESTAMP} [<array_dim>]
| {DECIMAL | NUMERIC} [(precision [, scale])] [<arra...
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [...
[<array_dim>] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<array_dim>]
| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE...
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]
<array_dim> = [[x:]y [, [x:]y …]]
&br;
列制約:
<col_constraint> = [CONSTRAINT constraint]
{ UNIQUE
| PRIMARY KEY
| REFERENCES other_table [(other_col [, other_co...
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SE...
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SE...
| CHECK (<search_condition>)
}
&br;
表制約:
<tconstraint> = [CONSTRAINT constraint]
{ {PRIMARY KEY | UNIQUE} (col [, col …])
| FOREIGN KEY (col [, col …]) REFERENCES other_table
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NU...
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NU...
| CHECK (<search_condition>)}
&br;
<search_condition> = <val> <operator> {<val> | (<select_...
| <val> [NOT] BETWEEN <val> AND <val>
| <val> [NOT] LIKE <val> [ESCAPE <val>]
| <val> [NOT] IN (<val> [, <val> …] | <select_list>)
| <val> IS [NOT] NULL
| <val> {>= | <=}
| <val> [NOT] {= | < | >}
| {ALL | SOME | ANY} (<select_list>)
| EXISTS (<select_expr>)
| SINGULAR (<select_expr>)
| <val> [NOT] CONTAINING <val>
| <val> [NOT] STARTING [WITH] <val>
| (<search_condition>)
| NOT <search_condition>
| <search_condition> OR <search_condition>
| <search_condition> AND <search_condition>
<val> = {
col [<array_dim>] | :variable
| <constant> | <expr> | <function>
| udf ([<val> [, <val> …]])
| NULL | USER | RDB$DB_KEY | ?
}
[COLLATE collation]
<constant> = num | 'string' | charsetname 'string'
<function> = COUNT (* | [ALL] <val> | DISTINCT <val>)
| SUM ([ALL] <val> | DISTINCT <val>)
| AVG ([ALL] <val> | DISTINCT <val>)
| MAX ([ALL] <val> | DISTINCT <val>)
| MIN ([ALL] <val> | DISTINCT <val>)
| CAST (<val> AS <datatype>)
| UPPER (<val>)
| GEN_ID (generator, <val>)
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
<expr> = 1つの値を返すSQL式
<select_one> = 1つの列・値を返すSELECT
<select_list> = 1つの列で、0あるいは複数行のリストを返...
<select_expr> = 0あるいは複数行の値のリストを返すSELECT
&br;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
-文法の補足~
基本的には、[[CREATE TABLE>CREATE TABLE#create_table]] ...
多いので、不明瞭な場合はそちらを参照して下さい。~
&br;
--BLOB列に対するCOLLATE~
BLOBの列に対してはCOLLATEを指定することは出来ません。~
&br;
--配列(<array_dim>)~
配列を宣言する場合最も外側のブラケットを含まなければな...
例えば、次の文では、長さ6文字の文字列で構成される5×5の二...
my_array = varchar(6)[5,5]
添え字の開始値が1以外の配列を指定するにはコロン(:)を使...
次の例では、10で始まり20で終わる整数型の配列となります。
my_array = integer[10:20]
&br;
--search_condition~
search_conditionに関する詳細は、[[CREATE TABLE>CREATE T...
を参照して下さい。~
&br;
--引数に関する補足~
&br;
|>|ALTER TABLE の構文|h
|引数|説明|h
|table|変更を行う、既存のテーブル名です。|
|operation|テーブルに対する処理内容を指定します。以下のも...
|~|・ADD : 新しい列やテーブルの制約を追加します。|
|~|・DROP : 既存の列や制約を削除します。|
|~|・ALTER [COLUMN] : 列名やデータタイプ、位置を変更しま...
|col_def|新しい列を追加する場合には、以下を指定します。|
|~|・追加する列名とデータタイプは必須です。|
|~|・その他に指定可能な項目としては、デフォルト値、列の制...
|col|追加や削除する列の名前です。テーブル内で一意である必...
|datatype|列のデータタイプです。|
|COMPUTED [BY] (expr)|計算型の列であることを示します。exp...
|~|・exprは、宣言したデータタイプを得るためのあらゆる算術...
|~|・exprの式内で使用できる列は、このテーブル内で事前に宣...
|~|・exprではBLOB型の列を使用することは出来ません。|
|~|・exprは単一の値を得る式が使用できます。配列を返す式は...
|domain|既存のドメイン名です。|
|DEFAULT|列のデフォルト値を指定します。次の値が設定できま...
|~|・''リテラル'' : 具体的な文字列、数値、またはデータ型|
|~|・''NULL'' : NULL値|
|~|・''USER'' : カレントユーザーのユーザー名。テキストを...
|~|※列単位で指定されたデフォルト値設定は、ドメインで設定...
|CONSTRAINT constraint|列(カラム)またはテーブル制約の名前...
|constraint_def|列制約の指定を行います。有効なものは、UNI...
|REFERENCES|列に参照制約(別テーブルを参照すること)を設定...
|ON DELETE|ON UPDATE|REFERENCESと同時に使用されます。外...
|~|・''NO ACTION'' : デフォルトです。変更は行われません。...
|~|・''CASCADE'' : ON DELETEでは、外部キーで合致するもの...
|~|・''SET NULL'' : 合致する外部キーの列にNULLをセットし...
|~|・''SET DEFAULT'' : 影響をうける、外部のキーに合致する...
|NOT NULL|列制約にNULL値禁止を指定します。|
|~|・テーブルの既存の行に追加される列は NOT NULL となりま...
|~|・NOT NULL の指定は、列のアトリビュートのみで可能です。|
|DROP CONSTRAINT|テーブルの制約を削除します。|
|table_constraint|新しいテーブルの制約の指定です。制約は ...
|COLLATE collation|デフォルトのソートで使用する、列のコレ...
&br;
&br;
**詳細の説明 [#i2a3ffd5]
ALTER TABLE により、既存のテーブル(表)の構造を変更する...
また、1つの ALTER TABLE 文により、複数の追加や削除を行え...
&br;
-テーブルに対して ALTER TABLE を実行できるのは、作成者、S...
もしくは OS の管理者権限を持ったユーザーのみです。~
&br;
-操作の指定が、テーブルのPRIMARY KEYやUNIQUE制約などに当...
ALTER TABLEは失敗します。例えば、次のような削除を行った場...
--指定列に UNIQUE,PRIMARY,FOREIGN KEY 制約がある場合。
--指定列が(訳注:他の列の)CHECK制約で使用されている場合。
--指定列が、評価式や計算型の列で使用されている場合。
--指定列が、ビューなど他のデータベースオブジェクトから参...
-列の削除(DROP)を行った場合、格納されたデータはすべて失わ...
&br;
-参照制約に関して~
--FOREIGN KEY による参照制約においてデータの完全性維持を...
すべての REFERENCES 文に対して ON UPDATE や ON DELETE オ...
しましょう。
--ON UPDATE,ON DELETEの指定を行わなかった場合、列を削除す...
計算型の列の削除を行わなければなりません。
FOREIGN KEY(外部キー)で参照されている PRIMARY KEY や UNIQ...
前には、必ずそれらを参照している FOREIGN KEY を削除する必...
--テーブル所有者(作成者)の GRANT により、あるテーブルに対...
特権を与えられているならば、そのテーブルに対する FOREIGN ...
を作成することが出来ます。他のユーザーが外部キーを設定さ...
する場合、参照するプライマリーなキーテーブルに対する REFE...
SELECT 特権を持っている必要があります。
--ドメイン指定にもCHECK制約を加えられますが、その変更にサ...
いるものに対しCHECK制約を設定する場合、制約妨害を引き起こ...
--オプションで、列制限に名前を指定することが可能です。名...
は、システムは、自動的生成される名前を割当てます。(訳注:...
RDB$RELATION_CONSTRAINTS に格納される一意な名前を割当てま...
制約に名前を指定しておけば、変更や削除により制約妨害のエ...
名前が出るので、原因の特定が容易になります。~
&br;
**用例 [#fd23d411]
すべて isql での例です。テーブルCOUNTRYに対して処理を行い...
&br;
-テーブルに対する列の追加と削除を行っています。CURRENCY列...
失われます。
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25),
DROP CURRENCY;
&br;
-2つの列を追加していますが、片方には UNIQUE 制約を付与し...
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25) NOT NULL UNIQUE,
ADD LARGEST_CITY VARCHAR(25) NOT NULL;
&br;
-LARGEST_CITY 列の名前を BIGGEST_CITY に変更します。
ALTER TABLE COUNTRY ALTER LARGEST_CITY TO BIGGEST_CITY;
&br;
**参照 [#i230729d]
[[ALTER DOMAIN>#alter_domain]] , [[CREATE DOMAIN>#creat...
[[CREATE TABLE>CREATE TABLE#create_table]]~
&br;
これ以上の情報が欲しい場合は、Embedded SQL Guide の alt...
の項を参照して下さい。~
&br;
&br;
----
&br;
&br;
&aname(create_domain);
*CREATE DOMAIN [#x5df2d22]
データベースでグローバルな、列定義を作成します。
SQL,DSQL,isql で使用できます。~
この文書は、公開されているIB6のSQLレファレンスを基とし...
各リリースノートにおける追加内容に関して反映・統合されて...
**構文 [#e0c67f8a]
CREATE DOMAIN domain [AS] <datatype>
[DEFAULT {literal | NULL | USER}]
[NOT NULL] [CHECK (<dom_search_condition>)]
[COLLATE collation];
<datatype> =
{SMALLINT | INTEGER | BIGINT | FLOAT | DOUBLE PRECIS...
[<array_dim>]
| {DATE | TIME | TIMESTAMP} [<array_dim>]
| {DECIMAL | NUMERIC} [(precision [, scale])] [<arra...
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [...
[<array_dim>] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<array_dim>]
| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE...
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]
<array_dim> = [[x:]y [, [x:]y …]]
<dom_search_condition> = {
VALUE <operator> value
| VALUE [NOT] BETWEEN value AND value
| VALUE [NOT] LIKE value [ESCAPE value]
| VALUE [NOT] IN (value [, value …])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING value
| VALUE [NOT] STARTING [WITH] value
| (<dom_search_condition>)
| NOT <dom_search_condition>
| <dom_search_condition> OR <dom_search_condition>
| <dom_search_condition> AND <dom_search_condition>
}
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
&br;
-文法の補足~
--BLOB列に対するCOLLATE~
BLOBの列に対してはCOLLATEを指定することは出来ません。~
&br;
--配列(<array_dim>)~
配列を宣言する場合最も外側のブラケットを含まなければな...
例えば、次の文では、長さ6文字の文字列で構成される5×5の二...
my_array = varchar(6)[5,5]
添え字の開始値が1以外の配列を指定するにはコロン(:)を使...
次の例では、10で始まり20で終わる整数型の配列となります。
my_array = integer[10:20]
&br;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|domain|ドメインのための一意な名前|
|datatype|SQLデータタイプ|
|DEFAULT|列のデフォルト値を指定します。次の値が設定できま...
|~|・''リテラル'' : 具体的な文字列、数値、またはデータ型|
|~|・''NULL'' : NULL値|
|~|・''USER'' : カレントユーザーのユーザー名。テキストを...
|NOT NULL|列制約にNULL値禁止を指定します。|
|CHECK (dom_search_condition)|ドメインに単体でのCHECK制約...
|VALUE|ドメインの列名参照を表すプレースホルダです。|
|COLLATE collation|デフォルトのソートで使用する、列のコレ...
&br;
**詳細の説明 [#c2795d25]
CREATE DOMAIN により、CREATE TABLE や ALTER TABLE で使...
列定義のテンプレートを作成します。ドメイン定義には、以下...
出来ます。
--データ型
--デフォルト値(オプション)
--NULL値禁止(オプション)
--CHECK制約(オプション)
--コレーションオーダー(オプション)
&br;
ドメイン定義での CHECK 制約は、ドメインに入力された値が...
の条件で真のときに値が入力可能となります。CHECK制約は、他...
参照することは出来ません。~
※ドメイン定義の中で制約と矛盾のあるものを作成しないように...
例えば、NOT NULL 制約があるのにデフォルト値が NULL である...
&br;
ドメイン定義で、CHAR や VARCHAR のようなテキスト用デー...
CHARACTER SET 節によりキャラクタセットの指定が出来ます。...
場合、ドメインはデータベースのデフォルトキャラクタセット...
&br;
デフォルトキャラクタセットを指定しない場合、それはNONE...
NONEが設定された場合、特定のキャラクタセットがないと仮定...
格納したデータがそのままの形で格納されます。~
NONEと設定された列には、あるゆるキャラクタセットのデー...
しかし、そこにロードされたデータを、キャラクタセットが指...
対してロードすることは出来ません。このようなことを行った...
正しく行われずにエラーが発生するかもしれません。~
&br;
COLLATE節は、CHAR、VARCHAR、BLOB(テキスト)などのテキス...
コレーションオーダー(訳注:ソート時の順序に影響する)を指定...
列が"持っている"キャラクタセット(データベースのデフォルト...
もしくは列の型定義時に指定したキャラクタセット)のみが指定...
&br;
列の定義にドメインを使用した場合、どれはドメインのすべ...
します。そのとき、ドメインのデフォルト値、コレーション、N...
は新しいものに変更(上書き)することが可能です。また、その...
CHECK制約を設定することも出来ます。~
&br;
**用例 [#yc75766b]
すべて isqlでの例です。~
&br;
-デフォルト値9999で、VALUE>1000というCHECK制約付きのドメ...
ここでのVALUEは、その列に設定しようとしている値を示すプレ...
CREATE DOMAIN CUSTNO
AS INTEGER
DEFAULT 9999
CHECK (VALUE > 1000);
&br;
-指定した4つの値以外は入らないドメインを作成します。
CREATE DOMAIN PRODTYPE
AS VARCHAR(12)
CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A...
&br;
-CHAR データ型の配列が定義されたドメインを作成します。
CREATE DOMAIN DEPTARRAY AS CHAR(31) [4:5];
-一連の動作のサンプルです。デフォルト値として現在のユーザ...
ドメイン作成後に、そのドメインを使用してテーブルを作成、...
CREATE DOMAIN USERNAME AS VARCHAR(20) DEFAULT USER;
CREATE TABLE ORDERS (ORDER_DATE DATE, ENTERED_BY USERNAME,
ORDER_AMT DECIMAL(8,2));
INSERT INTO ORDERS (ORDER_DATE, ORDER_AMT)
VALUES ('1-MAY-93', 512.36);
INSERT の実行により、列 ENTERRED_BY には、データベース...
に現在のユーザー名が設定されます。現在のユーザー名が JSMI...
SELECTでは次のような行が表示されるはずです。~
&br;
SELECT:
SELECT * FROM ORDERS;
行表示:
1-MAY-93 JSMITH 512.36
&br;
-TEXTサブタイプを持つBLOBのドメイン作成しています。キャラ...
行っています。
CREATE DOMAIN DESCRIPT AS
BLOB SUB_TYPE TEXT SEGMENT SIZE 80
CHARACTER SET SJIS;
&br;
**参照 [#x4952adf]
[[ALTER DOMAIN>#alter_domain]] , [[ALTER TABLE>#alter_t...
[[CREATE TABLE>CREATE TABLE#create_table]] , [[DROP DOMAI...
&br;
これ以上の情報が欲しい場合は、Data Definition Guideの
character set specification([[キャラクタセット・データ型...
collation orders を参照して下さい。
&br;
&br;
----
&br;
&br;
&aname(alter_domain);
*ALTER DOMAIN [#iaf0cb1f]
ドメインの定義内容を変更します。
SQL,DSQL,isql で使用できます。
**構文 [#kbfec3f9]
ALTER DOMAIN name {
SET DEFAULT {literal | NULL | USER}
| DROP DEFAULT
| ADD [CONSTRAINT] CHECK (<dom_search_condition>)
| DROP CONSTRAINT | new_col_name
| TYPE datatype
};
<dom_search_condition> = {
VALUE <operator> value
| VALUE [NOT] BETWEEN value AND value
| VALUE [NOT] LIKE value [ESCAPE value]
| VALUE [NOT] IN (value [, value …])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING value
| VALUE [NOT] STARTING [WITH] value
| (<dom_search_condition>)
| NOT <dom_search_condition>
| <dom_search_condition> OR <dom_search_condition>
| <dom_search_condition> AND <dom_search_condition>
}
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|既存のドメイン名です。|
|SET DEFAULT|列のデフォルト値を指定します。次の値が設定で...
|~|・''リテラル'' : 具体的な文字列、数値、またはデータ型|
|~|・''NULL'' : NULL値|
|~|・''USER'' : カレントユーザーのユーザー名。テキストを...
|~|・デフォルト値設定は、設定されたものを上書き(優先)しま...
|DROP DEFAULT |既存のデフォルト値指定を削除します。|
|ADD [CONSTRAINT] CHECK dom_search_condition|ドメインに、...
|DROP CONSTRAINT|ドメイン定義からCHECK制約を削除します。|
|new_col_name|ドメイン名を変更します。|
|TYPE data_type|ドメインのデータ型を変更します。|
&br;
**詳細の説明 [#ld39eb0f]
ALTER DOMAIN により、既存ドメインの NOT NULL 設定などの...
ドメインに対して行われる変更は、テーブルレベルで上書きさ...
すべてのテーブルのドメインを指定した列に対して影響を及ぼ...
※ドメインのデータ型や NOT NULL の設定を変更した場合、ドメ...
再作成と同様なことが行われます。~
&br;
ドメインの内容変更が出来るのは、作成者またはSYDBAユーザ...
権限を持ったユーザーのみです。~
&br;
**用例 [#hca2413a]
isqlでの例です。作成したドメインのデフォルト値設定を 9,99...
CREATE DOMAIN CUSTNO AS INTEGER CHECK (VALUE > 1000);
ALTER DOMAIN CUSTNO SET DEFAULT 9999;
**参照 [#u25ee149]
[[CREATE DOMAIN>#create_domain]] ,
[[CREATE TABLE>CREATE TABLE#create_table]] ,
[[DROP DOMAIN>#drop_domain]]~
&br;
すべての情報を得るためには、Data Definition Guide の、c...
using them to create column definitions を参照して下さい。~
&br;
&br;
----
&br;
&br;
&aname(drop_domain);
*DROP DOMAIN [#i1934cde]
データベースからドメインを削除します。
SQL,DSQL,isql で使用できます。~
**構文 [#dcb7b6fe]
DROP DOMAIN name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
|引数|説明|h
|name|既存のドメイン名|
&br;
**詳細の説明 [#i0be99ba]
DROP DOMAIN により、既存のドメインをデータベースから削...
&br;
ドメインが現在列の定義で使用されている場合、DROP 操作は...
このような場合は、ALTER TABLEによりドメインを使用している...
に DROP DOMAIN を実行する必要があります。~
&br;
ドメインを削除が出来るのは、作成者またはSYDBAユーザー、...
権限を持ったユーザーのみです。~
&br;
**用例 [#mcee74ac]
isql でドメインの削除をします。
DROP DOMAIN COUNTRYNAME;
&br;
**参照 [#q4d4e86d]
[[ALTER DOMAIN>#alter_domain]] , [[ALTER TABLE>#alter_t...
[[CREATE DOMAIN>#create_domain]]~
&br;
最終行:
[[FrontPage]]へ~
-[[リファレンスガイド]]へ~
--[[Firebird SQLリファレンス]]へ~
&br;
----
*Firebird SQL リファレンス:ALTER TABLE, CREATE DOMAIN, AL...
#contents
----
&br;
&aname(alter_table);
*ALTER TABLE [#z6a25d65]
テーブルに変更を加えます。列や制約の追加・削除・変更が...
SQL,DSQL,isqlで使用できます。~
この文書は、公開されているIB6のSQLレファレンスを基とし...
各リリースノートにおける追加内容に関して反映・統合されて...
**構文 [#ffcf3b20]
ALTER TABLE table <operation> [, <operation> …];
<operation> = {ADD <col_def>
| ADD <tconstraint>
| ALTER [COLUMN] column_name <alt_col_clause>
| DROP col
| DROP CONSTRAINT constraint}
<alt_col_clause> = {TO new_col_name
| TYPE new_col_datatype
| POSITION new_col_position}
&br;
列の定義:
<col_def> = col {<datatype> | COMPUTED [BY] (<expr>) | d...
[DEFAULT {literal | NULL | USER}]
[NOT NULL] [<col_constraint>] [COLLATE collation]
&br;
データタイプ:
<datatype> =
{SMALLINT | INTEGER | BIGINT | FLOAT | DOUBLE PRECIS...
[<array_dim>]
| {DATE | TIME | TIMESTAMP} [<array_dim>]
| {DECIMAL | NUMERIC} [(precision [, scale])] [<arra...
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [...
[<array_dim>] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<array_dim>]
| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE...
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]
<array_dim> = [[x:]y [, [x:]y …]]
&br;
列制約:
<col_constraint> = [CONSTRAINT constraint]
{ UNIQUE
| PRIMARY KEY
| REFERENCES other_table [(other_col [, other_co...
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SE...
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SE...
| CHECK (<search_condition>)
}
&br;
表制約:
<tconstraint> = [CONSTRAINT constraint]
{ {PRIMARY KEY | UNIQUE} (col [, col …])
| FOREIGN KEY (col [, col …]) REFERENCES other_table
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NU...
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NU...
| CHECK (<search_condition>)}
&br;
<search_condition> = <val> <operator> {<val> | (<select_...
| <val> [NOT] BETWEEN <val> AND <val>
| <val> [NOT] LIKE <val> [ESCAPE <val>]
| <val> [NOT] IN (<val> [, <val> …] | <select_list>)
| <val> IS [NOT] NULL
| <val> {>= | <=}
| <val> [NOT] {= | < | >}
| {ALL | SOME | ANY} (<select_list>)
| EXISTS (<select_expr>)
| SINGULAR (<select_expr>)
| <val> [NOT] CONTAINING <val>
| <val> [NOT] STARTING [WITH] <val>
| (<search_condition>)
| NOT <search_condition>
| <search_condition> OR <search_condition>
| <search_condition> AND <search_condition>
<val> = {
col [<array_dim>] | :variable
| <constant> | <expr> | <function>
| udf ([<val> [, <val> …]])
| NULL | USER | RDB$DB_KEY | ?
}
[COLLATE collation]
<constant> = num | 'string' | charsetname 'string'
<function> = COUNT (* | [ALL] <val> | DISTINCT <val>)
| SUM ([ALL] <val> | DISTINCT <val>)
| AVG ([ALL] <val> | DISTINCT <val>)
| MAX ([ALL] <val> | DISTINCT <val>)
| MIN ([ALL] <val> | DISTINCT <val>)
| CAST (<val> AS <datatype>)
| UPPER (<val>)
| GEN_ID (generator, <val>)
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
<expr> = 1つの値を返すSQL式
<select_one> = 1つの列・値を返すSELECT
<select_list> = 1つの列で、0あるいは複数行のリストを返...
<select_expr> = 0あるいは複数行の値のリストを返すSELECT
&br;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
-文法の補足~
基本的には、[[CREATE TABLE>CREATE TABLE#create_table]] ...
多いので、不明瞭な場合はそちらを参照して下さい。~
&br;
--BLOB列に対するCOLLATE~
BLOBの列に対してはCOLLATEを指定することは出来ません。~
&br;
--配列(<array_dim>)~
配列を宣言する場合最も外側のブラケットを含まなければな...
例えば、次の文では、長さ6文字の文字列で構成される5×5の二...
my_array = varchar(6)[5,5]
添え字の開始値が1以外の配列を指定するにはコロン(:)を使...
次の例では、10で始まり20で終わる整数型の配列となります。
my_array = integer[10:20]
&br;
--search_condition~
search_conditionに関する詳細は、[[CREATE TABLE>CREATE T...
を参照して下さい。~
&br;
--引数に関する補足~
&br;
|>|ALTER TABLE の構文|h
|引数|説明|h
|table|変更を行う、既存のテーブル名です。|
|operation|テーブルに対する処理内容を指定します。以下のも...
|~|・ADD : 新しい列やテーブルの制約を追加します。|
|~|・DROP : 既存の列や制約を削除します。|
|~|・ALTER [COLUMN] : 列名やデータタイプ、位置を変更しま...
|col_def|新しい列を追加する場合には、以下を指定します。|
|~|・追加する列名とデータタイプは必須です。|
|~|・その他に指定可能な項目としては、デフォルト値、列の制...
|col|追加や削除する列の名前です。テーブル内で一意である必...
|datatype|列のデータタイプです。|
|COMPUTED [BY] (expr)|計算型の列であることを示します。exp...
|~|・exprは、宣言したデータタイプを得るためのあらゆる算術...
|~|・exprの式内で使用できる列は、このテーブル内で事前に宣...
|~|・exprではBLOB型の列を使用することは出来ません。|
|~|・exprは単一の値を得る式が使用できます。配列を返す式は...
|domain|既存のドメイン名です。|
|DEFAULT|列のデフォルト値を指定します。次の値が設定できま...
|~|・''リテラル'' : 具体的な文字列、数値、またはデータ型|
|~|・''NULL'' : NULL値|
|~|・''USER'' : カレントユーザーのユーザー名。テキストを...
|~|※列単位で指定されたデフォルト値設定は、ドメインで設定...
|CONSTRAINT constraint|列(カラム)またはテーブル制約の名前...
|constraint_def|列制約の指定を行います。有効なものは、UNI...
|REFERENCES|列に参照制約(別テーブルを参照すること)を設定...
|ON DELETE|ON UPDATE|REFERENCESと同時に使用されます。外...
|~|・''NO ACTION'' : デフォルトです。変更は行われません。...
|~|・''CASCADE'' : ON DELETEでは、外部キーで合致するもの...
|~|・''SET NULL'' : 合致する外部キーの列にNULLをセットし...
|~|・''SET DEFAULT'' : 影響をうける、外部のキーに合致する...
|NOT NULL|列制約にNULL値禁止を指定します。|
|~|・テーブルの既存の行に追加される列は NOT NULL となりま...
|~|・NOT NULL の指定は、列のアトリビュートのみで可能です。|
|DROP CONSTRAINT|テーブルの制約を削除します。|
|table_constraint|新しいテーブルの制約の指定です。制約は ...
|COLLATE collation|デフォルトのソートで使用する、列のコレ...
&br;
&br;
**詳細の説明 [#i2a3ffd5]
ALTER TABLE により、既存のテーブル(表)の構造を変更する...
また、1つの ALTER TABLE 文により、複数の追加や削除を行え...
&br;
-テーブルに対して ALTER TABLE を実行できるのは、作成者、S...
もしくは OS の管理者権限を持ったユーザーのみです。~
&br;
-操作の指定が、テーブルのPRIMARY KEYやUNIQUE制約などに当...
ALTER TABLEは失敗します。例えば、次のような削除を行った場...
--指定列に UNIQUE,PRIMARY,FOREIGN KEY 制約がある場合。
--指定列が(訳注:他の列の)CHECK制約で使用されている場合。
--指定列が、評価式や計算型の列で使用されている場合。
--指定列が、ビューなど他のデータベースオブジェクトから参...
-列の削除(DROP)を行った場合、格納されたデータはすべて失わ...
&br;
-参照制約に関して~
--FOREIGN KEY による参照制約においてデータの完全性維持を...
すべての REFERENCES 文に対して ON UPDATE や ON DELETE オ...
しましょう。
--ON UPDATE,ON DELETEの指定を行わなかった場合、列を削除す...
計算型の列の削除を行わなければなりません。
FOREIGN KEY(外部キー)で参照されている PRIMARY KEY や UNIQ...
前には、必ずそれらを参照している FOREIGN KEY を削除する必...
--テーブル所有者(作成者)の GRANT により、あるテーブルに対...
特権を与えられているならば、そのテーブルに対する FOREIGN ...
を作成することが出来ます。他のユーザーが外部キーを設定さ...
する場合、参照するプライマリーなキーテーブルに対する REFE...
SELECT 特権を持っている必要があります。
--ドメイン指定にもCHECK制約を加えられますが、その変更にサ...
いるものに対しCHECK制約を設定する場合、制約妨害を引き起こ...
--オプションで、列制限に名前を指定することが可能です。名...
は、システムは、自動的生成される名前を割当てます。(訳注:...
RDB$RELATION_CONSTRAINTS に格納される一意な名前を割当てま...
制約に名前を指定しておけば、変更や削除により制約妨害のエ...
名前が出るので、原因の特定が容易になります。~
&br;
**用例 [#fd23d411]
すべて isql での例です。テーブルCOUNTRYに対して処理を行い...
&br;
-テーブルに対する列の追加と削除を行っています。CURRENCY列...
失われます。
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25),
DROP CURRENCY;
&br;
-2つの列を追加していますが、片方には UNIQUE 制約を付与し...
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25) NOT NULL UNIQUE,
ADD LARGEST_CITY VARCHAR(25) NOT NULL;
&br;
-LARGEST_CITY 列の名前を BIGGEST_CITY に変更します。
ALTER TABLE COUNTRY ALTER LARGEST_CITY TO BIGGEST_CITY;
&br;
**参照 [#i230729d]
[[ALTER DOMAIN>#alter_domain]] , [[CREATE DOMAIN>#creat...
[[CREATE TABLE>CREATE TABLE#create_table]]~
&br;
これ以上の情報が欲しい場合は、Embedded SQL Guide の alt...
の項を参照して下さい。~
&br;
&br;
----
&br;
&br;
&aname(create_domain);
*CREATE DOMAIN [#x5df2d22]
データベースでグローバルな、列定義を作成します。
SQL,DSQL,isql で使用できます。~
この文書は、公開されているIB6のSQLレファレンスを基とし...
各リリースノートにおける追加内容に関して反映・統合されて...
**構文 [#e0c67f8a]
CREATE DOMAIN domain [AS] <datatype>
[DEFAULT {literal | NULL | USER}]
[NOT NULL] [CHECK (<dom_search_condition>)]
[COLLATE collation];
<datatype> =
{SMALLINT | INTEGER | BIGINT | FLOAT | DOUBLE PRECIS...
[<array_dim>]
| {DATE | TIME | TIMESTAMP} [<array_dim>]
| {DECIMAL | NUMERIC} [(precision [, scale])] [<arra...
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [...
[<array_dim>] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<array_dim>]
| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE...
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]
<array_dim> = [[x:]y [, [x:]y …]]
<dom_search_condition> = {
VALUE <operator> value
| VALUE [NOT] BETWEEN value AND value
| VALUE [NOT] LIKE value [ESCAPE value]
| VALUE [NOT] IN (value [, value …])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING value
| VALUE [NOT] STARTING [WITH] value
| (<dom_search_condition>)
| NOT <dom_search_condition>
| <dom_search_condition> OR <dom_search_condition>
| <dom_search_condition> AND <dom_search_condition>
}
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
&br;
-文法の補足~
--BLOB列に対するCOLLATE~
BLOBの列に対してはCOLLATEを指定することは出来ません。~
&br;
--配列(<array_dim>)~
配列を宣言する場合最も外側のブラケットを含まなければな...
例えば、次の文では、長さ6文字の文字列で構成される5×5の二...
my_array = varchar(6)[5,5]
添え字の開始値が1以外の配列を指定するにはコロン(:)を使...
次の例では、10で始まり20で終わる整数型の配列となります。
my_array = integer[10:20]
&br;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|domain|ドメインのための一意な名前|
|datatype|SQLデータタイプ|
|DEFAULT|列のデフォルト値を指定します。次の値が設定できま...
|~|・''リテラル'' : 具体的な文字列、数値、またはデータ型|
|~|・''NULL'' : NULL値|
|~|・''USER'' : カレントユーザーのユーザー名。テキストを...
|NOT NULL|列制約にNULL値禁止を指定します。|
|CHECK (dom_search_condition)|ドメインに単体でのCHECK制約...
|VALUE|ドメインの列名参照を表すプレースホルダです。|
|COLLATE collation|デフォルトのソートで使用する、列のコレ...
&br;
**詳細の説明 [#c2795d25]
CREATE DOMAIN により、CREATE TABLE や ALTER TABLE で使...
列定義のテンプレートを作成します。ドメイン定義には、以下...
出来ます。
--データ型
--デフォルト値(オプション)
--NULL値禁止(オプション)
--CHECK制約(オプション)
--コレーションオーダー(オプション)
&br;
ドメイン定義での CHECK 制約は、ドメインに入力された値が...
の条件で真のときに値が入力可能となります。CHECK制約は、他...
参照することは出来ません。~
※ドメイン定義の中で制約と矛盾のあるものを作成しないように...
例えば、NOT NULL 制約があるのにデフォルト値が NULL である...
&br;
ドメイン定義で、CHAR や VARCHAR のようなテキスト用デー...
CHARACTER SET 節によりキャラクタセットの指定が出来ます。...
場合、ドメインはデータベースのデフォルトキャラクタセット...
&br;
デフォルトキャラクタセットを指定しない場合、それはNONE...
NONEが設定された場合、特定のキャラクタセットがないと仮定...
格納したデータがそのままの形で格納されます。~
NONEと設定された列には、あるゆるキャラクタセットのデー...
しかし、そこにロードされたデータを、キャラクタセットが指...
対してロードすることは出来ません。このようなことを行った...
正しく行われずにエラーが発生するかもしれません。~
&br;
COLLATE節は、CHAR、VARCHAR、BLOB(テキスト)などのテキス...
コレーションオーダー(訳注:ソート時の順序に影響する)を指定...
列が"持っている"キャラクタセット(データベースのデフォルト...
もしくは列の型定義時に指定したキャラクタセット)のみが指定...
&br;
列の定義にドメインを使用した場合、どれはドメインのすべ...
します。そのとき、ドメインのデフォルト値、コレーション、N...
は新しいものに変更(上書き)することが可能です。また、その...
CHECK制約を設定することも出来ます。~
&br;
**用例 [#yc75766b]
すべて isqlでの例です。~
&br;
-デフォルト値9999で、VALUE>1000というCHECK制約付きのドメ...
ここでのVALUEは、その列に設定しようとしている値を示すプレ...
CREATE DOMAIN CUSTNO
AS INTEGER
DEFAULT 9999
CHECK (VALUE > 1000);
&br;
-指定した4つの値以外は入らないドメインを作成します。
CREATE DOMAIN PRODTYPE
AS VARCHAR(12)
CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A...
&br;
-CHAR データ型の配列が定義されたドメインを作成します。
CREATE DOMAIN DEPTARRAY AS CHAR(31) [4:5];
-一連の動作のサンプルです。デフォルト値として現在のユーザ...
ドメイン作成後に、そのドメインを使用してテーブルを作成、...
CREATE DOMAIN USERNAME AS VARCHAR(20) DEFAULT USER;
CREATE TABLE ORDERS (ORDER_DATE DATE, ENTERED_BY USERNAME,
ORDER_AMT DECIMAL(8,2));
INSERT INTO ORDERS (ORDER_DATE, ORDER_AMT)
VALUES ('1-MAY-93', 512.36);
INSERT の実行により、列 ENTERRED_BY には、データベース...
に現在のユーザー名が設定されます。現在のユーザー名が JSMI...
SELECTでは次のような行が表示されるはずです。~
&br;
SELECT:
SELECT * FROM ORDERS;
行表示:
1-MAY-93 JSMITH 512.36
&br;
-TEXTサブタイプを持つBLOBのドメイン作成しています。キャラ...
行っています。
CREATE DOMAIN DESCRIPT AS
BLOB SUB_TYPE TEXT SEGMENT SIZE 80
CHARACTER SET SJIS;
&br;
**参照 [#x4952adf]
[[ALTER DOMAIN>#alter_domain]] , [[ALTER TABLE>#alter_t...
[[CREATE TABLE>CREATE TABLE#create_table]] , [[DROP DOMAI...
&br;
これ以上の情報が欲しい場合は、Data Definition Guideの
character set specification([[キャラクタセット・データ型...
collation orders を参照して下さい。
&br;
&br;
----
&br;
&br;
&aname(alter_domain);
*ALTER DOMAIN [#iaf0cb1f]
ドメインの定義内容を変更します。
SQL,DSQL,isql で使用できます。
**構文 [#kbfec3f9]
ALTER DOMAIN name {
SET DEFAULT {literal | NULL | USER}
| DROP DEFAULT
| ADD [CONSTRAINT] CHECK (<dom_search_condition>)
| DROP CONSTRAINT | new_col_name
| TYPE datatype
};
<dom_search_condition> = {
VALUE <operator> value
| VALUE [NOT] BETWEEN value AND value
| VALUE [NOT] LIKE value [ESCAPE value]
| VALUE [NOT] IN (value [, value …])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING value
| VALUE [NOT] STARTING [WITH] value
| (<dom_search_condition>)
| NOT <dom_search_condition>
| <dom_search_condition> OR <dom_search_condition>
| <dom_search_condition> AND <dom_search_condition>
}
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|既存のドメイン名です。|
|SET DEFAULT|列のデフォルト値を指定します。次の値が設定で...
|~|・''リテラル'' : 具体的な文字列、数値、またはデータ型|
|~|・''NULL'' : NULL値|
|~|・''USER'' : カレントユーザーのユーザー名。テキストを...
|~|・デフォルト値設定は、設定されたものを上書き(優先)しま...
|DROP DEFAULT |既存のデフォルト値指定を削除します。|
|ADD [CONSTRAINT] CHECK dom_search_condition|ドメインに、...
|DROP CONSTRAINT|ドメイン定義からCHECK制約を削除します。|
|new_col_name|ドメイン名を変更します。|
|TYPE data_type|ドメインのデータ型を変更します。|
&br;
**詳細の説明 [#ld39eb0f]
ALTER DOMAIN により、既存ドメインの NOT NULL 設定などの...
ドメインに対して行われる変更は、テーブルレベルで上書きさ...
すべてのテーブルのドメインを指定した列に対して影響を及ぼ...
※ドメインのデータ型や NOT NULL の設定を変更した場合、ドメ...
再作成と同様なことが行われます。~
&br;
ドメインの内容変更が出来るのは、作成者またはSYDBAユーザ...
権限を持ったユーザーのみです。~
&br;
**用例 [#hca2413a]
isqlでの例です。作成したドメインのデフォルト値設定を 9,99...
CREATE DOMAIN CUSTNO AS INTEGER CHECK (VALUE > 1000);
ALTER DOMAIN CUSTNO SET DEFAULT 9999;
**参照 [#u25ee149]
[[CREATE DOMAIN>#create_domain]] ,
[[CREATE TABLE>CREATE TABLE#create_table]] ,
[[DROP DOMAIN>#drop_domain]]~
&br;
すべての情報を得るためには、Data Definition Guide の、c...
using them to create column definitions を参照して下さい。~
&br;
&br;
----
&br;
&br;
&aname(drop_domain);
*DROP DOMAIN [#i1934cde]
データベースからドメインを削除します。
SQL,DSQL,isql で使用できます。~
**構文 [#dcb7b6fe]
DROP DOMAIN name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
|引数|説明|h
|name|既存のドメイン名|
&br;
**詳細の説明 [#i0be99ba]
DROP DOMAIN により、既存のドメインをデータベースから削...
&br;
ドメインが現在列の定義で使用されている場合、DROP 操作は...
このような場合は、ALTER TABLEによりドメインを使用している...
に DROP DOMAIN を実行する必要があります。~
&br;
ドメインを削除が出来るのは、作成者またはSYDBAユーザー、...
権限を持ったユーザーのみです。~
&br;
**用例 [#mcee74ac]
isql でドメインの削除をします。
DROP DOMAIN COUNTRYNAME;
&br;
**参照 [#q4d4e86d]
[[ALTER DOMAIN>#alter_domain]] , [[ALTER TABLE>#alter_t...
[[CREATE DOMAIN>#create_domain]]~
&br;
ページ名:
新規
名前変更
ホーム
一覧
検索
最終更新
バックアップ
ヘルプ
最終更新のRSS