SQLとは、関係データベース管理システム(RDBMS)において、データの定義や操作を行うための言語である。SQLは次に示す3つに大別される。

SQLでは、ステートメントやデータベースオブジェクト名の大文字と小文字を区別しない。たとえば、次に示す2つのSQLは同じである。

select * from emp;
SELECT * FROM EMP;
スポンサードリンク

データ定義言語(DDL)

データ定義言語(DDL: Data Definition Language)とは、データベースオブジェクトの作成、変更又は削除を行うSQL文である。DDLによるデータベースの操作は即座に確定し、ロールバック(操作の取消し)することはできない。

Oracle DatabaseのDML一覧
SQL文 説明
ALTER DATABASE LINK データベースリンクを変更する。
ALTER FUNCTION ファンクションを変更する。
ALTER MATERIALIZED VIEW マテリアライズド・ビューを変更する。
ALTER PACKAGE パッケージを変更する。
ALTER PROCEDURE プロシージャを変更する
ALTER ROLE ロールを変更する。
ALTER TABLE テーブルを変更する。
ALTER TABLESPACE 表領域を変更する。
COMMENT コメントを付ける
CREATE DATABASE LINK データベースリンクを作成する。
CREATE FUNCTION ファンクションを作成する。
CREATE MATERIALIZED VIEW マテリアライズド・ビューを作成する。
CREATE PACKAGE パッケージ仕様部を作成する。
CREATE PACKAGE BODY パッケージ本体を作成する。
CREATE PROCEDURE プロシージャを作成する。
CREATE ROLE ロールを作成する。
CREATE SYNONYM シノニムを作成する。
CREATE TABLE テーブルを作成する。
CREATE TABLESPACE 表領域を作成する。
DROP DATABASE LINK データベースリンクを削除する。
DROP FUNCTION ファンクションを削除する。
DROP MATERIALIZED VIEW マテリアライズド・ビューを削除する。
DROP PACKAGE パッケージを削除する。
DROP PROCEDURE プロシージャを削除する。
DROP SYNONYM シノニムを削除する。
DROP TABLE テーブルを削除する。
DROP TABLESPACE 表領域を削除する。
TRUNCATE TABLE 表のデータをすべて削除する。
CREATE VIEW ビューを作成する。
ALTER VIEW ビューを変更する。
DROP VIEW ビューを削除する。
CREATE INDEX インデックス(索引)を作成する。
ALTER INDEX 索引を変更する。
DROP INDEX 索引を削除する。
DROP ROLE ロールを削除する。
CREATE SEQUENCE シーケンスを作成する。
ALTER SEQUENCE シーケンスを変更する。
DROP SEQUENCE シーケンスを削除する。
CREATE USER ユーザを作成する。
ALTER USER ユーザを変更する。
DROP USER ユーザを削除する。
CREATE DIRECTORY ディレクトリを作成する。
GRANT 権限を付与する。
REVOKE 権限を剥奪する。

データ操作言語(DML)

データ操作言語(DML: Data Manipulation Language)とは、レコードの挿入、更新又は削除を行うSQL文である。

データ操作言語(DML)によるデータベースの操作は、トランザクションのコミットが行われることで確定される。トランザクションのコミットが行われていなければ、データ操作言語(DML)によるデータベースの操作は、トランザクションのロールバックを行うことで操作を取り消すことができる。

Oracle DatabaseのDML一覧
SQL文 説明
SELECT 選択する。
INSERT テーブルに行を挿入する。
UPDATE 行を更新する。
DELETE 行を削除する。
MERGE 行を挿入または更新する。
CALL プロシージャファンクションを呼び出す。
EXPLAIN PLAN 実行計画を表示する。

データ制御言語(DCL)

データ制御言語(DCL: Data Control Language)とは、トランザクション、セッション又はシステムの制御を行うSQL文である。

Oracle DatabaseのDCL一覧
SQL文 説明
ALTER DATABASE データベースを変更する。
ALTER SESSION セッションパラメータを変更する。
ALTER SYSTEM システムプロパティを変更する。
COMMIT コミットする。
ROLLBACK ロールバックする。

ROWID疑似列

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

SQL> SELECT ROWID FROM employees WHERE id = 6502;

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

SQL>

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

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

        ID NAME
---------- ----------------------------------------------------------------
      6502 Yajima Maimi

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;

CASE式

CASE式とは、条件によって戻る値が変わる式である。

CASE expr
    WHEN comp THEN return
    [WHEN comp THEN return ...]
    [ELSE return]
END
CASE
    WHEN cond THEN return
    [WHEN cond THEN return ...]
    [ELSE return]
END
expr

評価する式

comp

比較する値

cond

条件式

return

戻す値

SELECT
    CASE emp.deptno
        WHEN 1 THEN 'OK'
        WHEN 2 THEN 'OK'
        WHEN 3 THEN 'NG'
        WHEN 4 THEN 'NG'
        ELSE 'UNKNOWN'
    END
FROM emp;
SELECT
    CASE
        WHEN emp.deptno = 1 OR emp.deptno = 2 THEN 'OK'
        WHEN emp.deptno = 3 OR emp.deptno = 4 THEN 'NG'
        ELSE 'UNKNOWN'
    END
FROM emp;
スポンサーリンク