DBを操作する言語(SQL)

rails db:createコマンドや、Sequel Pro(シークエルプロ)を使用したデータの書き換え。
・・・最終的にSQLという言語が実行されて実現する仕組み。
・・・簡単な操作であれば、「特定のコマンド実行」や「GUI操作」といった簡易的な仕組みで実現可能。

「特定のコマンド実行」や「GUI操作」が用意されていない処理
・・・直接SQLを使用する。

________________________

MySQLというRDBMSを使用してSQLを実行

% cd

% mysql -u root     # MySQLに接続

-u rootオプション:
「MySQLであらかじめ用意されているユーザー:root」としてログインする。

・SQLはmysql>の続きから、入力して実行。
・SQLはGUIツールであるSequel Pro(シークエルプロ)で使用可能。

________________________

SQL(エス・キュー・エル/シークェル)とは「Structured Query Language」の略で、RDBの操作を行うための言語。データベースやテーブルに対してさまざまな命令を行う。

データを定義する「DDL(Data Definition Language)」
データを操作する「DML(Data Manipulation Language)」
データを制御する「DCL (Data Control Language)」

________________________

・DDL

作成/更新/削除などの命令文がある。

          命令                                                 機能
        CREATE                       データベースやテーブルの作成
        ALTER                          データベースやテーブルの更新
        DROP                           データベースやテーブルの削除

・CREATE

データベースやテーブルを作成できるSQLの文。

mysql> CREATE DATABASE 《データベース名》;
______________________


mysql> CREATE DATABASE sqltest;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE TABLE テーブル名 (カラム名1 カラム名1の型, カラム名2 カラム名2の型, …);
________________________

mysql> CREATE TABLE goods (id INT, name VARCHAR(255));
Query OK, 0 rows affected (0.01 sec)

カラムを作成する場合には型の指定が必要。

型名                           保存できる値
INT                           数字
VARCHAR(M)         最大M文字の文字列

・SHOW

データベースやテーブルを一覧表示できるSQLの文。

mysql> SHOW DATABASES;
+------------------------+
| Database               |
+------------------------+
| 省略                    |
| sqltest               |
| 省略                    |
+------------------------+
36 rows in set (0.00 sec)

・DROP

データベースやテーブルを削除できるSQLの文。

mysql> DROP DATABASE 《データベース名》;
________________________

mysql> DROP DATABASE sqltest;
Query OK, 0 rows affected (0.02 sec)

・USE

どのデータベースを使用するのかを指定するSQLの文。
・・・テーブルを操作する場合は、はじめに「どのデータベースにあるテーブルか」を選択する必要がある。

mysql> CREATE DATABASE sqltest;
Query OK, 1 row affected (0.00 sec)

mysql> USE sqltest;
Database changed

________________________

テーブル構造を確認するためには、FROMを使う。

・FROM

対象となるテーブルを指定する際に使用するSQLの句。

mysql> SHOW columns FROM 《テーブル名》;
________________________

mysql> SHOW columns FROM goods;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(255) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

________________________

カラム情報の更新には、ALTER。

・ALTER

データベースやテーブルを編集できるSQLの文。

mysql> ALTER TABLE 《テーブル名》 操作
________________________

# カラムの追加
mysql> ALTER TABLE テーブル名 ADD カラム名 カラムの型;        # カラムを1つだけ追加する場合
mysql> ALTER TABLE テーブル名 ADD (カラム名 カラムの型, ……);  # カラムを複数追加する場合

________________________

mysql>  ALTER TABLE goods ADD (price int, zaiko int);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
# カラムの編集
mysql> ALTER TABLE テーブル名 CHANGE 古いカラム名 新しいカラム名 新しいカラムの型;
________________________

mysql> ALTER TABLE goods CHANGE zaiko stock int;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
# カラムの削除
mysql> ALTER TABLE テーブル名 DROP カラム名;
________________________

mysql> ALTER TABLE goods DROP stock;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

________________________

・DML

データを操作するSQL。登録/更新/削除/検索などの命令文がある。

   命令                            機能
INSERT                データの登録
UPDATE               データの更新
DELETE               データの削除
SELECT               データの検索

・SELECT

データを取得する際に使用するSQLの句。

mysql> SELECT 《カラム名》 FROM 《テーブル名》

# すべてのカラムのデータを取得する際
mysql> SELECT * FROM 《テーブル名》

# アスタリスク*が「すべてのカラム」という意味のワイルドカードとして定義されている。
________________________

mysql> SELECT * FROM goods;
+-------+-------+-------+
| id    | name  | price |
+-------+-------+-------+
|     1 | ペン   | 120   |
+-------+-------+-------+
1 rows in set (0.01 sec)

・INSERT

テーブルにデータを登録するためのSQL文。
INTOという句と組み合わせてINSERT INTOとして使用する。
実際に設定する値は、VALUESという句の後に入力する。

# すべてのカラムに値を入れる場合
mysql> INSERT INTO 《テーブル名》 VALUES(値1, 値2, 値3);

# 特定のカラムのみに値を入れる場合
mysql> INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(値1, 値2);
________________________

mysql> INSERT INTO goods VALUES(1, "ペン", 120);
Query OK, 1 rows affected (0.01 sec)

mysql> INSERT INTO goods(id, name) VALUES(2, "消しゴム");
Query OK, 1 rows affected (0.01 sec)

mysql> SELECT * FROM goods;
+-------+---------+-------+
| id    | name    | price |
+-------+---------+-------+
|     1 | ペン     | 120   |
|     2 | 消しゴム  | NULL  |
+-------+---------+-------+
2 rows in set (0.01 sec)

・UPDATE

データを更新するためのSQLの文。

mysql> UPDATE 《テーブル名》 SET 《変更内容》 WHERE 《条件》;
________________________

mysql> UPDATE goods SET price = 100 WHERE id = 2;
Query OK, 1 rows affected (0.01 sec)
Rows matched: 1   Changed: 1   Warnings: 0

・DELETE

データを削除するためのSQL文。
テーブル名を指定するためにFROM句を、条件を指定するためにWHERE句をあわせて使用する。

mysql> DELETE FROM 《テーブル名》 WHERE 《条件》;
________________________

mysql> DELETE FROM goods WHERE id = 2;
Query OK, 1 rows affected (0.01 sec)

2020/12/05

この記事が気に入ったらサポートをしてみませんか?