はじめに
普段Railsいじってる時に、ログを見てSQLのクエリ発行されてる〜〜。あ〜こうやってデータベースからデータを〜〜って思ってたけど、そもそもSQL文・・・俺ちゃんと理解してんのか!?ってなり、備忘録かねてアウトプットします。本記事はさわりの部分のみ。
本記事は「スッキリわかるSQL入門ドリル」を参考としています。
SQLとは?
データベースを操作する専用言語
おーかっこいい。これを覚えればデータ操作かんたんにできるのね!!
データーベースとは
データベースとは、検索や書き換え、分析などのデータ管理を目的としてた情報を蓄積したものです。
現在広く使われているのがRDB(リレーションデータベース)
複数の表の形式でデータを管理するリレーションデータベースという。
Railsでつかってるやつだね!!理解できる!
ここで衝撃事実。データベースそのものにSQLを送るわけではない。
データベースはファイルなので、SQLで書いた命令文をかいても、検索や書き換えができないんですよ。
んじゃどこに送ってんの?
➩僕たちがSQLを送る相手はデータベース管理システム(DBMS)
と呼ばれるプログラム
DBMS
は常に稼働しててSQLを待ち受けている。いわば弁慶みたいな存在(黙れ)
DBMSは届いたSQLの内容にしたがって、データーベースファイルの内容を検索したり、書き換えたり
する処理を実行してくれるんです。
そしてDBMSのうち、複数の表形式でデーターを取り扱うものをRDBMS
という。
※RDBMSは色々あるらしい。MySQLとかSQLiteとか、製品によって使用できるSQL文の記載方法が若干違うみたいです。
SQLを実際に書いてみる
家計簿テーブルの出金額のみを取得したい時
SELECT 出金額
FROM 家計簿
全ての列を取得したい時
アスタリスクは「すべての列」という意味がある
SELECT *
FROM 家計簿
このように SELECT
には目的とする列名。FROM
は検索したいテーブル名を記述します。
ちなみに記載順番入れ替えしてみたらエラーとなりました。
条件付きの検索
3000より多い行だけを検索
SELECT 日付, 費目, 出金額
FROM 家計簿
WHERE 出金額 > 3000
データの追加
テーブルにデータを追加
下記1行のレコードが追加される
INSERT INTO 家計簿
VALUES('2013-02-25', '居住費','3月の家賃', 0, 85000)
INSERT INTOで追加先のテーブル
を、2行目のVALUESで追加する値
を指定しています。
データの更新
UPDATE 家計簿
SET 出金額 = 90000
WHERE 日付 = '2013-02-25'
WHERE(どこの?)で 日付指定して、 UPDATE(更新したい)で家計簿テーブルを
SET(変えたい部分)で 出金額 = 90000と指定
データの削除
更新できるなら削除もできるよね!
DELETE FROM 家計簿
WHERE 日付 = '2013-02-25'
WHERE(どこの?)で 日付指定して、 DELETE FROM(削除)で家計簿テーブルを
これでレコードが消えます。
SELECT、INSERT、UPDATE、DELETEのまとめ。
SELECT文:データの検索
UPDATE文:データの更新
DELETE文:データの削除
INSERT文:データの追加
練習問題
1 入金額50000円に等しい行を検索してすべての列を表示
2 出金額が4000円を超える行をすべて削除
3 2013年2月3日のメモを「カフェラテを購入に」変更する。
回答
1番目
すべての列表示なので SELECTは、アスタリスクです。
SELECT *
FROM 家計簿
WHERE 入金額 = 50000
2番目
WHERE で出金額を指定します。 >で4000以上と記載
DELETE FROM 家計簿
WHERE 出金額 > 4000
3番目
SETで変えたい場所を記載
UPDATE 家計簿
SET メモ = カフェラテを購入
WHERE 日付 = '2013-02-03'
参考記事
- スッキリわかるSQL入門ドリル