演算子
値を演算、比較をする記号を演算子と言います
算術演算子
SQL文では、計算式も書くことができます
SELECT 特戦隊,戦闘力 戦闘力 * 2 AS 戦闘力×2倍 FROM ギニュー特戦隊
戦闘力*2は、戦闘力を×2の計算式
ASで移行の名(列)を作成
特戦隊 | 戦闘力 | 戦闘力×2倍 |
---|---|---|
ギニュー | 120000 | 240000 |
ジース | 64000 | 128000 |
バータ | 62500 | 125000 |
リクーム | 65000 | 130000 |
グルド | 13500 | 27000 |
記号 | 意味 |
---|---|
+ | 足す |
ー | 引く |
* | 掛ける |
/ | 割る |
上記の記号を使用して演算を行うい式を算術演算子と言います
もちろん()を用いた計算もできます
例(1+2)*3は1+2が先に計算され=9となりますね!(^-^)
比較演算子
=,<,>などの記号を用い、両辺の列や値を記号で比較すること
SELECT 特戦隊 FROM ギニュー特戦隊 WHERE 戦闘力=120000
この式では『ギニュー』が結果として表示されます
SELECT 特戦隊 FROM ギニュー特戦隊 WHERE 戦闘力 <> 120000,64000,62500
この式では、『リクーム』と『グルド』が表示されます
<>は「〜ではない」「等しくない」といった意味の演算子になります
記号 | 意味 |
---|---|
= | 〜と等しい |
<> | 〜と等しくない |
>= | 〜以上 |
> | 〜より大きい |
<= | 〜以下 |
< | 〜より大きい |
比較演算子は文字、日付、数値などほとんどのデータの値、列を比較することができます
日付の場合だと「=<」を使用すると「〜前の日」というふうに使われます
逆に後の日付を検索したい場合には「〜以上」の「>=」を使用します
また、計算した結果を比較演算子で比較することができます
戦闘力を2で割った結果が、32000より大きいデータを持ってくるように書きます
SELECT 特戦隊 FROM ギニュー特戦隊 WHERE 戦闘力 / 2 >= 32000
『ギニュー』『ジース』『リクーム』の3つのデータが表示されます
文字列に使用するときの注意点
例えば上記のDBのデータを用いて、SQL文を書いてみます
SELECT 文字列 FROM ギニュー特戦隊 WHERE 文字列 > '2';
結果を表示してみると...
『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文で書くことも当然あります
両方の検索条件が全て成り立つ時
「かつ」に相当
どちらか一つもしくは、両方が成り立つ時
「または」に相当
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番の近道だと思います!