0371.Blog

SQLのお勉強 8.算術演算子・比較演算子

2020-09-16

こんにちは、0371です。

今回は、SQLのお勉強をしたいと思います。
基本情報技術者試験で出題される範囲を中心に進めます。

お勉強

※ PostgreSQLはインストール済みかつ、パスも通しているという前提で進めていきます。

分からないという方は、以下の記事から始めてください。

dockerを使って、再構築が容易なSQLの練習場を作成する
"https://0371.blog/docker-sql"

前回の記事はこちら

SQLのお勉強 7.where "https://0371.blog/sql-7"

算術演算子

算術演算子を使用することで、テーブルのデータに対して、四則演算を行うことができます。

使用できる演算子は以下の通りです。

+ // 足し算
- // 引き算
* // 掛け算
/ // 割り算

例は以下の通りです。

select shohin_mei as "商品名", hanbai_tanka as "税抜き価格", hanbai_tanka * 1.1 as "税込価格" from Shohin;

実行結果はこのようになります。

     商品名     | 税抜き価格 | 税込価格 
----------------+------------+----------
 Tシャツ        |       1000 |   1100.0
 穴あけパンチ   |        500 |    550.0
 カッターシャツ |       4000 |   4400.0
 包丁           |       3000 |   3300.0
 圧力鍋         |       6800 |   7480.0
 フォーク       |        500 |    550.0
 おろし金       |        880 |    968.0
 ボールペン     |        100 |    110.0
(8 rows)

また、数式のように()で括った式が、優先的に計算されます。

select shohin_mei as "商品名", hanbai_tanka + 1000 * 2 as "()なし", (hanbai_tanka + 1000) * 2 as "()あり" from Shohin;
     商品名     | ()なし | ()あり 
----------------+--------+--------
 Tシャツ        |   3000 |   4000
 穴あけパンチ   |   2500 |   3000
 カッターシャツ |   6000 |  10000
 包丁           |   5000 |   8000
 圧力鍋         |   8800 |  15600
 フォーク       |   2500 |   3000
 おろし金       |   2880 |   3760
 ボールペン     |   2100 |   2200
(8 rows)

基本的には、nullを含む演算の結果は全てnullになります。
ただし、nullを0とみなして計算する方法もあるようです。

select shohin_mei as "商品名", hanbai_tanka * null as "nullになる" from Shohin;

nullなので、データが空白になってます。

     商品名     | nullになる 
----------------+------------
 Tシャツ        |           
 穴あけパンチ   |           
 カッターシャツ |           
 包丁           |           
 圧力鍋         |           
 フォーク       |           
 おろし金       |           
 ボールペン     |           
(8 rows)

比較演算子

比較演算子とwhereを使用することで、テーブルのデータに対して、比較演算を行うことができます。

使用できる演算子は以下の通りです。

=  // ~と等しい
<> // ~と等しくない
>= // ~以上
>  // ~より大きい
<= // ~以下
<  // ~より小さい

実行例は以下の通りです。

select shohin_mei as "商品名", hanbai_tanka as "販売単価" from Shohin where hanbai_tanka <> 500;

販売単価が500ではない行を取得しています。

     商品名     | 販売単価 
----------------+----------
 Tシャツ        |     1000
 カッターシャツ |     4000
 包丁           |     3000
 圧力鍋         |     6800
 おろし金       |      880
 ボールペン     |      100
(6 rows)

登録日が2009年9月27日よりも前の商品を探します。

select shohin_mei as "商品名", shohin_bunrui as 商品分類, torokubi as "登録日" from Shohin where torokubi < '2009-09-27';
    商品名    |   商品分類   |   登録日   
--------------+--------------+------------
 Tシャツ      | 衣服         | 2009-09-20
 穴あけパンチ | 事務用品     | 2009-09-11
 包丁         | キッチン用品 | 2009-09-20
 圧力鍋       | キッチン用品 | 2009-01-15
 フォーク     | キッチン用品 | 2009-09-20
 おろし金     | キッチン用品 | 2008-04-28
(6 rows)

nullかどうかを判定するには、is nullis not nullを使用します。

is null     // nullの場合
is not null // nullではない場合

仕入単価がnullの商品名を取得します。

select shohin_mei as "商品名", shiire_tanka as "仕入単価" from Shohin where shiire_tanka is null;

nullなので、空白です。

   商品名   | 仕入単価 
------------+----------
 フォーク   |         
 ボールペン |         
(2 rows)

今日はここまで。

参考書籍

SQL 第2版 ゼロからはじめるデータベース操作
"https://amzn.to/2QYMBJD"

今日の一言

算術演算子・比較演算子が分かったのでSQLはマスターしたも同然!!!!

次回の記事はこちら

SQLのお勉強 9.論理演算子
"https://0371.blog/sql-9"