制約や参照整合性についてのメモ。
FOREIGN KEY制約がOracleと大きく違うような気がする。
(FOREIGN KEY制約とCHECK制約は業務で使った事ない・・・)
・PRIMARY KEY
内部インデックスが作成される。
NULLは許可しない。
・FOREIGN KEY
参照キー変更時の挙動をREFERENCES句で設定できる。
削除/更新時(ON DELETE / ON UPDATE)
→何もしない/外部キー変更/NULL設定/デフォルト値設定
(NO ACTION / CASCADE / SET NULL / SET DEFAULT)
・UNIQUE制約
内部インデックスが作成される。
NULLは1件のみ許可する。
VARCHAR(MAX)とスパース列には設定できない。
・NOT NULL
・DEFAULT
・CHECK
固定値以外に、同一テーブルの別の列値に制限することもできる(組織マスタ等の自己参照テーブルなどで使用)
2009年12月20日日曜日
2009年11月18日水曜日
[SQLServer]基礎強化メモ - テーブル定義
テーブル作成についてのメモ。
一般的なテーブルは特筆すべき点なし。
一時テーブルはOracleだと[create grobal temporary table]だけど同一セッションからしか参照できなかった気がする。
他のセッションから参照できるのはSQLServer独自かもしれない。
▼一般的なテーブルの定義文
列のデフォルトはNULL。
列レベルで、インスタンスに設定された照合順序(COLLATE)を上書きすることができる。
照合順序の設定は「列 > データベース > インスタンス」の順に優先する。
--------------------------------------
<文法>
CREATE TABLE スキーマ名.テーブル名(
列名1 データ型(NULL | NOT NULL) (AS 列別名)
...
)
--------------------------------------
▼一時テーブル
一時テーブルはtempdbに作成される。
・ローカル一時テーブル
→作成したセッションのみで使用できる。
・グローバル一時テーブル
→すべてのセッションから参照できる。
→グローバル一時テーブルを作成したセッションが終了すると、
グローバル一時テーブルは消滅する。
--------------------------------------
<文法>
[ローカル一時テーブル]
CREATE TABLE #スキーマ名.テーブル名(
列名1 データ型(NULL | NOT NULL) (AS 列別名)
...
)
[グローバル一時テーブル]
CREATE TABLE ##スキーマ名.テーブル名(
列名1 データ型(NULL | NOT NULL) (AS 列別名)
...
)
--------------------------------------
一般的なテーブルは特筆すべき点なし。
一時テーブルはOracleだと[create grobal temporary table]だけど同一セッションからしか参照できなかった気がする。
他のセッションから参照できるのはSQLServer独自かもしれない。
▼一般的なテーブルの定義文
列のデフォルトはNULL。
列レベルで、インスタンスに設定された照合順序(COLLATE)を上書きすることができる。
照合順序の設定は「列 > データベース > インスタンス」の順に優先する。
--------------------------------------
<文法>
CREATE TABLE スキーマ名.テーブル名(
列名1 データ型(NULL | NOT NULL) (AS 列別名)
...
)
--------------------------------------
▼一時テーブル
一時テーブルはtempdbに作成される。
・ローカル一時テーブル
→作成したセッションのみで使用できる。
・グローバル一時テーブル
→すべてのセッションから参照できる。
→グローバル一時テーブルを作成したセッションが終了すると、
グローバル一時テーブルは消滅する。
--------------------------------------
<文法>
[ローカル一時テーブル]
CREATE TABLE #スキーマ名.テーブル名(
列名1 データ型(NULL | NOT NULL) (AS 列別名)
...
)
[グローバル一時テーブル]
CREATE TABLE ##スキーマ名.テーブル名(
列名1 データ型(NULL | NOT NULL) (AS 列別名)
...
)
--------------------------------------
登録:
投稿 (Atom)