SQL

SQLとはリレーショナルデータベースの問い合わせ言語です。

SQL

CREATE LIBRARY

CREATE LIBRARYとは、外部プロシージャライブラリを作成するSQL文である。

自分のスキーマに外部プロシージャライブラリを作成するには、CREATE LIBRARYシステム権限が必要である。任意のスキーマに外部プロシージャライブラリを作成するには、CREATE ANY LIBRARYシステム権限が必要である。

CREATE [OR REPLACE] LIBRARY [schema.]name {AS|IS} 'filename'
OR REPLACE
作成するライブラリが既に存在した場合は、ライブラリを再作成する。
schema
ライブラリを作成するスキーマを指定する。スキーマの指定を省略した場合は、自分のスキーマにライブラリを作成する。
name
作成するライブラリの名前を指定する。
filename
ライブラリのパスを指定する。

ライブラリを作成する例を示す。

CREATE OR REPLACE LIBRARY mylib AS '/opt/app/oracle/product/11.2.0/db_64/lib/libmylib.so'

ALTER LIBRARY

ALTER LIBRARYとは、外部プロシージャライブラリを明示的に再コンパイルするSQL文である。 ALTER LIBRARYでライブラリファイルのパス名を変更することはできない。 ライブラリファイルのパス名を変更するには、CREATE OR REPLACE LIBRARYで外部プロシージャライブラリを再定義する。

任意のスキーマの外部プロシージャライブラリを明示的に再コンパイルするには、ALTER ANY LIBRARYシステム権限が必要である。

ALTER LIBRARY [schema.]name COMPILE

DROP LIBRARY

DROP LIBRARYとは、外部プロシージャライブラリを削除するSQL文である。

任意のスキーマの外部プロシージャライブラリを削除するには、DROP ANY LIBRARYシステム権限が必要である。

DROP LIBRARY name

疑似列

ROWID

ROWID疑似列とは、行のアドレスであり、テーブル内で一意である。

SQL> SELECT ROWID FROM quotes WHERE code = 4755;

ROWID
------------------
AAADVFAABAAAI1KAAA

SQL>

SELECT文のWHERE句に条件として指定できる。

SQL> SELECT * FROM quotes WHERE ROWID = 'AAADVFAABAAAI1KAAA';

      CODE NAME
---------- ----------------------------------------------------------------
      4755 楽天

SQL>

ROWNUM

ROWNUM疑似列とは、問い合わせで戻された行の番号であり、1から順番に付けられる。

SELECT empno FROM (
  SELECT empno FROM emp ORDER BY empno
)
WHERE RONUM <= 10
ORDER BY empno

SELECT文のWHERE句に条件として指定することで、先頭n件の結果だけを取得できる。

SELECT * FROM emp WHERE ROWNUM <= 10

関数

COALESCE

式のリストのうち、NULLでない最初の値を戻す。式のリストが全てNULLである場合、COALESCEはNULLを戻す。

COALESCE(expr [, expr] ... )

COALESCEの使用例を次に示す。

SELECT COALESCE(quantity, 0) FROM inventory

上記のSQL文の場合、inventory.quantityNULLでなければinventory.quantityが戻り、inventory.quantityNULLならば0が戻る。したがって、NULLを0に変換することができる。

DECODE

DECODE(expr, condition1, value1 [,condition2, value2...] [,default])
expr
評価する式。列名や関数など。
condition
条件値
value
条件値に一致した場合にDECODE関数の戻り値となる値
default
いずれの条件値にも一致しなかった場合にDECODE関数の戻り値となる値。defaultを省略した場合はnull。

INSTR

文字列から部分文字列を検索し、現れた位置を示す数値を戻す。

INSTR(string, substring [, position [, occurrence]])
string
検索対象となる文字列
substring
検索する部分文字列
position
検索を開始する位置。省略した場合はデフォルト値である1が設定される。
occurrence
部分文字列が表れる回数。省略した場合はデフォルト値である1が設定される。

string中のpositionの位置から検索して、substringoccurrence番目に現れた位置を示す数値。指定条件で現れなかった場合は0を戻す。

LOWER

文字列stringに含まれる文字をすべて小文字に変換した文字列を戻す。

LOWER(string)

MOD

MODは剰余(割り算の余り)を返す関数である。

MOD(n1, n2)

n1n2で割った余りを戻り値として返す。

MOD関数を使用したSQL文の例を示す。

SQL> SELECT MOD(12, 5) FROM DUAL;

MOD(12,5)
----------
         2

SQL> SELECT MOD(12, 6) FROM DUAL;

MOD(12,6)
----------
         0

SQL>

SUBSTR

文字列charの中から、start番目から始まる長さlengthの文字列を抜き出して戻す。

SUBSTR(char, start [, length])
char
文字列
start
charから文字列を抜き出す開始位置。startが負の場合、charの終わりから逆方向に数えた位置を表す。
length
抜き出す文字数。省略した場合、charの最後まで抜き出す。

SUBSTRB

文字列charの中から、start番目から始まる長さlengthの文字列を抜き出して戻す。

SUBSTR(char, start [, length])
char
文字列
start
charから文字列を抜き出す開始位置。startが負の場合、charの終わりから逆方向に数えた位置を表す。
length
抜き出すバイト数。省略した場合、charの最後まで抜き出す。

UPPER

文字列stringに含まれる文字をすべて大文字に変換した文字列を戻す。

UPPER(string)