SQLでの間違えやすい箇所

表の結合

自然結合(natural join)

結合に使う列を、表名または別表名で修飾するとエラーになる

--エラーにならない
select ename,deptno from emp natural join dept;
--エラー
select ename,emp.deptno from emp natural join dept;
USING句を使用した結合

結合に使う列を、表名または別表名で修飾するとエラーになる
NATURAL JOINとUSINGは同時に使用出来ない

--エラー
select ename,emp.deptno from emp natural join dept using(deptno);
ON句を使用した結合

結合に使う列を、表名または別表名で修飾する必要がある

--エラーにならない
select ename,e.deptno from emp e join dept d on e.deptno=d.deptno;
ORACLE独自結合構文による等価結合

結合条件はwhere句に指定する
同じ名前の列がある場合は表名または別表名で修飾する必要がある

制約

NOT NULL制約は列レベルでのみ定義出来る
複合制約は表レベルでのみ定義出来る
外部キー制約の表レベル構文では、FOREIGN KEY キーワードは使わない
CHECK制約の定義には、疑似列や関数の一部、、他の行を参照する問い合わせは定義できない

--列レベル構文(,が付かない)
create table emp (deptno number(6)  constraint deptno_fk references dept(deptno));
--表レベル構文(,が付く)
create table emp (deptno number(6), constraint deptno_fk foreign key(deptno) references dept(deptno));

ビュー

ビューを通じたデータの変更操作の可否

ビューの定義に含まれている要素 行の削除 行の更新 行の追加
ビューに含まれていない実表の列にNOT NULL制約が定義されている ×
式によって定義された列 × ×
DISTINCTキーワード × × ×
ROWNUM疑似列 × × ×
グループ関数 × × ×
GROUP BY句 × × ×

SQLの分類とトランザクション

分類 説明 コマンド 自動コミット
DML(Data Manipulation Language) 表内のデータを直接操作する SELECT
INSERT
UPDATE
DELETE
MERGE
×
DDL(Data Definition Language) データベースオブジェクトを作成、変更、削除する CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMIT
DCL(Data Control Language) データベースに対する権限を付与、取り消す GRANT
REVOKE
トランザクション制御 トランザクションの制御 COMMIT
ROLLBACK
SAVEPOINT
-