0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[SQL]基礎的なこと

Last updated at Posted at 2021-09-23

はじめに

本記事は、SQLの基礎的な部分について記述します。
そういえば、SQLってなんだっけ?と恥ずかしながら疑問に思ったため記述します。

SQLとは

DBを操作する言語です。
「Structured Query Language」の略
↑(追記)
コメント欄にて、略語ではないという参考サイトと指摘をいただきましたので、
ここで改めて訂正します。申し訳ありません。

Structured = 構造化
Query = 問い合わせ
by Google先生

私は、Rubyを使っているのでrails db:createコマンドや、
Sequel Pro(シークエルプロ)を使用したデータの書き換えは行ってきました。

これらの操作は、
最終的にSQLという言語が実行されて実現する仕組みになっており、
SQLを直接使用せずに、
「特定のコマンドの実行」や「GUI操作」を実現できます。

SQLによるデータベースの操作

データベースやテーブルに対して命令でき、大きく以下の3つに分類されます。

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

ターミナル上で入力。

# MySQLに接続
% mysql -u root

CREATE文

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

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

今回は、データベース名をsqlcheckとしておきます。

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

SHOW文

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

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

DROP文

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

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

# sqlcheckがちゃんとなくなっていることを確認
mysql> SHOW DATABASES;

USE文

どのデータベースを使用するのかを指定するSQLの文

# 先ほどsqlcheckを消したので再度作成します
mysql> CREATE DATABASE sqlcheck;
Query OK, 1 row affected (0.00 sec)

# sqlcheckを使うよ!と命令
mysql> USE sqlcheck;
Database changed

CREATE TABLE文

テーブルを作成するSQL文

Railsでは、
rails g model モデル名してから、rails db:migrateしていましたが、
この裏では、CREATE TABLEというSQL文が動いていたということですね。

MySQLで数値型や文字列型を定義する際は、以下のような型名を使用します。

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

以下なら、最大255文字の文字列が保存できるitemsテーブルを作成できる

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

# テーブルを見てみよう
mysql> SHOW TABLES;
+-------------------+
| Tables_in_sqltest |
+-------------------+
| goods             |
+-------------------+
1 row in set (0.00 sec)

テーブルの構造確認

FROM句

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

mysql> SHOW columns FROM items;

# 
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(255) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

カラム追加

ALTER文

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

# 例.カラムを1つだけ追加する場合
mysql> ALTER TABLE テーブル名 ADD カラム名 カラムの型;

# 例.カラムを変更する場合
mysql> ALTER TABLE テーブル名 CHANGE 古いカラム名 新しいカラム名 新しいカラムの型;

# 例.カラムを削除する場合
mysql> ALTER TABLE テーブル名 DROP カラム名;
mysql>  ALTER TABLE items ADD (price int, soldout int);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

# itemsテーブルを確認
mysql> SHOW columns FROM items;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id      | int(11)      | YES  |     | NULL    |       |
| name    | varchar(255) | YES  |     | NULL    |       |
| price   | int(11)      | YES  |     | NULL    |       |
| soldout | int(11)      | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

以上です。

終わりに

SQLという言葉をよく耳にし、理解できていると思っておりましたが、不安でしたので復習しました。
知ってそうでちゃんと知ってないシリーズですね。

以下参考サイトです。
SQLの種類(DDL、DML、DCL)

明日も頑張ります!!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?