2010年12月2日木曜日

【SQL】クエリーの結果がNULLの場合に特定の値を返す。

--COALESCE関数は可変長の引数をとり、最初のNULL以外の値を返す。
--MSAccess以外の大抵のデータベースで使える。
--次の例の場合、T_TEST_TABLEにデータが無い場合、MAX(NUM)の結果は
--NULLになるが、COALESCE関数の第二引数に指定されている0が返される。
SELECT COALESCE(MAX(NUM),0) FROM T_TEST_TABLE
WHERE CategoryID = 7

2009年9月3日木曜日

【Transact-SQL】テーブルの追加と設定

--単純なテーブルを作成した後、ALTERを使って以下を行う
-- ・プライマリキーの追加
--
 ・規定値(デフォルト値)制約の追加
--
 ・カラムの追加
-- ・カラムの変更

-- ・一意制約(UNIQUE)の設定
-- ・チェック制約の設定

--テーブルの追加

CREATE TABLE t_test (
id INT IDENTITY(1,1) not NULL,
data VARCHAR(50)
)

--制約の追加
--プライマリキーの設定

ALTER TABLE t_test
ADD CONSTRAINT pk_t_test_id PRIMARY KEY (id)

--規定値(デフォルト値)制約の追加
ALTER TABLE t_test
ADD CONSTRAINT df_default_data2
DEFAULT 'test test' FOR data2 --フィールドdata2の規定値は'test test'

--カラムの追加
ALTER TABLE t_test ADD data2 VARCHAR(77)

--カラムの型変更
ALTER TABLE t_test ALTER COLUMN data VARCHAR(32)

--NULL制約の設定
-- ・ NULLを許可する場合→NULL
-- ・ NULLを許可しない場合→NOT NULL
ALTER TABLE
t_test ALTER COLUMN data NOT NULL

--一意制約(UNIQUE)の設定
--テーブルにsub_idフィールドを追加し、一意制約を設定する
--フィールドの追加
ALTER TABLE t_test
ADD sub_id INT

--一意制約の設定
--既にフィールドに一意でないデータが入っている場合は実行に失敗する
ALTER TABLE t_test
ADD CONSTRAINT ix_t_test_sub_id UNIQUE (sub_id)

--チェック制約の設定
--値の範囲をチェックする制約を設定
--SMALLINTのフィールドを追加し、制約を設定する
ALTER TABLE t_test
ADD type_number SMALLINT

--数値の範囲が0~10であることを確認する制約を設定する。
--この制約を設定した状態でも、当該フィールドの値がNULLの
--データを追加できる

--NULLデータの禁止はNULL制約を別途設定する
--また、この制約はデータの追加時にのみチェックされるため
--範囲外のデータが
既にテーブル上に存在する場合でも設定できる

ALTER TABLE
t_test
ADD CONSTRAINT ck_t_test_type_number
CHECK(type_number between 0 and 10)

--チェック制約は次のSQLでON/OFFすることができる。
--チェック制約―ON (CHECK CONSTRAINT)
ALTER TABLE t_test
CHECK CONSTRAINT ck_t_test_type_number
--チェック制約―OFF(NOCHECK CONSTRAINT)
ALTER TABLE t_test
NOCHECK CONSTRAINT ck_t_test_type_number




2008年10月20日月曜日

データベース スナップショット概要

データベース スナップショットについてのメモ

データベースの「ある時点」の読取り専用コピー

○メリット1

 ミラーリングした際に、通常は待機側(復元状態)データベースの
 内容を見ることは出来ないが、データベーススナップショットを
 作成すれば、読み取り専用サーバーとして使うことが出来る。

○メリット2
 テスト時に使える。

 テスト開始前の状態のデータベーススナップショットを
 作成した状態でテストを実行、結果を確認後に
 データベーススナップショットの時点の状態に戻す。

NTFSの特徴

MCPの勉強でNTFSがでてきたので、その特徴をメモしておく。

【NTFSの特徴】
・アカウントごとにアクセス権が設定できる
・ファイルシステムレベルで暗号化ができる
・ジャーナリングファイルシステム
 (クラッシュ時の復旧をファイル更新履歴を使って行なう)

2008年9月18日木曜日

最後(直前)に追加されたデータのIDを取得する

追加したデータのIDを別のテーブルにも設定する場合など、
直前に追加されたID(identity)の値を知りたい時には

@@identity

の値を取得する。

関連リンク:
@@IDENTITY (Transact-SQL)

2008年8月20日水曜日

【Transact-SQL】日付の加算・減算(その1)

--日付の加算・減算を行なう。
--1日を1とした場合の各時間の値
-- 3時間=0.125
-- 6時間=0.25
-- 9時間=0.375
--12時間=0.5


DECLARE
@date DATETIME
SET @date = CONVERT(DATETIME, '2008/10/10 12:00:00')

PRINT @date + 0.5
PRINT @date + 0.375
PRINT @date + 0.25
PRINT @date + 0.125
PRINT @date
PRINT @date - 0.125
PRINT @date - 0.25
PRINT @date - 0.375
PRINT @date - 0.5

--【実行結果】
-- 10 11 2008 12:00AM
-- 10 10 2008 9:00PM
-- 10 10 2008 6:00PM
-- 10 10 2008 3:00PM
-- 10 10 2008 12:00PM
-- 10 10 2008 9:00AM
-- 10 10 2008 6:00AM
-- 10 10 2008 3:00AM
-- 10 10 2008 12:00AM