MySQL示例數(shù)據(jù)庫在本MySQL教程中,大部分操作是基于 第一步: 從MySQL示例數(shù)據(jù)庫文章中下載示例數(shù)據(jù)庫( 第二步: 將下載的文件解壓縮到臨時文件夾中。為了簡單起見,我們將把它解壓縮到D:\worksp,如下所示 MySQL示例數(shù)據(jù)庫模式由以下表組成:
表與表之間的關(guān)系,請參考以下ER圖 : 第三步: 創(chuàng)建數(shù)據(jù)庫并導(dǎo)入數(shù)據(jù) 創(chuàng)建數(shù)據(jù)庫 : mysql> CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> use yiibaidb;導(dǎo)入數(shù)據(jù): mysql> use yiibaidb;
mysql> source D:/worksp/yiibaidb.sql;第四步: 測試導(dǎo)入結(jié)果 mysql> select city,phone,country from `offices`;
--------------- ------------------ -----------
| city | phone | country |
--------------- ------------------ -----------
| San Francisco | 1 650 219 4782 | USA |
| Boston | 1 215 837 0825 | USA |
| NYC | 1 212 555 3000 | USA |
| Paris | 33 14 723 4404 | France |
| Beijing | 86 33 224 5000 | China |
| Sydney | 61 2 9264 2451 | Australia |
| London | 44 20 7877 2041 | UK |
--------------- ------------------ -----------
7 rows in set (0.00 sec)01 查詢語句 1.1 SELECT 顯示如何使用簡單的SELECT語句來查詢單個表中的數(shù)據(jù)。 使用 請參閱示例數(shù)據(jù)庫(
我們來看一下 SELECT
column_1, column_2, ..SQL
語句中的
MySQL SELECT語句示例
SELECT
lastname, firstname, jobtitle即使員工表中有很多列, mysql> SELECT lastname, firstname, jobtitle FROM employees;
----------- ----------- ----------------------
| lastname | firstname | jobtitle |
----------- ----------- ----------------------
| Murphy | Diane | President |
| Patterson | Mary | VP Sales |
| Firrelli | Jeff | VP Marketing |
| Patterson | William | Sales Manager (APAC) |
| Bondur | Gerard | Sale Manager (EMEA) |
| Bow | Anthony | Sales Manager (NA) |
| Jennings | Leslie | Sales Rep |
| Thompson | Leslie | Sales Rep |
| Firrelli | Julie | Sales Rep |
| Patterson | Steve | Sales Rep |
| Tseng | Foon Yue | Sales Rep |
| Vanauf | George | Sales Rep |
| Bondur | Loui | Sales Rep |
| Hernandez | Gerard | Sales Rep |
| Castillo | Pamela | Sales Rep |
| Bott | Larry | Sales Rep |
| Jones | Barry | Sales Rep |
| Fixter | Andy | Sales Rep |
| Marsh | Peter | Sales Rep |
| King | Tom | Sales Rep |
| Nishi | Mami | Sales Rep |
| Kato | Yoshimi | Sales Rep |
| Gerard | Martin | Sales Rep |
----------- ----------- ----------------------
23 rows in set注意比較以下兩個語句返回列有什么區(qū)別 - 語句-1 SELECT lastname, firstname, jobtitle FROM employees;語句-2 SELECT * FROM employees;SQL 如果要獲取 mysql> SELECT * FROM employees;
---------------- ----------- ----------- ----------- ----------------------- ------------ ----------- ----------------------
| employeeNumber | lastName | firstName | extension | email | officeCode | reportsTo | jobTitle |
---------------- ----------- ----------- ----------- ----------------------- ------------ ----------- ----------------------
| 1002 | Murphy | Diane | x5800 | dmurphy@ | 1 | NULL | President |
| 1056 | Patterson | Mary | x4611 | mpatterso@ | 1 | 1002 | VP Sales |
| 1076 | Firrelli | Jeff | x9273 | jfirrelli@ | 1 | 1002 | VP Marketing |
| 1088 | Patterson | William | x4871 | wpatterson@ | 6 | 1056 | Sales Manager (APAC) |
| 1102 | Bondur | Gerard | x5408 | gbondur@gmail.com | 4 | 1056 | Sale Manager (EMEA) |
| 1143 | Bow | Anthony | x5428 | abow@gmail.com | 1 | 1056 | Sales Manager (NA) |
| 1165 | Jennings | Leslie | x3291 | ljennings@ | 1 | 1143 | Sales Rep |
| 1166 | Thompson | Leslie | x4065 | lthompson@ | 1 | 1143 | Sales Rep |
| 1188 | Firrelli | Julie | x2173 | jfirrelli@ | 2 | 1143 | Sales Rep |
| 1216 | Patterson | Steve | x4334 | spatterson@ | 2 | 1143 | Sales Rep |
| 1286 | Tseng | Foon Yue | x2248 | ftseng@ | 3 | 1143 | Sales Rep |
| 1323 | Vanauf | George | x4102 | gvanauf@ | 3 | 1143 | Sales Rep |
| 1337 | Bondur | Loui | x6493 | lbondur@ | 4 | 1102 | Sales Rep |
| 1370 | Hernandez | Gerard | x2028 | ghernande@gmail.com | 4 | 1102 | Sales Rep |
| 1401 | Castillo | Pamela | x2759 | pcastillo@gmail.com | 4 | 1102 | Sales Rep |
| 1501 | Bott | Larry | x2311 | lbott@ | 7 | 1102 | Sales Rep |
| 1504 | Jones | Barry | x102 | bjones@gmail.com | 7 | 1102 | Sales Rep |
| 1611 | Fixter | Andy | x101 | afixter@ | 6 | 1088 | Sales Rep |
| 1612 | Marsh | Peter | x102 | pmarsh@ | 6 | 1088 | Sales Rep |
| 1619 | King | Tom | x103 | tking@gmail.com | 6 | 1088 | Sales Rep |
| 1621 | Nishi | Mami | x101 | mnishi@gmail.com | 5 | 1056 | Sales Rep |
| 1625 | Kato | Yoshimi | x102 | ykato@gmail.com | 5 | 1621 | Sales Rep |
| 1702 | Gerard | Martin | x2312 | mgerard@gmail.com | 4 | 1102 | Sales Rep |
---------------- ----------- ----------- ----------- ----------------------- ------------ ----------- ----------------------
23 rows in set它返回
從表中查詢數(shù)據(jù)時,可能會收到重復(fù)的行記錄。為了刪除這些重復(fù)行,可以在
SELECT DISTINCT
columnsSQL 2. MySQL DISTINCT示例下面來看看一個使用 首先,使用 SELECT
lastnameSQL 執(zhí)行上面查詢語句,得到以下結(jié)果 - mysql> SELECT lastname FROM employees ORDER BY lastname;
-----------
| lastname |
-----------
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
| Gerard |
| Hernandez |
| Jennings |
| Jones |
| Kato |
| King |
| Marsh |
| Murphy |
| Nishi |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
| Tseng |
| Vanauf |
-----------
23 rows in setShell 可看到上面結(jié)果中,有好些結(jié)果是重復(fù)的,比如: SELECT DISTINCT
lastnameFROM
employeesORDER BY lastname;SQL 執(zhí)行上面查詢,得到以下輸出結(jié)果 - mysql> SELECT DISTINCT lastname FROM employees ORDER BY lastname;
-----------
| lastname |
-----------
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Fixter |
| Gerard |
| Hernandez |
| Jennings |
| Jones |
| Kato |
| King |
| Marsh |
| Murphy |
| Nishi |
| Patterson |
| Thompson |
| Tseng |
| Vanauf |
-----------
19 rows in setShell 當(dāng)使用 3. MySQL DISTINCT和NULL值如果列具有 例如,在 SELECT DISTINCT
state SQL 執(zhí)行上面查詢語句后,輸出結(jié)果如下 - mysql> SELECT DISTINCT state FROM customers;
---------------
| state |
---------------
| NULL |
| NV |
| Victoria |
| CA |
| NY |
| PA |
| CT |
| MA |
| Osaka |
| BC |
| Qubec |
| Isle of Wight |
| NSW |
| NJ |
| Queensland |
| Co. Cork |
| Pretoria |
| NH |
| Tokyo |
---------------
19 rows in setShell 4. MySQL DISTINCT在多列上的使用可以使用具有多個列的 例如,要從 SELECT DISTINCT
state, citySQL 執(zhí)行上面查詢,得到以下結(jié)果 - mysql> SELECT DISTINCT state, city FROM customers WHERE state IS NOT NULL ORDER BY state ,city;
--------------- ----------------
| state | city |
--------------- ----------------
| BC | Tsawassen |
| BC | Vancouver |
| CA | Brisbane |
| CA | Burbank |
| CA | Burlingame |
| CA | Glendale |
| CA | Los Angeles |
| CA | Pasadena |
| CA | San Diego |
| CA | San Francisco |
| CA | San Jose |
| CA | San Rafael |
| Co. Cork | Cork |
| CT | Bridgewater |
| CT | Glendale |
| CT | New Haven |
| Isle of Wight | Cowes |
| MA | Boston |
| MA | Brickhaven |
| MA | Cambridge |
| MA | New Bedford |
| NH | Nashua |
| NJ | Newark |
| NSW | Chatswood |
| NSW | North Sydney |
| NV | Las Vegas |
| NY | NYC |
| NY | White Plains |
| Osaka | Kita-ku |
| PA | Allentown |
| PA | Philadelphia |
| Pretoria | Hatfield |
| Qubec | Montral |
| Queensland | South Brisbane |
| Tokyo | Minato-ku |
| Victoria | Glen Waverly |
| Victoria | Melbourne |
--------------- ----------------
37 rows in set沒有 SELECT
state, citySQL 執(zhí)行上面查詢,得到以下結(jié)果 - 5. DISTINCT子句與GROUP BY子句比較如果在 以下語句使用 SELECT
stateSQL 執(zhí)行上面查詢,得到以下結(jié)果 - mysql> SELECT state FROM customers GROUP BY state;
---------------
| state |
---------------
| NULL |
| BC |
| CA |
| Co. Cork |
| CT |
| Isle of Wight |
| MA |
| NH |
| NJ |
| NSW |
| NV |
| NY |
| Osaka |
| PA |
| Pretoria |
| Qubec |
| Queensland |
| Tokyo |
| Victoria |
---------------
19 rows in set可以通過使用 mysql> SELECT DISTINCT state FROM customers; --------------- | state | --------------- | NULL || NV || Victoria || CA || NY || PA || CT || MA || Osaka || BC || Qubec || Isle of Wight || NSW || NJ || Queensland || Co. Cork || Pretoria || NH || Tokyo | --------------- 19 rows in setSQL 一般而言, 如果將ORDER BY子句添加到使用 SELECT DISTINCT
stateSQL 執(zhí)行上面查詢,得到以下結(jié)果 - mysql> SELECT DISTINCT state FROM customers ORDER BY state;
---------------
| state |
---------------
| NULL |
| BC |
| CA |
| Co. Cork |
| CT |
| Isle of Wight |
| MA |
| NH |
| NJ |
| NSW |
| NV |
| NY |
| Osaka |
| PA |
| Pretoria |
| Qubec |
| Queensland |
| Tokyo |
| Victoria |
---------------
19 rows in setShell 6. MySQL DISTINCT和聚合函數(shù)可以使用具有聚合函數(shù)(例如SUM,AVG和COUNT)的 例如,要計算美國客戶的唯一 SELECT
COUNT(DISTINCT state)SQL 執(zhí)行上面查詢,得到以下結(jié)果 - mysql> SELECT COUNT(DISTINCT state) FROM customers WHERE country = 'USA';
-----------------------
| COUNT(DISTINCT state) |
-----------------------
| 8 |
-----------------------
1 row in setShell 7. MySQL DISTINCT與LIMIT子句如果要將 以下查詢 mysql> SELECT DISTINCT state FROM customers WHERE state IS NOT NULL LIMIT 3;
----------
| state |
----------
| NV |
| Victoria |
| CA |
----------
3 rows in setShell 在本教程中,我們學(xué)習(xí)了使用MySQL |
|
|