Actions / Navigation / close / 20
My IBM ログイン ニュースレター

SQL(構造化照会言語)とは

2025年6月26日

共同執筆者

Alexandra Jonker

Editorial Content Lead

Tim Mucci

IBM Writer

Gather

SQL(構造化照会言語)とは

構造化クエリ言語(SQL)とは、 MySQL、SQL Server、IBM® Db2、PostgreSQL、Oracle Databaseなどのリレーショナル・データベース管理システム(RDBMS)と対話するために使用される、ドメイン固有の標準化されたプログラミング言語です。

SQLクエリー(SQLコマンドまたはSQLステートメントとも呼ばれる)により、ユーザはリレーショナル・データベース(またはSQLデータベース)内のデータを簡単に追加、検索、更新、削除、集計、およびその他の手段で管理することができます。これらのシステムでは、構造化されたデータは行と列で整理され、それらが一緒になってテーブルを形成しています。データは通常、主キーや外部キーを使ってリンクできる、複数の関連するテーブルにわたって構造化されています。

他のプログラミング言語とは異なり、SQLは宣言型言語です。つまり、コンピューターが実行する方法ではなく、コンピューターに実行させたい内容を記述します。これは、ステップバイステップの指示を必要とする命令型言語や手続き型言語(JavaCOBOLなど)とは対照的です。

例えば、ユーザーがデータを取得するためのSQLクエリーを出す場合、データベースがそのデータを収集するために実行する必要がある手順を概説する必要はなく、結果がどのようになるかを記述します。

SELECT name, email
FROM customers
WHERE city = 'New York' ;

SQLは、現代の技術スタックにおいて基本的で多用途なツールであり、データ操作機能、迅速なクエリー処理、強力なセキュリティ機能で知られています。また、さまざまなシステム間で互換性があり、増大するデータ・ニーズに対応する拡張性、堅牢なオープンソースおよびコミュニティーによるサポートも提供します。

SQLの歴史

1970年代に、IBMの科学者であるDonaldsa NetworkinとRaymond BoyceがSQLを開発・導入しました。SQLはリレーショナル・モデルの概念から生まれ、当初は構造化英語照会言語(SEQUEL)と呼ばれていましたが、その後、SQLに短縮されました。1979年に商用化され、それ以来、リレーショナル・データベース管理システムの世界標準となっています。

SQLは、1986年に米国国家規格協会(ANSI)によって、1987年に国際標準化機構(ISO)によって、それぞれ標準化されました。SQLは、標準化されているにもかかわらず、Microsoft SQL ServerのT-SQLやOracle DatabaseのPL/SQLなど、さまざまなダイアレクトがあります。これらのSQLダイアレクトは、SELECT、UPDATE、DELETE、INSERT、WHEREなどの中核的なANSI標準コマンドに準拠しながら、、特定のシステム・ニーズに対応します。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

SQLが重要な理由

1970年代の開発以来、SQLは現代のデータベース・システムのバックボーンとなっています。

汎用プログラミング言語とは異なり、SQLはリレーショナル・データベース専用であり、リレーショナル・データベースもSQL用に最適化されています。この相互的な設計のおかげで、SQLは非常に効率的なデータ管理ツールとなっています。

SQLは宣言的な性質により、プログラミングの経験が浅いユーザーでも使いやすく、初心者にとって理想的な言語です。幅広く利用され、PythonやJavaのような他のプログラミング言語とも統合されているため、幅広いプログラミングやデータ環境で後半に重宝されるスキルとなっています。

データ・アナリスト、データサイエンティスト、データベース管理者は、SQLを日常的に使用します。これは、SQLがデータ処理、データ定義、アクセス制御、データ共有データ統合ビッグデータ分析などのタスクにおいて優れているためです。

データサイエンスでは、データ分析に必要な大規模なデータセットを格納するデータベースを作成するためにSQLが使用されます。これらの膨大な構造化データセットからデータを操作および取得する機能は、トレーニングに高品質のデータを必要とする人工知能(AI)および機械学習(ML)アプリケーションの開発においても非常に重要です。

ACID特性(原子性、一貫性、独立性、永続性)に準拠することで、SQLはクリティカルなユースケースや機密データの処理において信頼性の高いトランザクション処理を保証します。また、より正確なデータ駆動型意思決定高度な分析ビジネス・インテリジェンスの強化も支援します。

SQLを使用するメリットとは

SQLには多くのメリットがあるため、最も広く使用され、長く使われているプログラミング言語の1つであり続けています。

簡単なデータ操作

SQLのシンプルなコマンド(GROUP BY、ORDER BY、GRANT、REVOKEなど)により、あらゆるスキル・レベルのユーザーがデータベースを操作できます。

迅速なクエリー処理

SQLインデックスとクエリー最適化技術は、データ検索の速度を向上させ、結果としてデータベースの性能を向上させます。

堅固なデータ・セキュリティー

SQLデータベースには、データを保護するためにユーザー認証、アクセス制御、暗号化などの機能が備わっています。

共通性と互換性

SQLはANSIおよびISO SQL標準に準拠しており、クラウド環境やビッグデータ・ツールなど、さまざまなシステムやプラットフォームとの互換性を確保できます。

拡張性

SQLを使用することにより、小規模データベースと大規模データベースの両方を効果的に管理しながら、パフォーマンスを大幅に低下させることなく増大するデータ・ニーズに適応できます。

オープンソースのサポート

多くのSQLデータベースはオープンソースで、継続的な改善と問題解決に貢献する大規模でアクティブなコミュニティーによってサポートされています。

SQLクエリーの仕組み

リレーショナル・データベースは、データを表形式(行と列)に整理し、異なるテーブル間の関連付けを容易にします。例えば、顧客サービス・データベースでは、顧客情報、購入、製品コード、連絡先ごとに個別のテーブルが使用され、一意の顧客IDなどのキーでリンクされる場合があります。

SQLを使用すると、このデータを操作するためのクエリー(およびサブクエリー)を記述できます。これらのコマンドは、以下のSQLプロセス中にいくつかのソフトウェア・コンポーネントを介して実行されます。

まず、パーサーがSQLステートメントの正確性を検証し、トークン化されたシンボルなど、データベースが理解できる形式に変換します。このステップには、構文分析とセマンティック・チェックが含まれます。パーサーは、ユーザーが操作を実行する権限を持っていることも確認します。

次に、リレーショナル・エンジン(クエリー・オプティマイザーとも呼ばれる)が、最も効率的なデータ取得、変更、または追加ストラテジーを計画します。そのために、さまざまなクエリー実行計画を評価します。この計画は、仮想マシン言語であるバイトコードで記述されます。このステップは、データベースのパフォーマンスとリソースの使用を最適化するために重要です。

最後に、ストレージ・エンジンがバイトコードを処理し、SQLステートメントを実行して、物理的なデータ・ストレージを管理します。ファイル形式やデータバッファリングなどのデータの物理表現を処理し、その結果をユーザーまたはアプリに返します。このステップは、ディスク上で効率的なデータ・アクセスと更新を行うために役立ちます。このリンクには、データの一貫性を確保するために主キーと外部キーを使用して確立された1対多または多対多などの関係が含まれることがよくあります。

オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

SQLシステムの主要コンポーネント

リレーショナル・データベース管理システム(SQLシステムともいいます)は、次のような多くのコンポーネントで構成されています。

  • データベース:整理されたデータのコレクションを保管、管理、保護するためのデジタル・リポジトリです。

  • データベース・テーブル:行と列にフォーマットされたデータ。それぞれに、1 つのタイプのエンティティに関する情報が含まれています。

  • SQLクエリー:リレーショナル・データベース内のデータを操作するために使用する、SQLで記述された命令です。

  • SQL制約:データの整合性を維持するために、データベースの列またはテーブルのデータを制御するルール。

  • ストアド・プロシージャー:継続的な再利用のために保存されるSQLコマンド。

  • トランザクション: 1つ以上のSQLコマンドを1つの作業単位または操作として束ねたものです。

  • データ型:列に保存できるデータのタイプを定義するルール。

  • インデックス:クエリーに必要なディスク・アクセスの数を減らすことで、データの取得を高速化するデータベース・オブジェクト。

  • ビュー:SQLクエリーに基づく仮想テーブルとして機能し、基礎となるデータへのアクセスを制限することで複雑なクエリーを簡素化し、セキュリティーを強化します。

  • セキュリティーと権限:ユーザーのアクセスを管理し、バックアップと復元のメカニズムにより損失や破損からデータを保護します。

SQLコマンドの種類:DDL、DML、DQL、DCL、TCL

SQLコマンドは通常、次のカテゴリーに分けられます。

  • データ定義言語(DDL)
  • データ操作言語(DML)
  • データ制御言語(DCL)
  • データ・クエリー言語(DQL)
  • トランザクション制御言語(TCL)

データ定義言語(DDL)

データ定義言語はテーブル、ビュー、インデックスなどのデータベース・オブジェクトを管理します。保存データの構造と構成、および保存データ項目間の関係を定義します。

データ操作言語(DML)

データ操作言語は、データを挿入、変更、結合するINSERT、UPDATE、OUTER JOINなどの操作を通じてデータベース内のデータを管理します。

データ制御言語(DCL)

データ制御言語は、GRANT(アクセス権を付与)やREVOKE(アクセス権を削除)などのコマンドを通じてデータ・アクセスを制御します。ユーザーがデータを取得、追加、変更する能力を制限できます。

データ・クエリー言語(DQL)

データ・クエリ言語は、データ・クエリーを実行して情報を取得します。通常はSELECTコマンドを使用します。特定のデータ項目または項目の範囲を取得できます。

トランザクション制御言語(TCL)

トランザクション制御言語は、データの整合性を確保するためにトランザクションの変更を管理し、ROLLBACK操作(変更の取り消し)とCOMMIT操作(変更の確定)をサポートします。データベースを同時に使用しているユーザーによるデータ共有を調整するために使用されます。

一般的なSQLコマンドの紹介

SQLデータベースは、データ操作のためにさまざまなSQLステートメントをサポートしています。ただし、SQLコマンドはデータベースによって異なる場合があり、それぞれのデータベース独自のSQL構文も使用されます。

基本的なSQLコマンドには、次のようなものがあります。

SELECT

1つ以上のテーブルからデータを取得します。

SELECT name, email

FROM customers

WHERE city = 'New York' ;
このステートメントは、顧客テーブルからニューヨークに住んでいるすべての顧客の名前とメール・アドレスを取得します。

INSERT

テーブルに新しい行を追加します。

INSERT INTO customers (name, email, city)
VALUES ('Jane Doe', 'jane.doe@example.com', 'Los Angeles') ;

このステートメントは、名前「Jane Doe」、Eメール「jane.doe@example.com」、都市「Los Angeles」の新しい行を顧客テーブルに追加します。

UPDATE

テーブル内の既存のデータを変更します。

UPDATE customers 
SET email = 'new.email@example.com' 
WHERE name = 'John Doe':

このステートメントは、顧客テーブル内の「John Doe」という名前の顧客のEメールを「new.email@example.com」に更新します。

DELETE

条件に基づいてテーブルから行を削除します。

DELETE FROM customers 
WHERE city = 'Boston' ;

このステートメントは、都市が「Boston」である顧客テーブルからすべての行を削除します。

CREATE TABLE

新しいテーブルとその構造を定義します。

CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
) ;

このステートメントは、productsという3つの列を持つ新しいテーブルを作成します。product_idは整数の主キー、nameは最大100文字の可変文字列、priceは10桁で小数点以下2 桁の小数点です。

ALTER TABLE

既存のテーブルの構造を変更します。

ALTER TABLE customers 
ADD COLUMN birthday DATE ;

このステートメントは、既存の顧客テーブルにDATEタイプの新しい列を追加します。

DROP TABLE

テーブルとそのデータをすべて削除します。

DROP TABLE old_customers:

このステートメントは、old_customersテーブルとそのデータすべてを削除します。

JOIN

関連する列に基づいて、2つ以上のテーブルの行を結合します。

SELECT c.name, p.name AS product_name
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN products p ON o.product_id = p.product_id
WHERE c.city = 'New York' ;

SQL JOINステートメントは、顧客の名前と注文した製品の名前を取得します。customer_idとproduct_idに基づいて顧客、注文、および製品テーブルに結合され、ニューヨークに居住する顧客のみが選択されます。

SQLデータベースとNoSQLデータベースの比較

SQLデータベースはリレーショナル・データベースであり、構造化データが行とテーブルで保管され、さまざまな方法でリンクされます。SQLは、こうしたデータベースと対話するための標準言語です。

NoSQLデータベース(または非リレーショナル¥データベース)は、あまり構造化されていないデータを処理するために2000年代後半に登場しました。NoSQLデータベース(MongoDBなど)は、SQLデータベースと比較して、より柔軟なデータモデルを提供します。

主な違いは次のとおりです。

  • 拡張性
  • 構造
  • パフォーマンス
  • ユースケース
  • 知識とコミュニティー
  • 保守と管理

拡張性

NoSQLは水平方向にスケーラブルであり、サーバーを追加することでより大きなトラフィックに対応できるようになります。対照的に、SQLデータベースは以前から垂直方向にスケーラブルであり、増大する負荷に対処するにはより強力なハードウェアが必要になります。

構造

SQLデータベースは、堅牢なインデックス作成と結合機能により、複数行のトランザクションや関連データにわたる複雑なクエリーに最適なテーブルベースの構造を使用しています。NoSQLは、キー値、ドキュメント、グラフ、大きな列ストアなどのさまざまな構造を提供し、さまざまなニーズに応え、半構造化データまたは非構造化データを使用して柔軟性を高めます。

パフォーマンス

SQLデータベースは、ACID原則に従って、厳密なデータ一貫性を備えた複雑なクエリーに合わせて最適化されています。BASEの原則(基本的に利用可能、ソフト・ステート、最終的な一貫性)に従ったNoSQLデータベースは、特定の種類のデータに対してより高速な性能を提供しますが、一貫性の保証は異なります。

ユースケース

SQLデータベースは、財務システム、Eコマース・プラットフォーム、CRMデータベースなど、複雑なトランザクション、一貫性のあるデータ、厳格なスキーマ準拠を必要とするアプリケーションによく選択されます。NoSQLは、ソーシャル・ネットワーク、リアルタイム分析、コンテンツ管理システムなど、急速に変化する大規模データや半構造化データに適しています。

知識とコミュニティー

SQLデータベースには長い歴史があり、広く採用されているため、SQLチュートリアルやコミュニティ・サポートなどリソースはNoSQLよりも広範です。NoSQLは多くの場合、事前の設計が少なくて済み、拡張が容易ですが、複雑なクエリーやデータの一貫性のために、よりカスタム開発の手間がかかる場合があります。

保守と管理

SQLデータベースは慎重なスキーマ設計が必要であり、スキーマ変更の保守に関しては困難が伴う場合があります。NoSQL DBMSは、大規模なダウンタイムや再構築を必要とせずに、スキーマ変更への容易な拡張性と適応性を提供します。

SQLインジェクションとは

多くのSQLデータベースはセキュリティーに強みがありますが、他のエンタープライズ・アプリケーションは、低い認証安全性、脆弱な設計、構成ミスなど、セキュリティー面で問題を抱えています。こうした脆弱性があるため、SQLインジェクションは依然として組織にとって現実的な脅威となっています。

SQLインジェクションは、ハッカーがデータベース情報にアクセスしたり、データベース情報を破壊したりするためにSQLクエリーを操作するときに発生します。これらの脆弱性を理解し、強力なセキュリティー対策を講じることが、SQLデータを保護する上で極めて重要です。

関連ソリューション

関連ソリューション

データベース・ソフトウェアとソリューション

IBMのデータベース・ソリューションを活用して、ハイブリッドクラウド全体のさまざまなワークロードのニーズに対応しましょう。

データベース・ソリューションの詳細はこちら
IBM Db2を使用したクラウドネイティブ・データベース

構造化データの保管と管理に高性能で拡張性と信頼性を備えたリレーショナル・データベースであるIBM Db2をご覧ください。IBM Cloud上でSaaSとして、もしくはセルフホスティングとしてご利用いただけます。

Db2の詳細はこちら
データ分析コンサルティングサービス

IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。

分析サービスを発見する
次のステップ

企業が繁栄するには、データを活用して顧客ロイヤルティーを構築し、ビジネス・プロセスを自動化し、AI駆動型のソリューションで業務を刷新する必要があります。

分析ソリューションの詳細はこちら 分析サービスを発見する
Your Current Region is:
Japan (Japanese)

You appear to be visiting from United States. Would you like to switch to your local site for regional products, pricing and content?