Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

SQL SERVER T-SQL

-
-

2012


........................................................................................................................................3
.......................................................................................4
...................................................................................................4
..........................................................4
.......................................................................................................4
..............................................................................................4
.........................................................................................6
.........................................................................6
SQL .............................................................................................9
................................................................................................9
..........................................................................10
.....................................................10
..................................................11
.............................................................................................12
.................................................................................................................................14


Microsoft SQL Server T-SQL Ben Forta
(15. Creating Advanced Joins)
(16. Combining Queries).

,
.
SQL .

1.
Microsoft SQL Server
. SQL Server ,
.
SQL Server T SQL,
.
,
.
,
.
, SQL
(UNION). ,
, UNION,
.

2.
2.1.

:
SELECT RTrim(vend_name) + ( + RTrim(vend_country) + ) AS
vend_title
FROM vendors
ORDER BY vend_name;
SQL . 2
:
- SQL .
- SELECT .
SELECT :
SELECT cust_name, cust_contact
FROM customers AS c, orders AS o, orderitems AS oi
WHERE c.cust_id = o.cust_id
AND oi.order_num = o.order_num
AND prod_id = TNT2;
FROM .
Customers AS c, customers.
customers c.
WHERE . SELECT
, ORDER BY .
:
* e .
.

2.2.

,
SELECT .
(ID DTNTR)

. DTNTR
.

SELECT prod_id, prod_name


FROM products
WHERE vend_id = (SELECT vend_id
FROM products
WHERE prod_id = DTNTR);
:
prod_id prod_name
---------- -------------------DTNTR Detonator
FB Bird seed
FC Carrots
SAFE Safe
SLING Sling
TNT1 TNT (1 stick)
TNT2 TNT (5 sticks)
. SELECT vend_id
DTNTR. ID WHERE
, .
:
SELECT p1.prod_id, p1.prod_name
FROM products AS p1, products AS p2
WHERE p1.vend_id = p2.vend_id
AND p2.prod_id = DTNTR;
:
prod_id prod_name
---------- -------------------DTNTR Detonator
FB Bird seed
FC Carrots
SAFE Safe
SLING Sling
TNT1 TNT (1 stick)
TNT2 TNT (5 sticks)
,
products FROM . ,
products SQL
products .
.
products 1, 2.
. SELECT p1
. WHERE (vend_id 1 vend_id

2) prod_id ,
.
:
* .
, .

,
. ,
. ,
.

. (SELECT *)
.
SELECT c.*, o.order_num, o.order_date,
oi.prod_id, oi.quantity, OI.item_price
FROM customers AS c, orders AS o, orderitems AS oi
WHERE c.cust_id = o.cust_id
AND oi.order_num = o.order_num
AND prod_id = FB;
.
.
,
.


.
. :
,
.
,
.
,
.
,
.
.
SELECT .
.

SELECT customers.cust_id, orders.order_num


FROM customers INNER JOIN orders
ON customers.cust_id = orders.cust_id;
. ,
:
SELECT customers.cust_id, orders.order_num
FROM customers LEFT OUTER JOIN orders
ON customers.cust_id = orders.cust_id;
:
cust_id order_num
----------- ----------10001 20005
10001 20009
10002 NULL
10003 20006
10004 20007
10005 20008
, SELECT OUTER
JOIN . ,
.
RIGHT LEFT
(RIGHT
OUTER JOIN, LEFT ).
LEFT OUTER JOIN
FROM ( customers).
RIGHT OUTER JOIN:
SELECT customers.cust_id, orders.order_num
FROM customers RIGHT OUTER JOIN orders
ON orders.cust_id = customers.cust_id;
:
* :
. .

FROM WHERE .
* :
WHERE INNER JOIN .
OUTER JOIN , WHERE .
WHERE :

SELECT customers.cust_id, orders.order_num


FROM customers, orders
WHERE customers.cust_id *= orders.cust_id;
*= SQL
(customers, * customers),
orders. *= ,
=* .
NSI
SQL . in SQL Server 6.x, SQL Server 7, and SQL Server
2000, a SQL Server 2005.
WHERE .
:
* .
FULL OUTER JOIN ,
. FULL OUTER JOIN
.

2.3.

.
.

Count():
SELECT customers.cust_name,
customers.cust_id,
Count(orders.order_num) AS num_ord
FROM customers INNER JOIN orders
ON customers.cust_id = orders.cust_id
GROUP BY customers.cust_name,
customers.cust_id;
:
cust_name cust_id num_ord
----------------------- ----------- ----------Coyote Inc. 10001 2
Wascals 10003 1
Yosemite Place 10004 1
E Fudd 10005 1
SELECT INNER JOIN customers &
orders. GROUP BY o customer,

Count (orders.order_num)
num_ord.
:
SELECT customers.cust_name,
customers.cust_id,
Count(orders.order_num) AS num_ord
FROM customers LEFT OUTER JOIN orders
ON customers.cust_id = orders.cust_id
GROUP BY customers.cust_name,
customers.cust_id;
:
cust_name cust_id num_ord
----------------------- ----------- ----------Coyote Inc. 10001 2
Mouse House 10002 0
Wascals 10003 1
Yosemite Place 10004 1
E Fudd 10005 1

(customers) (orders).
Mouse House .
:
* ,
: Null value is eliminated by an aggregate other SET operation.
O ,
Mouse House NULL .
Count() NULL 0.

3.
3.1.

SQL SQL
. -SQL
. .
:
- .
-
.

:
* 2
WHERE . SELECT WHERE
.
.

3.2.

SQL (UNION).
UNION SELECT
.

UNION . ,
SELECT UNION . ,
5 .
1001 1002 .
WHERE ,
UNION:
1:
SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price <= 5;
2:
vend_id prod_id prod_price
----------- ---------- ---------1003 FC 2.50
1002 FU1 3.42
1003 SLING 4.49
1003 TNT1 2.50
2:
SELECT vend_id, prod_id, prod_price
FROM products
WHERE vend_id IN (1001,1002);
2:
vend_id prod_id prod_price
----------- ---------- ---------1001 ANV01 5.99
1001 ANV02 9.99
1001 ANV03 14.99
1002 FU1 3.42
1002 OL1 8.99

SELECT 5.
IN 1001 1002.
:
SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price <= 5
UNION
SELECT vend_id, prod_id, prod_price
FROM products
WHERE vend_id IN (1001,1002);
:
vend_id prod_id prod_price
----------- ---------- ---------1001 ANV01 5.99
1001 ANV02 9.99
1001 ANV03 14.99
1002 FU1 3.42
1002 OL1 8.99
1003 FC 2.50
1003 SLING 4.49
1003 TNT1 2.50
SELECT UNION.
UNION SQL
.
WHERE UNION:
SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price <= 5
OR vend_id IN (1001,1002);
UNION
WHERE . ,
, UNION .

3.3.

UNION

UNION:
UNION SELECT ,
UNION. , SELECT
UNION .

UNION ,
.
..
, SQL .

3.4.

, SELECT
, SELECT 4 , 5 .
UNION 8 9.
UNION .
UNION, ,
UNION ALL:
SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price <= 5
UNION ALL
SELECT vend_id, prod_id, prod_price
FROM products
WHERE vend_id IN (1001,1002);
:
vend_id prod_id prod_price
----------- ---------- ---------1003 FC 2.50
1002 FU1 3.42
1003 SLING 4.49
1003 TNT1 2.50
1001 ANV01 5.99
1001 ANV02 9.99
1001 ANV03 14.99
1002 FU1 3.42
1002 OL1 8.99
:
*UNION
WHERE . UNION ALL UNION
WHERE .

3.5.

SELECT ORDER BY.


UNION, ORDER BY
SELECT . , ORDER BY
.

SELECT vend_id, prod_id, prod_price


FROM products
WHERE prod_price <= 5
UNION
SELECT vend_id, prod_id, prod_price
FROM products
WHERE vend_id IN (1001,1002)
ORDER BY vend_id, prod_price;.
:
vend_id prod_id prod_price
----------- ---------- ---------1001 ANV01 5.99
1001 ANV02 9.99
1001 ANV03 14.99
1002 FU1 3.42
1002 OL1 8.99
1003 FC 2.50
1003 TNT1 2.50
1003 SLING 4.49
UNION ORDER BY
SELECT . ORDER BY SELECT , SQL
SELECT .
:
* . UNION
.

4.

SQL .
SQL SQL
SELECT .
e .
. ,
.
.
, .
,

.
:
. .

FROM WHERE .
-SQL .


.
2
WHERE . SELECT WHERE
.
.
UNION .
SELECT UNION . UNION
SELECT , UNION.
UNION ,
.
.. ,
SQL . UNION
WHERE . UNION ALL
UNION WHERE .
SELECT ORDER BY.
UNION, ORDER BY
SELECT .

You might also like