SQL - (2005/11/16 (水) 19:23:32) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*Contents
#contents
----
*SQL構文
**テーブル名を変更する。
-rename
> rename 変更前テーブル名 to 変更後テーブル名
**設定されている制約を参照する。
> 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句は不要。
-カラムの型は同じでないといけない。
**alter table
***項目追加
> alter table テーブル名 add (項目名 型);
***項目長変更
> alter table テーブル名 modify (項目名 型);
-型の変更、長さを変更できる。
*トランザクション管理
**セーブポイント
> savepoint セーブポイント名
-commitはトランザクション全てコミットされる。
-rollbackはトランザクション全て破棄される。
-同一トランザクション内で同じ名前のセーブポイントを指定した場合、上書きされる。
> rollback to savepoint セーブポイント名;
-セーブポイント名を設定した以後のトランザクションが破棄される。
-セーブポイント以前のトランザクションは生き。
-セーブポイント名が未設定のセーブポイントの場合、エラーとなる。
----
*なんかあればどうぞ
#comment(vsize=2,nsize=20,size=40)
*Contents
#contents
----
*[[SQL/DDL]]
*SQL
**JOIN
***INNER JOIN
> select * from hoge h inner join fuga f on (h.id = f.id)
以下と等価。
> select * from hoge h, fuga f where h.id = f.id
***OUTER JOIN
> select * from hoge h left outer join fuga f on (h.id = f.id)
以下と等価。
> select * from fuga f right outer join hoge h on (f.id = h.id)
> select * from hoge h, fuga f where h.id = f.id(+)
[left|right]は省略可能。(省略時はleft)
**設定されている制約を参照する。
> 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 (+)
**SEQUENCEを参照する。
> SELECT * FROM USER_SEQUENCES
**PL/SQL パッケージの一覧を参照する。
> select object_name from user_objects
> where object_type = 'PACKAGE'
object_typeには INDEX, LOB, PACKAGE, PACKAGE BODY, PROCEDURE, SEQUENCE, TABLE, SYNONYM がある。
**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がある。
**View のソースを復元
> select text from user_views where view_name='ビュー名';
-set long 4000; などして、longの表示可能サイズを拡大する。
**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日引く。
**欠番探索
> 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
*その他
**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
----
*なんかあればどうぞ
#comment(vsize=2,nsize=20,size=40)
表示オプション
横に並べて表示:
変化行の前後のみ表示: