<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # MySQL 表達式 > [http://zetcode.com/databases/mysqltutorial/expressions/](http://zetcode.com/databases/mysqltutorial/expressions/) 在 MySQL 教程的這一部分中,我們將介紹表達式。 編程語言中的表達式是值,變量,運算符和函數的組合,這些值,變量,運算符和函數根據特定的優先級規則和特定編程語言的關聯規則進行解釋(求值),然后計算并生成(返回) 有狀態的環境)的另一個值。 據說該表達式可以計算出該值。 (維基百科) ## 字面值 字面值是某種常量。 字面值可以是字符串,數字,十六進制值,布爾值和`NULL`。 ```sql mysql> SELECT 3, 'Wolf', 34.5, 0x34, 0+b'10111'; +---+------+------+------+------------+ | 3 | Wolf | 34.5 | 0x34 | 0+b'10111' | +---+------+------+------+------------+ | 3 | Wolf | 34.5 | 4 | 23 | +---+------+------+------+------------+ ``` 在這里,我們返回五個字面值。 即整數,字符串浮點數,十六進制數和二進制值。 十六進制值的前面是`0x`,這是編程語言中的標準。 二進制值前面帶有`b`字符,并用單引號引起來。 為了顯示可打印的值,我們在二進制符號上添加零。 ```sql mysql> SELECT NULL, \N; +------+------+ | NULL | NULL | +------+------+ | NULL | NULL | +------+------+ ``` 這是`NULL`值。 這是沒有值的。 `NULL`的同義詞是`\N`。 ```sql mysql> SELECT TRUE, FALSE; +------+-------+ | TRUE | FALSE | +------+-------+ | 1 | 0 | +------+-------+ ``` MySQL 還可以識別布爾值`TRUE`和`FALSE`。 它們可以用大寫字母書寫。 ```sql mysql> SELECT '2011-01-11', '23:33:01', '98/11/31/ 14:22:20'; +------------+----------+--------------------+ | 2011-01-11 | 23:33:01 | 98/11/31/ 14:22:20 | +------------+----------+--------------------+ | 2011-01-11 | 23:33:01 | 98/11/31/ 14:22:20 | +------------+----------+--------------------+ ``` MySQL 數據庫支持各種日期和時間字面值。 ## 變量 變量是與值關聯的符號名稱。 該值可能會隨著時間而改變。 MySQL 中的變量以`@`字符開頭。 ```sql mysql> SET @name = 'Jane'; mysql> SELECT @name; +-------+ | @name | +-------+ | Jane | +-------+ ``` 我們設置一個變量,然后顯示其內容。 ## 運算符 運算符用于構建表達式。 SQL 運算符與數學運算符非常相似。 有兩種運算符。 二元和一元。 二元運算符使用兩個操作數,一元運算符使用一個。 一個運算符可以有一個或兩個操作數。 操作數是運算符的輸入(參數)之一。 我們有幾種類型的運算符: * 算術運算符 * 布爾運算符 * 關系運算符 * 按位運算符 * 其他運算符 ### 一元運算符 我們將展示一些一元運算符。 ```sql mysql> SELECT +3, 3; +---+---+ | 3 | 3 | +---+---+ | 3 | 3 | +---+---+ ``` `+`是無操作的。 它什么也沒做。 ```sql mysql> SELECT -(3-44); +---------+ | -(3-44) | +---------+ | 41 | +---------+ ``` -一元運算符將正值更改為負值,反之亦然。 ```sql mysql> SELECT NOT (3>9); +-----------+ | NOT (3>9) | +-----------+ | 1 | +-----------+ ``` `NOT`運算符取反一個值。 `3>9`比較的結果為`false`,而否定運算符將其取為`true`。 ### 算術運算符 常見的算術運算符是:乘法,除法,整數除法,加法,減法和模。 ```sql mysql> SELECT 3 + 4 - 5; +-----------+ | 3 + 4 - 5 | +-----------+ | 2 | +-----------+ ``` 加減法運算符。 ```sql mysql> SELECT 3*3/9; +--------+ | 3*3/9 | +--------+ | 1.0000 | +--------+ ``` 這些是我們從數學上知道的乘法和除法運算符。 ```sql mysql> SELECT 9/2, 9 DIV 2; +--------+---------+ | 9/2 | 9 DIV 2 | +--------+---------+ | 4.5000 | 4 | +--------+---------+ ``` 上面的 SQL 語句顯示了除法運算符和整數除法運算符之間的區別。 第一個返回浮點數,第二個返回整數。 ```sql mysql> SELECT 11 % 3; +--------+ | 11 % 3 | +--------+ | 2 | +--------+ ``` `%`運算符稱為模運算符。 它找到一個數除以另一個的余數。 `11 % 3`的 11 模 3 為 2,因為 3 乘以 3 變成 11,余數為 2。 ### 邏輯運算符 使用邏輯運算符,我們執行布爾運算。 MySQL 理解以下邏輯運算符:`AND`,`OR`和`NOT`和`XOR`。 邏輯運算符返回`TRUE`或`FALSE`。 在 MySQL 中,1 為`true`,0 為`false`。 如果兩個操作數均為`true`,則`AND`運算符的計算結果為`true`。 ```sql mysql> SELECT FALSE AND FALSE, FALSE AND TRUE, -> TRUE AND FALSE, TRUE AND TRUE; +-----------------+----------------+----------------+---------------+ | FALSE AND FALSE | FALSE AND TRUE | TRUE AND FALSE | TRUE AND TRUE | +-----------------+----------------+----------------+---------------+ | 0 | 0 | 0 | 1 | +-----------------+----------------+----------------+---------------+ ``` 前三個操作求值為`false`,最后一個求值為`true`。 ```sql mysql> SELECT 3=3 AND 4=4; +-------------+ | 3=3 AND 4=4 | +-------------+ | 1 | +-------------+ ``` 兩個操作數都為`true`,因此結果為`true`(1)。 如果至少一個操作數為`true`,則`OR`運算符的計算結果為`true`。 ```sql mysql> SELECT FALSE OR FALSE, FALSE OR TRUE, -> TRUE OR FALSE, TRUE OR TRUE; +----------------+---------------+---------------+--------------+ | FALSE OR FALSE | FALSE OR TRUE | TRUE OR FALSE | TRUE OR TRUE | +----------------+---------------+---------------+--------------+ | 0 | 1 | 1 | 1 | +----------------+---------------+---------------+--------------+ ``` 第一個操作求值為 false,其他操作求值為 true。 如果恰好其中一個操作數為 true,則`XOR`運算符的計算結果為 true。 ```sql mysql> SELECT FALSE XOR FALSE, FALSE XOR TRUE, -> TRUE XOR FALSE, TRUE XOR TRUE; +-----------------+----------------+----------------+---------------+ | FALSE XOR FALSE | FALSE XOR TRUE | TRUE XOR FALSE | TRUE XOR TRUE | +-----------------+----------------+----------------+---------------+ | 0 | 1 | 1 | 0 | +-----------------+----------------+----------------+---------------+ ``` 其中兩個操作為`true`。 `NOT`運算符是反運算符。 它使真假成為假。 ```sql mysql> SELECT NOT TRUE, NOT FALSE; +----------+-----------+ | NOT TRUE | NOT FALSE | +----------+-----------+ | 0 | 1 | +----------+-----------+ mysql> SELECT NOT (3=3); +-----------+ | NOT (3=3) | +-----------+ | 0 | +-----------+ ``` ### 關系運算符 關系運算符用于比較值。 這些運算符總是產生布爾值。 ```sql mysql> SELECT 3*3=9, 9=9; +-------+-----+ | 3*3=9 | 9=9 | +-------+-----+ | 1 | 1 | +-------+-----+ ``` =是相等運算符。 ```sql mysql> SELECT 3 < 4, 3 <> 5, 4 <= 4, 5 != 5; +-------+--------+--------+--------+ | 3 < 4 | 3 <> 5 | 4 <= 4 | 5 != 5 | +-------+--------+--------+--------+ | 1 | 1 | 1 | 0 | +-------+--------+--------+--------+ ``` 關系運算符的用法從數學上是已知的。 ### 按位運算符 小數對人類是自然的。 二進制數是計算機固有的。 二進制,八進制,十進制或十六進制符號僅是相同數字的符號。 按位運算符使用二進制數的位。 我們有二進制邏輯運算符和移位運算符。 按位,運算符在兩個數字之間進行逐位比較。 僅當操作數中的兩個對應位均為 1 時,位位置的結果才為 1。 ```sql 00110 & 00011 = 00010 ``` 第一個數字是二進制符號 6,第二個數字是 3,結果是 2。 ```sql mysql> SELECT 6 & 3, 3 & 6; +-------+-------+ | 6 & 3 | 3 & 6 | +-------+-------+ | 2 | 2 | +-------+-------+ ``` 按位或運算符在兩個數字之間進行逐位比較。 如果操作數中的任何對應位為 1,則位位置的結果為 1。 ```sql 00110 | 00011 = 00111 ``` 結果為`00110`或十進制 7。 ```sql mysql> SELECT 6 | 3, 3 | 6; +-------+-------+ | 6 | 3 | 3 | 6 | +-------+-------+ | 7 | 7 | +-------+-------+ ``` 按位移位運算符向右或向左移位。 ```sql number << n : multiply number 2 to the nth power number >> n : divide number by 2 to the nth power ``` 這些運算符也稱為算術移位。 ```sql 00110 >> 00001 = 00011 ``` 我們將數字 6 的每個位向右移動。 等于將 6 除以 2。結果為`00011`或十進制 3。 ```sql mysql> SELECT 6 >> 1; +--------+ | 6 >> 1 | +--------+ | 3 | +--------+ ``` ```sql 00110 << 00001 = 01100 ``` 我們將數字 6 的每個位向左移動。 等于將數字 6 乘以 2。結果為`01100`或十進制 12。 ```sql mysql> SELECT 6 << 1; +--------+ | 6 << 1 | +--------+ | 12 | +--------+ ``` ### 其他運算符 還剩下一些其他運算符。 這些包括`IS`,`IN`,`LIKE`,`REGEXP`,`BETWEEN`。 `IS`運算符測試操作數是否為布爾值。 ```sql mysql> SET @running = FALSE; mysql> SELECT @running IS FALSE; +-------------------+ | @running IS FALSE | +-------------------+ | 1 | +-------------------+ ``` 我們將變量設置為布爾值`false`。 我們使用`IS`運算符檢查變量是否為`FALSE`。 在兩種情況下,我們可以使用`IN`運算符。 ```sql mysql> SELECT 'Tom' IN ('Tom', 'Frank', 'Jane'); +-----------------------------------+ | 'Tom' IN ('Tom', 'Frank', 'Jane') | +-----------------------------------+ | 1 | +-----------------------------------+ ``` 在這里,我們檢查`IN`運算符之后的字符串值'Tom'是否在名稱列表中。 返回值是布爾值。 對于以下示例,我們概括了`Cars`表中的內容。 ```sql mysql> SELECT * FROM Cars; +----+------------+--------+ | Id | Name | Cost | +----+------------+--------+ | 1 | Audi | 52642 | | 2 | Mercedes | 57127 | | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | | 7 | Hummer | 41400 | | 8 | Volkswagen | 21600 | +----+------------+--------+ ``` 在第二種情況下,`IN`運算符允許您在`WHERE`子句中指定多個值。 ```sql mysql> SELECT * FROM Cars Where Name IN ('Audi', 'Hummer'); +----+--------+-------+ | Id | Name | Cost | +----+--------+-------+ | 1 | Audi | 52642 | | 7 | Hummer | 41400 | +----+--------+-------+ ``` 從`Cars`表中,我們選擇在`IN`運算符之后列出的汽車。 `WHERE`子句中使用`LIKE`運算符在列中搜索指定的模式。 ```sql mysql> SELECT * FROM Cars WHERE Name LIKE 'Vol%'; +----+------------+-------+ | Id | Name | Cost | +----+------------+-------+ | 4 | Volvo | 29000 | | 8 | Volkswagen | 21600 | +----+------------+-------+ ``` 在這里,我們選擇名稱以`"Vol"`開頭的汽車。 ```sql mysql> SELECT * FROM Cars WHERE Name LIKE '____'; +----+------+-------+ | Id | Name | Cost | +----+------+-------+ | 1 | Audi | 52642 | +----+------+-------+ ``` 在這里,我們選擇正好有四個字符的汽車名稱。 有四個下劃線。 `LIKE`運算符僅提供簡單的模式匹配。 `REGEXP`運算符功能更強大。 它提供與正則表達式匹配的模式。 `RLIKE`是`REGEXP`的同義詞。 ```sql mysql> SELECT * FROM Cars WHERE Name REGEXP 'e.$'; +----+------------+--------+ | Id | Name | Cost | +----+------------+--------+ | 2 | Mercedes | 57127 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | | 7 | Hummer | 41400 | | 8 | Volkswagen | 21600 | +----+------------+--------+ ``` 在這里,我們有汽車,它們的最后一個字符是'e'。 ```sql mysql> SELECT * FROM Cars WHERE Name REGEXP '^.e.*e.$'; +----+----------+--------+ | Id | Name | Cost | +----+----------+--------+ | 2 | Mercedes | 57127 | | 5 | Bentley | 350000 | +----+----------+--------+ ``` 我們選擇的汽車中,倒數第二個也是一個字符是`"e"`。 `BETWEEN`運算符等效于一對比較。 `a BETWEEN b AND c`等效于`a>=b AND a<=c`。 ```sql mysql> SELECT * FROM Cars WHERE Cost BETWEEN 20000 AND 55000; +----+------------+-------+ | Id | Name | Cost | +----+------------+-------+ | 1 | Audi | 52642 | | 4 | Volvo | 29000 | | 6 | Citroen | 21000 | | 7 | Hummer | 41400 | | 8 | Volkswagen | 21600 | +----+------------+-------+ ``` 在此 SQL 語句中,我們選擇了價格在 20000 至 55000 單位之間的汽車。 ## 優先順序 運算符優先級告訴我們首先求值哪個運算符。 優先級對于避免表達式中的歧義是必要的。 以下表達式 28 或 40 的結果是什么? ```sql 3 + 5 * 5 ``` 像數學中一樣,乘法運算符的優先級高于加法運算符。 結果是 28。 ```sql (3 + 5) * 5 ``` 要更改求值順序,可以使用方括號。 方括號內的表達式始終首先被求值。 ```sql mysql> SELECT 3+5*5, (3+5)*5; +-------+---------+ | 3+5*5 | (3+5)*5 | +-------+---------+ | 28 | 40 | +-------+---------+ ``` 第一個表達式的計算結果為 28,因為乘法運算符的優先級高于加法運算符。 在第二個示例中,我們使用方括號更改了優先順序。 因此第二個表達式的值為 40。 ## 關聯性 有時,優先級不能令人滿意地確定表達式的結果。 還有另一個規則稱為關聯性。 運算符的關聯性確定優先級相同的運算符的求值順序。 ```sql 9 / 3 * 3 ``` 此表達式的結果是 9 還是 1? 乘法,刪除和模運算符從左到右關聯。 因此,該表達式的計算方式為:`(9 / 3) * 3`,結果為 9。 ```sql mysql> SELECT 9 / 3 * 3; +-----------+ | 9 / 3 * 3 | +-----------+ | 9.0000 | +-----------+ ``` 關聯規則是從左到右。 ```sql mysql> SELECT 0 AND 0 OR 1; +--------------+ | 0 AND 0 OR 1 | +--------------+ | 1 | ``` 關聯規則再次從左到右。 如果從右到左,則結果為 0。 算術,布爾,關系和按位運算符都是從左到右關聯的。 在 MySQL 教程的這一部分中,我們介紹了 MySQL 表達式。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看