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論理演算ANDOR、 を使用することもできます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

次に、逆に、年齢がnot20、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文字列だけでなく機能します。喜ばずにはいられないもの。