最終更新日(2023/11/10)
はじめに
業務でSQLを使うことになりました。大学で講義を受けて以来なので、学習を兼ねてアウトプットしていく記事です。
今回はSQLの概要として、基本的な文法、データ型、演算子についてまとめます。
SQLって何?
SQLとは、「データベースを操作するための言語」。
データベース(リレーショナルデータベース)を管理する、リレーショナル データベース管理システム(RDBMS)でDB操作のために使用するのがSQL言語です。
主要なRDBMS
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server/Access
SQLはISOで標準化されており、いくつかバージョンがあります。ただしRDBMS各製品には独自機能(いわゆる方言)が存在するので、使用するRDBMSに応じて若干違いはあります。
今回は学習は標準SQL準拠で行っていきます。
SQLの概要
SQL文のコマンド3種類
SQL文のコマンドは、データ定義言語 (DDL: data definition language)、データ定義言語 (DDL: data definition language)、データ制御言語 (DCL: data control language)の3種類に分類されます。
データ定義言語 (DDL: data definition language)
DBやテーブルの作成、削除などを行う
- CREATE : DBやテーブルを定義する(作成する)
- DROP : DBやテーブルを削除する
- ALTER : DBやテーブル定義を変更する
データ操作言語(DML: data manipulation language)
テーブルの検索、変更などを行う
- INSERT : テーブルに新規行/データを登録する
- UPDATE : テーブルを更新する
- DELETE : テーブルを削除する
- SELECT : テーブルデータを検索/取り出す ←おそらく一番よく使う
データ制御言語(DCL: data control language)
DBに対する変更を確定したり、消したりする。他にはDBのユーザ権限の変更なども行う。
- COMMIT : DBに対する変更を確定させる
- ROLLBACK : DBに対する変更を取り消す
- GRANT : 特定のユーザに操作の権限を付与する
- REVOKE : 特定のユーザから権限を剥奪する
※他にもありますが、あまり使わないので割愛。
SQL文の基本的な文法ルール
- 大文字、小文字は区別されない
ただし、登録されているデータに関してはちゃんと区別される - 文字列はシングルクォーテーションで囲う
- 単語は半角スペースか改行で区切る
- 1行コメントは "--" で、複数行コメントは "/*" と "*/" で囲う
データ型
数値データ
データ型名 | 説明 | 数値の範囲 | ||
---|---|---|---|---|
smallint | 2バイト整数 | -32768から32767まで | ||
integer | 4バイト整数 | -2147483648から2147483647まで | ||
bigint | 8バイト整数 | -9223372036854775808から 9223372036854775807まで |
||
real | 単精度浮動小数点数 | 6桁(-1E+37から1E+37まで) | ||
double precision | 倍精度浮動小数点数 | 15桁(-1E+308から1E+308まで) | ||
numeric(p, s) decimal(p, s) |
高精度数値 | 最大1000桁 | ||
文字列データ
データ型名 | 説明 | ||
---|---|---|---|
character(n) | 固定長文字列 | ||
character varying(n) | 可変長文字列 | ||
text | 制限なし可変長文字列 | ||
日付・時刻データ
データ型名 | 説明 |
---|---|
date | 日付 |
time(p) | 時刻 |
timestamp(p) | 日付と時刻 |
interval(p) | 間隔 |
演算子
算術演算子
演算子 | 説明 |
---|---|
+ | 和 |
- | 差 |
* | 積 |
/ | 商 |
比較演算子
演算子 | 説明 |
---|---|
< |
小なり |
> | 大なり |
<= | 以下 |
>= |
以上 |
= |
等しい |
<> または != |
等しくない |
BETWEEN min AND max |
minとmaxの間 |
※BETWEEN AND は演算子ではありませんが、同じ動作をするので一緒に書いておきます。
論理演算子
演算子 | 説明 |
---|---|
NOT | 否定 |
AND | かつ |
OR | または |
「NULLを含む計算は全てNULLを返す」
気を付けておくべきは、比較演算もNULLを返すという点です。SQLの比較演算の結果はTRUE・FALSE・NULLの3種類で、左辺でも右辺でもNULLを含む比較は全てNULLを返します。