メモ用
制約系(UNIQUE, FOREIGH KEY)
チェック制約
外部キー制約
-- ON DELETE CASCADEなしだと
ALTER TABLE テーブル名1
ADD CONSTRAINT 外部キー名
FOREIGN KEY (列名1-1)
REFERENCES テーブル名2(列名2-1)
-- ON DELETE CASCADE; -- 親テーブルの行が削除される場合、参照している子テーブルの該当行も削除される。
-- ON DELETE SET NULL; -- 親テーブルの行が削除される場合、参照している子テーブルの該当行は null に更新される。
-- ON 句なし 参照している子テーブルの該当行がある場合、親テーブルの行を削除できない。
主キー制約
一意制約 (UNIQUE)
ALTER TABLE テーブル名 MODIFY (列名 UNIQUE);
ALTER TABLE テーブル名 ADD UNIQUE (列名1, 列名2, 列名3, ...);
リネーム(名前変更)
ALTER TABLE word RENAME COLUMN 作成日 to 作成日時;
-- primary制約を削除
alter table "WORD" drop constraint "WORD_PK";
-- IDをユニークな連番で生成
create sequence word_seq;
ALTER TABLE word ADD (ID NUMBER DEFAULT word_seq.nextval,);
-- デフォルト値を設定
ALTER TABLE テーブル名 MODIFY (列名 default SYSTIMESTAMP ) ;
ALTER TABLE dictionary MODIFY ( 作成日 SYSTIMESTAMP ) ;
alter table dictionary alter column 作成日 TIMESTAMP;
ALTER TABLE dictionary MODIFY ( 作成日 default SYSTIMESTAMP ) ;
ALTER TABLE word MODIFY (作成日時 NOT NULL);
ALTER TABLE word MODIFY (ID PRIMARY KEY);
ALTER TABLE dictionary DROP (作成日) CASCADE CONSTRAINTS;
alter table dictionary add (作成日 TIMESTAMP default SYSTIMESTAMP);
データ追加
INSERT INTO テーブル名(
列名1,
列名2
) VALUES (
'列名1の値',
'列名2の値'
);
置換
ある任意の列のデータを一斉に置換することができます。(データ移行などで、文字化け対策などに使ったりします。)
-- GをBに変換する
update <table> set <column> =
replace(<column>, 'G', 'B') where <column>like '%G%
複製
テーブル複製
CREATE TABLE New_Table_name AS SELECT * FROM Existing_table_Name;
oracle - Creating Duplicate Table From Existing Table - Stack Overflow