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の書き方にはルールがあります。
4.操作方法(sqlite3)
わたしのmacbookには sqlite3 がインストールされているので、これを使って操作をしてみます!
(いつかの勉強会でいつの間にかインストールしてたようです笑)
4-1. 接続
データベースに接続します。データベースが無い場合、新規作成になります。
今回はtest
という名前のデータベースを作成します!
$ sqlite3 test.sqlite3
4-2. CREATE
テーブルの新規作成をします。
文章で説明するとものすごくわかりにくいと思うので、実際に作ったもの載せます😂
途中で改行を入れたとしても、先程のルールのとおり、SQL文の最後はセミコロン;
です。
なのでキャプチャは6行に分かれていますが、SQL文としては1文です👀
CREATE TABLE
のあとにテーブル名shopping_list
を書き、その後に括弧( )
の中に列名、データ型、制約の3セットが並んでいます。
列名はid
、name
、price
、note
の4つがあります。
データ型は以下のように設定できます💡
データ型 | 意味 |
---|---|
INTEGER | 整数(小数は入らない) |
CHAR | 固定長文字列 指定した最大長に満たない場合は後ろを半角スペースで埋める |
VARCHAR | 可変長文字列 指定した最大長に満たない場合は何もしない |
DATE | 日付(年月日) |
VARCHAR
はTEXT
でも良いみたいですが、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行追加しました!
最後にCOMMIT;
を行った時点で、データベースに反映されます。
DB Browser for SQLiteというソフトをインストールしているので、視覚的に確認することができます!
4-5. SELECT
SELECT
は検索コマンドです。
今作ったtest.sqlite3
にはほとんどデータが格納されていませんが、実際データベースは多大なデータを格納します。
この中から検索する時に使うため、重宝されるコマンドみたいです🎉
*
を使うと全てを表示してくれるみたいですね〜!
4-6. DELETE
DELETE
は行を削除するコマンドです。
先程追加したorange
の行を削除します。
ブラウザで、行が消えているのが確認できます😶
4-7. UPDATE
UPDATE
は行を更新するコマンドです。
単価を1.08倍にしました😊