SQL文:データ定義クエリー
データ定義クエリー
データ定義クエリーでは、データベースに新しいオブジェクト(テーブル・フィールド・インデックス)を作成したり、既存オブジェクト(テーブル・インデックス)の削除をすることが出来ます。
SQLサーバーのデータベースに対して実行することが出来ます。
■データ定義クエリーの種類
- オブジェクトの作成
- テーブルを作成する … CREATE TABLEステートメント
フィールドを作成する … ALTER TABLEステートメント
インデックスを作成する … CREATE INDEXステートメント - オブジェクトを削除する
- テーブルを削除する … DROP TABLEステートメント
インデックスを削除する … DROP INDEXステートメント
■DataType(size)の詳細
データタイプ | DataType(size:テキスト型の場合指定可能) |
テキスト型 | CHAR(size:max255) / TEXT(size:max255) / STRING(size:max255) |
メモ型 | MEMO |
バイト型 | BYTE |
整数型 | SHORT |
長整数型 | INTEGER/LONG |
単精度浮動小数点型 | SINGLE |
倍制度浮動小数点型 | DOUBLE / NUMBER |
通貨型 | CURRENCY / MONEY |
オートナンバー型 | COUNTER |
日付/時刻型 | DATE / TIME (#2007/9/14#,#14/9/2007#,#14-Sep-2007#) |
YES/NO型 | YESNO (Yes,True,On,-1 / No,False,Off,0) |
※Access MDB についてのSQL文です。※sizeはテキスト型に対して指定可能。※各データタイプは小文字、大文字、小文字大文字まじりの何れでも可。※TEXT/STRINGなど記述が2種類ある場合、どちらの記述でも利用可能。 |
▲上へ
オブジェクト(テーブル/フィールド/インデックス)の作成・変更
CREATE TABLE::テーブルを作成する
CREATE TABLE [Table_Name] { [Field_Name1] [DataType(size)], [Field_Name2] [DataType(size)], [Field_Name3] [DataType(size)], …,…,… ) ;
インデックスを指定したテーブルを作成する
CREATE TABLE [Table_Name] { [Field_Name1] [DataType(size)], [Field_Name2] [DataType(size)], [Field_Name3] [DataType(size)], …,…,… CONSTRAINT [IndexName(任意名)] PRIMARY KEY ([Key_Field_Name]) ) ;
▲上へ
ALTER TABLE::フィールド/インデックスの追加/変更/削除
(1.)指定したフィールドを追加する
ALTER TABLE [Table_Name] ADD COLUMN [Field_Name] [DataType(size)] ;
−−>複数フィールドを追加するには?
※MDB/SQL Serverの場合(COLUMNなくても動くようです。) ALTER TABLE [Table_Name] ADD COLUMN [Field_Name] [DataType(size)], [Field_Name] [DataType(size)], …,… ; ※MySQL/Oracleでは、以下の書式のようです。 ALTER TABLE [Table_Name] ADD ( [Field_Name] [DataType(size)], [Field_Name] [DataType(size)], …,… ) ; ※この書式はMDBでエラーを返します。(確認済み)
−−>MySQLでは、追加位置の指定ができる
ALTER TABLE [Table_Name] ADD [NewField_Name] [DataType(size)] FIRST ; ※MDBではFIRSTを無視してフィールドの最後に追加(動作確認) ALTER TABLE [Table_Name] ADD [NewField_Name] [DataType(size)] AFTER [Field_Name] ; ※MDBでは"…ステートメントの構文エラー…"となる(動作確認)
(2.)指定したフィールドタイプを変更する
ALTER TABLE [Table_Name] ALTER COLUMN [Field_Name] [DataType(size)] ;
(3.)指定したフィールドを削除する場合
ALTER TABLE [Table_Name] DROP COLUMN [Field_Name] ;
(4.)[Table1]に外部キーを追加する
ALTER TABLE [Table1] ADD CONSTRAINT [IndexName(任意名)] FOREIGN KEY (Table1.KeyField) REFERENCES [Table2] (Table2.keyField);※Table1/2.KeyFieldは、それぞれ主キーが設定されていないとエラーとなるようです。
※このステートメント操作により、Table1.KeyFieldへTable2.KeyFieldの外部キー、1:∞のリレーションが設定される。
(5.)[Table2]のインデックスを削除する
ALTER TABLE [Table2] DROP CONSTRAINT [IndexName] ;※これにより(4.)で設定された[Table2]のインデックス(この場合外部キー参照)が削除されます
※[Table1]のインデックスは、リレーションを手動で解除してから実行ないとエラーが返される。
▲上へ
CREATE INDEX::インデックスを作成する
CREATE INDEX [IndexName(任意名)] ON [Table] (KeyField) WITH PRIMARY;
▲上へ
オブジェクト(テーブル・インデックス)を削除する
DROP TABLE::テーブルを削除する
DROP TABLE [Table_Name] ;※DROP TABLEステートメントを実行すると、テーブルが物理的に削除されます。間違った操作をしても元に戻せないので慎重に実行する必要があります。
▲上へ
DROP INDEX::インデックスを削除する
DROP INDEX [IndexName] ON [Table_Name] ;※DROP INDEXステートメントを実行するとインデックスが物理的に削除されます。
他のSQL(Jet(Access mdb)以外)では、記述が異なります。
例:DROP INDEX [Table_Name].[IndexName] ;
▲上へ
データベース・SQL文・SQLクエリー(query)関連リンク
wiki内関連ページ
- SQL文:SQLステートメント
- SQLステートメント
- SQLクエリー
- SQL文:ユニオンクエリー
- SQL文:パススルークエリー?
- SQL文:データ定義クエリー
- SQL文:サブクエリー?
- VB2005リファレンス(覚え書き)
外部リンク
現在なし
▲上へ
2007年09月14日(金) 10:45:24 Modified by cafeboy1