LoginSignup
1

More than 1 year has passed since last update.

【SQL初級】SELECT文とCREATE文について(基本まとめ)

Last updated at Posted at 2021-09-11

はじめに

インターネット検索やSNS、また物流や金融機関といった情報システムの多くのは「データベース」を使用しています。

この記事ではデータベースの表を定義したり、データを操作したりするときに最も多く使用されてる「SQL(Structured Query Language)」という言語について基本的な用法をまとめていきます。

SQLには、データの抽出や挿入、更新、削除などを行う「データ操作言語DML:Data Manipulation Language)」や、データベースや表などを定義する「データ定義言語DDL:Data Definition Language)」などがありますが、今回はデータ操作言語とデータ定義言語それぞれの基本にあたる「SELECT文」と「CREATE文」を取り扱います。

目次

SELECT文(データ操作言語)

関係データベースの表からSQLで必要なデータを抽出するには、「SELECT文」を使います。
データを抽出することは問合せクエリ)と呼ばれています。
「SELECT文」では、どの列を、どの表から、どういう条件で抽出するかを記述し、これにより、射影・選択・結合の関係演算を行うことができます。

SELECTの基本形

SELECT 列名1, 列名2    ・・・・・・・・・・抽出する列(射影すべき列)を指定する
    FROM 表名1, 表名2・・・・・・・・・・対象となる表を指定する
    WHERE 条件式      ・・・・・・・・・・・・抽出条件(選択すべき行の条件)を指定する

関係演算

関係演算は、関係データベースの表から目的のデータを取り出す演算のことです。
次のデータ操作を行うことができます。

射影(Projection) - 表の中から特定の列を抽出する
選択(Selection)   - 表の中から条件に合致した行を抽出する
結合(Join)       - 二つ以上の表を結合して、一つの表を生成する

(以下、関係演算のイメージ)
Qiita.png

射影

表の中から特定の列を抽出します。

SELECT 品名 FROM 商品表

商品表.png

選択

表の中から条件に合致した行を抽出します。
「WHERE条件式」には、次の比較演算子や論理演算子を指定します。

比較演算子
A = B      -    AはBと等しい
A <> B    -    AはBと等しくない
A > B      -    AはBより大きい
A < B      -    AはBより小さい(AはB未満)
A >= B    -    AはB以上
A <= B    -    AはB以下

論理演算子
A AND B      -    AかつB
A OR B        -    AまたはB
NOT A          -    Aではない


例1)商品表から番号が1,2,3の商品情報(全ての列)を抽出する

SELECT * FROM 商品表
    WHERE 番号='1' OR 番号='2' OR 番号='3'

例1.png

例2)商品表から,価格が1万円以上5万円以下の商品情報を抽出する

SELECT * FROM 商品表
    WHERE 価格 >= 10000 AND 価格 <= 50000

例2.png

結合

二つ以上の表を結合して、一つの表を生成します。FROMで抽出対象となる表を複数指定し、「WHERE条件式」で表間をどの列で結合するかを指定します。
ここで、指定した複数の表に同じ列名がある場合は、表名.列名で区別します。例えば、受注表.商品番号とは、受注表にある商品番号を、商品表.商品番号とは、商品表にある商品番号をそれぞれ意味します。

受注表と商品表を結合し、顧客名と商品名、単価を抽出する

SELECT 顧客名, 商品名, 単価
    FROM 受注表, 商品表
    WHERE 受注表.商品番号 = 商品表.商品番号

または

SELECT 顧客名, 商品名, 単価
    FROM 受注表
    JOIN 商品表
    ON 受注表.商品番号 = 商品表.商品番号

結合.png

CREATE文(データ定義言語)

表の定義

表を定義するには、次の「CREAT TABLE文」を使います。

CREATE TABLE 表名  (列名 データ名 [オプション],・・・)    -  表を作成する
FOREIGN KEY (列名) REFERENCE 表 (列名)                  -  外部キーを設定し参照制約をつける
PRIMARY KEY                  -  主キー(重複を禁止,NULLを許容しない)を設定する。
UNIQUE (列名)                -  重複を禁止する
CHECK (列名 条件)          -  値に条件をつける
NOT NULL                        -  NULLを許容しない


次に社員表という名称でテーブルを定義してみます。
主キーは重複が禁止であるため、名前(同姓同名があり得る)よりも
今回でいう社員コードのような個別のIDを使用することが多いです。
また、参照制約を用いて他の表データとの関連付けを行います。
今回は外部の部署表というテーブルと部署コードを関連させます。

CREATE TABLE 社員表 (
    社員コード CHAR(5) PRIMARY KEY,
    名前 VARCHAR(20),部署コード CHAR(3),給料 NUMERIC,
    FOREIGN KEY(部署コード) REFERENCE 部署表(部署コード) )

CHAR(5)は固定長5バイトの文字データ、
VARCHAR(20)は可変長の10バイトの文字データ、
NUMERICは数値データを定義しています。

これで以下の表が定義されます。
社員表.png

ビューの作成

ビューは、実際に存在する実表から必要な部分を取り出して、一時的に作成した表のことです。利用者に対して、実表を異なる表現で利用者に提示することができます。ビューを定義するには、「CREATE VIEW文」を使います。

例えば、先に定義した社員表から、社員コード名前給料の列を取り出した社員給料表を定義してみます。

CREATE VIEW 社員給料表 (社員コード,名前,給料)
    AS SELECT 社員コード,名前,給料 FROM 社員表

以下の表が定義されます。(利用者には部署コードは見えません
社員給料表.png


参考にした書籍
栢木先生の基本情報技術者教室
スッキリわかるSQL入門

その他SQL初級者に参考になると思われる記事
【これだけ覚えてたらOK!】SQL構文まとめ


以上、間違いや修正点ありましたらご指摘よろしくお願いします。

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