SQLのSELECT文とは?技術力を一歩上げるオプションと使用頻度の高い関数

SQLのSELECT文とは?技術力を一歩上げるオプションと使用頻度の高い関数のアイキャッチイメージ

SQLのSELECT文とは?


SELECT文とは、SQL ServerやOracleといったデータベースから指定したデータを取り出すための構文です。またAccessなどにも使用出来る事から、システム関係のエンジニアだけでなく、昨今はリサーチ担当者や営業スタッフも使用する頻度は増えています。

特にSELECT文は、データ抽出における基本的な構文と言えることから、SQLに多少の違いはあれど一度慣れてしまえばどのデータベースでも使用していけるでしょう。

しかしながらどんな物事も基本や基礎が一番大事と言われているように、SQLもそれは同じです。

SELECT文の記載の仕方一つで、SQLのデータを抽出するためのスピードが大きく変わります。

今回は、そんなSELECT文の書き方についてご紹介します。

基本構文でデータを抽出してみよう!

それではまず基本的なSQL構文を見てみましょう。

SELECTに続いて、取得するデータの列名を記載します。この部分をSELECT句と言います。更に、FROMに続いて、取得するデータが入っているテーブル名を記載します。この部分をFROM句と言います。

具体的なSQLの例がこちらとなります。社員の情報が入っている社員テーブル(Table_Shain)から、社員名(ShainName)を抽出できます。

このように、SELECT句の後に列名、FROM句の後にテーブル名を記載するSQLの構文が基本となります。

複数データの抽出方法とは

先程の章では、一つのデータを抽出するための基本的なSQL構文をご紹介しました。続いては、複数のデータを取り出すための方法についてです。方法としては、大きく二つあるため分割してご紹介します。

複数の列名を指定しよう

SELECT句に列名を指定しましたが、ここに複数の列名を記載する事が出来ます。

記載方法はカンマ( , )で区切る事です。

具体的に記載した、以下の例を見てみましょう。

実際にSQLのSELECT文を使用しデータを抽出するケースでは、単一よりもこのように複数の列を指定し、欲しいデータを取り出す場合が多々あります。

今回は社員テーブル(Table_Shain)から、社員名(ShainName)と社員番号(ShainNo)と住所(ShainAddress)という複数の情報を取り出せます。

なお、複数の列名を指定するときは、次の列名の前にカンマをつけるようにしましょう。最後の列名の後にカンマは不要です。

全ての列名を指定しよう

複数の列名をカンマ区切りで指定する事が出来ると記載しましたが、抽出したいテーブルによっては膨大な列名が存在する事もあります。その場合、*(アスタリスク)を使用する事で、全ての列を抽出する事が可能となります。

このようにSELECT句のあとに、アスタリスクを記載すると全てという意味になります。

技術力を一歩上げるオプション

SELECT句にはSELECTと列名の間に、様々なオプションをつけることが可能です。これにより膨大なデータの中から選ばれたレコードのみを抽出する事が出来るようになります。まずは、以下の二つをご紹介します。

ALL/DISTINCTの指定

DISTINCTとは、テーブル内に同じ内容のデータが複数存在する場合、重複を除いた1行のデータを抽出してくれます。

例えば、りんご、というデータが3件ある場合は同じデータとみなし、りんご、という1件のデータが抽出されます。

ALLとは、DISTINCTの逆でテーブル内に同じ内容のデータが複数あっても、そのまま全てのデータを抽出します。例えば、りんご、というデータが3件ある場合でも、そのまま3件のデータが抽出されます。

SELECT文は指定がない場合、基本はALLオプションが自動でついています。

TOPの指定

続いて、TOP句についてです。

Microsoftが提供している SQL Serverというデータベースでは、SQLのSELECT文にTOP句という構文を使用する事が可能です。

TOP句とは、結果となるデータの先頭から、指定した数値の行数のみを抽出します。

このように記載することで社員テーブル(Table_Shain)から、社員番号順の先頭5行を抽出できます。

使用頻度の高い関数の紹介

SELECT句に指定する列名には、関数を使用する事が出来ます。関数は列名の型(文字列や数値、日付など)に応じて様々な効果を発揮し、抽出したデータをより見やすく、より使いやすいものにしてくれます。

文字列関数

文字列関数は、データの型が文字の場合に使用する事が出来る関数です。文字列の置換や切り取り、抜き出しを行う関数が存在します。

関数名 説明
LEFT(抽出した文字列, 指定文字数) 抽出した文字列の左から、指定した文字数分を抽出する
RIGHT(抽出した文字列, 指定文字数) 抽出した文字列の右から、指定した文字数分を抽出する
RTRIM(抽出した文字列) 抽出した文字列の右から、空白を覗いた文字列を抽出する
LTRIM(抽出した文字列) 抽出した文字列の左から、空白を覗いた文字列を抽出する
REPLACE(抽出した文字列, 置換前文字, 置換後文字) 抽出した文字列を指定の文字に置換する
SUBSTRING(抽出した文字列, 開始位置, 指定文字数) 抽出した文字列から、指定した文字数を抽出する
UPPER(抽出した文字列) 抽出した文字列から、英字を大文字に変換する
LOWER(抽出した文字列) 抽出した文字列から、英字を小文字に変換する
LEN(抽出した文字列) 抽出した文字列の文字数を取得する

数値関数

数値関数は、データの型が数値の場合に使用する事が出来る関数です。数値に対する操作を行うため、小数点を含む数値に対して、切り捨てや切り上げ、四捨五入を行う関数が存在します。

関数名 説明
CEILING(抽出した値) 抽出した値の小数点を切り上げる
FLOOR(抽出した値) 抽出した値の小数点を切り捨てる
ROUND(抽出した値, 桁数) 抽出した値を指定した桁数で四捨五入する

日付関数

日付関数は、データの型が日付の場合に使用する事が出来る関数です。年月日の年だけや月だけを取り出したり、日付と日付の足し算や引き算を行う関数が存在します。

関数名 説明
GETDATE() データベースが入っているマシンの日付を取得する
YEAR(抽出した日付) 抽出した日付の、年の部分のみ抽出する
MONTH(抽出した日付) 抽出した日付の、月の部分のみ抽出する
DAY(抽出した日付) 抽出した日付の、日の部分のみ抽出する
DATEPART(日付の種類, 抽出した日付) 日付の種類で指定した箇所の値を抽出する
DATEADD(日付の種類, 加算値, 抽出した日付) 日付の種類で指定した箇所へ加算した値を抽出する
DATEDIFF(日付の種類, 開始日付, 終了日付) 日付の種類分、開始日付と終了日付の差分を計算する

SELECT文まとめ

いかがでしたでしょうか。それでは最後に今回ご紹介した内容のポイントをおさらいしましょう。

・SELECT文によって抽出スピードは大きく変わる
・SELECT句とFROM句にて基本構文を作成する
・カンマやアスタリスクを使用することで、複数のデータ抽出を行う事が可能
・DISTINCTやTOPで、抽出するデータの数を操作する事が出来る
・SELECT句の列名には、文字列・数値・日付のなどの関数を使う事が可能

SELECT文についての基本的な使い方を上記にまとめましたが、これらはデータベースの基礎ながら重要となる部分の一つです。

SQLにはFROM句やWHERE句などまだまだ使用頻度の高い構文がたくさんありますが、SELECT文の構文を機に他の構文を学ぶきっかけや参考にしてください。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。