sql >> データベース >  >> RDS >> Database

=)初心者のためのオペレーター

    SQLでは、以上の演算子(>= )2つの式を比較し、TRUEを返します 左のオペランドの値が右のオペランド以上の場合。それ以外の場合は、FALSEを返します 。

    実例を示します。

    SELECT * FROM city
    WHERE Population >= 9269265
    ORDER BY Population ASC;

    結果:

    +------+-----------------+---------------+--------------+--------------+
    | ID   | Name            | CountryCode   | District     | Population   |
    |------+-----------------+---------------+--------------+--------------|
    | 2822 | Karachi         | PAK           | Sindh        | 9269265      |
    | 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
    | 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
    | 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
    | 2331 | Seoul           | KOR           | Seoul        | 9981619      |
    | 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
    +------+-----------------+---------------+--------------+--------------+

    このクエリは、9269265以上の人口を持つすべての都市を返します。

    包括的

    以上の演算子には、指定された値が評価に含まれます。

    たとえば、前のクエリにはカラチが含まれていました。このデータベースによると、人口は正確に9269265です。

    その人口の都市を除外したい場合は、指定された値を増やす必要があります:

    SELECT * FROM city
    WHERE Population >= 9269266
    ORDER BY Population ASC;

    結果:

    +------+-----------------+---------------+--------------+--------------+
    | ID   | Name            | CountryCode   | District     | Population   |
    |------+-----------------+---------------+--------------+--------------|
    | 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
    | 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
    | 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
    | 2331 | Seoul           | KOR           | Seoul        | 9981619      |
    | 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
    +------+-----------------+---------------+--------------+--------------+

    または、単により大きい(>を使用することもできます )代わりに演算子:

    SELECT * FROM city
    WHERE Population > 9269265
    ORDER BY Population ASC;

    結果:

    +------+-----------------+---------------+--------------+--------------+
    | ID   | Name            | CountryCode   | District     | Population   |
    |------+-----------------+---------------+--------------+--------------|
    | 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
    | 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
    | 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
    | 2331 | Seoul           | KOR           | Seoul        | 9981619      |
    | 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
    +------+-----------------+---------------+--------------+--------------+

    日付

    これは、以上の演算子を使用して日付値を比較する方法を示す例です。

    SELECT PetName, DOB 
    FROM Pets
    WHERE DOB >= '2020-03-15';

    結果:

    +-----------+------------+
    | PetName   | DOB        |
    |-----------+------------|
    | Fluffy    | 2020-11-20 |
    | Wag       | 2020-03-15 |
    | Tweet     | 2020-11-28 |
    | Fluffy    | 2020-09-17 |
    +-----------+------------+

    文字列

    以上の演算子を使用して、文字列値を比較することもできます。文字列値と比較するときは、文字列を引用符で囲みます。

    SELECT * FROM city 
    WHERE Name >= 'Zukovski'
    ORDER BY Name;

    結果:

    +------+----------+---------------+------------+--------------+
    | ID   | Name     | CountryCode   | District   | Population   |
    |------+----------+---------------+------------+--------------|
    | 3756 | Zukovski | RUS           | Moskova    | 96500        |
    | 2669 | Zumpango | MEX           | México     | 99781        |
    | 2025 | Zunyi    | CHN           | Guizhou    | 261862       |
    | 3245 | Zürich   | CHE           | Zürich     | 336800       |
    | 3145 | Zwickau  | DEU           | Saksi      | 104146       |
    | 28   | Zwolle   | NLD           | Overijssel | 105819       |
    | 3446 | Zytomyr  | UKR           | Zytomyr    | 297000       |
    +------+----------+---------------+------------+--------------+

    複数の条件

    複数の条件がある場合は、複数の>=を使用できます 演算子。

    このように:

    SELECT * FROM city 
    WHERE Name >= 'Zukovski' AND Population >= 200000;

    結果:

    +------+---------+---------------+------------+--------------+
    | ID   | Name    | CountryCode   | District   | Population   |
    |------+---------+---------------+------------+--------------|
    | 2025 | Zunyi   | CHN           | Guizhou    | 261862       |
    | 3245 | Zürich  | CHE           | Zürich     | 336800       |
    | 3446 | Zytomyr | UKR           | Zytomyr    | 297000       |
    +------+---------+---------------+------------+--------------+

    優先順位

    結果をフィルタリングするときに、演算子を組み合わせて使用​​することもできます。

    SQLには、さまざまな演算子タイプに割り当てる優先順位があることに注意してください。たとえば、ANDなどの論理演算子の前に条件演算子を評価します。 およびOR 。また、ANDも評価します ORの前の演算子 演算子。

    括弧はすべての演算子よりも優先順位が高いため、括弧を使用して、各条件を評価する順序を指定できます。

    次の例を考えてみましょう:

    SELECT * FROM city 
    WHERE Name >= 'Zukovski' 
        AND Population >= 100000
        OR District = 'Overijssel';

    結果:

    +------+----------+---------------+------------+--------------+
    | ID   | Name     | CountryCode   | District   | Population   |
    |------+----------+---------------+------------+--------------|
    | 15   | Enschede | NLD           | Overijssel | 149544       |
    | 28   | Zwolle   | NLD           | Overijssel | 105819       |
    | 2025 | Zunyi    | CHN           | Guizhou    | 261862       |
    | 3145 | Zwickau  | DEU           | Saksi      | 104146       |
    | 3245 | Zürich   | CHE           | Zürich     | 336800       |
    | 3446 | Zytomyr  | UKR           | Zytomyr    | 297000       |
    +------+----------+---------------+------------+--------------+

    このクエリでは、かっこを指定しなかったため、AND 演算子はORの前に評価されました オペレーター。

    したがって、Name >= 'Zukovski' AND Population >= 100000のいずれかを満たす行が得られました。 またはDistrict = 'Overijssel' 。これを見るだけで、オーファーアイセル地区のすべての都市に加えて、最初の基準を満たすすべての都市が返還されることがわかります。

    これは、次のようになります。

    SELECT * FROM city 
    WHERE (Name >= 'Zukovski' 
        AND Population >= 100000)
        OR District = 'Overijssel';

    これにより、括弧なしの前のクエリと同じ結果が得られます。

    しかし、括弧をORに移動するとどうなるか見てみましょう。 状態。

    SELECT * FROM city 
    WHERE Name >= 'Zukovski' 
        AND (Population >= 100000
        OR District = 'Overijssel');

    結果:

    +------+---------+---------------+------------+--------------+
    | ID   | Name    | CountryCode   | District   | Population   |
    |------+---------+---------------+------------+--------------|
    | 28   | Zwolle  | NLD           | Overijssel | 105819       |
    | 2025 | Zunyi   | CHN           | Guizhou    | 261862       |
    | 3145 | Zwickau | DEU           | Saksi      | 104146       |
    | 3245 | Zürich  | CHE           | Zürich     | 336800       |
    | 3446 | Zytomyr | UKR           | Zytomyr    | 297000       |
    +------+---------+---------------+------------+--------------+

    今回は、Population >= 100000 OR District = 'Overijssel'の両方を満たす都市のみを取得しました。 および Name >= 'Overijssel'

    これにより、前のクエリの2つではなく、Overijsselから1つの都市のみが返されました。

    条件を否定する

    NOTを使用できます >=によって提供される条件を否定する演算子 オペレーター。次に例を示します。

    SELECT PetName, DOB 
    FROM Pets
    WHERE NOT DOB >= '2019-12-31';

    結果:

    +-----------+------------+
    | PetName   | DOB        |
    |-----------+------------|
    | Fetch     | 2019-08-16 |
    | Scratch   | 2018-10-01 |
    +-----------+------------+

    1. 列を変更してデフォルト値を変更するにはどうすればよいですか?

    2. SQLServerで特定の列を含むテーブルを見つける方法

    3. 給与に対する累積合計と合計合計の両方を計算するためのクエリ

    4. ブールパラメータをOracleプロシージャC#に渡す方法