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

疑似列

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(expr1, expr2, ...)

COALESCEの使用例を次に示す。

SELECT COALESCE(comm, 0) FROM emp

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

DECODE

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

INSTR

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

INSTR(string, substring)
INSTR(string, substring, position)
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

SUBSTRは、文字列の一部を切り出すSQL関数である。

SUBSTR(文字列, 開始位置)
SUBSTR(文字列, 開始位置, 文字数)

開始位置を後ろから(右から)指定するには、負の数を指定する。

SUBSTR関数の使用例を示す。

SELECT name, SUBSTR(name, 2), SUBSTR(name, -2), SUBSTR(name, 1, 2) FROM students;
name SUBSTR(name, 2) SUBSTR(name, -2) SUBSTR(name, 1, 2)
SATO NEO ATO NEO EO SA
佐藤愛桜 藤愛桜 愛桜 佐藤

SUBSTRB

文字列charの中から、start番目から始まる長さlengthの文字列を抜き出して戻す。SUBSTRとは異なり、文字数ではなくバイト数で指定する。

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

UPPER

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

UPPER(string)
string
大文字にする文字列
SELECT UPPER(ename) FROM emp