3.1 値の比較: <、>、=、<>
SQL クエリを作成するときに使用される最も一般的なキーワードの 1 つはWHERE
、. これを利用して、どのテーブル行をフィルタリング (選択) するかを MySQL に指示します。
キーワードの後には、WHERE
非常に複雑で扱いにくい条件を記述することができます。では、この条件にはどのような操作が含まれるのでしょうか?
オペレーター | 説明 | 例 |
---|---|---|
< | 以下 | 給与 < 40000 |
> | もっと | 給与 > 100000 |
<= | 以下または同等 | 年齢 <= 25 |
>= | それ以上か同等 | 年齢 >= 18 |
= | 等しい | 職業 = 「プログラマー」 |
<>、!= | 等しくない | 年(参加日) != 2015 |
Java 言語とは異なり、厳密な等価性を実現するために、ここでは 2 つの等号文字ではなく 1 つの等号文字が使用されます。
値が等しくないことを確認したい場合は、次の 2 つの方法で行うことができます。<>
最初!=
のアプローチは Pascal などの言語で使用され、2 番目のアプローチは C++ などの言語で一般的です。そしてジャワ。
:=
SQL での代入には、 Pascal と同様に使用されますが、代入自体が使用されることはほとんどありません。
2015 年に雇用されなかったすべての従業員を表示するクエリを作成してみましょう。
SELECT * FROM employee WHERE YEAR(join_date) != 2015
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
1 | イワノフ・イワン | プログラマー | 100,000 | 25 | 2012-06-30 |
2 | ペトロフ・ペトル | プログラマー | 80,000 | 23 | 2013-08-12 |
3 | イワノフ・セルゲイ | テスター | 40,000 | 30 | 2014-01-01 |
6 | バスカ | 猫 | 1,000 | 3 | 2018-01-01 |
3.2 論理演算 AND、OR、NOT
WHERE
論理演算AND
、OR
、 を使用することもできますNOT
。そして、それらは私がここで説明したとおりに正確に書かれています。なし&&
、||
または!
20 歳以上で給与が 50,000 未満の従業員を選択する SQL クエリを作成してみましょう。
SELECT * FROM employee WHERE age > 20 AND salary < 50000
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
3 | イワノフ・セルゲイ | テスター | 40,000 | 30 | 2014-01-01 |
5 | キリエンコ・アナスタシア | 事務長 | 40,000 | 25 | 2015-10-10 |
簡単すぎる。100,000 を超える給与を受け取り、取締役として働いていない従業員を選択するクエリを作成してみましょう。
SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
!=
ここでは、記号の代わりに演算子を特に使用しましたNOT
。
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
1 | イワノフ・イワン | プログラマー | 100,000 | 25 | 2012-06-30 |
3.3 BETWEEN: 値の範囲
SQL には、BETWEEN
変数が 2 つの値の間にあるかどうかをチェックできる特別な演算子もあります。この演算子はブール式の内部で使用されます。このような演算子の一般的な形式は次のとおりです。
variable BETWEEN bottom line AND top_bound
この場合、Java 言語とは異なり、下限と上限の両方が許容間隔に含まれます。
給与が 40,000 から 100,000 までのすべての従業員を選択する例を書いてみましょう。リクエストは次のようになります。
SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
1 | イワノフ・イワン | プログラマー | 100,000 | 25 | 2012-06-30 |
2 | ペトロフ・ペトル | プログラマー | 80,000 | 23 | 2013-08-12 |
3 | イワノフ・セルゲイ | テスター | 40,000 | 30 | 2014-01-01 |
5 | キリエンコ・アナスタシア | 事務長 | 40,000 | 25 | 2015-10-10 |
この演算子は、BETWEEN
数値型だけでなく、日付、さらには文字列型もサポートします。文字列を扱う場合は、辞書順が使用されます。 aaba は aabb の前に来ます。
3.4 IN: 値のリスト
さらに、SQL には、IN
変数が指定されたリストに含まれているかどうかを確認できる特別な演算子があります。この演算子はブール式の内部で使用されます。このような演算子の一般的な形式は次のとおりです。
variable IN (value 1 , value 2 , ... value N)
20 歳、25 歳、または 30 歳の従業員を選択するクエリを作成してみましょう。リクエストは次のようになります。
SELECT * FROM employee WHERE age IN (20, 25, 30)
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
1 | イワノフ・イワン | プログラマー | 100,000 | 25 | 2012-06-30 |
3 | イワノフ・セルゲイ | テスター | 40,000 | 30 | 2014-01-01 |
5 | キリエンコ・アナスタシア | 事務長 | 40,000 | 25 | 2015-10-10 |
次に、逆に、年齢がnot
20、25、または 30 の従業員を選択するクエリを作成してみましょう。クエリは次のようになります。
SELECT * FROM employee WHERE age NOT IN (20, 25, 30)
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
2 | ペトロフ・ペトル | プログラマー | 80,000 | 23 | 2013-08-12 |
4 | ラビノビッチ・モイシャ | 監督 | 200,000 | 35 | 2015-05-12 |
6 | バスカ | 猫 | 1,000 | 3 | 2018-01-01 |
すべてが期待どおりに機能しました。美しさ。
3.5 いいね: 文字列パターン
そして最後に、もう 1 つの重要で非常に頻繁に使用される演算子 - ですLIKE
。文字列を比較するときに使用されます。文字列パターンを設定するために使用できます。この演算子はブール式の内部で使用されます。このような演算子の一般的な形式は次のとおりです。
variable LIKE 'sample'
パターンでは特殊文字を使用できます:%
および_
。
- アンダースコアは任意の文字を意味し、常に 1 個です。
- パーセントは、任意の文字と任意の回数 (0 回を含む) を意味します。
姓が文字「I」で始まるすべての人々を選択するクエリを作成してみましょう。リクエストは次のようになります。
SELECT * FROM employee WHERE name LIKE 'I%'
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
1 | イワノフ・イワン | プログラマー | 100,000 | 25 | 2012-06-30 |
3 | イワノフ・セルゲイ | テスター | 40,000 | 30 | 2014-01-01 |
ここで、タスクを複雑にしましょう。名前には「o」が含まれ、名前は「a」で終わる必要があります。リクエストは次のようになります。
SELECT * FROM employee WHERE name LIKE '%o%a'
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
4 | ラビノビッチ・モイシャ | 監督 | 200,000 | 35 | 2015-05-12 |
さて、もう少し難しくしてみましょう。年齢が「3」で始まるすべての従業員をフィルタリングしてみましょう。リクエストは次のようになります。
SELECT * FROM employee WHERE age LIKE '3%'
そして、次のクエリ結果が得られます。
ID | 名前 | 職業 | 給料 | 年 | 参加日 |
---|---|---|---|---|---|
3 | イワノフ・セルゲイ | テスター | 40,000 | 30 | 2014-01-01 |
4 | ラビノビッチ・モイシャ | 監督 | 200,000 | 35 | 2015-05-12 |
6 | バスカ | 猫 | 1,000 | 3 | 2018-01-01 |
ちなみに、 age列は型なint
ので、LIKE
文字列だけでなく機能します。喜ばずにはいられないもの。