SQL│SELECTでデータを抽出する基本文と実例を紹介します

今回は、SQL文の基本「SELECT」について説明します。

データベースはデータを格納する基地のようなものですが、格納したデータは放置して眠らせておく訳ではありません。

そもそもデータを格納するのは、参照したり、活用したりすることが目的であり、データベースの存在価値でもあります。必然的に、データを抽出・参照するSELECT文は、基本かつ使用頻度が最も高いSQL文となります。

この記事では、SQLのSELECT文を使ってテーブルのデータを抽出する方法と併せて、MySQLやPostgreSQLの実画像を用いてSELECT文の基本的な使い方を説明します。

目次

SQL_データの抽出(SELECT文)

この章では、すでにRDBMSに登録されているテーブルのデータを、SELECT文で抽出する方法を説明します。

テーブルのデータは下記の通りです(ここでは、便宜上、csv形式にしています)。

当記事で使用するテーブル(テーブル名:Worker)

基本のSELECT文

テーブルからデータを抽出するときには、[SELECT]というSQL文を実行します。

SELECT文の基本文法には、データを抽出する対象の「列名」と「テーブル名」の指定が必要です。

基本文法

–1列のみを抽出する
SELECT 列名 FROM テーブル名;

–複数列を抽出する
SELECT 列名1,列名2,列名3 FROM テーブル名;

–すべての列を抽出する
SELECT * FROM テーブル名;

実際のSELECT文

下記のテーブルから、[name]列の情報を抽出してみます。

name列を抽出する(テーブル名:Worker)

SQL[SELECT文]

SELECT name FROM Worker;

実行結果

name
青柳 森勝
田代 春実
菅野 兼一
関根 和茂
三上 智治
福永 梨絵

複数列を抽出するSELECT文

次に、[id][name][gender]の3列の情報を抽出してみます。

id,name,gender列を抽出する(テーブル名:Worker)

SQL[SELECT文]

SELECT id,name,gender FROM Worker;

実行結果

id         name           gender
10040      青柳 森勝           1
10041      田代 春実           2
10042      菅野 兼一           1
10043      関根 和茂           1
10044      三上 智治           1
10045      福永 梨絵           2
列の並びについて

実行結果の列の並びは、SELECT文で指定した順番に基づきます(id,name,gender)。データベースに登録されているテーブルの列の並びは影響しません。

すべての列を抽出するSELECT文

最後に、テーブルに登録されているすべての列の情報を抽出してみます。すべての列を抽出する場合には、ひとつひとつの列名の記述は不要で、「*」(アスタリスク)で代用します。

この場合、実行結果の列の並びは、テーブルの列の並びに基づきます。

すべての列を抽出する(テーブル名:Worker)

SQL[SELECT文]

SELECT * FROM Worker;

実行結果

※情報量が多いため、画像で代用

以上が、テーブルからデータを抽出するSQL文「SELECT」の基本的な使い方です。

抽出結果の列に名前をつける(AS)

前節で説明した方法でテーブルからデータを抽出した場合、抽出結果の列名が分かり辛いという問題が発生します。

これは、SQLの命名規則上、テーブルや列名に日本語(全角文字)が使えないことに起因するのですが、SQLの「AS」というキーワードをSELECT文に組み合わせることによって、解決することができます。

ASキーワード

ASキーワードは、SELECT文によって抽出した結果に対してのみ、列名を変更することができます。

ASを使ってもデータベースの列名には影響しません。

ASの基本文法

SELECT 列名 AS “変更後の列名 FROM テーブル名;

通常、テーブル名や列名に日本語を使うことはできませんが、ASは抽出結果の列名を変更するキーワードのため、日本語を使うことも可能です。列名を日本語にする場合は、上記のように「”」(ダブルクォーテーション)を使います。

ASの実例文

下記のテーブルから、[name]列の列名を「名前」に変更して抽出してみます。

name列を「名前」として抽出する(テーブル名:Worker)

SQL[SELECT文]

SELECT name AS "名前" FROM Worker;

実行結果

名前
青柳 森勝
田代 春実
菅野 兼一
関根 和茂
三上 智治
福永 梨絵
複数列の抽出

ASは、複数列の抽出をする場合でも、それぞれの列名に対して使うことができます。

SELECT id     AS  "社員番号",
       name   AS  "名前",
       gender AS  "性別" 
FROM Worker;

実例_MySQLのSELECT

実際のRDBMS、MySQLでSELECT文を実行してテーブルからデータを抽出した実画像を紹介します。

すべての列を抽出

SELECT * FROM Worker;

指定の列を抽出

SELECT 列名 FROM Worker;

ASを使った例

SELECT 列名 AS 変更後の列名 FROM Worker;

実例_PostgreSQLのSELECT

実際のRDBMS、PostgreSQLでSELECT文を実行してテーブルからデータを抽出した実画像を紹介します。

すべての列を抽出

SELECT * FROM Worker;

指定の列を抽出

SELECT 列名 FROM Worker;

ASを使った例

SELECT 列名 AS 変更後の列名 FROM Worker;

あとがき~SELECTの応用について

今回は、SQL文の基本、データを抽出するための「SELECT」について記事にしました。

範囲は、SELECT文の基本的な文法と使い方に限定しましたが、実際にデータベースからデータを抽出するときには、条件指定をせずに抽出する機会は多くありません。

たとえば、Excelの表をイメージしてもご理解いただけると思うのですが、データ量が多い場合、オートフィルタ等を活用して条件に合致したデータのみを参照したりします。

SQLでも同様で、SELECT文に条件を加えてデータ抽出を行う場合がほとんどです。

それらについては、後日、別記事で説明します。

目次