最新のSQLに触れられるOracle LiveSQL の紹介

# LiveSQLとは
Oracle Databaseの複雑な構文や実行結果をWebブラウザ上で簡単に試すことができるLiveSQLを紹介します。画面のスナップショットは一部加工しています。

Oracle LiveSQLを試すために必要なことは以下の２つだけです。

- インターネット接続とブラウザ
- Oracleアカウント

Oracleアカウントの登録が完了したら [LiveSQL](https://livesql.oracle.com/) にアクセスします。Oracleアカウントの認証を行った後、ライセンス確認のページが表示されます。

![License](https://qiita-image-store.s3.amazonaws.com/0/181284/f5d6a922-3942-2a99-f75d-3918b1d84f3c.png)

ライセンスを確認後、「I Agree」をチェックして「Accept」ボタンをクリックすると、ホーム画面が表示されます。

![Home](https://qiita-image-store.s3.amazonaws.com/0/181284/03c20fd1-a092-b621-9a90-fbe62d0fbc54.png)

SQL文を実行するには、左側のSQL Worksheetのアイコンをクリックします。SQL Worksheetの画面が表示されます。ワークシートではSQL文の入力、スクリプトの保存、SQL文の実行などを行うことができます。

![SQL Worksheet](https://qiita-image-store.s3.amazonaws.com/0/181284/53af1560-2320-e760-89f8-ea14d682147b.png)

SQL文を入力し、右上の「RUN」ボタンをクリックするだけで最新のOracle Database環境を試すことができます。

# バージョン
今月に入って、LiveSQL で使われるOracle Databaseがバージョンアップし、Oracle Database 19c (19.2) になりました。

![LiveSQL03.png](https://qiita-image-store.s3.amazonaws.com/0/181284/d1145818-127b-ad04-4ba3-61494454c8e2.png)

# 制約
LiveSQLを利用するユーザーにはすべての権限が付与されているわけではありません。

## ユーザー
ユーザー名はSQLで始まるOracleアカウントとは無関係な名前が自動的に付与されます。
デフォルト表領域 LIVESQL_USERS、一時表領域 TEMP が設定されています。対応するユーザは、ロックされた状態（EXPIRED & LOCKED）です。

![USER_USERS](https://qiita-image-store.s3.amazonaws.com/0/181284/89684a74-88b0-790f-54e1-a3170dd56ed2.png)

## システム権限
以下のシステム権限のみが付与されています。システム管理系の権限は使えませんが、一般ユーザーが定義できるほとんどのオブジェクトを作成できる権限が付与されています。

|システム権限|説明|ADMIN OPTION|
|:---|:---|:---|
|CREATE ANALYTIC VIEW|ANALYTIC VIEWの作成|No|
|CREATE INDEXTYPE|INDEXTYPEの作成|No|
|CREATE MINING MODEL|MINING MODELの作成|No|
|CREATE PROCEDURE|プロシージャの作成|No|
|CREATE OPERATOR|オペレーターの作成|No|
|CREATE HIERARCHY|HIERARCHYの作成|No|
|CREATE TYPE|ユーザー定義型の作成|No|
|CREATE SYNONYM|シノニムの作成|No|
|CREATE CLUSTER|クラスターの作成|No|
|CREATE MATERIALIZED VIEW|マテリアライズド・ビューの作成|No|
|CREATE VIEW|ビューの作成|No|
|CREATE ATTRIBUTE DIMENSION|ATTRIBUTE DIMENSIONの作成|No|
|CREATE TABLE|テーブルの作成|No|
|CREATE DIMENSION|DIMENSIONの作成|No|
|CREATE TRIGGER|トリガーの作成|No|
|CREATE SEQUENCE|シーケンスの作成|No|

![USER_SYS_PRIVS](https://qiita-image-store.s3.amazonaws.com/0/181284/c8eb7d30-cfbe-4f48-cec1-1baf10384da1.png)

## 表領域
デフォルト表領域 に対して 10 MB だけ使うことができます。せめて２桁増やしてほしいところです。

![USER_TS_QUOTAS](https://qiita-image-store.s3.amazonaws.com/0/181284/8abd0e1d-e5d7-4df5-a9d3-99fcc6c00e06.png)


# オブジェクトの作成と確認

## オブジェクトの作成
オブジェクトの確認や、GUIを使ったオブジェクトの作成には、Schemaアイコン（４番目のアイコン）をクリックします。画面右上の「+ Create Database Object」ボタンをクリックすると、作成するオブジェクトの種類が表示されます。アイコンをクリックすることでオブジェクト作成画面が表示されます。

![Object](https://qiita-image-store.s3.amazonaws.com/0/181284/acdc36fc-56bf-253b-5c16-ac24633882e0.png)

下記はテーブル作成画面です。
![Create Table](https://qiita-image-store.s3.amazonaws.com/0/181284/ac241cea-dea9-49a9-7209-0e35127773dd.png)

テーブルなど、ユーザーが作成したオブジェクトは永続化されないため、LiveSQLをログオフすると削除されます。

## Oracle Examplesスキーマ
LiveSQLでは、Oracle Examplesに含まれるスキーマも確認することができます（ただし読み込み専用）。

|内容|ユーザー名|
|:---|:---|
|Academic|AD|
|Analytic View|AV|
|DinoDate Demo|DD|
|EMP and DEPT|SCOTT|
|Human Resources|HR|
|Olympic Data|OLYM|
|Orde Entry|OE|
|Sales History|SH|
|World Data|WORLD|

下記の画面は、HRユーザーのオブジェクト一覧です。
![HR User](https://qiita-image-store.s3.amazonaws.com/0/181284/cb921bec-cce3-2180-0687-0923e6721788.png)