--COALESCE関数は可変長の引数をとり、最初のNULL以外の値を返す。
--MSAccess以外の大抵のデータベースで使える。
--次の例の場合、T_TEST_TABLEにデータが無い場合、MAX(NUM)の結果は
--NULLになるが、COALESCE関数の第二引数に指定されている0が返される。
SELECT COALESCE(MAX(NUM),0) FROM T_TEST_TABLE
WHERE CategoryID = 7
2010年12月2日木曜日
2009年9月4日金曜日
フリーで利用できるデータベース・開発ツール(オラクル)
オラクルの提供するフリーのデータベースおよび開発ツール
【データベース】
無料で使える「Oracle Database XE」をインストール
Oracle Database Express Edition
【ツール】
Javaアプリケーションの開発支援機能が充実
Oracle JDeveloper
Oracle JDeveloper
【データベース】
無料で使える「Oracle Database XE」をインストール
Oracle Database Express Edition
【ツール】
Javaアプリケーションの開発支援機能が充実
Oracle JDeveloper
Oracle JDeveloper
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
-- ・プライマリキーの追加
-- ・規定値(デフォルト値)制約の追加
-- ・カラムの追加
-- ・カラムの変更
-- ・一意制約(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
テスト時に使える。
テスト開始前の状態のデータベーススナップショットを
作成した状態でテストを実行、結果を確認後に
データベーススナップショットの時点の状態に戻す。
データベースの「ある時点」の読取り専用コピー
○メリット1
ミラーリングした際に、通常は待機側(復元状態)データベースの
内容を見ることは出来ないが、データベーススナップショットを
作成すれば、読み取り専用サーバーとして使うことが出来る。
○メリット2
テスト時に使える。
テスト開始前の状態のデータベーススナップショットを
作成した状態でテストを実行、結果を確認後に
データベーススナップショットの時点の状態に戻す。
2008年9月18日木曜日
最後(直前)に追加されたデータのIDを取得する
追加したデータのIDを別のテーブルにも設定する場合など、
直前に追加されたID(identity)の値を知りたい時には
@@identity
の値を取得する。
関連リンク:
@@IDENTITY (Transact-SQL)
直前に追加された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
--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
登録:
投稿 (Atom)