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 |
- |