SQLとはどういうもの? 独自拡張と標準SQLの大きな違いって、何?
  • facebookページ
  • twitterページ
  • 2019.10.20

    SQLとはどういうもの? 独自拡張と標準SQLの大きな違いって、何?

    SQLとは、データベースを操作する言語です。

    海外での発音は「シーケル」に近いのですが、日本ではそのまま「エスキューエル」と呼ばれることが多いようです。

    SQLの種類にはDML、DDL、DCLの3種あり

    SQLには、大きく分けて、DML、DDL、DCLの3種類があります。

    • DML(data definition language) データを操作する
    • DDL(data definition language) データや構造を定義する
    • DCL(data control language) データを制御する

    DML データを操作するステートメント

    • INSERT データを挿入します。
    • UPDATE データを更新します。
    • DELETE テーブルから特定のデータを削除します。
    • SELECT テーブルから条件にしたがってデータを取得します。

    プログラマがSQLと言えば、これを指します。

    これらの言語ステートメントは、大量データの挿入、更新などに時間がかかります。そのため、insertやupdateの機能を模倣した専用の外部コマンド(インポート、エクスポートコマンド)や、トランザクションを伴わない大量削除コマンド(truncate)などが用意されているケースもあります。

    DDL データや構造を定義するステートメント

    • CREATE データベースオブジェクトを定義します。
    • DROP データベースオブジェクトを削除します。
    • ALTER データベースオブジェクトを変更します。

    データベースオブジェクトには、データベース本体、表領域、テーブル、トリガー、インデックスなどが含まれます。

    最近のDBMSでは、エクスポートコマンドで出力形式をDDLとしてファイル保存する機能があり、稼働しているデータベースからCREATEステートメントやALTERステートメントを生成するものも多いです。

    DCL データを制御するステートメント

    • GRANT 権限を付与します。
    • REVOKE 権限を剥奪します。
    • SET TRANSACTION トランザクションモードを設定します。
    • BEGIN トランザクションを開始します。
    • COMMIT トランザクションを確定します。
    • ROLLBACK  トランザクションを取り消し、データをロールバック(巻き戻し)します。
    • SAVEPOINT ロールバック地点を任意に設定します。
    • LOCK テーブルやレコードなどをロック(占有)して他者から変更されないようにします。

    分類によっては、トランザクション関連のステートメントをTCL(Transaction Control Language)とするケースもあります。

    SQLの規格、最新はSQL:2016


    ANSIとISOが定めた標準SQLです。

    頻繁に更新されていて、定めた年代を取って、SQL86、SQL89、SQL92、SQL:1999、SQL:2003、SQL:2006、SQL:2008、SQL:2011、SQL:2016があります。最新の標準SQLはSQL:2016。

    ただし、対応は各社バラバラで、どのDBMSがどの規格に準拠しているか明記している資料はほとんどありません。

    PostgreSQLが唯一、SQL標準への準拠状況を一覧にして公開しているくらいです。

    参考)PostgreSQLの SQL規格への準拠

    これらの規格の中でも、SQL92は別名SQL2と呼ばれ、DML、DDL、DCLがひと通り定義されています。

    また、SQL:1999(SQL99)は別名SQL3と呼ばれ、リカーシブルクエリやOLAP対応、ユニオン、カーソル操作の強化などSQLがRDBMSのための完全な言語になることを目指した規格です。

    SQL92とSQL99が大きな節目だと覚えておくと良いでしょう。

    RDBMSのシェアは、OracleとMicrosoftが圧倒


    2019年時点で、メンテナンスやサポートが継続されているRDBMSを紹介します。大きく分けてオープンソース系と商用系があります。

    オープンソースのRDBMSは以下の通り。ただし、IngresやMySQLなど有償での商用サポートがある場合も。

    • Ingres
    • PostgreSQL
    • MySQL
    • Firebird
    • SQLite

    商用のRDBMS製品は以下の通り。

    • Oracle Database
    • IBM DB2
    • IBM Informix Dynamic Server
    • SAP Sybase Adaptive Server Enterprise
    • Microsoft SQL Server
    • InterBase

    なお、アメリカでのRDBMSのランキングは以下のとおりです。

    1. Oracle
    2. MySQL
    3. Microsoft SQL Server
    4. PostgreSQL
    5. IBM Db2

    参考)DB-Engines Ranking 2019年10月のデータより

    3位のMicrosoft SQL Serverと、PostgreSQLの間には大きな差があるため、実質上位3つの圧勝と考えてよいでしょう。

    MySQLはオープンソースですがOracleが買収して権利を持っています。そのため、RDBMSはOracleとMicsoftの2強となっています。

    SQLの独自拡張 共通で使える関数は30%程度


    SQLの標準規格は存在するものの、各社での独自拡張も多く存在しています。

    このため「Oracleでは動くけど、SQL Serverだと動かない」といったSQLの方言も多数存在します。特にSQL内で使える関数は、引数なども含めて共通で使えるのは全体の30%ほどと言われています。

    各社の独自拡張のうち、特に有名なものは以下の通りです。

    • PL/SQL Oracleの独自拡張
    • T-SQL Microsoftの独自拡張
    • PL/pgSQL PostgreSQLの独自拡張
    • PSQL Firebird/Interbaseの独自拡張

    PL/SQLは、圧倒的シェアを持つOracleデータベースの独自拡張です。もともとプログラム的な処理ができないSQLを、手続き可能(Procedual Language)に拡張することで「PL/SQL」と命名されています。

    SQL内でif分岐やforループなどの制御構造を組み込むことができるんですね。FETCHループでカーソルを使って1件づつデータを処理することも可能です。

    PL/SQLは、あまりにシェアが大きいため、なるべく互換性をもたせようとしている組織・会社もあります。例えば、PostgreSQLのPL/pgSQLはPL/SQLを参考に実装されていますし、IBMのDB2はOracleからの移行が容易なようにV9.7からPL/SQLをサポートしています。

    T-SQL(Transact-SQL)は、PL/SQLと同じくMicrosoft社がSQLに制御構造を持たせた独自拡張。PL/SQLとは真っ向勝負と言って良いほど異なる拡張をしています。

    本来、SQLはデータの操作のみをおこない、if分岐やループ処理はプログラム上でおこなうモジュール性が重要と言われていました。SQLにプログラミング的な要素を持たせることには批判もあります。

    しかし、2大勢力のPL/SQLとT-SQLが制御構造を取り込んでいるため、開発者としては使うしかないのが現状です。

    まとめ

    ポテパンダの一言メモ
    • SQLには、DML、DDL、DCLの3種あり
    • SQL標準規格はSQL92とSQL99が大きな節目
    • SQL標準に比較的準拠しているのは、PostgreSQL
    • SQL独自拡張の2大シェアは、PL/SQLとTransact-SQL

    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件