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
この記事が気に入ったらサポートをしてみませんか?