演算子

演算子とは?

値を演算、比較をする記号を演算子と言います

算術演算子

SQL文では、計算式も書くことができます

SELECT 特戦隊,戦闘力
             戦闘力 * 2 AS 戦闘力×2倍
 FROM ギニュー特戦隊

戦闘力*2は、戦闘力を×2の計算式

ASで移行の名(列)を作成

特戦隊戦闘力戦闘力×2倍
ギニュー120000240000
ジース64000128000
バータ62500125000
リクーム65000130000
グルド1350027000
このような結果が出ます
記号意味
足す
引く
*掛ける
/割る
主な記号(四則演算)

上記の記号を使用して演算を行うい式を算術演算子と言います

もちろん()を用いた計算もできます

例(1+2)*3は1+2が先に計算され=9となりますね!(^-^)

もっと詳しく!MySQL 5.6 リファレンスマニュアル

比較演算子

比較演算子

=,<,>などの記号を用い、両辺の列や値を記号で比較すること

SELECT 特戦隊
FROM ギニュー特戦隊
WHERE 戦闘力=120000

この式では『ギニュー』が結果として表示されます

SELECT 特戦隊
FROM ギニュー特戦隊
WHERE 戦闘力 <> 120000,64000,62500

この式では、『リクーム』『グルド』が表示されます

<>は「〜ではない」「等しくない」といった意味の演算子になります

記号意味
=〜と等しい
<>〜と等しくない
>=〜以上
>〜より大きい
<=〜以下
<〜より大きい
比較演算子

比較演算子は文字、日付、数値などほとんどのデータの値、列を比較することができます

日付の場合だと「=<」を使用すると「〜前の日」というふうに使われます

逆に後の日付を検索したい場合には「〜以上」の「>=」を使用します

「=」の置く位置にも気をつけようね!

また、計算した結果を比較演算子で比較することができます

戦闘力を2で割った結果が、32000より大きいデータを持ってくるように書きます

SELECT 特戦隊 
FROM ギニュー特戦隊
WHERE 戦闘力 / 2 >= 32000

『ギニュー』『ジース』『リクーム』の3つのデータが表示されます

文字列に使用するときの注意点

例えば上記のDBのデータを用いて、SQL文を書いてみます

SELECT 文字列
FROM ギニュー特戦隊
WHERE 文字列 > '2';
2より大きいのはどれだと思う?
5、10、40!

結果を表示してみると...

『5』と『40』が表示されます

どういう事かと言うと、『WHERE 文字列 > '2'』の部分の『'2'』が重要なのです

文字列型の数値を比較する際は、数値のルールとは異なります

「辞書式順序」と考えます

辞書式で文字列を見てみると、順番は1,10,2,5,40になります

辞書は最初は『あ』から始まり、文字の最初が『あ』のつく文字を順番に書いていってます

SQLの文字列の比較演算子も同様に『1』から始まる文字の順番に並べていっているわけです!

NULLデータの注意点

SELECT 特戦隊 NULL 値
FROM ギニュー特戦隊
WHERE NULL値 = 100;

ギニュー、100と、結果が出ます

SELECT 特戦隊 NULL 値
FROM ギニュー特戦隊
WHERE NULL値 <> 100;

100でないデータを表示させようとすると

リクーム,300,グルド,40が表示されます

このように書いてもNULLは判断されません

NULLのデータを表示させたい場合は『IS NULL』を使います

SELECT 特戦隊 NULL 値
FROM ギニュー特戦隊
WHERE NULL値 IS NULL

結果→ジースとバータが表示されるようになります

反対にNULL以外のデータをみたい場合には『IS NOT NULL』と書きます!

論理演算子

NOT演算子

「〜ではない」と、否定の条件の時に使います

先ほど説明した『<>演算子』と同じです

NOT演算子は、単独で使わずに他の条件と一緒に使います

SELECT 戦闘力
FROM ギニュー特戦隊
WHERE 戦闘力 >= 65000;

戦闘力を65000以上のSELECT分を書くと、ギニューとリクームが選択されます

このSELECT文にNOT演算子を追加してみると...

SELECT 戦闘力
FROM ギニュー特戦隊
WHERE NOT 戦闘力 >= 65000;

結果は、ジース、バータ、グルドが選択されます

NOT演算子を追加すると、65000以外と認識されます

SELECT 戦闘力
FROM ギニュー特戦隊
WHERE 戦闘力 < 65000;

このSELECT文と同じ意味になります

なんだか少し混乱するねー

NOT演算子はいらないかと思われるでしょうが、もっと複雑な文になると必要になってきます

今は「こんなのがあるんだ」程度で覚えておくといいです(´ー`)

AND演算子、OR演算子

今まで紹介したSELECT文は1個しか条件をしてしていませんでしたが、複数書くこともあります

例えば「商品項目が1000円以上で、色が赤色、明日以降に出荷」などを1つのSQL文で書くことも当然あります

AND演算子

両方の検索条件が全て成り立つ時

「かつ」に相当

OR演算子

どちらか一つもしくは、両方が成り立つ時

「または」に相当

SELECT 特戦隊
FROM ギニュー特戦隊
WHERE type = 'バランス' AND 戦闘力 >= 65000

SQL文を説明すると、typeがバランスかつ、戦闘力が65000以上の特戦隊

結果は『ギニュー』『リクーム』になります

同じ内容でOR演算子を使うと

SELECT 特戦隊
FROM ギニュー特戦隊
WHERE type = 'バランス' OR 戦闘力 >= 65000

typeがバランスまたは、戦闘力が65000以上の特戦隊

結果は『ギニュー』『ジース』『リクーム』と、なります

優先順位

「素材がバター」かつ「typeがスピードまたはバランス」

これに当てはまるのは『バータ』だけです

SELECT 特戦隊
FROM ギニュー特戦隊
WHERE 素材 = 'バター' AND type = 'スピード' OR type = 'バランス';

結果は『ギニュー』『ジース』『バータ』『リクーム』になります

なぜかというと、OR演算子よりAND演算子の方が優先されるという特性があるからです

「素材がバター、かつ、typeがスピード」または、「typeがバランス」

少し違った解釈になってしまっていますね

優先したい条件がある時は括弧()を使います

SELECT 特戦隊
FROM ギニュー特戦隊
WHERE 素材 = 'バター' AND (type = 'スピード' OR type = 'バランス');

ANDはORより強い ORを優先するときは()括弧を使う

論理演算子と聞くと少し難しく感じるかもしれませんが、要は「真理値を操作」と、いう意味で捉えればいいと思います
真理値とは、真(true)、儀(false)のいずれかの値のことです
比較演算子は、演算の結果を真理値として返す。論理演算子は比較演算子などが返した真理値を操作する。
...書いてて自分で訳がわからなくなってきました(´∀`=)
実際に基本SQL文を書いて→エラー→修正→実装を繰り返すのが、1番の近道だと思います!

おすすめの記事