初めに
ここからは実際のSQL文を学んでいきましょう!
SQL文とは、データベースに操作命令を送るための言語です。 例えば、多くのデータの中から条件を絞って検索したり、指定した値でデータを挿入したりできます。
※マニュアルで紹介するSQL文やSQLの関数は、Oracle準拠になっています。
DBによって部分的に記述が異なる場合もありますので、他のDBを使う際はその都度調べる必要があります。
SQL言語の種類
データ定義言語(DDL)
DDL(Data Definition Language)とはデータベースやデータベース内のデータをまとめた表(テーブル)を定義する文法です。
データを定義する目的ごとに以下3つの種類があります。
- CREATE文:データベースやテーブルの作成
- DROP文:データベースやテーブルの削除
- ALTER文:データベースやテーブルの定義変更
データ操作言語(DML)
DML(Data Manipulation Language)とはデータベースや表にまとめられているデータを操作するための文法です。
データ操作の目的によって以下4つの種類があります。
- SELECT文:データ取得
- INSERT文:データ挿入
- UPDATE文:データ更新
- DELETE文:データ削除
データ制御言語(DCL)
データやトランザクションを制御するための文法です。
DCLの定義はデータベース製品によります。OracleではCOMMITやROLLBACKはトランザクション制御文、GRANTやREVOKEはDDLとしており、DCLは定義されていません。
- COMMIT:データベースに対して行った変更を確定する
- ROLLBACK:データベースに対して行った変更を取り消す
- GRANT:ユーザーに操作の権限を与える
- REVOKE:ユーザーから操作の権限を奪う
SQL文の記述ルール

①語句の間は半角スペースで区切る
語句や記号同士の隙間は半角スペースで区切ります。半角スペースは2つ入れてもエラーになりませんが、全角スペースを使用するとエラーになります。
半角スペースの代わりに、改行で代用することもできます。
②文末は「;」(セミコロン)で終わらせる
SQL文は途中で改行しても、セミコロンが登場するまでは続きがあると見なされます。
③データの文字列は「'」(シングルクォーテーション)で囲む
データが文字列型の場合、シングルクォーテーションで囲む必要があります。テーブル名やカラム名は囲む必要はありません。
「Let’s」といった単語を含むデータを保存したい場合は、「Let”s」のように重ねることで保存できます。
④大文字と小文字を区別しない
SQL構文やテーブル名、カラム名の大文字小文字を区別しません。データに関しては区別されます。
なお、SQL構文は慣例的に大文字で書くことが多いです。
実践 – データ定義DDL
それでは実際にSQL文を書いてデータベースを操作していきましょう。
・前の単元で接続したsampleスキーマのSQLワークシートに記入して実行していきます。

テーブル作成(CREATE TABLE)
テーブルを作成するときは、CREATE文を使用します。以下のSQL文をワークシートに書いて実行してみましょう。
CREATE TABLE sample.tests (id INT, name VARCHAR(10 CHAR));
(CEREATE TABLE スキーマ名 . テーブル名 ;)
☆該当のユーザー(スキーマ)にログインしている場合は「スキーマ名 . 」の部分は省略可(基本的にマニュアルの環境では省略可)
☆VARCHARの後ろに(10 CHAR)と書いてありますが、これはカラムに登録できる最大文字数を表しています。CHAR型、VARCHAR型といった文字列型には文字数の指定が必須で、省略できません。
☆なお、VARCHAR(10)と書いた場合、カラムに登録できるのは10Bytesになります。英字やアルファベット等は1Byteですが、日本語などは1文字が1~3Bytesですので、登録するデータが日本語の場合は(10 CHAR)のように文字数単位で指定しましょう。
デフォルトがBytes単位なのはOracle特有で、他のDB(MySQL等)ではデフォルトが文字数単位となっており、DBMSにより異なるポイントの1つです。
操作順序
①SQL文をワークシートに書いて実行
②完了していればメッセージがスクリプト出力されます
③スキーマ[sample]を選択し
④青色の更新ボタンを押してください。

実行後
「tests」というテーブルが作成され、idとnameのカラムが作成されたことが確認できます。

以降、SQL文を実行する際は、同様に手動で更新して結果を確認してください。
テーブル削除(DROP TABLE)
テーブルを削除する場合は、DROP文を使用します。以下のSQLを記述して、testsテーブルを削除してみましょう。
DROP TABLE tests;
( DROP TABLE テーブル名 ; )
削除できたことが確認出来たら、再度testsテーブルを作成してください。
テーブル名変更(ALTER TABLE , RENAME TO)
テーブル名の変更は、ALTER文を使用します。testsテーブルをtemplatesに変更します。
ALTER TABLE tests RENAME TO templates;
( ALTER TABLE テーブル名 RENAME TO 変更名 ; )
カラム名変更(ALTER TABLE , RENAME COLUMN TO)
カラム名の変更もALTER文を使用します。nameのカラム名をstaffnameに変更します。
ALTER TABLE templates RENAME COLUMN name TO staffname;
( ALTER TABLE テーブル名 RENAME COLUMN カラム名 TO 変更名 ; )
カラム追加(ALTER TABLE , ADD)
カラムを追加する場合もALTER文を使用します。
ALTER TABLE templates ADD sex char(1);
( ALTER TABLE テーブル名 ADD カラム名 データ型 ; )
※char型の1桁と指定することで、「1が男性、2が女性、3がその他」のように区分を保存することがよくあります。
実践 – データ操作DML
データ作成(INSERT)
INSERT文で新しいデータを作成します。( )内にカラム順にデータを記述していきます。
INSERT INTO templates VALUES (1, 'Yamada', '1') ;
( INSERT INTO テーブル名 VALUES (データ) ; )
☆SQL文で文字列型のデータを指定する場合、「'」(シングルクォーテーション)で囲みます。
データが追加できているかをデータタブにて確認しましょう。
複数行作成する場合、以下の書き方でも実行可能です。
が、1行ずつ実行する場合に比べて記述は大して短くなりません。
INSERT ALL
INTO templates VALUES (2, 'Tanaka', '2')
INTO templates VALUES (3, 'Suzuki', '1')
SELECT * FROM DUAL;
☆データタブにデータが反映されない場合は、データタブ内の更新ボタンを押してください。

データ取得(SELECT)
SELECT文でデータを取得するときは、「どの列を(SELECT)」「どの表から(FROM)」「どんな条件で(WHERE)」と指定します。
SELECT * FROM templates ;
( SELECT カラム名 FROM テーブル名 ; )
SELECT直後の「*」は全フィールド(列)を意味します。この場合、templatesテーブル全てのデータを取得します。
WHERE句を使用すると、条件に当てはまるデータだけを取得できます。
SELECT id, staffname FROM templates WHERE id = 2 ;
( SELECT カラム名 FROM テーブル名 WHERE 条件 ; )
templatesテーブルからidが2のレコードのidとstaffnameを取得
☆SELECT句にはカンマ区切りで複数のカラムを指定できます。
データ更新(UPDATE)
UPDATE文を使用して、テーブルの全データの中から条件に合ったものだけを更新します。※WHERE句がないと全件が更新対象になります。
UPDATE templates SET staffname = ‘Kimura’ WHERE id = 3 ;
( UPDATE テーブル名 SET カラム名 = 値 WHERE 条件 ; )
データ削除(DELETE)
DELETE文を使用してデータを削除します。
特定のデータだけを削除するときは、WHERE句を使って対象を絞り込みます。※WHERE句がないと全件削除になります。
DELETE FROM templates WHERE id = 3 ;
( DELETE FROM テーブル名 WHERE 条件 ) ;
その他にも定義や型の変更などありますので「Oracle DB XXX」や「SQL XXX」などで検索してみましょう!
参考サイト:オラクル・Oracle SQL 入門
SQL Developerでの操作
テーブル操作
テーブルの作成
「表(フィルタ対象)」を右クリック>「新規の表」をクリック
テーブル名、カラム情報を入力してOKを押すと作成できます。


テーブルの編集
列タブで、鉛筆マークの「編集」ボタンをクリック
表の作成と似たような「表の編集画面」が現れますので、各種の名称や型などを変更できます。

テーブルの削除
削除したい表を右クリック>「表」>「削除」をクリック

レコード(データ)の操作
レコードの新規追加、削除
新規…新規追加ボタンをクリック
削除…削除したい行をクリック>削除ボタンをクリック

レコードの編集
編集したいセル上でダブルクリックすると編集可能になります。
コメントアウト
SQLでは「–」で1行コメントアウト、
「/*」と「*/」の間で複数行をコメントアウトできます。

練習問題
※本単元以降のSQL文を作成する練習問題については、正常に実行できたSQL文を含む状態でSQLワークシートをsqlファイルとして保存する形で提出してください。
・spring-○○プロジェクト内の【src/main/resources/static/sql】フォルダに保存
・ファイル名に決まりはありませんが、各単元を区別できる名前にしてください。(basicSql.sqlなど)
・(保存方法)
SQLワークシートを選択した状態で、ファイル>保存 を選択。
→ディレクトリを選択、ファイル名を入力して保存する。

下表のようにテーブル名やカラム名が日本語で書いてあっても「論理名」ととらえ、「物理名」でテーブルを作成しましょう。
(論理名と物理名については「DB(データベース)」の単元を確認)
物理名の付け方は、以下のルールを満たしてください。
・小文字の英単語
・単語が複数あるときは_で繋ぐ
・テーブル名は複数形
次の「輸出先」表について、SQL文を書いてみましょう。
「輸出先」表 ( 人口の単位は[ 万人 ] )
| 輸出先コード | 輸出先名 | 人口 | 地方 |
|---|---|---|---|
| 12 | ミナンミ王国 | 100 | 南洋 |
| 15 | パローヌ国 | 200 | 中部 |
| 22 | トカンタ国 | 160 | 北洋 |
| 23 | アルファ帝国 | 80 | 北洋 |
問1: CREATE TABLE文で「輸出先」表を作成し、上記の4件のデータを追加してください。
問2: 問1の「輸出先」表のトカンタ国の人口を150万人に変更してください。
問3: 問1の「輸出先」表からパローヌ国のデータを削除してください。
