本記事ではこれからSQLを学びたい初心者の方に向けて、SQLとプログラミング言語との違い、SQLの特徴や開発環境の構築方法、基本的な操作方法について解説します。
SQLという言葉を聞いたことはあっても、プログラミング言語とは違うことを知らない方もいるのではないでしょうか。
本記事ではこれからSQLを学びたい初心者の方に向けて、SQLの特徴や開発環境の構築方法、基本的な操作方法について解説をしていきます。
目次
「SQL」は、データベースに蓄積されたデータを扱うための言語です。
ここでは「SQL」の特徴、プログラミング言語との違い、「SQL」を使ってできることを解説します。
「SQL」はコンピュータ言語の一つで、データベース言語に分類されます。
データベースとは、定められたルールで整理されたデータの集合体で、ユーザーはパソコンを使ってアクセスできます。またデータベース言語は、データベースの中のデータを操作する言語で、データの追加・削除・更新などが可能です。
「SQL」はデータベース言語のなかで最も普及している言語のひとつで、国際標準化もされているため、さまざまな種類のデータベースに使用できます。
プログラミング言語はコンピュータに対して「こういう処理をしてほしい」という命令をするもので、条件分岐や繰り返し処理などを組み合わせることで複雑な処理を定義できます。
それに対してデータベース言語はデータベースのみに命令を送るもので、データベース言語単体では複雑な処理を行えません。
「SQL」はデータベースのみに用途が限られた言語であるため、コンピュータに命令を送るプログラミング言語とはまったく別のものになります。
「SQL」を使うことでデータの条件検索、データの登録・取得・更新・削除、テーブルの作成・削除・変更などを行なえます。
最適な検索条件を「SQL」で作成することで、膨大なデータのなかから特定のデータを取得することが可能です。
テーブルとはデータを格納するための「入れ物」のことで、テーマごとにテーブルをそれぞれ作成し、データをまとめていくと効率よくデータを管理できます。
コンピュータとデータベースは深く関係しています。普段私たちが利用しているソフトウェアやアプリケーションは、なんらかの形でデータベースにアクセスしていることがほとんどです。
そのなかでも、「SQL」はさまざまな種類のデータベースを操作可能で、今後も発展が見込まれているAI技術などで使用されるビッグデータに対しても使用できます。
これからも「SQL」に対する需要は増える可能性が高いため、「SQL」を覚える重要性は高いといえます。
ここからは、「SQL」の3つの種類について解説します。
それぞれどのような特徴があるのかを理解することによって、データベースでどのような操作が行われているかをイメージしてみてください。
データ操作言語とは、データベース内のデータを操作するための言語です。「Data Manipulation Language」と表記し「DML」と略されます。
この3つが代表的なデータ操作言語です。
データ定義言語とは、データベースの作成や定義付けをするための言語です。「Data Definition Language」と表記し「DDL」と略されます。
この3つが代表的なデータ定義言語です。
データ制御言語とは、データベースを管理、制御するための言語です。「Data Control Language」と表記し「DCL」と略されます。
上記の3つが代表的なデータ制御言語です。
一般的にシステムやアプリ開発の現場では、データベース周りを専門に担当するデータベースエンジニアがいます。そのため、プログラマやそのほかのエンジニアは「SQL」を扱うことは少ないかもしれません。
しかし「SQL」を習得することはすべてのエンジニアにとって、メリットがあることです。
ここでは、エンジニアが「SQL」を扱えるとどのようなメリットがあるのかを解説していきます。
開発エンジニアが「SQL」を取得するメリットは、仕事の幅を広げられることです。ソフトウェア開発において、データベースは切っても切れない関係にあります。
ソフトウェア側からデータベース側に命令を送る処理を作る場合には、「SQL」の知識が必要です。「SQL」に関する知識がなければ、仕様書に書かれた指示を理解できず、データベースを扱う仕事をすることが難しくなるでしょう。「SQL」を習得することは開発エンジニアにとってメリットであるとともに、必要不可欠なことです。
インフラ系エンジニアも、「SQL」を習得することで仕事の幅を広げられます。
インフラ系エンジニアは、1からプログラムを作成するわけではありませんが、データベースの構築や運用、本番の稼働後にメンテナンス目的で「SQL」を使用することがあります。
データベースの知識を極めることで、データベースエンジニアというデータベースに特化したエンジニアを目指すことも可能です。
非エンジニアの場合でも「SQL」を習得することによって、データベースエンジニアに依頼することなく自分でデータの抽出や分析ができるようになります。
データ分析の経緯や目的を把握している部署や職種でデータの分析作業まで担当できるため、作業フローの簡略化やスピードアップを図ることも可能です。
「SQL」は国際標準化されているため、さまざまなデータベースで使用できます。
ここでは、「SQL」を使用できるデータベース5種について解説します。
「MySQL」は、「Oracle社」が開発したオープンソースのデータベースです。現在主流のデータベースのほとんどを占める、リレーショナルデータベース(Relational Database)という表形式のデータベースです。
無償ライセンスと商用の有償ライセンスがあり、商用目的でなければ無償で使用できます。
「MySQL」の大きな利点はデータベースとしての柔軟性や拡張性の高さにあり、さまざまなアプリケーションと合わせて使用できる点です。
「PostgreSQL」は、カリフォルニア大学バークレー校で開発された「Ingres」というデータベースの後継として開発されたリレーショナルデータベースです。
操作性がシンプルな「MySQL」と比べると操作はやや難しいですが、その分高い機能性や拡張性を持っており、オブジェクト指向プログラミングとの相性もよいため世界中のプログラマーから好まれています。
「Oracle Database」は、「Oracle社」が開発し販売しているリレーショナルデータベースです。無償で扱う方法もありますが、基本的には有償です。
そのためコストが発生しますが、機能が豊富で障害に対する高い堅牢性を持っており、バグ対応などのサポートなども受けることができるため、コストをかけてでも使用するメリットがあります。
「Microsoft SQL Server/Access」は、「Microsoft社」が提供するリレーショナルデータベースです。「Windows」の製品との親和性が高く、「Excel」や「Word」などのOffice製品との互換性があります。
「Access」と「SQL Server」はよく似ているツールですが、「Access」の方がシンプルで「SQL Server」の方がより本格的なデータベースです。
「SQLite」は、軽量なオープンソースのリレーショナルデータベースです。
「Lite」という名前のとおり簡易的なデータベースで、データベースサーバとしてではなくアプリケーションに組み込まれて利用されます。
ライブラリとして利用できるため、導入する際の手間も少なく手軽にデータベースを導入できます。
「SQL」を取り扱うためには、データベースをインストールし環境構築する必要があります。
ここでは、「MySQL」を「Windowsパソコン」にインストールする方法とサーバーの設定方法を紹介します。
まずは以下のWebサイトから「MySQL」をインストールします。
MySQL :: Download MySQL Installer
Windows (x86, 32-bit), MSI InstallerのDownloadをクリックします。
ブルーの「Login」ボタンとグリーンの「Sign Up」ボタンが表示されますが、画面下の「No thanks, just start my download.」(下図赤線部)をクリックすることでインストーラをダウンロードできます。
インストーラをダウンロードしたら、実行しインストールを行います。
インストーラを起動すると下図の画面が表示されます。
デフォルトでチェックが入っている「Developer Default」のまま「Next」をクリックしてください。
どの製品のサーバーに「MySQL」を設定するかを聞かれる画面が表示されます。
本記事では、特定の製品に関するインストールの解説は行いません。
すでにインストールされている場合はメッセージが表示されないこともあります。
選択しない状態で「Next」をクリックします。
「Visual Studio」か「Python」がインストールされていない場合は、下図のメッセージが表示されますが「Yes」をクリックしてインストールを進めてください。
下図の画面が表示されます。こちらは何も操作せず、デフォルトの表示のまま「Execute」をクリックします。
インストールするデータの一覧(下図)が表示されたらそのまま「Execute」をクリックします。
下図の画面で「MySQL」の初期設定を行います。「Next」をクリックしてください。
下図で確認することは、以下の3点です。
ほかのアプリケーションで使用していないポート番号を設定します。デフォルトの状態でも使用していないポート番号の場合は、そのままで問題ありません。
確認後、設定が終わったら「Next」をクリックします。
認証方式を設定する画面が表示されます。RECOMMENDEDと表示されているデフォルトの暗号化パスワード方式がおすすめです。認証方式を設定したら「Next」をクリックします。
「root」アカウントのパスワードを設定します。英数字(大文字と小文字含む)と記号を組み合わせた任意のパスワードを入力し「Next」をクリックします。
サーバーファイルをローカル環境のどこに設定するかを確認する画面が表示されます(下図)。
別途、やりたいことがなければ、デフォルトのままにしておいてください。
「Next」をクリックします。
最終確認画面です。ここでは「Execute」をクリックするだけです。
以下の画面が表示されたら、初期設定は完了しました。「Finish」をクリックします。
インストール完了までもう少しです。
「MySQL」のルーターと「MySQL」のサンプルの設定を行って「Next」をクリックします。
本記事ではとくに設定を変更しないため、ここでは「Finish」をクリックします。
「MySQL」のサンプルの設定画面が表示されるので「Next」をクリックします。
下図画面が表示されたら、「MySQL」を設定したときに入力したパスワードを入力して「Check」をクリックします。
ログインできた場合は下図のように、「Connections succeeded」のメッセージやグリーンのチェックマークが表示されます。
ログインできたら「Next」をクリックしてください。
下図の確認画面が表示されますので「Execute」をクリックします。
下記の画面が表示されたら、初期設定は完了しています。「Finish」をクリックします。
下図の確認画面が表示されますので「Finish」をクリックします。
下図の画面が表示されたら、インストールおよび初期設定は完了です。「Finish」をクリックします。
これで手元のパソコンで「MySQL」を使えるようになりました。
ここからは、データベースの情報を扱う際にSQLでよく使われる基本操作の紹介です。
データベースごとに細かい記述は異なりますが、ここではあくまでも「一般的な記述法」を述べるのみにとどめています。
「CREATE」は、テーブルやデータベースを作成できる「SQL文」です。
テーブルを作成する場合は、以下のように記述します。
CREATE TABLE [テーブルの名前]( [列1の名前] [列1のデータ型], [列2の名前] [列2のデータ型], [列3の名前] [列3のデータ型], ... );
また、データベースを作成する場合は、以下のように記述します。
CREATE DATABASES [データベースの名前];
指定した名前のデータベースがすでに存在している場合は、「database exists」というエラーが発生し、その名前のデータベースを作成することはできません。名前を変更して、再度「CREATE文」を実行してください。
「INSERT」は、データを新たに追加できる「SQL文」です。
テーブルにデータを追加する場合は、以下のように記述します。
INSERT INTO [テーブルの名前] ([列の名前1],[列の名前2],...) VALUES([値1],[値2],...);
たとえばテーブル「fruits」に100円のりんごのデータを加える場合は、以下のように記述します。
INSERT INTO fruits (ID,商品名,値段) VALUES(001,'りんご',100);
「SELECT」は、テーブルからデータを検索し取得する「SQL文」です。
オプションの多い「SELECT」ですが、基本となる書式は以下のとおりです。
SELECT [カラムの名前] FROM [テーブルの名前];
アスタリスクを使うことで、テーブルのすべてのカラムを取得できます。
SELECT * FROM [テーブルの名前];
「SELECT文」には条件を絞りこむ「WHERE句」や「LIMIT句」、文内での条件式の使用も可能なため、さまざまな検索が可能です。
「UPDATE」は、テーブル内のデータを更新できる「SQL文」です。
最も基本的な書式は以下のようになります。
UPDATE [テーブルの名前] SET [カラムの名前] = [値];
上記のような記述だと、指定したテーブル内でカラム名すべての値が指定した値に変更されます。便利ですが、1つのミスで膨大な数のデータを消してしまう可能性があるため、通常はWHERE句で条件を付けて使用します。
UPDATE [テーブルの名前] SET [カラムの名前] = [値] WHERE [条件];
こちらも条件式を使い応用することで、さまざまなデータの更新が可能になります。
「DELETE」は、テーブル内のデータを削除できる「SQL文」です。
最も基本的な書式は以下です。この場合、テーブル内のすべてのデータが削除されます。
DELETE FROM [テーブルの名前];
テーブル内のデータをすべて削除することはあまり起こらないため、通常は以下のように「WHERE句」で条件を絞り込んで削除します。
DELETE FROM [テーブルの名前] WHERE [カラムの名前] = [値];
こちらも条件式に等号や不等号を使うことによって、さまざまな条件での削除が可能です。
「DROP」は、テーブル内のオブジェクトを完全に削除できる「SQL文」です。
書式は以下のようになります。
DROP TABLE [テーブルの名前];
「DELETE」も削除する「SQL文」でテーブル内のデータの削除が可能です。しかし、データが削除されてもレコードが登録されていた形跡はそのまま残ります。
一方で「DROP」はテーブル内のオブジェクトを丸ごと削除するため、データの痕跡を残さずテーブルすべてが削除されるという違いがあります。
「SQL」は便利である反面、データベースへの不正なアクセス攻撃、いわゆるサイバーテロの対象になることがあります。
ここでは、「SQLインジェクション」の仕組みや被害について解説します。
「SQLインジェクション」とは不正なデータを注入(injection)するサイバー攻撃のことです。不正な「SQL文」を注入(injection)するという手法が取られることから、「SQLインジェクション」と呼ばれています。
データを悪意のある第三者によって書き換えられてしまったり削除されてしまったりするため、サイバー攻撃を受けた企業は甚大な被害が発生するでしょう。
「SQLインジェクション」は、悪意のあるユーザがユーザIDやパスワードを入力するログイン用フォームなどに不正な「SQL文」を入力することによって行われます。
たとえばユーザIDの入力箇所に「データベース内の全情報を表示する」という内容の「SQL文」が注入され送信されると、画面上に会員情報が表示されてしまうのです。
クレジットカードの情報を「SQL」で管理していた場合は抜き出されてしまいます。そのため「SQLインジェクション」によるサイバー攻撃は、とくに脆弱性のあるECサイトや会員制のサイトをターゲットに行われることが多いです。
企業が、「SQLインジェクション」の被害を受けた事例も数多くあります。
2022年6月にスニーカーやトレーディングカードなどを主に扱うフリマサービスが「SQLインジェクション」の被害を受け、ユーザ名・メールアドレス・住所などの個人情報が2,753,400件分流出する事件が発生しました。
また2022年1月には、中学受験関連サービスのWebサイトも「SQLインジェクション」の被害を受け最大280,106件分の個人のメールアドレスが流出した可能性があると発表しています。
この10年で、「SQLインジェクション」以外のサイバー攻撃もどんどん増加していました。セキュリティに対する正しい知識は、今やサービスを運営する側には必須の知識となっています。
「SQL」のみではシステムやアプリの開発はできませんが、どのようなシステムやアプリの開発でも「SQL」やデータベースの知識やスキルは必須です。
「SQL」を習得すれば、データベースに関する知識も得られます。また他のプログラミング言語とあわせて習得することで、よりいっそうエンジニアとして力をつけられます。
ぜひプログラミング言語に合わせて「SQL」も勉強し、習得を目指してみてください。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール