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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # MySQL 快速教程 > 原文: [http://zetcode.com/databases/mysqltutorial/quick/](http://zetcode.com/databases/mysqltutorial/quick/) MySQL 快速教程將快速向您介紹 MySQL 數據庫的基礎知識。 ## 世界數據庫 MySQL [文檔](http://dev.mysql.com/doc/index-other.html)網站提供了一些示例數據庫。 我們將使用世界數據庫。 數據已過時,但對于我們的測試目的并不重要。 ```sql $ wget http://downloads.mysql.com/docs/world.sql.gz ``` 我們使用`wget`工具下載壓縮文件。 ```sql $ ls -sh world.sql.gz 92K world.sql.gz ``` 壓縮文件大約有 92KB。 ```sql $ gunzip world.sql.gz ``` 我們將文件解壓縮。 我們有一個`world.sql`文件。 ```sql $ ls -hs world.sql 392K world.sql ``` 未壓縮的文件有 392KB。 ```sql $ mysql -uroot -p ``` 我們使用根帳戶連接到服務器。 我們需要`root`帳戶來創建新數據庫,并為我們的新數據庫的測試帳戶授予權限。 ```sql mysql> CREATE DATABASE world; ``` 世界數據庫已創建。 ```sql mysql> USE world; ``` 我們轉到世界數據庫。 現在,世界數據庫是當前數據庫。 ```sql mysql> source world.sql ``` 我們通過執行`world.sql` SQL 腳本來構建世界數據庫的表。 需要一些時間。 ```sql mysql> GRANT ALL ON world.* TO 'user12'@'localhost'; ``` 我們向`user12`授予對世界數據庫的所有對象的特權。 ```sql mysql> quit Bye $ mysql -u user12 -p Enter password: mysql> USE world; ``` 我們退出連接。 重新連接`user12`測試帳戶并更改為`world`數據庫。 我們準備工作。 ## 檢查數據庫 在本節中,我們將大致看一下`world`數據庫的表。 ```sql mysql> SHOW TABLES; +-----------------+ | Tables_in_world | +-----------------+ | city | | country | | countrylanguage | +-----------------+ 3 rows in set (0,00 sec) ``` 我們用`SHOW TABLES`語句顯示所有可用表。 有三種。 ```sql mysql> DESCRIBE city; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | char(35) | NO | | | | | CountryCode | char(3) | NO | MUL | | | | District | char(20) | NO | | | | | Population | int(11) | NO | | 0 | | +-------------+----------+------+-----+---------+----------------+ 5 rows in set (0,00 sec) ``` 通過`DESCRIBE`語句,我們可以看到`City`表的表結構。 我們看到列名及其數據類型。 加上其他重要信息。 ```sql mysql> SHOW CREATE TABLE city; ``` 如果我們想找出創建`City`表的 SQL,我們將發出`SHOW CREATE TABLE city`語句。 ```sql $ mysqldump -u root -p world city > city.sql ``` 在這里,我們使用`mysqldump`工具備份`city`表。 ```sql mysql> DROP TABLE city; mysql> SHOW TABLES; +-----------------+ | Tables_in_world | +-----------------+ | country | | countrylanguage | +-----------------+ 2 rows in set (0,00 sec) ``` 我們使用`DROP TABLE`語句刪除`city`表。 隨后的語句驗證該表已刪除。 ```sql mysql> source city.sql mysql> SHOW TABLES; +-----------------+ | Tables_in_world | +-----------------+ | city | | country | | countrylanguage | +-----------------+ 3 rows in set (0,00 sec) ``` 我們從備份中重新創建`city`表。 `source`命令執行備份`city.sql`腳本。 ## 查詢 查詢用于從數據庫表中查找數據。 ### 限制數據輸出 數據庫表中有數千行。 它們無法全部顯示在屏幕上。 我們可以使用`LIMIT`子句控制要顯示的行數。 ```sql mysql> SELECT Id, Name, Population FROM city limit 10; +----+----------------+------------+ | Id | Name | Population | +----+----------------+------------+ | 1 | Kabul | 1780000 | | 2 | Qandahar | 237500 | | 3 | Herat | 186800 | | 4 | Mazar-e-Sharif | 127800 | | 5 | Amsterdam | 731200 | | 6 | Rotterdam | 593321 | | 7 | Haag | 440900 | | 8 | Utrecht | 234323 | | 9 | Eindhoven | 201843 | | 10 | Tilburg | 193238 | +----+----------------+------------+ 10 rows in set (0,00 sec) ``` 在上面的查詢中,我們顯示`City`表的五個列中的三個。 表中有很多行。 我們將查詢限制為前 10 行。 ```sql mysql> SELECT Id, Name, Population FROM city limit 15, 5; +----+-------------------+------------+ | Id | Name | Population | +----+-------------------+------------+ | 16 | Haarlem | 148772 | | 17 | Almere | 142465 | | 18 | Arnhem | 138020 | | 19 | Zaanstad | 135621 | | 20 | ′s-Hertogenbosch | 129170 | +----+-------------------+------------+ 5 rows in set (0,00 sec) ``` `LIMIT`子句后面可以有兩個數字。 第一個是偏移量,第二個是要顯示的行數。 我們的查詢顯示第 16-20 行。 ```sql mysql> pager less PAGER set to 'less' mysql> SELECT * FROM city; +------------------------------------+------------+ | Name | Population | +------------------------------------+------------+ | Kabul | 1780000 | | Qandahar | 237500 | | Herat | 186800 | ... : ``` 由于`city`表具有四千多行,因此我們無法在一個屏幕中看到它們。 我們可以使用`pager`命令以較少的程序顯示數據。 我們可以使用光標鍵或向下翻頁,向上翻頁鍵瀏覽數據。 如果我們想使用默認設置,只需點擊不帶任何參數的尋呼機即可。 ```sql $ mysql -u user12 -p world -e "SELECT * FROM city" > city Enter password: $ ls -sh city 144K city ``` `mysql`命令工具可以非交互方式使用。 我們在`-e`選項之后指定 SQL 語句,然后將結果重定向到城市文件。 現在我們可以使用任何文本編輯器來顯示數據。 ### `COUNT()`,`MAX()`,`MIN()`函數 `COUNT()`,`MAX()`,`MIN()`是 MySQL 聚合函數,可從聚合數據中計算一些值。 ```sql mysql> SELECT COUNT(Id) AS '# of cities' FROM city; +-------------+ | # of cities | +-------------+ | 4079 | +-------------+ 1 row in set (0,00 sec) ``` 表中有 4079 個城市。 我們使用內置的`COUNT()`函數找出行數。 ```sql mysql> SELECT Name, Population FROM city -> WHERE Population = (SELECT Max(Population) FROM city); +-----------------+------------+ | Name | Population | +-----------------+------------+ | Mumbai (Bombay) | 10500000 | +-----------------+------------+ 1 row in set (0,08 sec) ``` 上面的查詢顯示了表中人口最多的城市。 SQL 是稱為子查詢的特殊查詢類型。 外部查詢使用內部查詢返回的數據。 內部查詢以括號為界。 ```sql mysql> SELECT Name, Population FROM city -> WHERE Population = (SELECT Min(Population) FROM city); +-----------+------------+ | Name | Population | +-----------+------------+ | Adamstown | 42 | +-----------+------------+ 1 row in set (0,02 sec) ``` 此子查詢顯示表中人口最少的城市。 ### 使用`WHERE`子句選擇特定的行 `WHERE`子句可用于過濾結果。 它提供了選擇條件,僅從數據中選擇特定的行。 ```sql mysql> SELECT Name, Population FROM city -> WHERE Population > 1000000; +--------------------------+------------+ | Name | Population | +--------------------------+------------+ | Kabul | 1780000 | | Alger | 2168000 | | Luanda | 2022000 | | Buenos Aires | 2982146 | | La Matanza | 1266461 | | Córdoba | 1157507 | | Yerevan | 1248700 | | Sydney | 3276207 | ... ``` 上面的 SQL 語句返回人口超過一百萬的所有城市。 ```sql mysql> SELECT Name FROM city WHERE Name LIKE 'Kal%'; +-------------+ | Name | +-------------+ | Kalookan | | Kalyan | | Kalemie | | Kallithea | | Kalisz | | Kaliningrad | | Kaluga | +-------------+ 7 rows in set (0,00 sec) ``` 在這里,我們選擇所有以`"Kal"`開頭的城市名稱。 我們在表中找到了七個城市。 我們可以使用`LIKE`子句在列中查找特定的模式。 ```sql mysql> SELECT Name, Population FROM city WHERE ID IN (5, 23, 432, 2021); +------------+------------+ | Name | Population | +------------+------------+ | Amsterdam | 731200 | | Dordrecht | 119811 | | Eunápolis | 96610 | | Jining | 265248 | +------------+------------+ 4 rows in set (0,05 sec) ``` 此 SQL 代碼返回 ID 為 5、23、432 和 2021 的行的城市及其人口。 ```sql mysql> SELECT * FROM city WHERE Name = 'Bratislava'; +------+------------+-------------+------------+------------+ | ID | Name | CountryCode | District | Population | +------+------------+-------------+------------+------------+ | 3209 | Bratislava | SVK | Bratislava | 448292 | +------+------------+-------------+------------+------------+ 1 row in set (0,00 sec) ``` 通過上面的 SQL 語句,我們選擇一個特定城市(即布拉迪斯拉發)的所有列。 ```sql mysql> SELECT Name, Population FROM city -> WHERE Population BETWEEN 670000 AND 700000; +----------------+------------+ | Name | Population | +----------------+------------+ | Teresina | 691942 | | Natal | 688955 | | Bandar Lampung | 680332 | | Gwalior | 690765 | | Kermanshah | 692986 | | Palermo | 683794 | | Toronto | 688275 | | Huainan | 700000 | | Jixi | 683885 | | Antananarivo | 675669 | | Chihuahua | 670208 | | Kano | 674100 | | Tunis | 690600 | +----------------+------------+ 13 rows in set (0,03 sec) ``` 假設我們想找出人口在兩個特定值之間的城市。 為此有一個`BETWEEN`運算符。 我們發現了 13 個城市,人口在 670,000 到 700,000 之間。 ### 排序數據 可以使用`ORDER BY`子句完成訂購數據。 ```sql mysql> SELECT Name, Population FROM city -> ORDER BY Population DESC LIMIT 10; +-------------------+------------+ | Name | Population | +-------------------+------------+ | Mumbai (Bombay) | 10500000 | | Seoul | 9981619 | | S?o Paulo | 9968485 | | Shanghai | 9696300 | | Jakarta | 9604900 | | Karachi | 9269265 | | Istanbul | 8787958 | | Ciudad de México | 8591309 | | Moscow | 8389200 | | New York | 8008278 | +-------------------+------------+ 10 rows in set (0,03 sec) ``` 我們找到了十個人口最多的城市。 我們按人口從人口最多的城市到人口最少的城市排序。 我們使用`LIMIT`子句限制輸出。 ```sql mysql> SELECT Name, Population FROM city -> ORDER BY Population ASC LIMIT 10; +---------------------+------------+ | Name | Population | +---------------------+------------+ | Adamstown | 42 | | West Island | 167 | | Fakaofo | 300 | | Città del Vaticano | 455 | | Bantam | 503 | | Yaren | 559 | | The Valley | 595 | | Alofi | 682 | | Flying Fish Cove | 700 | | Kingston | 800 | +---------------------+------------+ 10 rows in set (0,02 sec) ``` 在這里,我們得到了人口最少的城市。 這次我們以升序對數據進行排序。 為此,我們使用`ASC`關鍵字。 ```sql mysql> SELECT Name, Population FROM city ORDER By Name LIMIT 10; +------------------------+------------+ | Name | Population | +------------------------+------------+ | A Coru?a (La Coru?a) | 243402 | | Aachen | 243825 | | Aalborg | 161161 | | Aba | 298900 | | Abadan | 206073 | | Abaetetuba | 111258 | | Abakan | 169200 | | Abbotsford | 105403 | | Abeokuta | 427400 | | Aberdeen | 213070 | +------------------------+------------+ 10 rows in set (0.01 sec) ``` 在上面的 SQL 語句中,我們按城市名稱排序數據并獲得前十個城市。 ### 分組數據 `GROUP BY`子句用于將具有相同值的數據庫記錄組合到單個記錄中。 它通常與聚合函數一起使用。 ```sql mysql> SELECT District, SUM(Population) FROM city -> WHERE District = 'New York' GROUP BY District; +----------+-----------------+ | District | SUM(Population) | +----------+-----------------+ | New York | 8958085 | +----------+-----------------+ 1 row in set (0,09 sec) ``` 上面的 SQL 語句返回在我們數據庫中列出的紐約地區城鎮的總人數。 ```sql mysql> SELECT Name, District FROM city WHERE District = 'New York'; +-----------+----------+ | Name | District | +-----------+----------+ | New York | New York | | Buffalo | New York | | Rochester | New York | | Yonkers | New York | | Syracuse | New York | | Albany | New York | +-----------+----------+ 6 rows in set (0,00 sec) ``` 先前的數字是這六個城市的總和。 ```sql mysql> SELECT District, SUM(Population) FROM city -> WHERE CountryCode = 'USA' GROUP BY District -> HAVING SUM(Population) > 3000000; +------------+-----------------+ | District | SUM(Population) | +------------+-----------------+ | Arizona | 3178903 | | California | 16716706 | | Florida | 3151408 | | Illinois | 3737498 | | New York | 8958085 | | Texas | 9208281 | +------------+-----------------+ 6 rows in set (0,28 sec) ``` 我們選擇人口超過 300 萬的所有地區。 當我們處理數據組時,我們使用`HAVING`子句而不是`WHERE`子句。 ### 更新,刪除和插入數據 接下來,我們將關注更新,刪除和插入數據。 ```sql mysql> SELECT Name, HeadOfState FROM country WHERE Name = 'United States'; +---------------+----------------+ | Name | HeadOfState | +---------------+----------------+ | United States | George W. Bush | +---------------+----------------+ 1 row in set (0,12 sec) ``` 如前所述,世界數據庫已過時。 喬治·布什(George Bush)不再是美國總統。 ```sql mysql> UPDATE country SET HeadOfState = 'Donald Trump' -> WHERE Name = 'United States'; ``` 使用`UPDATE`語句,我們將行更改為實際數據。 ```sql mysql> SELECT Name, HeadOfState FROM country WHERE Name = 'United States'; +---------------+--------------+ | Name | HeadOfState | +---------------+--------------+ | United States | Donald Trump | +---------------+--------------+ 1 row in set (0,02 sec) ``` 我們已經成功更新了該行。 ```sql mysql> CREATE TABLE toptencities engine=MEMORY SELECT * FROM city LIMIT 10; ``` 我們在內存中創建一個臨時表。 它將包含`city`表中的前十個城市。 ```sql mysql> SELECT * FROM toptencities; +----+----------------+-------------+---------------+------------+ | ID | Name | CountryCode | District | Population | +----+----------------+-------------+---------------+------------+ | 1 | Kabul | AFG | Kabol | 1780000 | | 2 | Qandahar | AFG | Qandahar | 237500 | | 3 | Herat | AFG | Herat | 186800 | | 4 | Mazar-e-Sharif | AFG | Balkh | 127800 | | 5 | Amsterdam | NLD | Noord-Holland | 731200 | | 6 | Rotterdam | NLD | Zuid-Holland | 593321 | | 7 | Haag | NLD | Zuid-Holland | 440900 | | 8 | Utrecht | NLD | Utrecht | 234323 | | 9 | Eindhoven | NLD | Noord-Brabant | 201843 | | 10 | Tilburg | NLD | Noord-Brabant | 193238 | +----+----------------+-------------+---------------+------------+ 10 rows in set (0,00 sec) ``` 這是`toptencities`表的內容。 ```sql mysql> DELETE FROM toptencities WHERE ID IN (2, 4, 6, 8, 10); ``` 使用`DELETE FROM`語句和`WHERE`子句,我們從`toptencities`表中刪除第二行。 ```sql mysql> SELECT * FROM toptencities; +----+-----------+-------------+---------------+------------+ | ID | Name | CountryCode | District | Population | +----+-----------+-------------+---------------+------------+ | 1 | Kabul | AFG | Kabol | 1780000 | | 3 | Herat | AFG | Herat | 186800 | | 5 | Amsterdam | NLD | Noord-Holland | 731200 | | 7 | Haag | NLD | Zuid-Holland | 440900 | | 9 | Eindhoven | NLD | Noord-Brabant | 201843 | +----+-----------+-------------+---------------+------------+ 5 rows in set (0.00 sec) ``` 表中還有五行。 ```sql mysql> TRUNCATE TABLE toptencities; Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM toptencities; Empty set (0,00 sec) ``` 我們使用`TRUNCATE`語句刪除表中的所有行。 沒有數據了。 ```sql mysql> INSERT INTO toptencities VALUES(1, 'Kabul', 'AFG', 'Kabol', 1780000); mysql> SELECT * FROM toptencities;; +----+-------+-------------+----------+------------+ | ID | Name | CountryCode | District | Population | +----+-------+-------------+----------+------------+ | 1 | Kabul | AFG | Kabol | 1780000 | +----+-------+-------------+----------+------------+ 1 row in set (0.00 sec) ``` 使用`INSERT INTO`語句,我們在表中插入一行。 ```sql mysql> DROP TABLE toptencities; Query OK, 0 rows affected (0,06 sec) ``` 我們從數據庫中刪除該表。 在本章中,我們快速介紹了 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>

                              哎呀哎呀视频在线观看