どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

SQLの基本

本日は SQL について勉強します!
データベースについては以前実務でFileMakerを使っていたので、単語が全く分からないわけではないため、テーブルとかの用語は解説を割愛いたします🙇‍♀️

目次

1.SQLとは

SQL(Structured Query Language)とは、データベースを操作するための言語のことです。
以前PostgreSQLというものを学習しましたが、だいぶ忘れています😗笑
SQLには ISO(国際標準化機構)で定められた標準規格があるそうで、ISO に準拠した SQL標準SQLと言います。

2.SQLの分類

SQLは、定義操作制御の3つに分類されます。

2-1. DDL(Data Definition Language)

DDLデータ定義言語です。以下のようなコマンドがあります。

コマンド 機能
CREATE データベースやテーブルなどを作成する
DROP データベースやテーブルなどを削除する
ALTER データベースやテーブルなどの構成を変更する

削除はDELETEではないのですね…😐
DELETEは次に出てくるので間違えないように注意ですね!

2-2. DML(Data Manipulation Language)

DMLデータ操作言語です。以下のようなコマンドがあります。

コマンド 機能
SELECT テーブルから行を検索する
INSERT テーブルに新規行を登録する
UPDATE テーブルの行を更新する
DELETE テーブルの行を削除する

2-3. DCL(Data Control Language)

DCLはデータ制御言語です。以下のようなコマンドがあります。

コマンド 機能
COMMIT データベースに対して行った変更を確定する
ROLLBACK データベースに対して行った変更を取り消す
GRANT ユーザーに操作の権限を与える
REVOKE ユーザーから操作の権限を奪う

3.SQLの書き方

SQLの書き方にはルールがあります。

  • SQL文の最後にセミコロン ; をつける
  • キーワードに大文字/小文字の区別はない
  • 定数はシングルクォーテーション ‘ で囲む

4.操作方法(sqlite3)

わたしのmacbookには sqlite3 がインストールされているので、これを使って操作をしてみます!
(いつかの勉強会でいつの間にかインストールしてたようです笑)

4-1. 接続

データベースに接続します。データベースが無い場合、新規作成になります。
今回はtestという名前のデータベースを作成します!

$ sqlite3 test.sqlite3

f:id:mistyrinth:20190315205802p:plain

4-2. CREATE

テーブルの新規作成をします。
文章で説明するとものすごくわかりにくいと思うので、実際に作ったもの載せます😂
f:id:mistyrinth:20190315220348p:plain
途中で改行を入れたとしても、先程のルールのとおり、SQL文の最後はセミコロン;です。
なのでキャプチャは6行に分かれていますが、SQL文としては1文です👀

CREATE TABLEのあとにテーブル名shopping_listを書き、その後に括弧( )の中に列名、データ型、制約の3セットが並んでいます。
列名はidnamepricenoteの4つがあります。
データ型は以下のように設定できます💡

データ型 意味
INTEGER 整数(小数は入らない)
CHAR 固定長文字列
指定した最大長に満たない場合は後ろを半角スペースで埋める
VARCHAR 可変長文字列
指定した最大長に満たない場合は何もしない
DATE 日付(年月日)

VARCHARTEXTでも良いみたいですが、VARCHARだと最大長がマルチバイト文字に対応するとか、TEXTだと最大長はバイト数で決まるとか違いがあるそうです。
今はどっちでも良いかな…?

制約がNOT NULLの場合、必ずデータが格納されていないといけないという意味になり、無記入ではエラーになります🧐
最後の PRIMARY KEY は、特定のデータを指定するときの主キーになります。 そのため、主キーは重複してはいけません。
例えば「ラーメン」という商品を2つ登録するとしても、1つめのラーメンと2つめのラーメンを見分けるために異なる主キーを使います。
ここではidを主キーとしています✨

4-3. トランザクション

データベースにおけるトランザクション(transaction)とは、簡単に言うとデータベースの複数の操作を一括で更新することです。
先程作った空のテーブルにデータを入れていきます💪💪

BEGIN TRANSACTION;トランザクションを開始します。
その後INSERTなどでデータを触ったら、最後にCOMMIT;で変更を一括で反映させます。
トランザクションの終了はEND TRANSACTION;です👏
もし途中で間違えたら、COMMITではなくROLLBACKを使って変更を破棄します💡
なんとなく感覚的にわかりやすいです〜🐾

4-4. INSERT

トランザクションを行って、INSERTで2行追加しました!
f:id:mistyrinth:20190315222211p:plain
最後にCOMMIT;を行った時点で、データベースに反映されます。
DB Browser for SQLiteというソフトをインストールしているので、視覚的に確認することができます!
f:id:mistyrinth:20190315222324p:plain

4-5. SELECT

SELECTは検索コマンドです。
今作ったtest.sqlite3にはほとんどデータが格納されていませんが、実際データベースは多大なデータを格納します。
この中から検索する時に使うため、重宝されるコマンドみたいです🎉
f:id:mistyrinth:20190315222556p:plain
*を使うと全てを表示してくれるみたいですね〜!

4-6. DELETE

DELETEは行を削除するコマンドです。
先程追加したorangeの行を削除します。
f:id:mistyrinth:20190315223708p:plain
ブラウザで、行が消えているのが確認できます😶
f:id:mistyrinth:20190315223747p:plain

4-7. UPDATE

UPDATEは行を更新するコマンドです。
f:id:mistyrinth:20190315224101p:plain
単価を1.08倍にしました😊
f:id:mistyrinth:20190315224123p:plain