SQLメモ
SQLメモ
■カラムの型の変更
ALTER TABLE my_table MODIFY (COL_A NUMBER(10));
■カラム名の変更
ALTER TABLE my_table RENAME COLUMN time_col TO date_col ;
■カラムの削除
ALTER TABLE my_table DROP (char_col , number_col)
-- 以下はオプションなので必須ではない
CASCADE CONSTRAINT INVALIDATE;
■テーブル名の変更
ALTER TABLE table_A RENAME TO table_B;
■テーブルにつけた制約名の変更
ALTER TABLE my_table RENAME CONSTRAINT Z00X1T_PK TO Z00X2T_PK;
■カラムの追加(位置指定なし)
ALTER TABLE my_table ADD (
char_col VARCHAR2(200 byte) DEFAULT 'xxx' NOT NULL ,
number_col NUMBER(10)
);
■テーブルからテーブル作成
CREATE TABLE table_name AS SELECT * FROM other_table;
■同じ定義のテーブルへ全コピー
INSERT into tblB SELECT * FROM tblA;
■シノニム作成
<XXXX側でシノニム作成>
CREATE OR REPLACE SYNONYM "XXXX"."TABLE_A" FOR "YYYY"."TABLE_B";
<YYYY側でXXXXにselect権限を付与>
GRANT SELECT ON "XXXX"."TABLE_A" TO YYYY ;
■シーケンス作成
CREATE SEQUENCE "XXXX"."XXXXSEQ_001"
MINVALUE 1 MAXVALUE 9999999999
INCREMENT BY 1
START WITH 1
NOCACHE NOORDER CYCLE ;
■登録日時とユーザの更新
update my_table set TS = '2017-12-22', USR = 'SYSTEM';
■PL/SQLで例外を発生させる
RAISE_APPLICATION_ERROR(-20000, '独自のエラーメッセージ');
■Date型での検索
select begin_time, end_time, undotsn from dba_hist_undostat
where begin_time >= to_date('2018/02/05 00:00:00', 'yyyy/mm/dd hh24:mi:ss')
and begin_time <= to_date('2018/02/05 23:59:59', 'yyyy/mm/dd hh24:mi:ss');
■日付書式
to_char(SYSDATE, 'YYYY"年"MM"月"DD"日"')
--2018年05月23日
--FM 接頭辞 字詰めモード (スペース/ゼロを挿入するのを無効にする)
select to_char(now(),'YYYY/FMmm/FMdd');
--2009/7/3
■BLOBのカラムの表領域変更
alter table テーブル名 move
lob(BLOBカラム名) store as ( tablespace テーブルスペース名);