初学者です。SQLの理解が浅いため纏めていきます。
- MySQL
- Ruby on Rails 6.0.0
はじめに
ここではSQLというDBを操作する言語について記述します。
※この記事は、続きの記事です。
第一回目はこちらになります。よろしかったらどうぞ!
今回はSQLのデータベースやテーブルに対して行う命令の中でも、DMLについてまとめていきます!
↓今ここ
- データ操作 「DML(Data Manipulation Language)」
- データ制御 「DCL (Data Control Language)」
DML
データを操作するSQLです。登録、更新、削除、検索などの命令文が該当します。
命令 | 機能 |
---|---|
INSERT | データの登録 |
UPDATE | データの更新 |
DELETE | データの削除 |
SELECT | データの検索 |
データの登録
まずログインしていることが前提です。
また、使いたいデータベースの指定をしましょう。
% mysql -u root
mysql> USE データベース名;
SELECT
SELECTは、データを取得する際に使用するSQLの句です。
- 取得するカラムを指定する際は、以下のようにカラム名を指定します。
mysql> SELECT カラム名 FROM テーブル名
- テーブルに登録されている全てのカラムのデータを取得する場合は、下記のように書きます!
mysql> SELECT * FROM 《テーブル名》
ここで気になる「 * 」これはなんでしょう..?
ワイルドカード
「 * 」は、ワイルドカードと言います。
意味は、全てのパターンにマッチするものです。
文字の代わりに使うことができる特殊記号の一つになります。
SELECT句において、アスタリスク*が「全てのカラム」という意味のワイルドカードと定義されています。
そのため、全てのデータが取得できるということになります!
これを踏まえて、データの登録について学びましょ!
INSERT
INSERTはテーブルにデータを登録するためのSQL文です。
INTOと言う句と合わせて、INSERT INTOとして使います。
また、実際に設定する値に関しては、VALUESという句の後に入力します。
注意!
INSERT文は、全てのカラムに値を入れるか否かで文法が変わります!!
全てのカラムに値を入れる場合
mysql> INSERT INTO テーブル名 VALUES(値1, 値2, 値3);
特定のカラムのみに値を入れる場合
mysql> INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(値1, 値2);
データの更新
UPDATE
UPDATEは、データを更新するためのSQL文です。
使用する際は、以下のように、①まずテーブル名を指定します。
そして、②SETという句の後に変更内容、③WHEREという句の後に条件を指定します!
mysql> UPDATE テーブル名 SET 変更内容 WHERE 条件;
以下のように表示されれば、正常に実行されています!(例)
mysql> update foods set price = 200 where id = 4;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
念の為、データが更新されているか確認しましょう!
mysql> SELECT * FROM テーブル名;
データの削除
最後にデータの削除についてです。
DELETE
DELETEは、データを削除するためのSQL文です。
実際は、テーブル名を指定するために、FROM句を、条件を指定するためにWHERE句を合わせて使います。
記述は以下の通りです。
mysql> DELETE FROM テーブル名 WHERE 条件;
例として、ここでは「idの2」を消したいとします。
mysql> DELETE FROM テーブル名 WHERE id = 2;
以下のように表示されれば実行できています!
mysql> delete from テーブル名 where id = 2;
Query OK, 1 row affected (0.01 sec)
mysql>
削除されているか確認しましょう。
mysql> SELECT * FROM テーブル名;
最後に
ここまでで基本的なデータベースやテーブルの基本操作は抑えました。
しかし、実際のアプリケーション実装においては、rails db:createなどのコマンドで置き換えられているため、あまり使いません。。。
より実践的な操作に関しては次回からです。
しかし、アプリの裏で動いているこれらの文や句について知ることは大切です。(何が起こってるか分からずに使ってるのとは違うと思います。)
それではお疲れ様でした!