複合キー
・複合キーの一部の列に対してNULLを入れることはできない。
・一部のキー列に対して、新規に索引をつけることはできる。
2010年4月27日火曜日
SYNONYM
『プライベート・シノニム』と『パブリック・シノニム』が存在する。
●プライベート・シノニム
・スキーマ内でのみ有効なシノニム。
・ユーザが作成し、そのユーザ自身が使う。
●パブリック・シノニム
・oracleデータベース全体で有効なシノニム。
・DBAユーザもしくはcreate public synonym権限を持つユーザが作成できる。
・シノニムのもととなるオブジェクトの利用権限を持つユーザが利用できる。
※スキーマ指定は不要。オブジェクトの所有者を隠すことができる。
※create public synonym権限はシステム権限
オブジェクト所有者は所有するオブジェクトのすべての権限を持ってる
取り消しはできない。
●ビューとの違い
所有者以外のビューへのアクセスはビューに対するオブジェト権限が必要。
シノニムの場合、基礎表へのアクセス権限が必要。
●プライベート・シノニム
・スキーマ内でのみ有効なシノニム。
・ユーザが作成し、そのユーザ自身が使う。
●パブリック・シノニム
・oracleデータベース全体で有効なシノニム。
・DBAユーザもしくはcreate public synonym権限を持つユーザが作成できる。
・シノニムのもととなるオブジェクトの利用権限を持つユーザが利用できる。
※スキーマ指定は不要。オブジェクトの所有者を隠すことができる。
※create public synonym権限はシステム権限
オブジェクト所有者は所有するオブジェクトのすべての権限を持ってる
取り消しはできない。
●ビューとの違い
所有者以外のビューへのアクセスはビューに対するオブジェト権限が必要。
シノニムの場合、基礎表へのアクセス権限が必要。
2010年4月26日月曜日
2010年4月12日月曜日
NULLS FIRST, NULLS LAST
・ソートがかかるとき、NULL値は『最大値』として扱われる。
・『NULLS FIRST』『NULLS LAST』で明示的にソート時のNULL値の出力結果を変えることができる。
order by emp_no asc nulls first
・『NULLS FIRST』『NULLS LAST』で明示的にソート時のNULL値の出力結果を変えることができる。
order by emp_no asc nulls first
DEFAULT
【概要】
表作成時に指定する。(表作成後につけることも可能)
DEFAULTには、リテラル、式、SQL関数などを使用することができる。
※他の列名や擬似列は使用できない。
e.x.)
create table emp
(
empno varchar2(10) not null,
registdate date default sysdate
)
【DEFAULT値を指定してDMLを実行する】
INSERT、UPDATE時に明示的に指定することができる。
E.X.)
※UPDATE
update テーブル set 項目 = default;
※INSERT
INSERT INTO USER_MASTER (
USER_ID, DEPT_NO, USER_NAME, CREATED_ON, MODIFIED_ON
) VALUES (
'0020', '1001',
'小泉 純一',
DEFAULT,
NULL
) ;
表作成時に指定する。(表作成後につけることも可能)
DEFAULTには、リテラル、式、SQL関数などを使用することができる。
※他の列名や擬似列は使用できない。
e.x.)
create table emp
(
empno varchar2(10) not null,
registdate date default sysdate
)
【DEFAULT値を指定してDMLを実行する】
INSERT、UPDATE時に明示的に指定することができる。
E.X.)
※UPDATE
update テーブル set 項目 = default;
※INSERT
INSERT INTO USER_MASTER (
USER_ID, DEPT_NO, USER_NAME, CREATED_ON, MODIFIED_ON
) VALUES (
'0020', '1001',
'小泉 純一',
DEFAULT,
NULL
) ;
With check option
VIEWの定義時に指定することができる。
ビューに対するupdate, insert文が検査される。
条件に合わない場合は、エラーが生じて操作は拒否される。
e.x.)
create view sales_employee
as
select emp_id,emp_fname,emp_place,dept_id
from employee
where dept_id = 200
with check option;
VIEWからVIEWを作成することもできるのだが、もちろんwith check optionの内容は
継承される。
ビューに対するupdate, insert文が検査される。
条件に合わない場合は、エラーが生じて操作は拒否される。
e.x.)
create view sales_employee
as
select emp_id,emp_fname,emp_place,dept_id
from employee
where dept_id = 200
with check option;
VIEWからVIEWを作成することもできるのだが、もちろんwith check optionの内容は
継承される。
with read only
VIEWの定義時に指定する。
VIEWを通じての操作は、読み取りだけ。(読み取り専用)
e.x.)
create view emp_view
as select detno,count() cnt from emp
group by deptno
with read only.
VIEWを通じての操作は、読み取りだけ。(読み取り専用)
e.x.)
create view emp_view
as select detno,count() cnt from emp
group by deptno
with read only.
TRANSACTION
●TRANSACTIONの終了条件
・commitの実行
・rollbackの実行
・DDL文(create,alter,truncate,dropなど)の実行(暗黙のコミット)
・DCL文(GRANT,REVOKEなど)の実行(暗黙のコミット)
・SQL*Plus SQL Developerの終了(暗黙のコミット)
・マシン障害やシステムクラッシュの発生
・commitの実行
・rollbackの実行
・DDL文(create,alter,truncate,dropなど)の実行(暗黙のコミット)
・DCL文(GRANT,REVOKEなど)の実行(暗黙のコミット)
・SQL*Plus SQL Developerの終了(暗黙のコミット)
・マシン障害やシステムクラッシュの発生
2010年4月11日日曜日
SEQUENCE
【構文】
create sequence 順序名
[start with 開始番号]
[increment by 増分値]
[minvalue 最小値 | nominvalue]
[maxvalue 最大値 | nomaxvalue]
[cache キャッシュ数 | nocachr]
[cycle | nocycle];
【留意事項】
・sequenceは、順序名以外はデフォルト設定があるため、順序名だけでも作成できる。
E.X.)
create sequence seq_no1;
※Startwithのデフォルト値は1。なので一回目のnextvalの値は2。
【留意事項(その2)】
・順序の変更は順序の所有者またはALTER権限を持つユーザができる。
・ALTER SEQUENCE文で変更した値は、次の生成時から有効
・START WITHオプションは変更できない。
・現在の採番済みの順序番号よりも小さいMAXVALUEに変更することはできない。
※cacheはパフォーマンスに影響するらしいが、bronzeでは、細かく問われないので無視する。
create sequence 順序名
[start with 開始番号]
[increment by 増分値]
[minvalue 最小値 | nominvalue]
[maxvalue 最大値 | nomaxvalue]
[cache キャッシュ数 | nocachr]
[cycle | nocycle];
【留意事項】
・sequenceは、順序名以外はデフォルト設定があるため、順序名だけでも作成できる。
E.X.)
create sequence seq_no1;
※Startwithのデフォルト値は1。なので一回目のnextvalの値は2。
【留意事項(その2)】
・順序の変更は順序の所有者またはALTER権限を持つユーザができる。
・ALTER SEQUENCE文で変更した値は、次の生成時から有効
・START WITHオプションは変更できない。
・現在の採番済みの順序番号よりも小さいMAXVALUEに変更することはできない。
※cacheはパフォーマンスに影響するらしいが、bronzeでは、細かく問われないので無視する。
列別名
【列別名の構文】
・列名の後に続けて空白後、列別名を記述する。
select sysdate today from dual;
・長いSQL構文の場合、わかりにくくなるため、ASをつけてもよい。
select sysdate as today from dual;
・列別名の命名規則に違反した特殊記号や空白、先頭が数字で始まる名前を使用したい場合
select sysdate "Hello World" from dual;
select sysdate as "Hello World" from dual;
※二重引用符であることに気をつける!!
留意事項)
・列別名はhaving, where ,group by では指定できない。
理由)
from句、where句、group by句、having句、select句、order by句の順に評価される。
なので列別名はorder byでしか指定できない。
※しかし、副問合わせで生成されたテーブルの場合は、主問い合わせでは指定できる。
留意事項(その2)
表結合時、列名を表名で修飾するが、1つの表にしかない列も修飾することで、
どの表から取り出すかを解析する負荷が軽減されるため、パフォーマンスがアップする。
・列名の後に続けて空白後、列別名を記述する。
select sysdate today from dual;
・長いSQL構文の場合、わかりにくくなるため、ASをつけてもよい。
select sysdate as today from dual;
・列別名の命名規則に違反した特殊記号や空白、先頭が数字で始まる名前を使用したい場合
select sysdate "Hello World" from dual;
select sysdate as "Hello World" from dual;
※二重引用符であることに気をつける!!
留意事項)
・列別名はhaving, where ,group by では指定できない。
理由)
from句、where句、group by句、having句、select句、order by句の順に評価される。
なので列別名はorder byでしか指定できない。
※しかし、副問合わせで生成されたテーブルの場合は、主問い合わせでは指定できる。
留意事項(その2)
表結合時、列名を表名で修飾するが、1つの表にしかない列も修飾することで、
どの表から取り出すかを解析する負荷が軽減されるため、パフォーマンスがアップする。
登録:
投稿 (Atom)