リレーショナルデータベースとOracleデータベース
リレーショナルモデル
- 表形式のデータ構造を用いてデータを管理する仕組み。
階層型データベース
- 下位データ(子)は、ただ1つの上位のデータと(親)と関連付けられる。
ネットワーク型データベース
- 下位データ(子)が、複数の上位のデータと(親)と関連付けられる。
SQLコマンド
分類 | コマンド | 説明 |
---|---|---|
データ検索 | SELECT | 表に格納された行の参照 |
データ操作言語 | INSERT | 表への行の追加 |
UPDATE | 表に格納された行の更新 | |
DELETE | 表に格納された行の削除 | |
MERGE | 取得した行を表に更新または追加 | |
データ定義言語 | CREATE | オブジェクトの作成 |
DROP | オブジェクトの削除 | |
ALTER | オブジェクトの定義変更 | |
TRUNCATE | 表に格納されたすべての行を一括削除 | |
GRANT | 権限付与 | |
REVOKE | 権限の取り消し | |
トラザクション制御 | COMMIT | トラザクションの確定 |
ROLLBACK | トラザクションの取り消し |
SQL*Plusコマンド
コマンド | 説明 |
---|---|
DEFINE | 置換変数を設定または確認 |
DESCRIBE | 指定した表などのオブジェクトの定義を確認 |
EXIT | SQL*Plusを終了 |
SET | SQL*Plusシステム変数を設定 |
SHOW | SQL*Plusシステム変数の値または現行のSQL*Plus環境を表示 |
SHOW PARAMETER | 初期化パラメータの設定値を表示 |
UNDEFINE | 置換変数を削除 |
SELECT文の基礎とデータの扱い
代用引用メカニズム
- 初めの囲み文字:「q'」と任意の文字
- 終わりの囲み文字:任意の文字と「'」
データの選択(検索)およびソート
パターン文字列で使用できる特殊文字
特殊文字 | パターンにマッチする条件 |
---|---|
%(パーセント) | 任意の文字列(空文字を含む) |
_(アンダースコア) | 任意の1文字 |
置換変数
- &<変数名>または、&&<変数名>
単一行ファンクションを使用した出力のカスタマイズ
ファンクション
分類 | ファンクション | 説明 |
---|---|---|
文字ファンクション | LOWER | 文字列を小文字に変換する |
UPPER | 文字列を大文字に変換する | |
INITCAP | 文字列の先頭文字を大文字に、それ以降を小文字に変換する | |
CONCAT | 文字列を連結する | |
SUBSTR | 文字列から部分文字列を抜き出す | |
LPAD | 文字列の左側に文字を埋め込む | |
RPAD | 文字列の右側に文字を埋め込む | |
REPLACE | 文字列を置換する | |
TRIM | 文字列の前後にある文字を取り除く | |
LENGTH | 文字列の文字数を戻す | |
INSTR | 文字列を位置を戻す | |
数値ファンクション | ROUND | 数値を四捨五入する |
TRUNC | 数値を切り捨てる | |
MOD | 数値を除算したときの余りを戻す | |
POWER | 数値のべき乗を戻す | |
日時ファンクション | ADD_MONTHS | 数か月前または数か月後の日時を戻す |
MONTHS_BETWEEN | 2つの日時の期間を月単位で戻す | |
NEXT_DAY | 特定の曜日の日付を戻す | |
LAST_DAY | 月の最終日の日付を戻す | |
SYSDATE | データベースサーバーのOSの日時を戻す | |
ROUND | 日時を丸める | |
TRUNC | 日時を切り捨てる | |
変換ファンクション | TO_CHAR | データを文字型へ変換する |
TO_NUMBER | データを数値型へ変換する | |
TO_DATE | データを日時型へ変換する | |
NULL関連ファンクション | NVL | NULLを指定した値に置き換える |
NVL2 | NULLをどうかに応じて異なる値を戻す | |
NULLIF | 値が等しい場合にNULLを戻す | |
COALESCE | 複数の値のうち、最初かに見つかった非NULL値を戻す |
TRIM
文字列の前後にある指定された文字を削除
TRIM( [trim_char FROM] str)
- LEADINGを指定した場合、文字列strの先頭から連続した文字trim_charを探し、削除。
- TRAILINGを指定した場合、文字列strの末尾から連続した文字trim_charを探し、削除。
- BOTHを指定した場合、文字列strの先頭および末尾から連続した文字trim_charを探し、削除。
- trim_charおよびFROMを省略した場合、文字列strの先頭および末尾から連続した空白文字を探し、削除。
例
SQL> SELECT TRIM(LEADING '*' FROM '**ABC**') FROM dual;
結果
ABC**
INSTR
引数で指定した文字列の出現した位置を数値で戻す
INSTR(str, serach [, pos [, n]])
- 文字列strのpos文字目から文字列searchを検索し、文字列searchがn回目に出現する位置を戻す。
- posおよびnを省略した場合は1
- 文字列strに文字列searchがなかった場合、戻り値は0
例
SQL> SELECT INSTR('ABCDEABCDE', 'C') FROM dual;
SQL> SELECT INSTR('ABCDEABCDE', 'C', 6, 1) FROM dual;
結果
INSTR('ABCDEABCDE', 'C'), INSTR('ABCDEABCDE', 'C', 6, 1)
3 8
ROUND
数値を四捨五入する
ROUND( n [ , int ] )
- 数値nを小数点以下int桁に四捨五入。
- intが負の場合は小数点の左側intで四捨五入。
- intを省略した場合は0として扱われ、結果を整数にする。
例
SQL> SELECT ROUND(18.167), ROUND(18.167, 1), ROUND(18.167, -1) FROM dual;
結果
ROUND(18.167), ROUND(18.167, 1), ROUND(18.167, -1)
19 18.6 20
ROUNDファンクションに指定できる日時書式モデルと丸めの処理
- 書式モデルを省略すると「DD」で四捨五入
書式モデル | 丸め処理 |
---|---|
DD | 時間が00:00:00 ~ 11:59:59の場合、当日の00:00:00を戻す。
12:00:00 ~ 23:59:59の場合、翌日の00:00:00を戻す。 |
MM | 日にちが1日~15日の場合、当日の1日を戻す。
16日~末日の場合、翌日の1日を戻す。 |
RRまたはYY | 月が1月~6月の場合、当年の1月1日を戻す。
7月~12月の場合、翌年の1月1日を戻す。 |
例
SQL> SELECT ROUND(TO_DATE('2021/09/16 10:11:12'), 'DD') FROM dual;
結果
2021/09/16 00:00:00
TRUNC
数値を切り捨てる
TRUNCファンクションに指定できる日時書式モデルと丸めの処理
書式モデル | 丸め処理 |
---|---|
DD | 時間を切り捨て、当日の00:00:00を戻す。 |
MM | 日にちを切り捨て、当月の1日を戻す。 |
RRまたはYY | 月を切り捨て、当年の1月1日を戻す。 |
例
SQL> SELECT TRUNC(TO_DATE('2021/09/16 10:11:12'), 'DD') FROM dual;
結果
2021/09/16 00:00:00
MOD
数値を除算したときの余りを戻す
MOD(n, div)
- 数値nを数値divで割ったときの余りを戻す。
例
SQL> SELECT MOD(9, 4), MOD(9, 3), MOD(4, 9) FROM dual;
結果
MOD(9, 4) MOD(9, 3) MOD(4, 9)
1 0 4
POWER
数値のべき乗を戻す
POWER(n, m)
- 数値nのm乗を戻す。
例
SQL> SELECT POWER(2, 2), POWER(3, 2), POWER(3, 3) FROM dual;
結果
POWER(2, 2) POWER(3, 2) POWER(3, 3)
4 9 27