「SQL」の編集履歴(バックアップ)一覧に戻る
SQL - (2007/02/07 (水) 16:36:25) のソース
*Contents #contents ---- *SQL構文 **create table > create table テーブル名 (項目名 型 [NOT NULL | UNIQUE | PRIMARY KEY], ...); ***表領域を指定する。 > create table テーブル名 (項目名 型 [NOT NULL | UNIQUE | PRIMARY KEY], ...) tablespace 表領域名; ***INDEXは別の表領域を使用する。 > create table テーブル名 (項目名 型, ... primary key (項目名) using index tablespace 表領域名); **alter table ***項目追加 > alter table テーブル名 add (項目名 型); ***複数項目追加 > alter table テーブル名 add (項目名 型, 項目名 型); ***項目長変更 > alter table テーブル名 modify (項目名 型); -型の変更、長さを変更できる。 ***テーブルの表領域を移動する。 > alter table テーブル名 move tablespace 表領域名; **rename > rename 変更前テーブル名 to 変更後テーブル名 テーブル名を変更する。 **create sequence > create sequence 順序名 [start with 初期値] [increment by 増分値] [maxvalue 最大値 | nomaxvalue] [minvalue 最小値 | nominvalue] [cycle | nocycle] [cache | nocache] start with:開始位置。初期値 1 increment by:増分値。指定した値ずつ増えていく。初期値 1 maxvalue:最大値。設定した値以上増えない。 初期値 NOMAXVALUE minvalue:最小値。設定した値から始まる? 初期値 1 cycle:最大値まで言った場合に最小値に戻ってもう一度やり直すか否か。 初期値 nocycle cache:? 初期値 20 start withはsequenceを作成した時の開始位置。minvalueはcycleした時の開始位置。 **indexの表領域を変更する。 > alter index 制約名 rebuild tablespace 表領域名; rebuildでindex領域を再作成する。 tablespace以下を省略するとデフォルトの状態でindex領域を再作成する。 **設定されている制約を参照する。 > select a.table_name, b.column_name, a.constraint_name, a.constraint_type > from user_constraints a, user_cons_columns b > where a.table_name = b.table_name (+) > and a.constraint_name = b.constraint_name (+) **PL/SQL パッケージの一覧を参照する。 > select object_name from user_objects > where object_type = 'PACKAGE' object_typeには INDEX, LOB, PACKAGE, PACKAGE BODY, PROCEDURE, SEQUENCE, TABLEがある。 **PL/SQLパッケージソースの復元 > select text from user_source > where name = 必要なパッケージ名 > and type = 'PACKAGE BODY' > order by line -spoolに出力するがよい。 -typeには INDEX, LOB, PACKAGE, PACKAGE BODY, PROCEDURE, SEQUENCE, TABLEがある。 **INSERT...SELECT文の構文 > insert into table_name1 (col_name1, col_name2...) select col_mame1, col_name2... from table_name2 where id = 1; -values句は不要。 -カラムの型は同じでないといけない。 **トランザクション管理 ***セーブポイント > savepoint セーブポイント名 -commitはトランザクション全てコミットされる。 -rollbackはトランザクション全て破棄される。 -同一トランザクション内で同じ名前のセーブポイントを指定した場合、上書きされる。 > rollback to savepoint セーブポイント名; -セーブポイント名を設定した以後のトランザクションが破棄される。 -セーブポイント以前のトランザクションは生き。 -セーブポイント名が未設定のセーブポイントの場合、エラーとなる。 **月末日を求める。 > TO_DATE(TO_CHAR(ADD_MONTH(TO_DATE('適当な日付'), 1), 'YYYY/MM') || '/01') -1 -適当な日付 に1月足して、月初日(01)を算出し、1日引く。 **shellからSQLを実行する。 ***SQLファイルを実行 > sqlplus -S uid/pass@sid @hoge.sql ***SQL文を実行 > sqlplus -S uid/pass@sid <<END > select sysdate from dual; > exit sql.sqlcode > END **欠番探索 > select NEW_CODE = min(t1.CODE + 1) > from ( > select CODE from [TABLE] union all > select CODE from [RESERVE] (READUNCOMMITTED) > ) t1 left outer join ( > select CODE from [TABLE] union all > select CODE from [RESERVE] (READUNCOMMITTED) > ) t2 on (t1.CODE + 1) = t2.CODE > where t2.CODE is null via @IT掲示板 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15927&forum=26&5 ---- *なんかあればどうぞ #comment(vsize=2,nsize=20,size=40)