制約や参照整合性についてのメモ。
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 列別名)
...
)
--------------------------------------
2009年7月7日火曜日
[DB2]とりあえず触ってみる - ネットワーク接続に変更
Oracleで言うところのローカル接続→SQL*NET接続への変更
▼サーバの設定確認
●DB2ポート番号の確認
コマンド・ウィンドウにて以下のコマンドを発行
------------------------------------------
[Usage]
db2 get dbm cfg | find "SVCENAME"
------------------------------------------
->「TCP/IP サービス名」部分に表示された値がサービス名。
------------------------------------------
TCP/IP サービス名 (SVCENAME) = db2c_DB2
SSL サービス名 (SSL_SVCENAME) =
------------------------------------------
->この場合、db2c_DB2がサービス名となる。
「C:\WINDOWS\system32\drivers\etc\services」を開いてサービス名のポート番号を確認。
------------------------------------------
db2c_DB2 50000/tcp
------------------------------------------
->50000がポート番号であることを確認。
●DB2COMMレジストリ変数の確認
コマンド・ウィンドウにて以下のコマンドを発行
------------------------------------------
DB2COMM=TCPIP
------------------------------------------
->TCPIPと表示されればOK。
▼クライアントとしての設定
サーバに接続するためには、ノード情報を設定する必要がある。
ノードには、サーバのIPアドレスとポート番号を設定する。
ノードを作成するには、CATALOGコマンドを使用する。
●ノードの作成
コマンド・ウィンドウにて以下のコマンドを発行する。
------------------------------------------
[Usage]
db2 CATALOG tcpip NODE remote server
------------------------------------------
[Sample]
db2 CATALOG tcpip NODE MyNode remote 127.0.0.0 server 50000
------------------------------------------
●DBのカタログ
作成したノードを「カタログ」することで実際に使用可能になる。
------------------------------------------
[Usage]
db2 CATALOG DB AS AT NODE
------------------------------------------
[Sample]
db2 CATALOG DB Sample AS MyDbSample AT NODE MyNode
------------------------------------------
カタログ情報は以下のコマンドで確認することができる。
------------------------------------------
[Usage]
db2 list db directory
------------------------------------------
●カタログの削除
以下のコマンドで作成したカタログを削除できる。
・データベース情報の削除
------------------------------------------
[Usage]
db2 uncatalog database
------------------------------------------
[Sample]
db2 uncatalog database MyDbSample
------------------------------------------
・ノード情報の削除
------------------------------------------
[Usage]
db2 uncatalog node
------------------------------------------
[Sample]
db2 uncatalog node MyNode
------------------------------------------
▼サーバの設定確認
●DB2ポート番号の確認
コマンド・ウィンドウにて以下のコマンドを発行
------------------------------------------
[Usage]
db2 get dbm cfg | find "SVCENAME"
------------------------------------------
->「TCP/IP サービス名」部分に表示された値がサービス名。
------------------------------------------
TCP/IP サービス名 (SVCENAME) = db2c_DB2
SSL サービス名 (SSL_SVCENAME) =
------------------------------------------
->この場合、db2c_DB2がサービス名となる。
「C:\WINDOWS\system32\drivers\etc\services」を開いてサービス名のポート番号を確認。
------------------------------------------
db2c_DB2 50000/tcp
------------------------------------------
->50000がポート番号であることを確認。
●DB2COMMレジストリ変数の確認
コマンド・ウィンドウにて以下のコマンドを発行
------------------------------------------
DB2COMM=TCPIP
------------------------------------------
->TCPIPと表示されればOK。
▼クライアントとしての設定
サーバに接続するためには、ノード情報を設定する必要がある。
ノードには、サーバのIPアドレスとポート番号を設定する。
ノードを作成するには、CATALOGコマンドを使用する。
●ノードの作成
コマンド・ウィンドウにて以下のコマンドを発行する。
------------------------------------------
[Usage]
db2 CATALOG tcpip NODE remote server
------------------------------------------
[Sample]
db2 CATALOG tcpip NODE MyNode remote 127.0.0.0 server 50000
------------------------------------------
●DBのカタログ
作成したノードを「カタログ」することで実際に使用可能になる。
------------------------------------------
[Usage]
db2 CATALOG DB AS AT NODE
------------------------------------------
[Sample]
db2 CATALOG DB Sample AS MyDbSample AT NODE MyNode
------------------------------------------
カタログ情報は以下のコマンドで確認することができる。
------------------------------------------
[Usage]
db2 list db directory
------------------------------------------
●カタログの削除
以下のコマンドで作成したカタログを削除できる。
・データベース情報の削除
------------------------------------------
[Usage]
db2 uncatalog database
------------------------------------------
[Sample]
db2 uncatalog database MyDbSample
------------------------------------------
・ノード情報の削除
------------------------------------------
[Usage]
db2 uncatalog node
------------------------------------------
[Sample]
db2 uncatalog node MyNode
------------------------------------------
2009年7月4日土曜日
[DB2]とりあえず触ってみる - 各種コマンドメモ
<各種コマンドメモ>
●コマンドを実行するためのツール
・コマンド・ウィンドウ
Windowsスタートメニューから起動する。
コマンドプロンプトから直接起動できないのは仕様らしい(ホント?)
・CLP(コマンド行プロセッサー)
コマンド・ウィンドウから「db2」コマンドでCLP起動となる。
#以下はコマンド・ウィンドウで実行する場合のコマンドです。
CLPで実行する場合、先頭の「db2」を削除してください。
●DB2コマンド一覧(SQLは含まない)
------------------------------------------
[Usage]
db2 ?
------------------------------------------
->Oracleで言うところのSQL*PLUSコマンドと同じっぽい
●データベースへの接続
------------------------------------------
[Usage]
db2 connect to [user using ]
------------------------------------------
->user以下を省略すると、OS認証となる。
●データベース接続状況の確認
------------------------------------------
[Usage]
db2 connect
------------------------------------------
●データベースからの切断
------------------------------------------
[Usage]
db2 connect reset
or
db2 terminate
------------------------------------------
->この2つにニュアンスの違いってあるのかなあ?
[答え]http://www-01.ibm.com/support/docview.wss?uid=std305ef4bde22d56168492575060035a024
●オートコミット解除
#デフォルトでオートコミットはON・・・恐ろしい子
・その1
オートコミット=オフでコマンド行プロセッサーを起動
------------------------------------------
[Usage]
db2 +c
------------------------------------------
・その2
SQL毎にオン/オフを切り替えて実行
------------------------------------------
[Usage]
db2 +c
------------------------------------------
->このへんの環境まわりの設定は「db2 list command」コマンドを叩いてみよう
●オートコミット状態の確認
------------------------------------------
[Usage]
db2 list command options
------------------------------------------
-> 「-c 自動コミット (ON|OFF)」で確認。
●テーブル一覧の取得
------------------------------------------
[Usage]
db2 list tables
------------------------------------------
->このへんの一覧表示系コマンドは「db2 ? list」コマンドを叩いてみよう
●テーブル定義の表示
------------------------------------------
[Usage]
db2 describe table [show detail]
------------------------------------------
-> show detailをつけると、より詳しい情報が表示される。
●データベースの作成
------------------------------------------
[Usage]
db2 create database on using codeset territory collate using
------------------------------------------
->詳しいことはこのへん参照
http://www.atmarkit.co.jp/flinux/rensai/db2_02/db2_02b.html
●エラーコードの詳細確認
------------------------------------------
[Usage]
db2 ?
------------------------------------------
●DB2コマンドの文法確認
------------------------------------------
[Usage]
db2 ?
------------------------------------------
●コマンドを実行するためのツール
・コマンド・ウィンドウ
Windowsスタートメニューから起動する。
コマンドプロンプトから直接起動できないのは仕様らしい(ホント?)
・CLP(コマンド行プロセッサー)
コマンド・ウィンドウから「db2」コマンドでCLP起動となる。
#以下はコマンド・ウィンドウで実行する場合のコマンドです。
CLPで実行する場合、先頭の「db2」を削除してください。
●DB2コマンド一覧(SQLは含まない)
------------------------------------------
[Usage]
db2 ?
------------------------------------------
->Oracleで言うところのSQL*PLUSコマンドと同じっぽい
●データベースへの接続
------------------------------------------
[Usage]
db2 connect to [user using ]
------------------------------------------
->user以下を省略すると、OS認証となる。
●データベース接続状況の確認
------------------------------------------
[Usage]
db2 connect
------------------------------------------
●データベースからの切断
------------------------------------------
[Usage]
db2 connect reset
or
db2 terminate
------------------------------------------
->この2つにニュアンスの違いってあるのかなあ?
[答え]http://www-01.ibm.com/support/docview.wss?uid=std305ef4bde22d56168492575060035a024
●オートコミット解除
#デフォルトでオートコミットはON・・・恐ろしい子
・その1
オートコミット=オフでコマンド行プロセッサーを起動
------------------------------------------
[Usage]
db2 +c
------------------------------------------
・その2
SQL毎にオン/オフを切り替えて実行
------------------------------------------
[Usage]
db2 +c
------------------------------------------
->このへんの環境まわりの設定は「db2 list command」コマンドを叩いてみよう
●オートコミット状態の確認
------------------------------------------
[Usage]
db2 list command options
------------------------------------------
-> 「-c 自動コミット (ON|OFF)」で確認。
●テーブル一覧の取得
------------------------------------------
[Usage]
db2 list tables
------------------------------------------
->このへんの一覧表示系コマンドは「db2 ? list」コマンドを叩いてみよう
●テーブル定義の表示
------------------------------------------
[Usage]
db2 describe table [show detail]
------------------------------------------
-> show detailをつけると、より詳しい情報が表示される。
●データベースの作成
------------------------------------------
[Usage]
db2 create database on using codeset territory collate using
------------------------------------------
->詳しいことはこのへん参照
http://www.atmarkit.co.jp/flinux/rensai/db2_02/db2_02b.html
●エラーコードの詳細確認
------------------------------------------
[Usage]
db2 ?
------------------------------------------
●DB2コマンドの文法確認
------------------------------------------
[Usage]
db2 ?
------------------------------------------
2009年7月2日木曜日
[DB2]Express-Cインストールメモ
<はじめに>
・DB/2のデも知らないので学習用に導入した。
<導入した環境>
・Windows-32bit(XP Professional)
<手順>
1.前提条件を確認
http://www-06.ibm.com/software/jp/data/db2/v9/express-c/
2.ダウンロード
ダウンロードしたバージョンは
「1.DB2 Express-C for Windows Version 9.7 」
ちなみに要会員登録。
3.インストール
setup.exeを起動するとウィザードが立ち上がるのでポチペチ
完了。接続テストはまた今度。
・DB/2のデも知らないので学習用に導入した。
<導入した環境>
・Windows-32bit(XP Professional)
<手順>
1.前提条件を確認
http://www-06.ibm.com/software/jp/data/db2/v9/express-c/
2.ダウンロード
ダウンロードしたバージョンは
「1.DB2 Express-C for Windows Version 9.7 」
ちなみに要会員登録。
3.インストール
setup.exeを起動するとウィザードが立ち上がるのでポチペチ
完了。接続テストはまた今度。
2009年2月25日水曜日
[Oracle][Materialized View]元表メンテナンス時のTIPS
MLOGが付いている元表をメンテナンスする際に、2者の関係を一時的に切り離すことができる。元表に対する大量データ投入や、定義変更時に便利。
※ただし、メンテナンス完了後、Materialized Viewを完全リフレッシュする必要があるため注意。
[実装方法]
・以下のプロシージャでメンテナンス開始を宣言する。
---------------------------------------------------
DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION (
tabowner IN VARCHAR2,
tabname IN VARCHAR2);
---------------------------------------------------
tabowner
再編成する表の所有者。
tabname
再編成する表の名前。
・以下のプロシージャでメンテナンス終了を宣言する。
---------------------------------------------------
DBMS_MVIEW.END_TABLE_REORGANIZATION (
tabowner IN VARCHAR2,
tabname IN VARCHAR2);
---------------------------------------------------
パラメータ 説明
tabowner
再編成する表の所有者。
tabname
再編成する表の名前。
[制限]
・メンテナンス完了後、Materialized Viewを完全リフレッシュする必要がある。
・メンテナンスを開始したセッションは、完了まで対象テーブルに対する表ロック状態を取得する。
※ただし、メンテナンス完了後、Materialized Viewを完全リフレッシュする必要があるため注意。
[実装方法]
・以下のプロシージャでメンテナンス開始を宣言する。
---------------------------------------------------
DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION (
tabowner IN VARCHAR2,
tabname IN VARCHAR2);
---------------------------------------------------
tabowner
再編成する表の所有者。
tabname
再編成する表の名前。
・以下のプロシージャでメンテナンス終了を宣言する。
---------------------------------------------------
DBMS_MVIEW.END_TABLE_REORGANIZATION (
tabowner IN VARCHAR2,
tabname IN VARCHAR2);
---------------------------------------------------
パラメータ 説明
tabowner
再編成する表の所有者。
tabname
再編成する表の名前。
[制限]
・メンテナンス完了後、Materialized Viewを完全リフレッシュする必要がある。
・メンテナンスを開始したセッションは、完了まで対象テーブルに対する表ロック状態を取得する。
登録:
投稿 (Atom)