
SQLのコンテキストでは、データ定義言語またはデータ記述言語( DDL ) は、表、索引、ユーザーなどのデータベース オブジェクトを作成および変更するための構文です。 DDL 文は、データ構造、特にデータベース スキーマを定義するコンピュータプログラミング言語に似ています。 DDL 文の一般的な例としては、、、などがあります。 .ddl ファイルがある場合、そのファイルに表を作成する文が含まれていることを意味します。 Oracle SQL Developer には、Data Modeler で生成された ERD から .sql ファイルまたは .ddl ファイルにエクスポートする機能が含まれています。
CREATEALTERDROP
歴史
データ定義言語の概念とその名前は、Codasylデータベースモデルに関連して初めて導入されました。Codasylデータベースモデルでは、データベースのスキーマが、ユーザーデータモデルのレコード、フィールド、セットを記述する言語構文で記述されていました。[1]その後、テーブル、列、データ型、制約を宣言するための構造化照会言語(SQL)のサブセットを指すようになりました。SQL -92では、スキーマを照会するためのスキーマ操作言語とスキーマ情報テーブルが導入されました。[2]これらの情報テーブルは、 SQL:2003でSQL/Schemataとして指定されました。DDLという用語は、データまたは情報構造を記述するための形式言語を指す一般的な意味でも使用されます。
構造化クエリ言語 (SQL)
多くのデータ記述言語では、宣言型の構文を使用して列とデータ型を定義します。ただし、構造化クエリ言語 (SQL) では、テーブルやその他の要素の定義を追加、変更、または削除することでデータベースのスキーマを変更する命令型の動詞のコレクションを使用します。これらのステートメントは他の SQL ステートメントと自由に組み合わせることができるため、DDL は独立した言語ではありません。
CREATE ステートメント
createコマンドは、新しいデータベース、テーブル、インデックス、またはストアド プロシージャを作成するために使用されます。
SQLの CREATE 文は、リレーショナル データベース管理システム(RDBMS)にコンポーネントを作成します。SQL 1992 仕様では、作成できるコンポーネントの種類は、スキーマ、テーブル、ビュー、ドメイン、文字セット、照合順序、翻訳、アサーションです。[ 2 ]多くの実装では、構文を拡張して、インデックスやユーザー プロファイルなどの追加要素を作成できるようにしています 。PostgreSQLやSQL Serverなどの一部のシステムでは、データベース トランザクション内でCREATEやその他の DDL コマンドが許可されているため、ロールバックできます。[3] [ 4]
CREATE TABLE ステートメント
よく使用されるCREATEコマンドはCREATE TABLEコマンドです。一般的な使用法は次のとおりです。
CREATE TABLE [テーブル名] ( [列定義] ) [テーブルパラメータ]
列の定義は次のとおりです。
- 次のいずれかのカンマ区切りリスト
- 列定義: [列名] [データ型] {NULL | NOT NULL} {列オプション}
- 主キーの定義: PRIMARY KEY ( [カンマ区切りの列リスト] )
- 制約: {CONSTRAINT} [制約の定義]
- RDBMS固有の機能
いくつかの列を持つ employeesという名前のテーブルを作成する例のステートメントは次のとおりです。
CREATE TABLE employees ( id INTEGER PRIMARY KEY 、first_name VARCHAR ( 50 ) not null 、last_name VARCHAR ( 75 ) not null 、mid_name VARCHAR ( 50 ) not null 、dateofbirth DATE not null );
CREATE TABLE DDLの一部の形式には、 SQLのCREATE TABLE AS SELECT (CTaS)構文など、DML(データ操作言語)のような構造が組み込まれている場合があります。[5]
DROP ステートメント
DROPステートメントは、既存のデータベース、テーブル、インデックス、またはビューを破棄します。
SQLのDROPステートメントは、リレーショナルデータベース管理システム(RDBMS)からコンポーネントを削除します。削除できるオブジェクトのタイプは、使用している RDBMS によって異なりますが、ほとんどの RDBMS はテーブル、ユーザー、およびデータベースの削除をサポートしています。一部のシステム ( PostgreSQLなど) では、DROP やその他の DDL コマンドをトランザクション内で実行してロールバックすることができます。一般的な使用法は次のとおりです。
オブジェクトタイプ オブジェクト名をドロップします。
たとえば、employeesという名前のテーブルを削除するコマンドは次のようになります。
従業員テーブルを削除します。
DROPステートメントは、DELETEステートメントやTRUNCATEステートメントとは異なり、DELETEおよびTRUNCATE はテーブル自体を削除しません。たとえば、DELETEステートメントはテーブルから一部 (またはすべて) のデータを削除しますが、テーブル自体はデータベースに残ります。一方、DROPステートメントはテーブル全体をデータベースから削除します。
ALTER ステートメント
ALTERステートメントは既存のデータベース オブジェクトを変更します。
SQLのALTERステートメントは、リレーショナル データベース管理システム(RDBMS)内のオブジェクトのプロパティを変更します。変更できるオブジェクトのタイプは、使用されている RDBMS によって異なります。一般的な使用法は次のとおりです。
オブジェクトタイプ オブジェクト名 パラメータを変更します。
たとえば、既存のsinkというテーブルにbubbleという列を追加 (その後削除) するコマンドは次のようになります。
ALTER TABLEシンクにbubbles INTEGERを追加します。ALTER TABLEシンクにbubbles をDROPします。
TRUNCATE ステートメント
TRUNCATEステートメントは、テーブルからすべてのデータを削除するために使用されます。これはDELETEよりもはるかに高速です。
テーブルtable_name をTRUNCATE します。
参照整合性ステートメント
SQL の別の種類の DDL 文は、参照整合性関係を定義するために使用され、通常はテーブルの一部の列の主キーおよび外部キータグとして実装されます。これらの 2 つのステートメントは、 CREATE TABLE文またはALTER TABLE文に含めることができます。
その他の言語
- XML スキーマは、 XMLの DDL の例です。
- JSON スキーマは、JSONの DDL の例です。
- DFDL スキーマは、多くのテキストおよびバイナリ形式を記述できる DDL の例です。
参照
参考文献
- ^ Olle, T. William (1978).データベース管理への Codasyl アプローチ. Wiley. ISBN 0-471-99579-7。
- ^ ab 「情報技術 - データベース言語SQL」。SQL92。カーネギーメロン大学。 2018年11月12日閲覧。
- ^ Laudenschlager, Douglas、Milener, Gene、Guyer, Craig、Byham, Rick。「トランザクション (Transact-SQL)」。Microsoft Docs。Microsoft。2018年11月 12 日閲覧。
- ^ 「PostgreSQL トランザクション」。PostgreSQL 8.3 ドキュメント。PostgreSQL。2013 年 2 月 7 日。2018年11 月 12 日に閲覧。
- ^ アレン、グラント (2010)。SQLite 決定版ガイド。Apresspod。マイク・オーウェンズ (第 2 版)。Apress。pp. 90–91。ISBN
9781430232254. 2012-10-02
取得。create table
ステートメントには、 selectステートメントからテーブルを作成するための特別な構文があります。 [...]: [...] create table foods2 as select * from foods; [...] 他の多くのデータベースでは、このアプローチをCTaS ( Create Table as Select の略) と呼んでおり、このフレーズは SQLite ユーザーの間では珍しくありません。
外部リンク
- Oracle ALTER TABLE MODIFY 列 2021-04-21 にWayback Machineでアーカイブされました
- Oracle の DDL コマンドは 2021-04-21 にWayback Machineにアーカイブされています
