zoukankan      html  css  js  c++  java
  • SQL必知必会1-13 读书笔记

    博主不想写字并向你仍来了一堆代码

    1-6

    SQL——结构化查询语言,Structured Query Language;

    基本按列查询:

    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> ORDER BY prod_id;
    +---------+---------------------+-----------------------------------------------------------------------+
    | prod_id | prod_name           | prod_desc                                                             |
    +---------+---------------------+-----------------------------------------------------------------------+
    | BNBG01  | Fish bean bag toy   | Fish bean bag toy, complete with bean bag worms with which to feed it |
    | BNBG02  | Bird bean bag toy   | Bird bean bag toy, eggs are not included                              |
    | BNBG03  | Rabbit bean bag toy | Rabbit bean bag toy, comes with bean bag carrots                      |
    | BR01    | 8 inch teddy bear   | 8 inch teddy bear, comes with cap and jacket                          |
    | BR02    | 12 inch teddy bear  | 12 inch teddy bear, comes with cap and jacket                         |
    | BR03    | 18 inch teddy bear  | 18 inch teddy bear, comes with cap and jacket                         |
    | RGAN01  | Raggedy Ann         | 18 inch Raggedy Ann doll                                              |
    | RYL01   | King doll           | 12 inch king doll with royal garments and crown                       |
    | RYL02   | Queen doll          | 12 inch queen doll with royal garments and crown                      |
    +---------+---------------------+-----------------------------------------------------------------------+
    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> ORDER BY prod_price,prod_name;
    +---------+---------------------+-----------------------------------------------------------------------+
    | prod_id | prod_name           | prod_desc                                                             |
    +---------+---------------------+-----------------------------------------------------------------------+
    | BNBG02  | Bird bean bag toy   | Bird bean bag toy, eggs are not included                              |
    | BNBG01  | Fish bean bag toy   | Fish bean bag toy, complete with bean bag worms with which to feed it |
    | BNBG03  | Rabbit bean bag toy | Rabbit bean bag toy, comes with bean bag carrots                      |
    | RGAN01  | Raggedy Ann         | 18 inch Raggedy Ann doll                                              |
    | BR01    | 8 inch teddy bear   | 8 inch teddy bear, comes with cap and jacket                          |
    | BR02    | 12 inch teddy bear  | 12 inch teddy bear, comes with cap and jacket                         |
    | RYL01   | King doll           | 12 inch king doll with royal garments and crown                       |
    | RYL02   | Queen doll          | 12 inch queen doll with royal garments and crown                      |
    | BR03    | 18 inch teddy bear  | 18 inch teddy bear, comes with cap and jacket                         |
    +---------+---------------------+-----------------------------------------------------------------------+
    9 rows in set (0.00 sec)
    
    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> ORDER BY prod_price,prod_name DESC;
    +---------+---------------------+-----------------------------------------------------------------------+
    | prod_id | prod_name           | prod_desc                                                             |
    +---------+---------------------+-----------------------------------------------------------------------+
    | BNBG03  | Rabbit bean bag toy | Rabbit bean bag toy, comes with bean bag carrots                      |
    | BNBG01  | Fish bean bag toy   | Fish bean bag toy, complete with bean bag worms with which to feed it |
    | BNBG02  | Bird bean bag toy   | Bird bean bag toy, eggs are not included                              |
    | RGAN01  | Raggedy Ann         | 18 inch Raggedy Ann doll                                              |
    | BR01    | 8 inch teddy bear   | 8 inch teddy bear, comes with cap and jacket                          |
    | BR02    | 12 inch teddy bear  | 12 inch teddy bear, comes with cap and jacket                         |
    | RYL02   | Queen doll          | 12 inch queen doll with royal garments and crown                      |
    | RYL01   | King doll           | 12 inch king doll with royal garments and crown                       |
    | BR03    | 18 inch teddy bear  | 18 inch teddy bear, comes with cap and jacket                         |
    +---------+---------------------+-----------------------------------------------------------------------+

     高级一点的过滤查询,WHERE,ORDER,IN,NOT,AND,OR,BETWEEN,NULL:

    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> WHERE prod_price IS NULL;
    Empty set (0.00 sec)
    
    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> WHERE (vend_id <> 'DLL01' OR  prod_id LIKE 'BR%') AND prod_price BETWEEN 3 AND 10;
    +---------+--------------------+--------------------------------------------------+
    | prod_id | prod_name          | prod_desc                                        |
    +---------+--------------------+--------------------------------------------------+
    | BR01    | 8 inch teddy bear  | 8 inch teddy bear, comes with cap and jacket     |
    | BR02    | 12 inch teddy bear | 12 inch teddy bear, comes with cap and jacket    |
    | RYL01   | King doll          | 12 inch king doll with royal garments and crown  |
    | RYL02   | Queen doll         | 12 inch queen doll with royal garments and crown |
    +---------+--------------------+--------------------------------------------------+
    4 rows in set (0.00 sec)
    
    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> WHERE vend_id IN ('DLL01','BRS01')
        -> ORDER BY prod_name;
    +---------+---------------------+-----------------------------------------------------------------------+
    | prod_id | prod_name           | prod_desc                                                             |
    +---------+---------------------+-----------------------------------------------------------------------+
    | BR02    | 12 inch teddy bear  | 12 inch teddy bear, comes with cap and jacket                         |
    | BR03    | 18 inch teddy bear  | 18 inch teddy bear, comes with cap and jacket                         |
    | BR01    | 8 inch teddy bear   | 8 inch teddy bear, comes with cap and jacket                          |
    | BNBG02  | Bird bean bag toy   | Bird bean bag toy, eggs are not included                              |
    | BNBG01  | Fish bean bag toy   | Fish bean bag toy, complete with bean bag worms with which to feed it |
    | BNBG03  | Rabbit bean bag toy | Rabbit bean bag toy, comes with bean bag carrots                      |
    | RGAN01  | Raggedy Ann         | 18 inch Raggedy Ann doll                                              |
    +---------+---------------------+-----------------------------------------------------------------------+
    7 rows in set (0.00 sec)
    
    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> WHERE vend_id NOT IN ('DLL01','BRS01')
        -> ORDER BY prod_name;
    +---------+------------+--------------------------------------------------+
    | prod_id | prod_name  | prod_desc                                        |
    +---------+------------+--------------------------------------------------+
    | RYL01   | King doll  | 12 inch king doll with royal garments and crown  |
    | RYL02   | Queen doll | 12 inch queen doll with royal garments and crown |
    +---------+------------+--------------------------------------------------+
    2 rows in set (0.00 sec)

    通配符,%,_,[](实测MySQL我这里不支持。。。)

    不要过分使用通配符(和*一样)

    不要把通配符放在搜索的开始处

    mysql> SELECT prod_id,prod_name,prod_desc
        -> FROM products
        -> WHERE prod_name LIKE '__ inch teddy bear' OR prod_name LIKE 'Fish%';
    +---------+--------------------+-----------------------------------------------------------------------+
    | prod_id | prod_name          | prod_desc                                                             |
    +---------+--------------------+-----------------------------------------------------------------------+
    | BR02    | 12 inch teddy bear | 12 inch teddy bear, comes with cap and jacket                         |
    | BR03    | 18 inch teddy bear | 18 inch teddy bear, comes with cap and jacket                         |
    | BNBG01  | Fish bean bag toy  | Fish bean bag toy, complete with bean bag worms with which to feed it |
    +---------+--------------------+-----------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    
    mysql> SELECT *
        -> FROM customers;
    +------------+---------------+----------------------+-----------+------------+----------+--------------+--------------------+-----------------------+
    | cust_id    | cust_name     | cust_address         | cust_city | cust_state | cust_zip | cust_country | cust_contact       | cust_email            |
    +------------+---------------+----------------------+-----------+------------+----------+--------------+--------------------+-----------------------+
    | 1000000001 | Village Toys  | 200 Maple Lane       | Detroit   | MI         | 44444    | USA          | John Smith         | sales@villagetoys.com |
    | 1000000002 | Kids Place    | 333 South Lake Drive | Columbus  | OH         | 43333    | USA          | Michelle Green     | NULL                  |
    | 1000000003 | Fun4All       | 1 Sunny Place        | Muncie    | IN         | 42222    | USA          | Jim Jones          | jjones@fun4all.com    |
    | 1000000004 | Fun4All       | 829 Riverside Drive  | Phoenix   | AZ         | 88888    | USA          | Denise L. Stephens | dstephens@fun4all.com |
    | 1000000005 | The Toy Store | 4545 53rd Street     | Chicago   | IL         | 54545    | USA          | Kim Howard         | NULL                  |
    +------------+---------------+----------------------+-----------+------------+----------+--------------+--------------------+-----------------------+
    5 rows in set (0.00 sec)
    
    mysql> SELECT cust_contact
        -> FROM customers
        -> WHERE cust_contact LIKE '[JM]%'
        -> ORDER BY cust_id;
    Empty set (0.00 sec)
    
    mysql> SELECT cust_contact
        -> FROM customers
        -> WHERE cust_contact LIKE '[JM]%'
        -> ORDER BY cust_contact;
    Empty set (0.00 sec)
    
    mysql> SELECT cust_contact
        -> FROM customers
        -> WHERE cust_contact LIKE '[^JM]%'
        -> ORDER BY cust_contact;
    Empty set (0.00 sec)

    MySQL的计算字段:CONCAT(),+-*/,AS,TRIM()

    别个DB可能是+或者||,更好读??不是很懂,反正MySQL不得行

    mysql> SELECT vend_name + '('+vend_country+')'
        -> FROM vendors
        -> ORDER BY vend_name;
    +----------------------------------+
    | vend_name + '('+vend_country+')' |
    +----------------------------------+
    |                                0 |
    |                                0 |
    |                                0 |
    |                                0 |
    |                                0 |
    |                                0 |
    +----------------------------------+
    6 rows in set, 24 warnings (0.00 sec)
    
    mysql> SELECT vend_name + '|' + vend_country + '|'
        -> FROM vendors
        -> ORDER BY vend_name;
    +--------------------------------------+
    | vend_name + '|' + vend_country + '|' |
    +--------------------------------------+
    |                                    0 |
    |                                    0 |
    |                                    0 |
    |                                    0 |
    |                                    0 |
    |                                    0 |
    +--------------------------------------+
    6 rows in set, 24 warnings (0.00 sec)
    
    mysql> SELECT * FROM vendors;
    +---------+-----------------+-----------------+------------+------------+----------+--------------+
    | vend_id | vend_name       | vend_address    | vend_city  | vend_state | vend_zip | vend_country |
    +---------+-----------------+-----------------+------------+------------+----------+--------------+
    | BRS01   | Bears R Us      | 123 Main Street | Bear Town  | MI         | 44444    | USA          |
    | BRE02   | Bear Emporium   | 500 Park Street | Anytown    | OH         | 44333    | USA          |
    | DLL01   | Doll House Inc. | 555 High Street | Dollsville | CA         | 99999    | USA          |
    | FRB01   | Furball Inc.    | 1000 5th Avenue | New York   | NY         | 11111    | USA          |
    | FNG01   | Fun and Games   | 42 Galaxy Road  | London     | NULL       | N16 6PS  | England      |
    | JTS01   | Jouets et ours  | 1 Rue Amusement | Paris      | NULL       | 45678    | France       |
    +---------+-----------------+-----------------+------------+------------+----------+--------------+
    6 rows in set (0.00 sec)
    
    mysql> SELECT vend_name || ' ( '||vend_country || ' )  '
        -> FROM vendors
        -> ORDER BY vend_name;
    +--------------------------------------------+
    | vend_name || ' ( '||vend_country || ' )  ' |
    +--------------------------------------------+
    |                                          0 |
    |                                          0 |
    |                                          0 |
    |                                          0 |
    |                                          0 |
    |                                          0 |
    +--------------------------------------------+
    6 rows in set, 24 warnings (0.00 sec)
    
    mysql> SELECT CONCAT(vend_name,vend_country)
        -> FROM vendors
        -> ORDER BY vend_name;
    +--------------------------------+
    | CONCAT(vend_name,vend_country) |
    +--------------------------------+
    | Bear EmporiumUSA               |
    | Bears R UsUSA                  |
    | Doll House Inc.USA             |
    | Fun and GamesEngland           |
    | Furball Inc.USA                |
    | Jouets et oursFrance           |
    +--------------------------------+
    6 rows in set (0.00 sec)
    
    mysql> SELECT CONCAT(vend_name,'(',vend_country,')')
        -> FROM vendors
        -> ORDER BY vend_name;
    +----------------------------------------+
    | CONCAT(vend_name,'(',vend_country,')') |
    +----------------------------------------+
    | Bear Emporium(USA)                     |
    | Bears R Us(USA)                        |
    | Doll House Inc.(USA)                   |
    | Fun and Games(England)                 |
    | Furball Inc.(USA)                      |
    | Jouets et ours(France)                 |
    +----------------------------------------+
    6 rows in set (0.00 sec)
    
    mysql> SELECT vend_name,
        ->        CONCAT(vend_address,',',vend_city,',',vend_state,',',vend_country) AS VendorsInfo,
        ->        vend_zip
        -> FROM vendors
        -> ORDER BY vend_zip,vend_name DESC;
    +-----------------+-----------------------------------+----------+
    | vend_name       | VendorsInfo                       | vend_zip |
    +-----------------+-----------------------------------+----------+
    | Furball Inc.    | 1000 5th Avenue,New York,NY,USA   | 11111    |
    | Bear Emporium   | 500 Park Street,Anytown,OH,USA    | 44333    |
    | Bears R Us      | 123 Main Street,Bear Town,MI,USA  | 44444    |
    | Jouets et ours  | NULL                              | 45678    |
    | Doll House Inc. | 555 High Street,Dollsville,CA,USA | 99999    |
    | Fun and Games   | NULL                              | N16 6PS  |
    +-----------------+-----------------------------------+----------+
    6 rows in set (0.00 sec)
    
    mysql> SELECT prod_id,quantity,item_price,
        ->       quantity*item_price AS sum_price
        -> FROM orderitems
        -> WHERE order_num=20008;
    +---------+----------+------------+-----------+
    | prod_id | quantity | item_price | sum_price |
    +---------+----------+------------+-----------+
    | RGAN01  |        5 |       4.99 |     24.95 |
    | BR03    |        5 |      11.99 |     59.95 |
    | BNBG01  |       10 |       3.49 |     34.90 |
    | BNBG02  |       10 |       3.49 |     34.90 |
    | BNBG03  |       10 |       3.49 |     34.90 |
    +---------+----------+------------+-----------+
    5 rows in set (0.00 sec)

    使用数据处理函数:CURDATE(),YEAR(),UPPER(),TRIM(),ABS()

    不同的DBMS的函数不是很一样,所以,使用函数的SQL代码移植性不好,如果一定要用,记得写清楚注释:

    mysql> SELECT CONCAT(prod_name,'+',CURDATE())
        -> FROM products;
    +---------------------------------+
    | CONCAT(prod_name,'+',CURDATE()) |
    +---------------------------------+
    | 8 inch teddy bear+2016-08-04    |
    | 12 inch teddy bear+2016-08-04   |
    | 18 inch teddy bear+2016-08-04   |
    | Fish bean bag toy+2016-08-04    |
    | Bird bean bag toy+2016-08-04    |
    | Rabbit bean bag toy+2016-08-04  |
    | Raggedy Ann+2016-08-04          |
    | King doll+2016-08-04            |
    | Queen doll+2016-08-04           |
    +---------------------------------+
    9 rows in set (0.00 sec)
    
    mysql> SELECT order_num
        -> FROM orders
        -> WHERE YEAR(order_date)=2004;
    +-----------+
    | order_num |
    +-----------+
    |     20005 |
    |     20006 |
    |     20007 |
    |     20008 |
    |     20009 |
    +-----------+
    5 rows in set (0.00 sec)
    
    mysql> SELECT UPPER(price_name) AS Name,prod_price
        -> FROM products
        -> ORDER BY prod_name;
    ERROR 1054 (42S22): Unknown column 'price_name' in 'field list'
    mysql> SELECT UPPER(prod_name) AS Name,prod_price
        -> FROM products
        -> ORDER BY prod_name;
    +---------------------+------------+
    | Name                | prod_price |
    +---------------------+------------+
    | 12 INCH TEDDY BEAR  |       8.99 |
    | 18 INCH TEDDY BEAR  |      11.99 |
    | 8 INCH TEDDY BEAR   |       5.99 |
    | BIRD BEAN BAG TOY   |       3.49 |
    | FISH BEAN BAG TOY   |       3.49 |
    | KING DOLL           |       9.49 |
    | QUEEN DOLL          |       9.49 |
    | RABBIT BEAN BAG TOY |       3.49 |
    | RAGGEDY ANN         |       4.99 |
    +---------------------+------------+
    9 rows in set (0.00 sec)

    聚集函数:COUNT(),AVG(),MAX(),MIN(),SUM():

    mysql> SELECT UPPER(prod_name) AS P_Name,AVG(prod_price) AS P_Price
        -> FROM products
        -> WHERE prod_price BETWEEN 2 AND 10;
    +-------------------+----------+
    | P_Name            | P_Price  |
    +-------------------+----------+
    | 8 INCH TEDDY BEAR | 6.177500 |
    +-------------------+----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT UPPER(prod_name) AS P_Name,AVG(prod_price) AS P_Price
        -> FROM products;
    +-------------------+----------+
    | P_Name            | P_Price  |
    +-------------------+----------+
    | 8 INCH TEDDY BEAR | 6.823333 |
    +-------------------+----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT AVG(prod_price) AS P_Price
        -> FROM products;
    +----------+
    | P_Price  |
    +----------+
    | 6.823333 |
    +----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT COUNT(*) AS num_cust
        -> FROM customers;
    +----------+
    | num_cust |
    +----------+
    |        5 |
    +----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT COUNT(*) AS Items,
        ->        AVG(DISTINCT prod_price) AS price_avg,
        ->        MAX(prod_price) AS price_max,
        ->        MIN(prod_price) AS price_min
        -> FROM products;
    +-------+-----------+-----------+-----------+
    | Items | price_avg | price_max | price_min |
    +-------+-----------+-----------+-----------+
    |     9 |  7.490000 |     11.99 |      3.49 |
    +-------+-----------+-----------+-----------+
    1 row in set (0.00 sec)

    分组:GROUP BY,HAVING;注意各种语句的顺序问题SELECT->FROM->WHERE->GROUP BY->HAVING->ORDER BY

     mysql> SELECT prod_name,COUNT(*) AS num_prod 
    -> FROM products -> GROUP BY vend_id; +-------------------+----------+ | prod_name | num_prod | +-------------------+----------+ | 8 inch teddy bear | 3 | | Fish bean bag toy | 4 | | King doll | 2 | +-------------------+----------+ 3 rows in set (0.00 sec) mysql> SELECT prod_price,COUNT(*) AS num_price -> FROM products -> GROUP BY prod_price; +------------+-----------+ | prod_price | num_price | +------------+-----------+ | 3.49 | 3 | | 4.99 | 1 | | 5.99 | 1 | | 8.99 | 1 | | 9.49 | 2 | | 11.99 | 1 | +------------+-----------+ 6 rows in set (0.00 sec) mysql> SELECT prod_price,COUNT(*) AS num_price -> FROM products -> GROUP BY prod_price -> HAVING COUNT(*)>=2 -> ORDER BY prod_price DESC; +------------+-----------+ | prod_price | num_price | +------------+-----------+ | 9.49 | 2 | | 3.49 | 3 | +------------+-----------+ 2 rows in set (0.00 sec) mysql> SELECT prod_name,COUNT(*) AS num_prod -> FROM products -> WHERE prod_price>=3 -> GROUP BY prod_name -> HAVING COUNT(*)>=2 -> ORDER BY prod_price DESC; Empty set (0.00 sec) mysql> SELECT prod_name,prod_price,COUNT(*) AS num_prod -> FROM products -> GROUP BY prod_name; +---------------------+------------+----------+ | prod_name | prod_price | num_prod | +---------------------+------------+----------+ | 12 inch teddy bear | 8.99 | 1 | | 18 inch teddy bear | 11.99 | 1 | | 8 inch teddy bear | 5.99 | 1 | | Bird bean bag toy | 3.49 | 1 | | Fish bean bag toy | 3.49 | 1 | | King doll | 9.49 | 1 | | Queen doll | 9.49 | 1 | | Rabbit bean bag toy | 3.49 | 1 | | Raggedy Ann | 4.99 | 1 | +---------------------+------------+----------+ 9 rows in set (0.00 sec) mysql> SELECT prod_name,prod_price,COUNT(*) AS num_prod -> FROM products -> GROUP BY prod_price; +--------------------+------------+----------+ | prod_name | prod_price | num_prod | +--------------------+------------+----------+ | Fish bean bag toy | 3.49 | 3 | | Raggedy Ann | 4.99 | 1 | | 8 inch teddy bear | 5.99 | 1 | | 12 inch teddy bear | 8.99 | 1 | | King doll | 9.49 | 2 | | 18 inch teddy bear | 11.99 | 1 | +--------------------+------------+----------+ 6 rows in set (0.00 sec)

    11-使用子查询:始终记得由内向外,由特殊到一般

    mysql> SELECT order_num
        -> FROM orderitems
        -> WHERE prod_id='RGAN01';
    +-----------+
    | order_num |
    +-----------+
    |     20007 |
    |     20008 |
    +-----------+
    2 rows in set (0.04 sec)
    
    mysql> SELECT cust_id
        -> FROM orders
        -> WHERE order_num IN (20007,20008);
    +------------+
    | cust_id    |
    +------------+
    | 1000000004 |
    | 1000000005 |
    +------------+
    2 rows in set (0.02 sec)
    
    mysql> SELECT cust_id
        -> FROM orders
        -> WHERE order_num IN(SELECT order_num)
        ->                  ;
    +------------+
    | cust_id    |
    +------------+
    | 1000000001 |
    | 1000000001 |
    | 1000000003 |
    | 1000000004 |
    | 1000000005 |
    +------------+
    5 rows in set (0.03 sec)
    
    mysql> SELECT cust_id
        -> FROM orders
        -> WHERE order_num IN(SELECT order_num
        ->                    FROM orderitems
        ->                    WHERE prod_id='RGAN01');
    +------------+
    | cust_id    |
    +------------+
    | 1000000004 |
    | 1000000005 |
    +------------+
    2 rows in set (0.00 sec)
    
    mysql> SELECT COUNT(*)
        -> FROM orders
        -> WHERE cust_id='1000000001';
    +----------+
    | COUNT(*) |
    +----------+
    |        2 |
    +----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT cust_name,cust_state,
        ->       (SELECT COUNT(*)
        ->        FROM orders
        ->        WHERE orders.cust_id=customers.cust_id) AS orders
        -> FROM customers
        -> ORDER BY cust_name;
    +---------------+------------+--------+
    | cust_name     | cust_state | orders |
    +---------------+------------+--------+
    | Fun4All       | IN         |      1 |
    | Fun4All       | AZ         |      1 |
    | Kids Place    | OH         |      0 |
    | The Toy Store | IL         |      1 |
    | Village Toys  | MI         |      2 |
    +---------------+------------+--------+
    5 rows in set (0.00 sec)
    
    mysql> SELECT cust_name,cust_state,
        ->       (SELECT COUNT(*)
        ->        FROM orders
        ->        WHERE cust_id=cust_id) AS orders
        -> FROM customers
        -> ORDER BY cust_name;
    +---------------+------------+--------+
    | cust_name     | cust_state | orders |
    +---------------+------------+--------+
    | Fun4All       | IN         |      5 |
    | Fun4All       | AZ         |      5 |
    | Kids Place    | OH         |      5 |
    | The Toy Store | IL         |      5 |
    | Village Toys  | MI         |      5 |
    +---------------+------------+--------+
    5 rows in set (0.00 sec)

    12-联结表:注意和子查询的关系,INNER JOIN

    mysql> SELECT vend_name,prod_name,prod_price
        -> FROM vendors,products
        -> WHERE vendors.vend_id=products.vend_id;
    +-----------------+---------------------+------------+
    | vend_name       | prod_name           | prod_price |
    +-----------------+---------------------+------------+
    | Bears R Us      | 8 inch teddy bear   |       5.99 |
    | Bears R Us      | 12 inch teddy bear  |       8.99 |
    | Bears R Us      | 18 inch teddy bear  |      11.99 |
    | Doll House Inc. | Fish bean bag toy   |       3.49 |
    | Doll House Inc. | Bird bean bag toy   |       3.49 |
    | Doll House Inc. | Rabbit bean bag toy |       3.49 |
    | Doll House Inc. | Raggedy Ann         |       4.99 |
    | Fun and Games   | King doll           |       9.49 |
    | Fun and Games   | Queen doll          |       9.49 |
    +-----------------+---------------------+------------+
    9 rows in set (0.00 sec)
    
    mysql> SELECT vend_name,prod_name,prod_price
        -> FROM vendors,products;
    +-----------------+---------------------+------------+
    | vend_name       | prod_name           | prod_price |
    +-----------------+---------------------+------------+
    | Bear Emporium   | Fish bean bag toy   |       3.49 |
    | Bears R Us      | Fish bean bag toy   |       3.49 |
    | Doll House Inc. | Fish bean bag toy   |       3.49 |
    | Fun and Games   | Fish bean bag toy   |       3.49 |
    | Furball Inc.    | Fish bean bag toy   |       3.49 |
    | Jouets et ours  | Fish bean bag toy   |       3.49 |
    | Bear Emporium   | Bird bean bag toy   |       3.49 |
    | Bears R Us      | Bird bean bag toy   |       3.49 |
    | Doll House Inc. | Bird bean bag toy   |       3.49 |
    | Fun and Games   | Bird bean bag toy   |       3.49 |
    | Furball Inc.    | Bird bean bag toy   |       3.49 |
    | Jouets et ours  | Bird bean bag toy   |       3.49 |
    | Bear Emporium   | Rabbit bean bag toy |       3.49 |
    | Bears R Us      | Rabbit bean bag toy |       3.49 |
    | Doll House Inc. | Rabbit bean bag toy |       3.49 |
    | Fun and Games   | Rabbit bean bag toy |       3.49 |
    | Furball Inc.    | Rabbit bean bag toy |       3.49 |
    | Jouets et ours  | Rabbit bean bag toy |       3.49 |
    | Bear Emporium   | 8 inch teddy bear   |       5.99 |
    | Bears R Us      | 8 inch teddy bear   |       5.99 |
    | Doll House Inc. | 8 inch teddy bear   |       5.99 |
    | Fun and Games   | 8 inch teddy bear   |       5.99 |
    | Furball Inc.    | 8 inch teddy bear   |       5.99 |
    | Jouets et ours  | 8 inch teddy bear   |       5.99 |
    | Bear Emporium   | 12 inch teddy bear  |       8.99 |
    | Bears R Us      | 12 inch teddy bear  |       8.99 |
    | Doll House Inc. | 12 inch teddy bear  |       8.99 |
    | Fun and Games   | 12 inch teddy bear  |       8.99 |
    | Furball Inc.    | 12 inch teddy bear  |       8.99 |
    | Jouets et ours  | 12 inch teddy bear  |       8.99 |
    | Bear Emporium   | 18 inch teddy bear  |      11.99 |
    | Bears R Us      | 18 inch teddy bear  |      11.99 |
    | Doll House Inc. | 18 inch teddy bear  |      11.99 |
    | Fun and Games   | 18 inch teddy bear  |      11.99 |
    | Furball Inc.    | 18 inch teddy bear  |      11.99 |
    | Jouets et ours  | 18 inch teddy bear  |      11.99 |
    | Bear Emporium   | Raggedy Ann         |       4.99 |
    | Bears R Us      | Raggedy Ann         |       4.99 |
    | Doll House Inc. | Raggedy Ann         |       4.99 |
    | Fun and Games   | Raggedy Ann         |       4.99 |
    | Furball Inc.    | Raggedy Ann         |       4.99 |
    | Jouets et ours  | Raggedy Ann         |       4.99 |
    | Bear Emporium   | King doll           |       9.49 |
    | Bears R Us      | King doll           |       9.49 |
    | Doll House Inc. | King doll           |       9.49 |
    | Fun and Games   | King doll           |       9.49 |
    | Furball Inc.    | King doll           |       9.49 |
    | Jouets et ours  | King doll           |       9.49 |
    | Bear Emporium   | Queen doll          |       9.49 |
    | Bears R Us      | Queen doll          |       9.49 |
    | Doll House Inc. | Queen doll          |       9.49 |
    | Fun and Games   | Queen doll          |       9.49 |
    | Furball Inc.    | Queen doll          |       9.49 |
    | Jouets et ours  | Queen doll          |       9.49 |
    +-----------------+---------------------+------------+
    54 rows in set (0.03 sec)
    
    mysql> SELECT vend_name,prod_name,prod_price
        -> FROM vendors INNER JOIN products
        ->   ON vendors.vend_id=products.vend_id;
    +-----------------+---------------------+------------+
    | vend_name       | prod_name           | prod_price |
    +-----------------+---------------------+------------+
    | Bears R Us      | 8 inch teddy bear   |       5.99 |
    | Bears R Us      | 12 inch teddy bear  |       8.99 |
    | Bears R Us      | 18 inch teddy bear  |      11.99 |
    | Doll House Inc. | Fish bean bag toy   |       3.49 |
    | Doll House Inc. | Bird bean bag toy   |       3.49 |
    | Doll House Inc. | Rabbit bean bag toy |       3.49 |
    | Doll House Inc. | Raggedy Ann         |       4.99 |
    | Fun and Games   | King doll           |       9.49 |
    | Fun and Games   | Queen doll          |       9.49 |
    +-----------------+---------------------+------------+
    9 rows in set (0.00 sec)
    
    mysql> SELECT cust_name,cust_contact
        -> FROM customers,orders,orderitems
        -> WHERE orders.cust_id=customers.cust_id
        ->   AND orderitems.order_num=customers.order_num
        ->   AND prod_id='RGAN01';
    ERROR 1054 (42S22): Unknown column 'customers.order_num' in 'where clause'
    mysql> SELECT cust_name,cust_contact
        -> FROM customers,orders,orderitems
        -> WHERE orders.cust_id=customers.cust_id
        ->   AND orderitems.order_num=orders.order_num
        ->   AND prod_id='RGAN01';
    +---------------+--------------------+
    | cust_name     | cust_contact       |
    +---------------+--------------------+
    | Fun4All       | Denise L. Stephens |
    | The Toy Store | Kim Howard         |
    +---------------+--------------------+
    2 rows in set (0.00 sec)
    
    mysql> SELECT cust_name,cust_contact
        -> FROM customers
        -> WHERE cust_id IN (SELECT cust_id
        ->   FROM orders
        ->   WHERE order_num IN (SELECT order_num
        ->     FROM orderitems
        ->     WHERE prod_id='RGAN01'));
    +---------------+--------------------+
    | cust_name     | cust_contact       |
    +---------------+--------------------+
    | Fun4All       | Denise L. Stephens |
    | The Toy Store | Kim Howard         |
    +---------------+--------------------+
    2 rows in set (0.00 sec)

    13-高级联结:表别名(防止歧义),自联结,INNER JOIN,LEFT/RIGHT JOIN(需要那些没有关联行的行)(PS.MySQL中好像没有FULL OUTER JOIN和*=表示)

    mysql> SELECT C.cust_id,C.cust_name,COUNT(*)
        -> FROM customers AS C,orders AS O
        -> WHERE C.cust_id=O.cust_id;
    +------------+--------------+----------+
    | cust_id    | cust_name    | COUNT(*) |
    +------------+--------------+----------+
    | 1000000001 | Village Toys |        5 |
    +------------+--------------+----------+
    1 row in set (0.02 sec)
    
    mysql> SELECT C.cust_id,C.cust_name,COUNT(*)
        -> FROM customers AS C,orders AS O
        -> WHERE C.cust_id=O.cust_id
        -> GROUP BY O.cust_name;
    ERROR 1054 (42S22): Unknown column 'O.cust_name' in 'group statement'
    mysql> SELECT C.cust_id,C.cust_name,COUNT(*)
        -> FROM customers AS C,orders AS O
        -> WHERE C.cust_id=O.cust_id
        -> GROUP BY O.cust_id;
    +------------+---------------+----------+
    | cust_id    | cust_name     | COUNT(*) |
    +------------+---------------+----------+
    | 1000000001 | Village Toys  |        2 |
    | 1000000003 | Fun4All       |        1 |
    | 1000000004 | Fun4All       |        1 |
    | 1000000005 | The Toy Store |        1 |
    +------------+---------------+----------+
    4 rows in set (0.00 sec)
    
    mysql> SELECT prod_id,prod_name,COUNT(*)
        -> FROM products;
    +---------+-------------------+----------+
    | prod_id | prod_name         | COUNT(*) |
    +---------+-------------------+----------+
    | BNBG01  | Fish bean bag toy |        9 |
    +---------+-------------------+----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT prod_id,prod_name,COUNT(*)
        -> FROM products
        -> GROUP BY prod_name;
    +---------+---------------------+----------+
    | prod_id | prod_name           | COUNT(*) |
    +---------+---------------------+----------+
    | BR02    | 12 inch teddy bear  |        1 |
    | BR03    | 18 inch teddy bear  |        1 |
    | BR01    | 8 inch teddy bear   |        1 |
    | BNBG02  | Bird bean bag toy   |        1 |
    | BNBG01  | Fish bean bag toy   |        1 |
    | RYL01   | King doll           |        1 |
    | RYL02   | Queen doll          |        1 |
    | BNBG03  | Rabbit bean bag toy |        1 |
    | RGAN01  | Raggedy Ann         |        1 |
    +---------+---------------------+----------+
    9 rows in set (0.00 sec)
    
    mysql> SELECT P.prod_id,P.prod_name,COUNT(*)
        -> FROM products,orderitems
        -> WHERE orderitems.prod_id=products.prod_id
        -> GROUP BY prod_name
        -> ORDER BY prod_id;
    ERROR 1054 (42S22): Unknown column 'P.prod_id' in 'field list'
    mysql> SELECT P.prod_id,P.prod_name,COUNT(*)
        -> FROM products AS P,orderitems AS O
        -> WHERE orderitems.prod_id=products.prod_id
        -> GROUP BY prod_name
        -> ORDER BY prod_id;
    ERROR 1054 (42S22): Unknown column 'orderitems.prod_id' in 'where clause'
    mysql> SELECT P.prod_id,P.prod_name,COUNT(*)
        -> FROM products AS P,orderitems AS O
        -> WHERE O.prod_id=P.prod_id
        -> GROUP BY P.prod_name
        -> ORDER BY P.prod_id;
    +---------+---------------------+----------+
    | prod_id | prod_name           | COUNT(*) |
    +---------+---------------------+----------+
    | BNBG01  | Fish bean bag toy   |        3 |
    | BNBG02  | Bird bean bag toy   |        3 |
    | BNBG03  | Rabbit bean bag toy |        3 |
    | BR01    | 8 inch teddy bear   |        2 |
    | BR02    | 12 inch teddy bear  |        1 |
    | BR03    | 18 inch teddy bear  |        4 |
    | RGAN01  | Raggedy Ann         |        2 |
    +---------+---------------------+----------+
    7 rows in set (0.00 sec)
    
    mysql> SELECT P.prod_id,P.prod_name,SUM(O.quantity)
        -> FROM products AS P,orderitems AS O
        -> WHERE O.prod_id=P.prod_id
        -> GROUP BY P.prod_name
        -> ORDER BY P.prod_id;
    +---------+---------------------+-----------------+
    | prod_id | prod_name           | SUM(O.quantity) |
    +---------+---------------------+-----------------+
    | BNBG01  | Fish bean bag toy   |             360 |
    | BNBG02  | Bird bean bag toy   |             360 |
    | BNBG03  | Rabbit bean bag toy |             360 |
    | BR01    | 8 inch teddy bear   |             120 |
    | BR02    | 12 inch teddy bear  |              10 |
    | BR03    | 18 inch teddy bear  |             165 |
    | RGAN01  | Raggedy Ann         |              55 |
    +---------+---------------------+-----------------+
    7 rows in set (0.00 sec)
    
    mysql> SELECT C.cust_id,O.order_num
        -> FROM customers AS C,orders AS O
        -> ;
    +------------+-----------+
    | cust_id    | order_num |
    +------------+-----------+
    | 1000000001 |     20005 |
    | 1000000002 |     20005 |
    | 1000000003 |     20005 |
    | 1000000004 |     20005 |
    | 1000000005 |     20005 |
    | 1000000001 |     20009 |
    | 1000000002 |     20009 |
    | 1000000003 |     20009 |
    | 1000000004 |     20009 |
    | 1000000005 |     20009 |
    | 1000000001 |     20006 |
    | 1000000002 |     20006 |
    | 1000000003 |     20006 |
    | 1000000004 |     20006 |
    | 1000000005 |     20006 |
    | 1000000001 |     20007 |
    | 1000000002 |     20007 |
    | 1000000003 |     20007 |
    | 1000000004 |     20007 |
    | 1000000005 |     20007 |
    | 1000000001 |     20008 |
    | 1000000002 |     20008 |
    | 1000000003 |     20008 |
    | 1000000004 |     20008 |
    | 1000000005 |     20008 |
    +------------+-----------+
    25 rows in set (0.00 sec)
    
    mysql> SELECT C.cust_id,O.order_num
        -> FROM customers AS C LEFT OUTER JOIN orders AS O
        ->   ON C.cust_id=O.cust_id;
    +------------+-----------+
    | cust_id    | order_num |
    +------------+-----------+
    | 1000000001 |     20005 |
    | 1000000001 |     20009 |
    | 1000000002 |      NULL |
    | 1000000003 |     20006 |
    | 1000000004 |     20007 |
    | 1000000005 |     20008 |
    +------------+-----------+
    6 rows in set (0.00 sec)
    
    mysql> SELECT C.cust_id,O.order_num
        -> FROM customers AS C RIGHT OUTER JOIN orders AS O
        ->   ON C.cust_id=O.cust_id;
    +------------+-----------+
    | cust_id    | order_num |
    +------------+-----------+
    | 1000000001 |     20005 |
    | 1000000001 |     20009 |
    | 1000000003 |     20006 |
    | 1000000004 |     20007 |
    | 1000000005 |     20008 |
    +------------+-----------+
    5 rows in set (0.00 sec)
    
    mysql> SELECT C.cust_id,O.cust_id
        -> FROM customers AS C,orders AS O
        -> WHERE C.cust_id *= O.cust_id;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= O.cust_id' at line 3
    mysql> SELECT C.cust_id,O.order_num
        -> FROM customers AS C FULL OUTER JOIN orders AS O
        ->   ON C.cust_id=O.cust_id;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL OUTER JOIN orders AS O
      ON C.cust_id=O.cust_id' at line 2
    mysql> SELECT C.cust_id,O.order_num
        -> FROM customers AS C LEFT OUTER JOIN orders AS O
        ->   ON C.cust_id=O.cust_id;
    +------------+-----------+
    | cust_id    | order_num |
    +------------+-----------+
    | 1000000001 |     20005 |
    | 1000000001 |     20009 |
    | 1000000002 |      NULL |
    | 1000000003 |     20006 |
    | 1000000004 |     20007 |
    | 1000000005 |     20008 |
    +------------+-----------+
    6 rows in set (0.00 sec)
    
    mysql>  SELECT P.prod_id,P.prod_name,SUM(O.quantity)
        ->     -> FROM products AS P,orderitems AS O
        ->     -> WHERE O.prod_id=P.prod_id
        ->     -> GROUP BY P.prod_name
        ->     -> ORDER BY P.prod_id;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '> FROM products AS P,orderitems AS O
        -> WHERE O.prod_id=P.prod_id
        -> GRO' at line 2
    mysql> SELECT P.prod_id,P.prod_name,SUM(O.quantity)
        -> FROM products AS P LEFT OUTER JOIN orderitems AS O
        ->   ON O.prod_id=P.prod_id
        -> GROUP BY P.prod_name
        -> ORDER BY P.prod_id;
    +---------+---------------------+-----------------+
    | prod_id | prod_name           | SUM(O.quantity) |
    +---------+---------------------+-----------------+
    | BNBG01  | Fish bean bag toy   |             360 |
    | BNBG02  | Bird bean bag toy   |             360 |
    | BNBG03  | Rabbit bean bag toy |             360 |
    | BR01    | 8 inch teddy bear   |             120 |
    | BR02    | 12 inch teddy bear  |              10 |
    | BR03    | 18 inch teddy bear  |             165 |
    | RGAN01  | Raggedy Ann         |              55 |
    | RYL01   | King doll           |            NULL |
    | RYL02   | Queen doll          |            NULL |
    +---------+---------------------+-----------------+
    9 rows in set (0.00 sec)
  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/andy1202go/p/5737144.html
Copyright © 2011-2022 走看看