1分で分かる!SQL
A:うーん。どうすればいいんだろう…
B:ことりん君、また悩んでるのー??
A:ジャバード先生、こんにちは!実は僕もプログラミングの勉強を始めたんだよ!
B:そうなんだ!すごいね!
A:でも、ちょっと行き詰まってるんだ…。データベースからデータを取ってきたり、データベースにデータを登録したいんだけど、どうすればいいか分からないんだ…。やっぱり僕には向いてないのかな…。きっと向いてないんだろうな…。もうバットでパソコンをボッコボコのギッタギタにしたい気分だよ…。
B:う、うん…。ちょっと落ち着こうか…。やり方はいろいろあるんだけどSQLって知ってる?
A:え、なになに??えすきゅーえる??
A:え、どういうこと??
B:そうだなぁ。例えば「コンピュータ」と「データベース」を人間として考えてみよう。「コンピュータさん」と「データベースさん」は、それぞれ別の国の人なんだよ。だから、当然理解できる言葉も違うんだ。ことりん君もスペイン語で急に話しかけられてもわからないよね?
A:スペイン語は困っちゃうね。
B:それと同じだよ!コンピュータさんはJavaとかPythonみたいなプログラミング言語は理解できるんだけど、データベースさんはプログラミング言語で話しかけても何を言っているかさっぱりわからないんだ。
A:そうなんだ!あ、つまりデータベースさんが話す言葉がSQLってこと?
B:そのとおり!データベースさんに対して何かお願いするときはSQLという言葉で話しかける必要があるんだよ!
A:なるほどなるほど!
B:何かアプリケーションをつくるときは、ほとんどの場合にデータベースを使うことになるから、SQLはちゃんと勉強しておいたほうがいいよ!
A:うん!次はSQLも勉強してみるよ!
B:あと、できれば、さっきから握りしめてるそのバット、どっかに片付けてくれると助かるんだけど!
SQLとは?SQLの基礎知識
SQLは「Structured Query Language(構造化問い合わせ言語)」の略であり、データベースに命令を出すための言語です。SQLは大きく分けて3つの種類があります。具体的には下記の3つです。
DDL:データ定義言語
データベース(データを格納する箱)やテーブル(箱の中の表)の作成、削除、変更などを行うためのものです。
DML:データ操作言語
データの取得、登録、更新、削除などを行うためのものです。
DCL:データ制御言語
「トランザクション」と呼ばれるデータの整合性を保つためのものです。
これらの言語を必要に分けて使い分け、アプリケーションを作っていく必要があります。
最近では、「情報銀行」などといったビジネスもスタートしているように、データが大きな価値を持つ時代となりつつあります。そのため、膨大なデータを扱うアプリケーションも増加の一途をたどっています。このような状況を見ても、SQLのスキルはITエンジニアにとって必ず身に付けておきたいものの1つといえるでしょう。
SQLを使うエンジニア
SQLを使うエンジニアは多いです。プログラミングを行うITエンジニアであれば、必須といっても過言ではないほど大事なスキルです。WebサイトやWebアプリケーション、企業の業務システム、スマートフォンのアプリケーションなど、さまざまなシステムにとってデータベースは無くてはならないものです。そして、そのデータベースを制御するSQLもまた、習得しておくべきスキルなのです。
SQLを使うエンジニアの特徴と在籍業界
SQLを使うエンジニアについて、特に傾向はありません。在籍業界についても、Web業界、SIer業界などを問わず、どの業界にも存在しています。ただし、Web業界やスマホアプリ(特にスマホゲーム)業界など、一部の業界ではSQLを必要としないNoSQLデータベースを採用する場合もあります。どの種類のデータベースの経験があるか、SQLの習熟度などは、候補者に確認しておくようにしましょう。
採用する時に知っておくとよいこと
データベースによって違いがあるSQL
これまでSQLについて説明してきましたが、実はSQLはデータベース(Oracle、MySQL、Microsoft SQLServerなど)によって違いがあります。すべてが「全く異なる」というわけではなく、SQLに関する標準的な仕様をベースとしつつ、様々な部分でSQLの書き方(文法)が異なるものもある というイメージです。念の為、候補者にはどのデータベース経験があるか確認しておくと良いでしょう。
求人のポイント
求人を作成する時は、下記の内容を求人に入れるとよいです。
1. システム(サービス)の詳細
※特にそのシステム(サービス)をなぜ作っているのかを熱量をもって記載する。
2.開発環境
※データベースを使用しているサービスであれば、この項目にデータベースの種類を記載しておくとよいでしょう。
3.現在のエンジニア組織の体制
4.現行システムの課題と募集の背景
5.求められる業務と期待値
6.エンジニアとしてのスキルアップ支援制度の有無と詳細
7.エンジニアチーム内での相互成長のための仕組み(勉強会やLT会など)の有無と詳細
8.選考フロー
9.待遇
10.キャリアパス
豆知識
SQLを使用しないアプリケーション開発
ITエンジニアにとって、SQLはマストともいえるスキルです。ただし、最近ではプログラミング時にSQLを書くというシーンは少なくなっています。各プログラミング言語のフレームワークフレームワークとは、必要となる機能を簡単に開発できるようにまとめたプログラム群です。昨今、ビジネスのスピードは急速にあがっています。そのため、サービスを開発する際も、より早く完成させることが求められています。ただ、すべての機能をゼロから開発していると多くの時間を費やしてしまいます。 フレームワークは、システムを開発する際に必要となる機能があらかじめプログラミングされており、簡単に利用することができます。例えば、Webアプリケーションのフレームワークであれば、ログインなどの認証機能、メール送信機能、簡単な画面などといった具合です。 なお、フレームワークはプログラミング言語ごとに異なります。PythonであればDjango、Flask、PHPであればLaravel、CakePHP、RubyであればRuby on Railsなどです。それぞれ特徴があるため、目的や用途などを考慮して採用するフレームワークを決定します。 Moreには、O/Rマッパーという便利な機能が用意されています。O/Rマッパーとは、データベースとオブジェクトを対応付けるものであり、実装者はSQLを意識することなくデータベースに命令を出すことができます。最終的にプログラム→SQLの変換は、O/Rマッパー側が対応してくれるという仕組みです。
ただ、環境を構築する際、調査する際、そして実装する際においても、SQLを正しく理解しておくことは求められます。
奥深いSQLの世界
SQLはかなり奥が深い世界です。最終的な結果は同じだとしても、SQLの書き方によってパフォーマンスに雲泥の差がでます。例えば、あるデータを取り出したい時にSQL次第で1秒もあれば10秒以上かかる時もあります。アプリケーションの中でも、データベースにアクセスする部分は、特に時間を要する部分です。そのため、できるだけ効率的、かつ正確なSQLを書くことが求められます。