「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)
記事メニュー
目安箱バナー