<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # MySQL 中的`SELECT`語句 > 原文: [http://zetcode.com/databases/mysqltutorial/select/](http://zetcode.com/databases/mysqltutorial/select/) MySQL 教程的這一部分將詳細介紹 MySQL 理解的`SELECT`語句。 ## 檢索數據 以下 SQL 語句是最常見的語句之一。 它也是最昂貴的之一。 ```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 | +----+------------+--------+ 8 rows in set (0.00 sec) ``` 在這里,我們從`Cars`表中檢索所有數據。 ### 選擇特定的列 我們可以使用`SELECT`語句來檢索特定的列。 列名緊隨`SELECT`字。 ```sql mysql> SELECT Name, Cost FROM Cars; +------------+--------+ | Name | Cost | +------------+--------+ | Audi | 52642 | | Mercedes | 57127 | | Skoda | 9000 | | Volvo | 29000 | | Bentley | 350000 | | Citroen | 21000 | | Hummer | 41400 | | Volkswagen | 21600 | +------------+--------+ 8 rows in set (0.00 sec) ``` 我們檢索`Name`和`Cost`列。 列名用逗號分隔。 ### 重命名列名 我們可以重命名返回結果集的列名。 為此,我們使用`AS`子句。 ```sql mysql> SELECT Name, Cost AS Price FROM Cars; +------------+--------+ | Name | Price | +------------+--------+ | Audi | 52642 | | Mercedes | 57127 | | Skoda | 9000 | | Volvo | 29000 | | Bentley | 350000 | | Citroen | 21000 | | Hummer | 41400 | | Volkswagen | 21600 | +------------+--------+ 8 rows in set (0.00 sec) ``` 假設我們要命名列價格而不是成本。 通過上面的 SQL 語句,我們已經完成了這一步。 ## 限制數據輸出 如上所述,在處理大量數據時,檢索所有數據非常昂貴。 我們可以使用`LIMIT`子句來限制該語句返回的數據量。 ```sql mysql> SELECT * FROM Cars LIMIT 4; +----+----------+-------+ | Id | Name | Cost | +----+----------+-------+ | 1 | Audi | 52642 | | 2 | Mercedes | 57127 | | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | +----+----------+-------+ 4 rows in set (0.00 sec) ``` `LIMIT`子句將返回的行數限制為 4。 `LIMIT`有兩個參數,返回從偏移值開始的行。 ```sql mysql> SELECT * FROM Cars LIMIT 2, 4; +----+---------+--------+ | Id | Name | Cost | +----+---------+--------+ | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | +----+---------+--------+ 4 rows in set (0.00 sec) ``` 第一個值是偏移量,第二個值是要返回的行數。 在這里,我們從最多四行中選擇所有數據,然后從第三行開始。 ```sql mysql> SELECT * FROM Cars LIMIT 4 OFFSET 2; +----+---------+--------+ | Id | Name | Cost | +----+---------+--------+ | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | +----+---------+--------+ 4 rows in set (0.00 sec) ``` 為了與 PostgreSQL 數據庫兼容,MySQL 還具有`OFFSET`關鍵字。 上面的代碼等效于前面的示例。 ## 排序數據 我們使用`ORDER BY`子句對返回的數據集進行排序。 `ORDER BY`子句后面是進行排序的列。 `ASC`關鍵字以升序對數據進行排序,`DESC`則以降序對數據進行排序。 ```sql mysql> SELECT Name, Cost FROM Cars ORDER BY Cost DESC; +------------+--------+ | Name | Cost | +------------+--------+ | Bentley | 350000 | | Mercedes | 57127 | | Audi | 52642 | | Hummer | 41400 | | Volvo | 29000 | | Volkswagen | 21600 | | Citroen | 21000 | | Skoda | 9000 | +------------+--------+ 8 rows in set (0.00 sec) ``` 在上面的 SQL 語句中,我們從`Cars`表中選擇名稱,成本列,然后按汽車成本降序對其進行排序。 因此,最昂貴的汽車排在第一位。 ## 使用`WHERE`子句選擇特定的行 在以下示例中,我們將使用`Orders`表。 ```sql mysql> SELECT * FROM Orders; +----+------------+------------+ | Id | OrderPrice | Customer | +----+------------+------------+ | 1 | 1200 | Williamson | | 2 | 200 | Robertson | | 3 | 40 | Robertson | | 4 | 1640 | Smith | | 5 | 100 | Robertson | | 6 | 50 | Williamson | | 7 | 150 | Smith | | 8 | 250 | Smith | | 9 | 840 | Brown | | 10 | 440 | Black | | 11 | 20 | Brown | +----+------------+------------+ 11 rows in set (0.00 sec) ``` 在這里,我們看到`Orders`表中的所有數據。 接下來,我們要選擇一個特定的行。 ```sql mysql> SELECT * FROM Orders WHERE Id=6; +----+------------+------------+ | Id | OrderPrice | Customer | +----+------------+------------+ | 6 | 50 | Williamson | +----+------------+------------+ 1 row in set (0.00 sec) ``` 上面的 SQL 語句選擇具有 ID 6 的行。 ```sql mysql> SELECT * FROM Orders WHERE Customer="Smith"; +----+------------+----------+ | Id | OrderPrice | Customer | +----+------------+----------+ | 4 | 1640 | Smith | | 7 | 150 | Smith | | 8 | 250 | Smith | +----+------------+----------+ 3 rows in set (0.00 sec) ``` 上面的 SQL 語句選擇`Smith`客戶創建的所有訂單。 我們可以使用`LIKE`關鍵字在數據中查找特定的模式。 ```sql mysql> SELECT * FROM Orders WHERE Customer LIKE "B%"; +----+------------+----------+ | Id | OrderPrice | Customer | +----+------------+----------+ | 9 | 840 | Brown | | 10 | 440 | Black | | 11 | 20 | Brown | +----+------------+----------+ 3 rows in set (0.00 sec) ``` 該 SQL 語句從名稱以 B 字符開頭的客戶中選擇所有訂單。 ## 刪除重復項 `DISTINCT`關鍵字僅用于從結果集中選擇唯一項。 ```sql mysql> SELECT Customer FROM Orders WHERE Customer LIKE 'B%'; +----------+ | Customer | +----------+ | Brown | | Black | | Brown | +----------+ 3 rows in set (0.00 sec) ``` 這次,我們選擇了名稱以 B 字符開頭的客戶。 我們可以看到布朗兩次被提及。 要刪除重復項,我們使用`DISTINCT`關鍵字。 ```sql mysql> SELECT DISTINCT Customer FROM Orders WHERE Customer LIKE 'B%'; +----------+ | Customer | +----------+ | Brown | | Black | +----------+ 2 rows in set (0.00 sec) ``` 這是正確的解決方案。 假設我們想算出布朗客戶下了多少訂單。 我們將利用`COUNT()`函數。 ```sql mysql> SELECT COUNT(Customer) AS "Orders by Brown" FROM Orders WHERE Customer="Brown"; +-----------------+ | Orders by Brown | +-----------------+ | 2 | +-----------------+ 1 row in set (0.00 sec) ``` 客戶下了兩個訂單。 ## 分組數據 `GROUP BY`子句用于將具有相同值的數據庫記錄組合到單個記錄中。 它通常與聚合函數一起使用。 說我們想找出每個客戶的訂單總和。 ```sql mysql> SELECT SUM(OrderPrice) AS Total, Customer FROM Orders GROUP BY Customer; +-------+------------+ | Total | Customer | +-------+------------+ | 440 | Black | | 860 | Brown | | 340 | Robertson | | 2040 | Smith | | 1250 | Williamson | +-------+------------+ 5 rows in set (0.00 sec) ``` `SUM()`關鍵字返回數字列的總和。 `GROUP BY`子句將總金額分配給客戶。 因此,我們可以看到`Black`訂購了 440,`Smith`訂購了 2040 個商品。 使用聚合函數時,不能使用`WHERE`子句。 我們改用`HAVING`子句。 ```sql mysql> SELECT SUM(OrderPrice) AS Total, Customer FROM Orders -> GROUP BY Customer HAVING SUM(OrderPrice)>1000; +-------+------------+ | Total | Customer | +-------+------------+ | 2040 | Smith | | 1250 | Williamson | +-------+------------+ 2 rows in set (0.00 sec) ``` 上面的 SQL 語句選擇總訂單量大于 1000 個單位的客戶。 ## 選擇數據到文件 `SELECT`語句可用于將表中的數據寫入文件。 ```sql mysql> SELECT * INTO OUTFILE '/tmp/cars.txt' -> FIELDS TERMINATED BY ',' -> LINES TERMINATED BY '\n' -> FROM Cars; Query OK, 8 rows affected (0.00 sec) ``` 我們將`Cars`表中的數據寫入`cars.txt`文件。 輸出文件是 CSV(逗號分隔值)文件。 請注意,此操作容易出錯,我們很容易遇到權限被拒絕的錯誤。 ```sql $ cat /tmp/cars.txt 1,Audi,52642 2,Mercedes,57127 3,Skoda,9000 4,Volvo,29000 5,Bentley,350000 6,Citroen,21000 7,Hummer,41400 8,Volkswagen,21600 ``` 我們可以做相反的操作; 將文件中的數據加載到表中。 ```sql mysql> DELETE FROM Cars; Query OK, 8 rows affected (0.00 sec) mysql> SELECT * FROM Cars; Empty set (0.00 sec) ``` 我們從`Cars`表中刪除所有行。 ```sql mysql> LOAD DATA INFILE '/tmp/cars.txt' -> INTO TABLE Cars -> FIELDS TERMINATED BY ',' -> LINES TERMINATED BY '\n'; Query OK, 8 rows affected (0.00 sec) Records: 8 Deleted: 0 Skipped: 0 Warnings: 0 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 | +----+------------+--------+ 8 rows in set (0.00 sec) ``` 我們使用`LOAD DATA INFILE`語句將數據加載回表中。 我們驗證數據是否正確加載。 在 MySQL 教程的這一部分中,我們更詳細地提到了 SQL `SELECT`語句。
                  <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>

                              哎呀哎呀视频在线观看