データベーススペシャリスト試験に出るSQL文



権限

GRANT 操作 ON テーブル(View) TO ユーザ WITH GRANT OPTION
GRANT ALL PRIVILEGES ON 受注 TO USER1 WITH GRANT OPTION
GRANT SELECT ON 受注 TO USER1 WITH GRANT OPTION
GRANT UPDATE ON 受注 TO USER1 WITH GRANT OPTION
GRANT INSERT ON 受注 TO USER1 WITH GRANT OPTION
GRANT REMOVE ON 受注 TO USER1 WITH GRANT OPTION

CREATE ROLE ロール名
GRANT SELECT ON テーブル TO ロール名
GRANT ROLE ロール名 TO ユーザ


制約

CHECK制約
CHECK( 開始時刻 < 終了時刻)
CHECK( 種別 in ('1', '2', '3', '4', '5') )
CHECK ( 
 ( 単品区分 = ‘Y’ AND < AND 化粧箱番号 IS NULL AND 詰合せ日数 IS NULL )
 OR 
 ( 単品区分 = ‘N’ AND 社内原価 IS NULL AND 化粧箱番号 IS NOT NULL ) )


外部キー制約
FOREIGN KEY (column) REFERENCES tablename (column)
FOREIGN KEY (column1, column2) REFERENCES tablename (column, column2)


集合演算子

UNION
結果を結合する。
和集合

INTERSECT
重複を取得する。
積集合

EXCEPT
A EXCEPT BでBに存在しないAのレコードを取得する。
差集合

UNION / INTERSECT / EXCEPT は
平成28年午後IIに出題されている。


BETWEEN

WHERE カラム名 BETWEEN from AND to
WHERE A.支店コード BETWEEN B.開始支店コード AND B.終了支店コード

平成28年午後II

GROUP BY

SELECT句で集合関数を使用していないカラムは全て指定することになる。


集合関数 SUM, MAX, AVG

主にSELECT句で使う。GROUP BY HAVING句で使用するケースもある。
GROUP BYの中で指定していないカラムをSELECTする場合基本的に集合関数を使用することになる。


カーソル

INSERT | UPDATE テーブル名 SET xxxx
WHERE CURRENT OF カーソル名

CURRENTは最後にフェッチしたカーソルのデータを指す。

平成29年度午後Iの回答として出てくる。


IS NULL, IS NOT NULL

NULLが許容されているカラムの場合通常の比較に加えNULLチェックが必要な場合がある。


(NOT) EXISTS

WHERE句で使用する
中には基本SELECT文が入る

SELECT *
FROM 会議室X
WHERE NOT EXISTS
 ( SELECT * FROM 会議室予約 Y
  WHERE X.会議室予約 = Y.会議室予約 AND Y.予約日 = :hv1
  AND Y.予約開始時刻 < :hv3 AND Y.予約終了日時 > :hv2)


その他

CURRENT_DATE
現在日付を取得するシステム変数。
平成30年度 午後I 問2に回答として存在する。

時刻を取得する
CURRENT_TIME
日時を取得する
CURRENT_TIMESTAMP
が存在する。