1
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?

SQLメモ

Posted at

はじめに

SQL学習中に使用したコマンドなどを、例とともにメモします。

SQLとは

データベースからデータを取得したり変更したりするための言語
テーブルやデータベースを作成、更新、削除、取得などができる

SQLコマンドまとめ

データベース作成等

データベース作成

CREATE DATABASE データベース名;
例.
CREATE DATABASE shop;

カラム作成

CREATE TABLE テーブル名 (カラム名1 カラム型,...,カラム名n カラム型);
例.
CREATE TABLE crop (id INT,name VARCHAR(100),plant_family VARCHAR(100),stock INT);

テーブルを見る

例.
SHOW TABLES;

+----------------+
| Tables_in_shop |
+----------------+
| crop           |
+----------------+

指定したテーブルの構成を見る

DESC テーブル名;
例.
DESC crop;

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id           | int          | YES  |     | NULL    |       |
| name         | varchar(100) | YES  |     | NULL    |       |
| plant_family | varchar(100) | YES  |     | NULL    |       |
| stock        | int          | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

テーブルにデータを挿入する

INSERT INTO テーブル名 (カラム名1, カラム名2, ...) 
  VALUES (値1, 値2, ...); 
例.
INSERT INTO crop (id, name, plant_family, stock) 
  VALUES (1, 'トマト', 'ナス科', 150); 

データベース取得

テーブル全てを取得

SELECT * 
  FROM テーブル名; 
例.
SELECT * 
  FROM crop; 

+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
|    2 | ナス             | ナス科        | 80      |
|    3 | キュウリ         | ウリ科        | 200      |
|    4 | キャベツ         | アブラナ科     |          |
+------+-----------------+--------------+----------+

カラムを絞り込んで取得

SELECT カラム名1, カラム名2, ..., カラム名n 
  FROM テーブル名; 
例.
SELECT name, stock 
  FROM crop; 

+-----------------+----------+
| name            | stock    |
+-----------------+----------+
| トマト           | 150      |
| ナス             | 80       |
| キュウリ         | 200        |
| キャベツ         |           |
+-----------------+----------+

カラム名を変更して出力することも可能

例.
SELECT name AS '名前', stock AS '在庫', 
  FROM crop; 

+-----------------+----------+
| 名前             | 在庫     |
+-----------------+----------+
| トマト           | 150      |
| ナス             | 80       |
| キュウリ         | 200       |
| キャベツ         |           |
+-----------------+----------+

重複削除(DISTINCT)

科名の重複なし科名カラムを取得

例.
SELECT DISTINCT(plant_family)
  FROM crop;
  
+--------------+
| plant_family |
+--------------+
| ナス科        |
| ウリ科        |
| アブラナ科     |
+--------------+

条件指定(WHERE)

在庫が150以上の条件指定を行います

例.
SELECT name, stock
  FROM crop
  WHERE stock > 150;
  
+--------------+--------+
| name         | stock  |
+--------------+--------+
| トマト        |    150 |
| キュウリ       |    200 |
+--------------+--------+

両方を満たす(AND)

在庫が150以上のナス科の条件指定を行います

例.
SELECT *
  FROM crop
  WHERE stock > 150 AND plant_family = 'ナス科';
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
+------+-----------------+--------------+---------+

どちらかを満たす(OR)

在庫が150以上またはナス科の条件指定を行います

例.
SELECT *
  FROM crop
  WHERE stock > 150 OR plant_family = 'ナス科';
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
|    2 | ナス             | ナス科        | 80      |
|    3 | キュウリ         | ウリ科        | 200      |
+------+-----------------+--------------+----------+

~の間(BETWEN)

在庫が50~150の間の条件指定を行います

例.
SELECT *
  FROM crop
  WHERE stock BETWEEN 50 AND 150;
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
|    2 | ナス             | ナス科        | 80      |
+------+-----------------+--------------+----------+

まとめて指定(IN)

ウリ科とアブラナ科の作物を指定

例.
SELECT *
  FROM crop
  WHERE plant_family IN ('ウリ科', 'アブラナ科');
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    3 | キュウリ         | ウリ科        | 200      |
|    4 | キャベツ         | アブラナ科     |          |
+------+-----------------+--------------+----------+

まとめて否定(NOT IN)

ウリ科とアブラナ科以外の作物を指定

例.
SELECT *
  FROM crop
  WHERE plant_family NOT IN ('ウリ科', 'アブラナ科');
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
|    2 | ナス             | ナス科        | 80      |
+------+-----------------+--------------+----------+

あいまい検索(LIKE)

名前がトから始まる作物を指定

例.
SELECT *
  FROM crop
  WHERE name LIKE 'ト%';
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
+------+-----------------+--------------+----------+

空(値が不明)のレコードを取得(IS NULL)

stockが空の作物を指定

例.
SELECT *
  FROM crop
  WHERE stock IS NULL;
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    4 | キャベツ         | アブラナ科     |          |
+------+-----------------+--------------+----------+

空(値が不明)じゃないレコードを取得(IS NOT NULL)

stockが空じゃない作物を指定

例.
SELECT *
  FROM crop
  WHERE stock IS NOT NULL;
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
|    2 | ナス             | ナス科        | 80      |
|    3 | キュウリ         | ウリ科        | 200      |
+------+-----------------+--------------+----------+

行数を指定して取得(LIMIT)

行数上限を2で指定して取得

例.
SELECT *
  FROM crop
  LIMIT 2;
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    1 | トマト           | ナス科        | 150     |
|    2 | ナス             | ナス科        | 80      |
+------+-----------------+--------------+----------+

並び替え(ORDER BY)

在庫で昇順に並び替えして取得

例.
SELECT *
  FROM crop
  ORDER BY stock;
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    4 | キャベツ         | アブラナ科     |          |
|    2 | ナス             | ナス科        | 80      |
|    1 | トマト           | ナス科        | 150     |
|    3 | キュウリ         | ウリ科        | 200      |
+------+-----------------+--------------+----------+

在庫で降順に並び替えして取得

例.
SELECT *
  FROM crop
  ORDER BY stock DESC;
  
+------+-----------------+--------------+---------+
| id   | name            | plant_family | stock   |
+------+-----------------+--------------+---------+
|    3 | キュウリ         | ウリ科        | 200      |
|    1 | トマト           | ナス科        | 150     |
|    2 | ナス             | ナス科        | 80      |
|    4 | キャベツ         | アブラナ科     |          |
+------+-----------------+--------------+----------+
1
0
0

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
1
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?