1简单连接
mysql> SELECT ORDER_NUM,AMOUNT,COMPANY,CREDIT_LIMIT FROM ORDERS,CUSTOMERS WHERE CUST=CUST_NUM;
+-----------+----------+-------------------+--------------+
| ORDER_NUM | AMOUNT | COMPANY | CREDIT_LIMIT |
+-----------+----------+-------------------+--------------+
| 112961 | 31500.00 | J.P.Sinclair | 35000.00 |
| 113012 | 3745.00 | JCP Inc. | 50000.00 |
| 112989 | 1458.00 | Jones Mfg. | 65000.00 |
| 113051 | 1420.00 | Midwest Systems | 60000.00 |
| 112968 | 3978.00 | First Corp. | 65000.00 |
2父/子查询
mysql> SELECT ORDER_NUM,AMOUNT,COMPANY,CREDIT_LIMIT FROM ORDERS,CUSTOMERS WHERE CUST=CUST_NUM;
+-----------+----------+-------------------+--------------+
| ORDER_NUM | AMOUNT | COMPANY | CREDIT_LIMIT |
+-----------+----------+-------------------+--------------+
| 112961 | 31500.00 | J.P.Sinclair | 35000.00 |
| 113012 | 3745.00 | JCP Inc. | 50000.00 |
| 112989 | 1458.00 | Jones Mfg. | 65000.00 |
| 113051 | 1420.00 | Midwest Systems | 60000.00 |
| 112968 | 3978.00 | First Corp. | 65000.00 |
mysql> SELECT NAME,CITY,REGION FROM SALESREPS,OFFICES WHERE OFFICE=REP_OFFICE;
mysql> SELECT NAME,CITY,REGION FROM SALESREPS JOIN OFFICES ON REP_OFFICE=OFFICE;
+---------------+-------------+---------+
| NAME | CITY | REGION |
+---------------+-------------+---------+
| Nancy Angelli | Denver | Western |
| Mary Jones | New York | Eastern |mysql> SELECT NAME,CITY,REGION FROM SALESREPS JOIN OFFICES ON MGR=EMPL_NUM;
mysql> SELECT CITY,NAME,TITLE FROM OFFICES,SALESREPS WHERE MGR=EMPL_NUM;
mysql> SELECT NAME,CITY,REGION FROM SALESREPS JOIN OFFICES ON MGR=EMPL_NUM;
+-------------+-------------+-----------+
| CITY | NAME | TITLE |
+-------------+-------------+-----------+
| Denver | Larry Fitch | Sales Mgr |
| New York | Sam Clark | VP Sales |
mysql> SELECT CITY,NAME,TITLE FROM OFFICES,SALESREPS WHERE MGR=EMPL_NUM AND TARGET>600000.00;
mysql> SELECT CITY,NAME,TITLE FROM OFFICES JOIN SALESREPS ON MGR=EMPL_NUM WHERE TARGET>600000.00;
+-------------+-------------+-----------+
| CITY | NAME | TITLE |
+-------------+-------------+-----------+
| Chicage | Bob Smith | Sales Mgr |
| Los Angeles | Larry Fitch | Sales Mgr |
+-------------+-------------+-----------+
列出所有订单,显示数量和产品说明。
mysql> SELECT ORDER_NUM,AMOUNT,DESCRIPTION FROM ORDERS,PRODUCTS WHERE MFR=MFR_ID AND PRODUCT=PRODUCT_ID;
| ORDER_NUM | AMOUNT | DESCRIPTION |
+-----------+----------+------------------+
| 113034 | 632.00 | Ratcher Link |
| 112993 | 1896.00 | Ratcher Link |
| 112987 | 27500.00 | Widget Remover |
如果ORDERS表和PRODUCT表中制造商ID和产品ID字段均为MFR和PRODUCT,那么两个表间最自然的连接会是一个基于出现在两表中的所有字段名的等连接。这称为自然连接。
SELECT ORDER_NUM,AMOUNT,DESCRIPTION FROM ORDERS NATURAL JOIN PRODUCTS;
SELECT ORDRE_NUM,AMOUNT,DESCRIPTION FROM ORDRES JOIN PRODUCTS USING(MFR,PRODUCT);
列出价值超过25000美元的订单,显示下订单的客户名、负责客户的销售人员的名字和销售人员工作的销售点。
mysql> SELECT ORDER_NUM,AMOUNT,COMPANY,NAME,CITY FROM ORDERS,CUSTOMERS,SALESREPS,OFFICES
WHERE CUST=CUST_NUM AND CUST_REP=EMPL_NUM AND REP_OFFICE=OFFICE AND AMOUNT>25000.00;
+-----------+----------+-----------------+-------------+-------------+
| ORDER_NUM | AMOUNT | COMPANY | NAME | CITY |
+-----------+----------+-----------------+-------------+-------------+
| 112987 | 27500.00 | Acme Mfg. | Bill Adams | Atlanta |
| 112961 | 31500.00 | J.P.Sinclair | Sam Clark | New York |
列出所有销售人员和他们的工作地点
mysql> SELECT SALESREPS.*,CITY,REGION FROM SALESREPS,OFFICES WHERE REP_OFFICE=OFFICE;
+----------+---------------+------+------------+-----------+------------+---------+-----------+-----------+-------------+---------+
| EMPL_NUM | NAME | AGE | REP_OFFICE | TITLE | HIRE_DATE | MANAGER | QUOTA | SALES | CITY | REGION |
+----------+---------------+------+------------+-----------+------------+---------+-----------+-----------+-------------+---------+
| 107 | Nancy Angelli | 49 | 22 | Sales Rep | 2006-11-14 | 108 | 300000.00 | 186042.00 | Denver | Western |
3自连接
mysql> SELECT NAME,CITY,REGION FROM SALESREPS,OFFICES WHERE OFFICE=REP_OFFICE;
mysql> SELECT NAME,CITY,REGION FROM SALESREPS JOIN OFFICES ON REP_OFFICE=OFFICE;
+---------------+-------------+---------+
| NAME | CITY | REGION |
+---------------+-------------+---------+
| Nancy Angelli | Denver | Western |
| Mary Jones | New York | Eastern |mysql> SELECT NAME,CITY,REGION FROM SALESREPS JOIN OFFICES ON MGR=EMPL_NUM;
mysql> SELECT CITY,NAME,TITLE FROM OFFICES,SALESREPS WHERE MGR=EMPL_NUM;
mysql> SELECT NAME,CITY,REGION FROM SALESREPS JOIN OFFICES ON MGR=EMPL_NUM;
+-------------+-------------+-----------+
| CITY | NAME | TITLE |
+-------------+-------------+-----------+
| Denver | Larry Fitch | Sales Mgr |
| New York | Sam Clark | VP Sales |
mysql> SELECT CITY,NAME,TITLE FROM OFFICES,SALESREPS WHERE MGR=EMPL_NUM AND TARGET>600000.00;
mysql> SELECT CITY,NAME,TITLE FROM OFFICES JOIN SALESREPS ON MGR=EMPL_NUM WHERE TARGET>600000.00;
+-------------+-------------+-----------+
| CITY | NAME | TITLE |
+-------------+-------------+-----------+
| Chicage | Bob Smith | Sales Mgr |
| Los Angeles | Larry Fitch | Sales Mgr |
+-------------+-------------+-----------+
列出所有订单,显示数量和产品说明。
mysql> SELECT ORDER_NUM,AMOUNT,DESCRIPTION FROM ORDERS,PRODUCTS WHERE MFR=MFR_ID AND PRODUCT=PRODUCT_ID;
| ORDER_NUM | AMOUNT | DESCRIPTION |
+-----------+----------+------------------+
| 113034 | 632.00 | Ratcher Link |
| 112993 | 1896.00 | Ratcher Link |
| 112987 | 27500.00 | Widget Remover |
SELECT ORDER_NUM,AMOUNT,DESCRIPTION FROM ORDERS NATURAL JOIN PRODUCTS;
SELECT ORDRE_NUM,AMOUNT,DESCRIPTION FROM ORDRES JOIN PRODUCTS USING(MFR,PRODUCT);
mysql> SELECT ORDER_NUM,AMOUNT,COMPANY,NAME,CITY FROM ORDERS,CUSTOMERS,SALESREPS,OFFICES
WHERE CUST=CUST_NUM AND CUST_REP=EMPL_NUM AND REP_OFFICE=OFFICE AND AMOUNT>25000.00;
+-----------+----------+-----------------+-------------+-------------+
| ORDER_NUM | AMOUNT | COMPANY | NAME | CITY |
+-----------+----------+-----------------+-------------+-------------+
| 112987 | 27500.00 | Acme Mfg. | Bill Adams | Atlanta |
| 112961 | 31500.00 | J.P.Sinclair | Sam Clark | New York |
mysql> SELECT SALESREPS.*,CITY,REGION FROM SALESREPS,OFFICES WHERE REP_OFFICE=OFFICE;
+----------+---------------+------+------------+-----------+------------+---------+-----------+-----------+-------------+---------+
| EMPL_NUM | NAME | AGE | REP_OFFICE | TITLE | HIRE_DATE | MANAGER | QUOTA | SALES | CITY | REGION |
+----------+---------------+------+------------+-----------+------------+---------+-----------+-----------+-------------+---------+
| 107 | Nancy Angelli | 49 | 22 | Sales Rep | 2006-11-14 | 108 | 300000.00 | 186042.00 | Denver | Western |
列出销售人员及其经理的名字。
mysql> SELECT EMPS.NAME,MGRS.NAME FROM SALESREPS EMPS,SALESREPS MGRS WHERE EMPS.MANAGER=MGRS.EMPL_NUM;
+---------------+-------------+
| NAME | NAME |
+---------------+-------------+
| Bill Adams | Bob Smith |
| Mary Jones | Sam Clark |
4外连接
mysql> SELECT EMPS.NAME,MGRS.NAME FROM SALESREPS EMPS,SALESREPS MGRS WHERE EMPS.MANAGER=MGRS.EMPL_NUM;
+---------------+-------------+
| NAME | NAME |
+---------------+-------------+
| Bill Adams | Bob Smith |
| Mary Jones | Sam Clark |
mysql> SELECT NAME,CITY FROM SALESREPS JOIN OFFICES ON REP_OFFICE=OFFICE;
+---------------+-------------+
| NAME | CITY |
+---------------+-------------+
| Nancy Angelli | Denver |
| Mary Jones | New York |
| Sam Clark | New York |
5左外连接:左边表中要查询的字段都会出现,在右边表中没有的值用NULL代替
mysql> SELECT NAME,CITY FROM SALESREPS JOIN OFFICES ON REP_OFFICE=OFFICE;
+---------------+-------------+
| NAME | CITY |
+---------------+-------------+
| Nancy Angelli | Denver |
| Mary Jones | New York |
| Sam Clark | New York |
mysql> SELECT NAME,CITY FROM SALESREPS LEFT OUTER JOIN OFFICES ON REP_OFFICE=OFFICE;
+---------------+-------------+
| NAME | CITY |
+---------------+-------------+
| Bill Adams | Atlanta |
| Mary Jones | New York |
| Sue Smith | Los Angeles |
| Sam Clark | New York |
| Bob Smith | Chicage |
| Dan Roberts | Chicage |
| Tom Snyder | NULL |