概要
Railsに頼りすぎてSQLがわかってない!
ということでSQLについて少し勉強してみました。
データベースに関わる言語ってちょっと難しそう・・と思ってたのですが、基本は意外と簡単なのかなと思いました。
この辺は抑えとこ〜ってとこだけでもまとめようかなと思ってます。
勉強に使ったサイト
SQLZOOってサイトです。
日本語訳にも対応してますし、決して難しくはないので初心者にはいいんじゃないかと思います。
そもそもSQLとは
SQLはデータベース言語の中で、最も普及している言語の一つです。DBMS(データベース管理システム)上でデータやデータベースを制御するための言語であり、ユーザーやシステムからの命令を受けてRDB(リレーショナルデータベース)にクエリ(問い合わせ)を行い、結果を返します。返ってきた結果はモニターなどに表示されます。
とのこと
ちなみに参考はこちら
つまりはRDB(リレーショナルデータベース)とおしゃべりするための言語ってことかな。
前提のデータベース
worldテーブル
name | continent | area | population | gdp |
---|---|---|---|---|
Afghanistan | Asia | 652230 | 25500100 | 20343000000 |
Albania | Europe | 28748 | 2831741 | 12960000000 |
Algeria | Africa | 2381741 | 37100000 | 188681000000 |
Andorra | Europe | 468 | 78115 | 3712000000 |
Angola | Africa | 1246700 | 20609294 | 100990000000 |
SELECT
SELECTを使うと指定したカラムの値を出してくれます。
書き方は、下記の通り。
SELECT <カラム名> FROM <テーブル名>
上記のデータベースを参考に、nameカラムを出力してみましょう。
入力
SELECT name FROM world
出力
name |
---|
Afghanistan |
Albania |
Algeria |
Andorra |
Angola |
こんな感じです。
SELECTは出力結果の大枠を決めるようなイメージですかね。
WHERE
さっきのSELECTでヒット取得した値の中から、WHEREで条件を与えて表示数を絞ってあげます。。
今回はこんなお題で出力を考えてみます。
areaが28000以上の国を表示するための条件とする。出力結果では、nameとareaを表示すること
では、書いてみます。まずはnameカラムとareaカラムを表示する必要があるので、こんな感じ。
SELECT name, area FROM world;
これで、worldテーブルの中からnameカラムとareaカラムだけ取得した状態になります。
ここでさらにWHEREを使って条件を与えてあげましょう。
入力
SELECT name, area FROM world
WHERE area >= 28000;
こいつの出力がどうなるかというと・・・。
name | area |
---|---|
Afghanistan | 652230 |
Albania | 28748 |
Algeria | 2381741 |
Angola | 1246700 |
areaが28000よりも小さかったAndorraがなくなり、nameとareaカラムを同時に取得する。という形になります。
WHEREの基本的な使い方はこんな感じです。
WHERE <カラム名> <検索条件>;
LIKE
WHEREと組み合わせて使うことが多いのが、このLIKEというもの。
今までは条件を指定してあげて、表示数をコントロールしている感覚でしたが、LIKEは「検索」のために使います。
つまり、レコードの値は何かを見ようとしてくれる、ということです
こんなお題で検索をしてみましょう。
continentに「a」を含む物を検索し、nameとcontinentを併せて出力する。
今回もまずはSELECTから。nameとcontinentが必要になります。なので・・・
SELECT name, continent FROM world
こんな感じです。
ここまでは慣れてきた方も多いのではないでしょうか。
ではいよいよcontinentに「a」を含むものを検索します
入力
SELECT name, continent FROM world
WHERE continent LIKE '%a%'
出力
name | continent |
---|---|
Afghanistan | Asia |
Algeria | Africa |
Angola | Africa |
こんな感じになります。
aを含まないEuropeは検索にヒットせずに表示されないということですね
この検索方法、%をつける位置によって意味が変わります。
ですが今回は割愛させてください。
参考までにリンクを貼っておきますのでご覧ください。
【SQL】LIKE句
まとめ
就職活動をしていると、やはりSQLの理解がどこにいっても問われます。
当然といえば当然ですよね・・・重要なデータを管理するための言語ですし・・・。
本記事ではあまり深掘りはできていないのですが、SQLに苦手意識のある方、抵抗感がある方は多いんじゃないかなと思います。
ただ、ひとまずはSELECT、WHERE、LIKEの3つが使えれば、なんとなくデーターベースを操作するという感覚をつかみ、苦手意識が薄れるのではないかと思います。