DDL文
本日もまた、SQL基礎の勉強まとめ。今回は、データ型の話が中心。
DDL文とは、データベースのデータ構造を定義する言語を用いたSQL文
- CREATE
- DROP
- ALTER
- COMMIT
- TRUNCATE
- PRUGE ...など
実行後に現在のトランザクションをコミットする文を指す。
また、スキーマ・オブジェクトとはデータベースに格納する表やビュー、
索引などの総称で特定のユーザーに所有されるもの。
記憶域やロール、ユーザー等システム全体で共有されるものは
スキーマ・オブジェクトではない。
データ型
データベースに格納する値にはデータ型という、
型設定を行う必要があり、そのデータ型の各特長についてが下記まとめ。
●CHAR型 文字を扱うデータ型
CHAR型は最大2,000バイトまでの文字データを格納できる固定長のデータ型です。
▽CHAR型
項目 | データ |
---|---|
最大格納サイズ | 最大2,000バイト |
定義時のサイズ指定 | 省略可(省略時サイズ'1') |
確保するデータサイズ | 固定(定義時に指定したサイズ) |
固定長・可変長 | 固定長 |
<<例>>
CHAR(5)に「abc」が格納されるた場合、
データの末尾に空白を追加し、長さが5バイトの「abc 」として格納される
●VARCHAR2型 文字を扱うデータ型
VARCHAR2型は最大4,000バイトまでの文字データを格納できる可変長のデータ型です。
▽VARCHAR2型 文字を扱うデータ型
項目 | データ |
---|---|
最大格納サイズ | 最大4000バイト |
定義時のサイズ指定 | 省略不可 |
確保するデータサイズ | 可変(格納するデータに応じて変わる) |
固定長・可変長 | 可変長 |
●CLOB型 文字を扱うデータ型
CLOB型は最大4GBまで格納できるデータ型です。
●NUMBER型
NUMBER型には正と負の数値を格納できます。
NUMBER(桁,内少数桁)
→例えばNUMBER(10,3)に123.4567を入力すると
小数点第4位が四捨五入され、123.457が格納されます。
●期間を確認するデータ型(INTERVAL)
期間を確認するデータ型には、下記の2つが存在する。
--期間を年、月の単位で格納する。(「5年6カ月」など)
INTERVAL YEAR TO MONTH
--期間を日、時、分、秒の単位で格納する。(「10日と12時間30分30秒」など)
INTERVAL DAY TO SECOND
この2つの型は、ともにDATE型との演算が可能です。
DATE型の値に期間を足すことで、足した期間経過後の日時を取得することができます。
値を格納するためには、以下のような期間リテラルを使用します。
・INTERVAL '5-6' YEAR TO MONTH:5年6ヶ月
・INTERVAL '100' YEAR(3):100年
・INTERVAL '300' MONTH(3):300ヶ月
・INTERVAL '10 12:30:30' DAY TO SECOND:10日と12時間30分30秒
※年や月の精度が2桁より大きい場合は、YEAR(3)などのように精度を指定します
<<例>>
INTERVAL '200' MONTH(=200ヶ月間)
=INTERVAL ’16-8’ YEAR TO MONTH(=16年8ヶ月間)
※期間データ型には書式モデルはありません。
SELECT文で期間データ型を表示させると、
INTERVAL ’16-8’ YEAR TO MONTH は +16-8
INTERVAL '50-11' YEAR TO MONTH は +50-11
INTERVAL '4 12:30:10.1234567' DAY TO SECOND は +04 12:30:10.123457
のように表示されます。
●DATE型
DATE型は日付データを格納するためのデータ型です。
DATE型には世紀、年、月、日、時、分、秒の値が格納されます。
なお、格納するためには、日付リテラルを使用するか、
文字列や数値をTO_DATE関数でDATE型の値に変換します。
●TIMESTAMP型
TIMESTAMP型はDATE型を拡張したデータ型で、
世紀、年、月、日、時、分、秒に加え秒の小数点以下の値を格納することができます。
TIMESTAMP型の列に値を格納するためには、日付リテラルを使用するか、
文字列や数値をTO_TIMESTAMP関数でTIMESTAMP型の値に変換します。
なお、TIMESTAMP型の値をDATE型の列へ暗黙的データ変換により、
格納することができます。
●RAW型
最大2000バイトまでのバイナリデータを格納できる、可変長のデータ型です。
●ROWID型
列にROWIDを格納するためのデータ型で、
行の一意なアドレスであるROWID疑似列(実際には列として定義されていない列)から
返される値を列に格納するために使用する、BASE64文字列のデータ型です。
●LONG型 文字を扱うデータ型
LONG型は最大2GBまで格納できる可変長のデータ型です。
LONG型には以下の制限があります。
・LONG型の列は1つの表に1つだけ定義できる
・LONG型の列はGROUP BY句とORDER BY句に指定できない
・副問合せによる表の作成時、LONG型の列はコピーできない
・LONG型の列には、NULLおよびNOT NULL以外の制約を定義できない
●LONG RAW型
2GBまでの可変長のバイナリデータを格納できるデータ型です。
LONG RAW型は以下の制限があります。
・LONG RAW型の列は1つの表に1つだけ定義できる
・LONG RAW型の列には制約は定義できない
・LONG RAW型の列はGROUP BY句とORDER BY句に指定できない
・副問合せによる表の作成時、LONG RAW型の列はコピーできない
●BFILE型
最大4GBまでのバイナリデータを格納できる、読み取り専用のデータ型です。
データはOracleのデータファイル内ではなく、
OS上にバイナリファイル(動画やイメージ)として格納され、
ファイルに対するポインタ情報のみが格納されます。
●バイナリーデータを格納
バイナリデータを扱う主なデータ型は次の通りです。
項目 | データ |
---|---|
RAW | 最大2000バイトまで格納できる可変長のデータ型 |
LONG RAW | 最大2GBまで格納できる可変長のデータ型 |
BLOB | 最大4GBまで格納できるデータ型 |
GFILE | 最大4GBまで格納できる、読取専用のデータ型 |
BFILE | 最大4GBまで格納できる、読取専用のデータ型 |
次回
次回は、制約のお話を書く予定。
余談ですが、この名前のところ、名字名前で登録すると反転しちゃうのどうにかならんかね。
あんず 飴 表記が理想。
随時更新@あんず飴