编写 SELECT 语句 / 单个表的 SELECT 语句 |
之前的章节显示了如何选择和排序表中所有的数据。然而,您经常希望看到的是一个或多个特定列的数据。并且,公式是使用 Projection 和 FROM 子句指定列和表,并可以使用 ORDER BY 子句按照升序或降序对数据进行排序。
图: 查询
SELECT customer_num FROM orders;
图: 查询结果
customer_num 104 101 104 ⋮ 122 123 124 126 127
输出包括若干重复,原因是某些客户下了多个订单。有时您想要在投影中看到重复的行。而有时您却只想看到特异值,而不是每个值都出的频率。
图: 查询
SELECT DISTINCT customer_num FROM orders; SELECT UNIQUE customer_num FROM orders;
图: 查询结果
customer_num 101 104 106 110 111 112 115 116 117 119 120 121 122 123 124 126 127
图: 查询
SELECT po_num FROM orders;
图: 查询结果
po_num B77836 9270 B77890 8006 2865 Q13557 278693 ⋮
图: 查询
SELECT po_num FROM orders ORDER BY po_num;
图: 查询结果
po_num 278693 278701 2865 429Q 4745 8006 8052 9270 B77836 B77890 ⋮
图: 查询
SELECT ship_date, order_date, customer_num, order_num, po_num FROM orders ORDER BY order_date, ship_date;
图: 查询结果
ship_date order_date customer_num order_num po_num 06/01/1998 05/20/1998 104 1001 B77836 05/26/1998 05/21/1998 101 1002 9270 05/23/1998 05/22/1998 104 1003 B77890 05/30/1998 05/22/1998 106 1004 8006 06/09/1998 05/24/1998 116 1005 2865 05/30/1998 112 1006 Q13557 06/05/1998 05/31/1998 117 1007 278693 07/06/1998 06/07/1998 110 1008 LZ230 06/21/1998 06/14/1998 111 1009 4745 06/29/1998 06/17/1998 115 1010 429Q 06/29/1998 06/18/1998 117 1012 278701 07/03/1998 06/18/1998 104 1011 B77897 07/10/1998 06/22/1998 104 1013 B77930 07/03/1998 06/25/1998 106 1014 8052 07/16/1998 06/27/1998 110 1015 MA003 07/12/1998 06/29/1998 119 1016 PC6782 07/13/1998 07/09/1998 120 1017 DM354331 07/13/1998 07/10/1998 121 1018 S22942 07/16/1998 07/11/1998 122 1019 Z55709 07/16/1998 07/11/1998 123 1020 W2286 07/25/1998 07/23/1998 124 1021 C3288 07/30/1998 07/24/1998 126 1022 W9925 07/30/1998 07/24/1998 127 1023 KF2961
图: 查询
SELECT customer_num, order_num, po_num, order_date FROM orders ORDER BY 4, 1; SELECT customer_num, order_num, po_num, order_date FROM orders ORDER BY order_date, customer_num;
图: 查询结果
customer_num order_num po_num order_date 104 1001 B77836 05/20/1998 101 1002 9270 05/21/1998 104 1003 B77890 05/22/1998 106 1004 8006 05/22/1998 116 1005 2865 05/24/1998 112 1006 Q13557 05/30/1998 117 1007 278693 05/31/1998 110 1008 LZ230 06/07/1998 111 1009 4745 06/14/1998 115 1010 429Q 06/17/1998 104 1011 B77897 06/18/1998 117 1012 278701 06/18/1998 104 1013 B77930 06/22/1998 106 1014 8052 06/25/1998 110 1015 MA003 06/27/1998 119 1016 PC6782 06/29/1998 120 1017 DM354331 07/09/1998 121 1018 S22942 07/10/1998 122 1019 Z55709 07/11/1998 123 1020 W2286 07/11/1998 124 1021 C3288 07/23/1998 126 1022 W9925 07/24/1998 127 1023 KF2961 07/24/1998
图: 查询
SELECT customer_num, order_num, po_num, order_date FROM orders ORDER BY 4 DESC, 1;
在此示例中,数据先按 order_date 以降序排序再按 customer_num 以升序排序。