OracleデータベースでのSQL入門!テーブル作成方法とは?

OracleデータベースでのSQL入門!テーブル作成方法とは?
基本情報技術者試験の試験対策はこちら>>

Oracleエンジニア 案件・求人一覧はこちら

OracleデータベースでのSQL入門

この記事ではOracleデータベースを使ったSQL入門について見ていきます。OracleデータベースでSQLを使ってテーブルを作成し、レコードの検索、登録、更新、削除ができるようになるまでを説明します。
 

お役立ち情報を受け取りたい方はこちらからメルマガ登録をどうぞ!

 

Oracleデータベースとは

Oracle社が開発・販売しているリレーショナル・データベース管理システムです。Oracleデータベースの最新バージョンは本記事執筆時点(2020年06月02日)でOracle Database 19cです。

データベースとは

データベースとは情報を収集して、活用しやすいように蓄積したものを指します。例えばCSVファイルなどのテキストファイルでも情報を蓄積していればデータベースと呼べます。

リレーショナル・データベース管理システム

データベースには情報を保持する役割があります。そしてリレーショナル・データベースには情報をテーブルとよぶ表形式の単位で保管・管理し、そのテーブル同士に関連を持たせる役割があります。この関連を持たせる点がリレーショナルという名前の意味合いです。

例えばインターネットで買い物をした際に、その情報は受注テーブルとその詳細である受注明細テーブルを関連させて別々に、またお届け先の情報はお届け先テーブルで保管します。このテーブル同士を同じ注文者からの情報は後から分かるように紐付けて保管しています。

さらにリレーショナル・データベースの情報を登録したり更新したり、また処理を途中で取りやめたり制御するシステムをリレーショナル・データベース管理システムといいます。このシステムの1つがOracleデータベースです。

このリレーショナル・データベース管理システム(RDBMS)に情報を登録したり、検索したり指示できる言語をSQLといいます。

SQLの種類

SQLには主に3種類あります。DDL、DML、DCLです。一昔前はRDBMS毎に構文やオプションが微妙に違いました。現在はほぼ同じ構文で使えますが、まったく同一ではないということを覚えておきましょう。

この入門編では3種類のSQLがどのように分類されているか、主にDMLを中心に説明します。SQLを実行できるOracle環境がある方は実際に手を動かしてみてください。

DDL(Data Definition Language)

情報を定義する際に使用するSQLです。具体的には情報を保管するためのテーブルを作成するCREATE、テーブルを変更するALTER、テーブルを削除するDROPが該当します。

CREATE

CREATE構文を使うことでテーブルを作成することができます。多くのオプションがありますが、入門編ではテーブル名とカラム(名前、型、桁数、必須であるか)を指定する例をあげます。

商品を購入した情報を保持する受注テーブルを例に見ていきましょう。

ALTER

ALTER構文を使うことで定義を追加・変更することができます。ここではCREATE構文で例にした受注テーブルに更新日カラムを追加する例をあげます。

DROP

DROP構文を使うことでテーブルを削除することができます。ここではCREATE構文で例にした受注テーブルを削除する例をあげます。

DML(Data Manipulation Language)

情報を操作する際に使用するSQLです。具体的には情報を登録するINSERT、検索するSELECT、更新するUPDATE、削除するDELETEが該当します。

各SQLには様々なオプションがありますが入門編では特に使用する構文・オプションに絞って説明します。

INSERT(登録)

INSERT構文を使うことで情報を登録できます。この登録した情報1件1件をレコードといいます。1回のINSERTで1レコードを登録します。

カラム名の指定順で「登録する値」が登録されます。また、すべてのカラムにデータを登録する場合、カラム名は記入必要する必要はありません。

SELECT(検索)

SELECT構文を使うことでテーブルからレコードを取得できます。

しかし、これではJUCHUテーブルの全レコードを取得します。レコード数が少ないうちは問題ありませんが何万件、何十万件と増えるたびに結果取得までに多くの時間がかかるだけでなく、Oracleデータベースに負荷がかかります。そこで条件指定が大切です。

UPDATE(更新)

UPDATE構文を使うことでカラムの値を更新できます。

しかしWHERE句の条件なしではすべてのレコードを更新します。そこで基本的にはWHERE句の併用が基本です。

DELETE(削除)

DELETE構文を使うことでレコードを削除できます。

こちらもWHERE句の条件なしではすべてのレコードを削除します。そこで基本的にはWHERE句の併用が基本です。

DCL(Data Control Language)

情報操作を制御する際に使用するSQLです。具体的にはトランザクションを開始するBEGIN、確定するCOMMIT、取り消すROLLBACKが該当します。

ステップアップするためには必須の知識です。

BEGIN(トランザクションを開始)

まずトランザクションとは一連の処理のかたまりを指します。例えば、受注テーブルのレコードを1件更新し、次に受注明細テーブルのレコードを2件更新するような処理になります。

また、受注明細テーブル更新時にエラーが発生すると受注テーブルだけ更新されては不整合が発生します。

このような状況を発生させないために一箇所でもエラーになればそれまでの処理をすべてもとに戻せるようにする役割があります。

このトランザクションを開始させるSQLがBEGINです。

COMMIT(トランザクションを確定)

トランザクションを開始したら終わりを伝える必要があります。この終わりを伝える確定指示がCOMMITです。ちなみに使用するDBの設定によってデフォルトでオートコミット設定がONになっている場合、1SQLを実行するたびに自動でCOMMMIT処理がなされています。

ROLLBACK(トランザクションを取り消す)

トランザクションを開始した以降の処理をすべて取り消します。例えば先程の例のように途中でエラーが発生した場合に実行されることが多いです。当然ですがオートコミット設定がONになっている場合、ROLLBACK指示は意味をなしません。

SQLの入門を理解しよう!

いかがだったでしょうか。ここまででSQLの入門編としてテーブルの作成・定義更新・削除、またテーブルへのレコードの登録・検索・更新・削除を順に見ていきました。初めてSQLを学ぶ方への入門書として、また久しぶりだという方の参考になったでしょうか。

SQLにはまだまだ多くのオプションやできることがあります。この入門編を読み終わって興味がわきましたら、ぜひ次のステップにチャレンジしてみてください。

Oracleエンジニア 案件・求人一覧はこちら
 

お役立ち情報を受け取りたい方はこちらからメルマガ登録をどうぞ!

 

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。

合わせて読みたい

Oracle SQL Developerのメリット7つ|概要についても解説... hbspt.cta.load(20723875, 'e848ebee-6da0-461e-a268-2b5dc067cad8', {"useNewLoader":"true","region":"na1"}); Oracle SQL Developerとは何か Oracle SQL ...
Oracle Exadataとは?導入するメリット6つやモデルの違いを紹介... hbspt.cta.load(20723875, 'e848ebee-6da0-461e-a268-2b5dc067cad8', {"useNewLoader":"true","region":"na1"}); Oracle Exadataとは Oracle ExadataとはOracl...
Oracle VM VirtualBoxの6つの機能|環境設定5つ... hbspt.cta.load(20723875, 'e848ebee-6da0-461e-a268-2b5dc067cad8', {"useNewLoader":"true","region":"na1"}); Oracle VM VirtualBoxとは? Oracle VM Vi...
OracleDatabaseとは?無料で導入する方法から、表領域の作成やユーザの作成方法を紹介... hbspt.cta.load(20723875, 'e848ebee-6da0-461e-a268-2b5dc067cad8', {"useNewLoader":"true","region":"na1"}); Oracle Database入門 今回は、Oracle Datab...
Oracle APEXとは?導入するメリット6つと活用例をわかりやすく紹介... hbspt.cta.load(20723875, 'e848ebee-6da0-461e-a268-2b5dc067cad8', {"useNewLoader":"true","region":"na1"}); Oracle APEXとは Oracle APEX(Oracle Appli...