目次
ORACLE SQLの分類
SQLの分類は大きく分けて四種類に分かれる。データ操作言語DML、データ定義言語DDL、データ制御言語DCL、トランザクション制御である。
データ操作言語DML
DMLとはデータを操作する基本的なSQLの分類である。DMLとはData Manupulation Launguageの略である。
SQL文の中でも基礎中の基礎であるSELECT文がこのDMLに含まれる。SELECT文はデータベースから表を取り出し表示する。INSERTは新規データの挿入である。UPDATEは既存データの更新である。DELETE文は既存データの削除である。MERGEとはデータの挿入と更新を行う文である。つまりDMLの中でもMERGE文は特殊であり、INSERT文とUPDATE文が組み合わさった機能を持つ。
SELECT文
SELECT文の基本的な構文は、以下のようになる。
1 |
SQL> SELECT 何を FROM どの表から; |
テーブルから列を取り出したいとする場合は以下のようなコードになる。
1 |
SQL> SELECT (列) FROM (テーブル名); |
INSERT文
列名に値を挿入する。
1 |
SQL> INSERT INTO テーブル名(列名)VALUES ('値1' '値2'); |
UPDATE文
UPDATE文はデータベースに新しいデータを更新する文である。
1 |
SQL> UPDATE <テーブル名>; |
SET <カラム名>=<更新後の値>
DELETE文
DELETE文はテーブル全体、もしくは削除したいフィールドを指定して削除する事も可能である。
1 |
SQL> DELETE FROM テーブル名 |
で、表を削除する。
データ定義言語DDL
DDLはData Definition Laungageの略であり、データ定義言語と呼ばれる。データベース内の表、ビューやインデックスなどの各種オブジェクトの作成や変更をすることができるSQLである。
CREATE文
Create文は表の作成を行う事ができます。CREATE文はDDLの分類に含まれます。次のようにCREATE TABLE文を使って表の作成を行っていきます。
1 |
SQL> CREATE TABLE [スキーマ名].表名 ( 列名 データ型[,列名 データ型 …]); |
表を作成するにはCREATE TABLE権限が必要である。自分が所有しているスキーマ以外に表を作成するには、CREATE ANY TABLE権限が必要である。
DROP文
Drop文は表を削除する場合に使用される文である。表を削除するには、DROP TABLE文を使用する。
1 |
DROP TABLE 表名 [PURGE]; |
この文を実行するにはDROP ANY TABLE権限が必要です。
TRUNCATE文
TRUNCATE文を使用すると大量のデータが格納されている表の全てのデータを削除する事ができる。
TRUNCATE文は自動コミットが実行されるので処理をロールバックすることができない。次のような文で表明のデータを消すことができる。
1 |
SQL> TRUNCATE TABLE 表名; |
ALTER文
ALTER文を使用することによって、表の既存の列のデータ型、サイズ、およびデフォルト値を変更することができる。ALTER TABLE文で既存の列を変更する構文は次のようになる。
1 |
SQL> ALTER TABLE 表名 MODIFY (列名[データ型][DEFAULT 式][,列名[データ型][DEFAULT 式]…]); |
RENAME文
ALTER TABLE~RENAME文でテーブル名を変更することができる。以下の文は既に存在している表を新しい表名に変更するRENAME文である。
1 |
SQL> ALTER TABLE table_name RENAME TO new_table_name; |
COMMENT文
COMMENT文を使用すると各句などに対するコメントをデータディクショナリに追加することができる。
1 |
SQL> COMMENT ON TABLE EMP IS '従業員管理する為の表'; |
データ制御言語(DCL)
DCLとはData Control Languageの略である。GRANT文は権限の付与を行う文である。REVOKE文は権限の取り消しを行う文である。
GRANT文
ユーザー名またはロール名というユーザーのオブジェクトに対してシステム権限を与える。
1 |
SQL> GRANT システム権限 ON{オブジェクト名} TO {ユーザー名|ロール名|PUBLIC} |
REVOKE文
revoke文はユーザに与えられているシステム権限やオブジェクト権限を削除する文である。以下は基本文である。
1 |
SQL> REVOKE システム権限 ON{オブジェクト名} TO {ユーザー名|ロール名|PUBLIC} |
トランザクション制御
トランザクション制御はDMLによる変更をトランザクション単位で管理する文である。COMMIT文は処理中のトランザクションを終了しデータベース に反映させるものである。
ROLLBACK文は処理中のトランザクションを終了し、処理前の状態に戻す事である。SAVEPOINT文は長く続くトランザクションの処理を分割しマークを設定する。
COMMIT文
データなどが追加された場合COMMIT文を使用しなければ変更データの確定がされない。表にデータなどを追加した場合はCOMMIT文によって処理を確定する必要がある。
commitは以下のようなコードで実行できる。
1 |
SQL> COMMIT; |
COMMIT文を実行すると、トランザクションは終了する為、その後でROLLBACK文を実行しても、確定した処理を消すことはできない。
ROLLBACK文
一連の処理(データの追加・更新・削除)をすべて取り消し、トランザクションを終了する。以下の一文でデータ変更後COMMITされていない文を全て変更を取り消すことができる。
1 |
SQL> ROLLBACK; |
COMMIT文を実行するとトランザクションは終了する。その後でROLLBACK文を実行しても、確定した処理は取り消すことができない。
SAVEPOINT文
SAVEPOINTを使用することでトランザクション処理中の現在のポイントにマークをつけることができる。
以下のように、セーブポイントを作成するには「SAVEPOINT セーブポイント名;」で現在のポイントにマークをつける事ができる。
1 |
SQL> SAVEPOINT a; |