表の形をしたデータベースに「エンジニアだけを見せて」「新しい乗組員を1人追加して」とお願いしたいとき、コンピューターにはどうやって伝えればいいと思いますか?
私たちが話す日本語や英語では、コンピューターは正確に理解できません。データベースには、データベース専用の「話しかけ方」があります。それがこの記事の主役です。
SQLは「データベースと会話する言語」
SQL(エス・キュー・エル、またはシークェル)は、Structured Query Language の略で、データベースに指示を出すための専用の言語です。
前回学んだ通り、RDBMS(データベースを管理するソフトウェア)は表(テーブル)の形でデータを扱います。しかし、その表に対して「これを見せて」「これを追加して」と指示を出すには、人間の言葉ではなくSQLという共通の言葉を使う必要があります。MySQLでもPostgreSQLでもSQLiteでも、基本のSQLはほぼ同じというのが、SQLの大きな強みです。一度覚えれば、色々な現場のデータベースで通用します。
SQLの4大操作
SQLでできることは数多くありますが、最も基本となるのは次の4つの操作です。頭文字を取って CRUD(クラッド) と呼ばれることもあります。
- SELECT ― データを取り出す(探す・見る)
- INSERT ― データを追加する(新しく登録する)
- UPDATE ― データを更新する(内容を書きかえる)
- DELETE ― データを削除する(不要になったものを消す)
たとえば、アマテラスの crew テーブルに対してであれば、こんなイメージです。
SELECT * FROM crew;
これは「crew テーブルの中身をすべて見せて」という意味のSQL文です。まだ細かい文法は分からなくて大丈夫。「SELECTは取り出す命令なんだな」というイメージだけ持っておいてください。同じように、INSERT は新しい乗組員を1行追加する命令、UPDATE はある乗組員の役職を書きかえる命令、DELETE は退役した乗組員の行を消す命令、というイメージです。
この講座のSTAGE 02以降では、まずこの中でも一番よく使う SELECT から、じっくり時間をかけて学んでいきます。
SQLは「宣言型」の言語
SQLには、他の多くのプログラミング言語と違う、大きな特徴があります。それは「どうやって取り出すか」ではなく「何を取り出したいか」だけを書くという点です。これを宣言型(せんげんがた)の言語と呼びます。
先ほどの SELECT * FROM crew; を思い出してください。私たちは「まずディスクの何番地を読んで、次に1行ずつ確認して……」といった手順は一切書いていません。ただ「crew から全部ほしい」という結果だけを宣言しているのです。手順を考えるのはRDBMSの仕事で、私たちは「何がほしいか」を正確に伝えることに集中すればよいのです。
SQLが「宣言型の言語」と呼ばれるのは、なぜでしょう?
答えを見る
処理の手順(どうやって取り出すか)を書くのではなく、欲しい結果(何を取り出したいか)だけを書けばよい言語だからです。
手順の組み立てはRDBMS側が引き受けてくれるので、私たちは「何がほしいか」を正確にSQLで表現することに集中できます。
4大操作のイメージと、宣言型という考え方——このふたつを持って、次はいよいよこのサイトでの学び方と、練習台となるアマテラスのデータベースの中身を確認していきましょう。まだ気が早いですが、SQL DIVERでは今日出てきた SELECT から実際にタイプして練習していくことになります。
SELECT・INSERT・UPDATE・DELETE、通称CRUD! 全部いっぺんに覚えなくて大丈夫、この講座ではまずSELECTだけをじっくりやるから安心してね。次は練習のしかたを確認しよう。