用語集
2025/12/09
福田 康太

SQLってなんの言語?初歩から解説!

SQLとは一体何なのか、またその仕組みについてやさしく解説しています どのような性格を持った言語なのか、データへのアクセスがどのように行われているのか、詳しく知りたい人は必見です!

1、 SQLとは

まずSQLとは「Structured Query Language」の略です。


日本語では「構造化問い合わせ言語」と表現され、データベースに、とりわけリレーショナルデータベース(RDB:Relational DataBase)にクエリ(データにアクセスし、変更や整理を行う操作。問い合わせと訳される)を実行するために作られた言語になります。そしてリレーショナルデータベース(RDB:Relational DataBase)とは、行と列の表形式(テーブル)によって対応するデータごとに関連づけて管理されるデータの集合体です。


いわゆるC言語やJava、Pythonなどに表されるプログラミング言語とは異なる目的(画像?)のもとで、異なる構造を持っています。そうしたプログラミング言語はあるものの実装、Webサイトやソフトウェアなどの表示、開発を目的として作られていますが、SQLの目的はデータベースへのアクセスから、データの加工、抽出などデータを取り扱いであり、プログラミング言語とは大きく区別されます。


以下は、SQLがどんな目的のもとどのように設計されたかを書いていきます。

2、 SQLの特徴

データベースにアクセスする関係上、コンパイラ言語()と似た形式を持っています。


というのもSQLという言語はデータベース管理システム(DBMS:DataBase Management System)に指示を送る、というのが本質的な機能であり、あくまでもSQL文それ自体がデータに直接干渉するということではないのです。


DBMSは、クエリ評価エンジン、バッファマネージャー、ディスク容量マネージャ、トランザクションマネージャ、ロックマネージャ、リカバリマネージャ、などの機能(モジュール)の集合によって構成されており、それぞれが SQLクエリの解析、解析をもとにしたデータベースへのアクセス計画(実行計画といいます)の策定と実行、データへの複数アクセスの際の整合性担保、データ転送の効率化、アクセス時のデータの喪失防止、メモリ領域の管理などの機能を持ち、実行する役割を持っています。


おおよその指示はSQLクエリによって我々が指定できますが、実際のデータへの操作と操作方法の決定は厳密には内部のシステムによって行われているのです。


DBMSはデータベースの頭脳となっているソフトウェアということです。

3、 トレードオフの現状

まずデータベースにおいてデータを保存する場所は


メモリ(RAM:Random Access Memory):バッファとキャッシュ など



ストレージ:ディスク(HDD:Hard Disc Drive /SSD:Solid State Drive など)


のおおまかに2種類があり、これらはデータを内包することができるという共通の特徴がありますが、その容量と速度に大きな差があります。


バッファとキャッシュは少量のデータを高速で伝達することに長けており(容量16MB〜128MB程度)、ディスクは大量のデータを永続的に保存するための記憶装置です(容量256GB〜)。この二種類の記憶装置に良い配分で適切なデータを保存させておくことで、そのデータを必要なとき高速に取り出せるかつ、RDB上の同様のデータも含め永続的な保存が可能になる、すなわち速度とデータの永続性の両立ができます。


しかしこれは裏を返せば、データの扱いの特性に応じてバッファとキャッシュにいかにメモリ配分を行うかを常に考え、臨機応変に変動させる必要があるということでもあります。少量のデータの伝達を高速で行えるメモリ(バッファ、キャッシュなど)と、低速だが大量のデータを永続的に保存できるストレージ。速度とデータの永続性の両立は一つの記憶装置ではかなわないものなのです。


 


また、メモリの中でもバッファとキャッシュの目的はそれぞれ少し異なっており、もう少し具体的にみてみると


キャッシュはディスク内にあるデータをの一部を一時的に保持するためのデータ領域としての機能を持ち、頻繁に操作の対象となりうるデータを保持させておくことで、読み込みに時間がかかるディスク内へデータを探しに行く手間を省くという効率化の目的を持っています。


一方でバッファは、SQLクエリによる更新処理の際に指定された更新内容が何かを一時的に保存する領域になっています。更新処理をSQLクエリの読み込みと同時に行うことは負担であると同時に時間がかかる処理であるため、この二つの動作を非同期で行うことで必要以上に処理に時間を費やしてしまうことを防いでいます。


キャッシュとバッファどちらも時間のかかる処理を短縮、もしくは負担の一時集中を防ぐ目的がある、ということです。


しかしこれらの効率化の機能を持つメモリは、データを永続的に保持することはできなくなっています。メモリに何かしらデータが入っている状態でも、コンピュータの電源を落とすとメモリ内に保存していたデータは消えてしまいます(揮発性といいます)。それを補うのが永続的に保存できるディスクの存在であり、ディスクはデータを一方、読み込みが遅いという欠点を持っています。


このように、メモリとストレージは互いの記憶装置の欠点を補い合いながら永続性と時間効率の両立を求めています。

4、 まとめ

今回はSQLがどのような働きをしているかについて解説しました、具体的な記述方法に触れる内容ではありませんでしたが、運用する上で知っておくべき内容なのではないでしょうか。


具体的なクエリの記述方法などについて興味があれば過去記事などを参照してみてください!


New call-to-action