Title: ?????? ??? ??: MS SQL ??
1?? ??? ??
- ? ??? ???? ???? ???? ??? ????.
- ??? ????, ?? ??? ??? ??? ? ??.
- ?? ??? ????, ?? ??? ??? ??? ? ??.
- ???? ????, ?? ??? ??? ??? ? ??.
2?? ??? ??
31. ??
- ??(join) ? ? ??? ????? ??? ?, ??? ???
- ??? ???? ??
- ??? ??? ?? ??? ?? ??? ???? ?? ?? ???? ??? ??
- ??? ??, ?? ??, ?? ??, ?? ??, ?? ?? ?? ??
- ?? ?? ????? ??? ??? ?? ??? ??????
- ???? ?(???? ?? ????? ???, ?? 45? ????? ???
??? ??? ?? ???? ???.) - - Test1DB ?? ? ?? ???? ???? ????? ??
41. ??
- ??? ??(cross join, ?? ??) ? ???? ?? ???
- ??? ????, ?? ??? ?(Cartesian product)?? ?
- ?? ??(natural join) ?? ???? ?? ??? ??
- ? ? ?? ???? ??? ?? ??
- ?? ???? ? ?? ? ???? ? ?? ?? ?? ?? ? ??
- ? ???? ? ?? ?? ?? ?
51. ??
- buyer ???? orders ???? ?? ??? ??? ??
- ???? ?? ???(buyer orders ???)? ???.
61. ??
- Transact-SQL?? ??? ??? ???? ?? ? ??
- ? ?? ?? ?? ???? ?? ????ON ? ??
- WHERE ?? ?? ?? ??? ?
- ?? SQL-92(1? ??)???? ?? ?? ????,
- ???? ?? ??? ?? ??
71. ??
- 1 USE Test1DB
- 2 GO
- 3 SELECT
- 4 FROM buyer
- 5 CROSS JOIN orders
81. ??
- ?? ??(inner join) ? ????? ?? ???? ?? ??
- ??? ???? ??? ?? ???? ?????? ????,
- ???? ??? ?? ???
- ?? ???? ? ?? ?? ???(orders)? ? ?? ??.
91. ??
- ?? ??? ??
- ?? ?? ?? ?? ?? ????, ON ?? ??? ? ??
- ?? ??? ?? ? ?? ??? WHERE ??? ????
- ???? ??? ???? ???. ??? ?? ?? ???
- ???? ?? ?? ??.
101. ??
- ?? ??
- INNER ??? ? ??(???? ??? ?? ????).
- join_condition
- - ?? ???(, lt, ltgt ?)? ???? ???
- ???? ?? ?? ????, lt ?? gt? ?? ???? ?? ?????,
- ?? ?? ???? ?? ???? ??
- join_condition?table1.column1 lt gt
table2.column2? - ??? ???, column1? column2? ??? ??? ???? ???
??, - ???? ?? ?? ???? ? ?? ?? ???? ?? ?? ???
- ?? ???? ?? ? ?? ?? ???? ? ?? ?? ?? ???? ??
- ??? ?? ?? ???? AND? ???? ?
111. ??
- ?? ??? column
- ??? ??? ???? ??? ???? ??(? ?? ???? ???),
- ? ???? ?? ??? ??? ?? ???? table.column? ????
- ??? ???? ?
- ?? ?? table.column? ???? ????? ???? ?????,
- ? ???? ??? ??alias? ???? ?? ????
- ? ? ??? ??? ?? ??? ????, ??? JOIN ??
- ???? ????
121. ??
- - ??? ??? ??
- - 2??? first_table? ?? ??? ????, f? ??? ??
- - 3??? AS? ??? ?? ??? ???? ???
- - ??? ??? ? ? ???? ??? ?? ???, ???? ? ??
- ???? ?? ?????? ???? ???
- 1 SELECT f.col1, f.col2, s.
- 2 FROM first_table AS f
- 3 JOIN second_table s
- 4 ON f.col1 s.col1
131. ??
141. ??
- - ? ?? ???? ?? ??
- 1 SELECT o.orders_id, b.buyer_name,
- p.product_name, o.qty
- 2 FROM orders AS o
- 3 INNER JOIN buyer AS b
- 4 ON o.buyer_id b.buyer_id
- 5 INNER JOIN product AS p
- 6 ON o.product_id p.product_id
151. ??
- ?? ??(outer join) ?? ??? ???? ?? ??? ??
- ??? ???? ???? ??? ????, ??? ? ?? ????.
- ?? ?? ??, ??? ?? ??, ?? ?? ??
161. ??
- ?? ?? ??
- ?? ?? ?? ?? ?? ????, ON ?? ??? ? ??
- ?? ??? ?? ? ?? ??? WHERE ??? ????
- ????? ??? ????? ? ??. ?? ?? ??? ???
- ??? ???? ??? ??? ???? ???? ??? ????
- ?? ?? ??.
171. ??
- ?? ??
- LEFT? ??, RIGHT? ???, FULL? ?? ?? ??? ???
- OUTER? ?? ??(LEFT, RIGHT, FULL? ??? ? ??)
- outer_join_condition?table1.column1
table2.column2? ??? ? - ???? ??, ???? ???, ???? ?? ?? ??? ???
181. ??
1 SELECT p.product_id, p.product_name,
o.orders_id, o.buyer_id, o.qty 2 FROM
product AS p 3 LEFT OUTER JOIN orders AS o
4 ON p.product_id o.product_id
191. ??
- - SQL-92 ??? ?? ?? ??? ??
1 SELECT p.product_id, p.product_name,
o.orders_id, o.buyer_id, o.qty 2 FROM
product AS p 3 LEFT OUTER JOIN orders AS o
4 ON p.product_id o.product_id 5
AND p.product_name ltgt '??'
201. ??
- - ?? ?? ?? ?? SQL Server 2008?? ????
- ??? ???
- 1 SELECT p.product_id, p.product_name,
o.orders_id, - o.buyer_id, o.qty
- 2 FROM product p, orders o
- 3 WHERE p.product_id o.product_id
- 4 AND p.product_name ltgt '??'
211. ??
- - ?? ?? ?? ??? ??? ???? ?? ?? 8?
- SELECT ?? ??
1 ALTER DATABASE Test1DB 2 SET
COMPATIBILITY_LEVEL 80
1 SELECT p.product_id, p.product_name,
o.orders_id, o.buyer_id, o.qty 2 FROM
product p, orders o 3 WHERE p.product_id
o.product_id 4 AND p.product_name ltgt '??
221. ??
1 SELECT p.product_id, p.product_name,
o.orders_id, o.buyer_id, o.qty 2 FROM
product p, orders o 3 WHERE p.product_id
o.product_id 4 AND p.product_name ltgt '??
231. ??
- ?? 9? ?? ??? ?? 7? ?? ??
- SELECT ?? 4??? WHERE ?? ??? ??? ???
- p.product_name ltgt??? ?? ?? ???
- ? ? ???? ?? product_name ? ????? ??
- ?? ?? ?? ????? ???? ????. ?? ??? ??
- ???, ??? ???? ? ? ??.
- ??? ?? ?? ?? ?? ????? ? ??.
241. ??
- - ??? ??? ?? ??(??? 100? SQL Server 2008?
- ???)
- 1 ALTER DATABASE Test1DB
- 2 SET COMPATIBILITY_LEVEL 100
251. ??
- ?? ??(self join) ?? ??? ???? ?? ??
- ?? ??? ???? ???, ?? ???? ?? ??? ??
- ??? ???? ??? ??? ?? ? ?? ???
261. ??
1 SELECT a.SalesOrderID, a.SalesOrderDetailID
AS 'a.SalesOrderDetailID', 2
b.SalesOrderDetailID AS 'b.SalesOrderDetailID'
3 FROM SalesLT.SalesOrderDetail a 4 INNER
JOIN SalesLT.SalesOrderDetail b 5 ON
a.SalesOrderID b.SalesOrderID 6 AND
a.SalesOrderDetailID lt b.SalesOrderDetailID 7
ORDER BY a.SalesOrderID, a.SalesOrderDetailID,
b.SalesOrderDetailID
272. ?? ??
- ?? ??(subquery)
- ?? ???(SELECT, INSERT, UPDATE ?? DELETE ?)?
- ??? SELECT ?
- ?? ?? ??(simple subquery)
- ??(correlated) ?? ??? ?? ?? ??
282. ?? ??
- ?? ??? ?? ??? ??
- ??? ??? ??? ??? ??? ????? ?? ??? ???
- ???? ??? ?? ? ???
- ?? ??? ??? ( )? ???? ?
- ?? ??? ?? ??? ? ??? ??? ??, ???? ?? ??
- ??? ? ??, ???? ?? ?? ??? ?? ??
- ??? ??? ??(? Transact-SQL? text? image)? ??
- ???? ?? ??? ?? ? ??
292. ?? ??
- - ?? ??? ????? ??
- 1 SELECT SalesOrderDetailID, UnitPriceDiscount,
- UnitPriceDiscount - (
- 2 SELECT AVG(UnitPriceDiscount) FROM
- SalesLT.SalesOrderDetail
- 3 ) AS 'UnitPriceDiscount? ????? ??'
- 4 FROM SalesLT.SalesOrderDetail
302. ?? ??
- - ?? ??? ???? ?? ?? ??
-
- 1 SELECT a.ProductCategoryID, a.Name
- 2 FROM (
- 3 SELECT FROM AdventureWorksLT.SalesLT.
- ProductCategory
- 4 ) AS a
- 5 WHERE a.ParentProductCategoryID IS NULL
-
312. ?? ??
- ?? ?? ??(correlated subquery) ?? ??? ?? ???
- ?? ???, ??? ??? ??
- 1 SELECT DISTINCT SalesOrderID, UnitPrice AS
'?? ??' - 2 FROM SalesLT.SalesOrderDetail AS a
- 3 WHERE UnitPrice (
- 4 SELECT MAX(UnitPrice)
- 5 FROM SalesLT.SalesOrderDetail AS b
- 6 WHERE a.SalesOrderID b.SalesOrderID
- 7 )
- 1 SELECT SalesOrderID, SalesOrderDetailID,
UnitPrice - 2 FROM SalesLT.SalesOrderDetail
322. ?? ??
- ?? 14? ?? 15? ?? ??? ????? ?? ???
- ?????.
- ? a? ? ?? ??? ????(? SalesOrderID71774,
- SalesOrderDetailID110562, UnitPrice356.898).
- ? a? SalesOrderID ?(? 71774)? ?? ??? ???.
- ? b? SalesOrderID? ?? ???? ???? ?(? 71774)?
- ??(2?) ??? UnitPrice? ???(? 356.898)?
???(4?) - ?? ??? ????.
- ? a? UnitPrice? ?? ?? ???? ???? ???(? 356.898)
- ? ?????? ????(3?).
332. ?? ??
- ? ?? ?? ?? ???TRUE? ? ?? ?SalesOrderID(? 71774),
- SalesOrderDetailID((? 110562), UnitPrice(?
356.898)) ?? - ? ?? ??? ?????. UnitPrice ? ??? ???? ? ? ??
- ?? ???? 1?? DISTINCT? ?? ? ?? ?? ??? ????.
- ? a? ?? ?(? SalesOrderID71774,
SalesOrderDetailID110563, - UnitPrice356.898)? ??? ??? ????. UnitPrice
? - ??? ???? ? ? ?? ?? ???? 1?? DISTINCT? ??
- ? ?? ?? ??? ????.
342. ?? ??
352. ?? ??
- EXISTS? NOT EXISTS ???? ?? ??(?? ??, ?? ??
- ??)? ?? ???? ??? ?????, ?? ?? ??? ? ??
- ?? ?? ??? ?????? ??? ? ???
- EXISTS ?? ????? ?? ????? ??? ???? ???
- SELECT ???? ?? ??? ? ??? ??? ??? ??
- EXISTS?NOT EXISTS? ??? ???? ??
362. ?? ??
- - ? ???? ??? ?? ???? ??? ???? ???.
- - 37?? ?? ??? ? ???? ?? ??? ????(? orders
- ???? ???? product_id??) EXISTS ???? ????,
- ? product_id? ?? product ???? ?? ???? ??
- ??? ????.
372. ?? ??
382. ?? ??
- - NOT EXISTS? ??
- - ? ?? ??? ?? ?? ???? ??? ???? ??
392. ?? ??
- ???? ?? ?? ??? ???? ??? ? ??
- ?? ?? ??? ??
- JOIN? ?? ??? ???.
- ?? ??? ??? ?? ?? ?? ?? ??? ?? ??
- ??? ???? ???.
402. ?? ??
- 1 SELECT DISTINCT a.ProductID
- 2 FROM SalesLT.SalesOrderDetail AS a
- 3 WHERE a.ProductID IN (
- 4 SELECT b.ProductID
- 5 FROM SalesLT.SalesOrderDetail AS b
- 6 WHERE a.SalesOrderID ltgt b.SalesOrderID
- 7 )
- 8 ORDER BY a.ProductID
- 9 --gt ???? ??
- 10 SELECT DISTINCT a.ProductID
- 11 FROM SalesLT.SalesOrderDetail AS a
- 12 INNER JOIN SalesLT.SalesOrderDetail AS b
- 13 ON a.ProductID b.ProductID
- 14 WHERE a.SalesOrderID ltgt b.SalesOrderID
- 15 ORDER BY a.ProductID
412. ?? ??
- - ?? 14? ?? ??? ??
- - ?? ?? ???? ?? ?? MAX? ????? ???
- ?? ??? GROUP BY? HAVING ?? ????? ???
- 1 SELECT DISTINCT a.SalesOrderID, a.UnitPrice
AS ?? ??' - 2 FROM SalesLT.SalesOrderDetail AS a
- 3 JOIN SalesLT.SalesOrderDetail AS b
- 4 ON a.SalesOrderID b.SalesOrderID
- 5 GROUP BY a.SalesOrderID, a.UnitPrice
- 6 HAVING a.UnitPrice MAX(b.UnitPrice)
- 7 ORDER BY a.SalesOrderID
423. ???
- ???(UNION) ? ??? SELECT ??? ?? ??? ????
- ??? ?? ???? ????? ???
- ??? ???? ??? SELECT ?? ????? ??? ?? ?
- ??? ?? ??? ???? ??? SELECT ??? ??? ??
- ??? ??? ???? ???
- ??? ???? ??? ??
433. ???
- ?? ??
- select_statement? ??? ??? ???? ??, ???? ???
- ??? ??? ?? ???? ??? ??.
- ???? ?? ??? ? ??? ? ?? select_statement? ??
- ????, ? ?? select_statement? ??? ??? ? ???
- ???? ??(????? ???? ???? ? ??? ???).
- ??? ?? ????. ?? ?? ????? ??? ALL? ????.
- ????? ?? ??? ? ?? ? ??? ????. ? ???
- ???? ORDER BY ?? ???? ??. ORDER BY ????
- ? ?? select_statement? ? ??? ????.
443. ???
- - ? ??? SELECT ?? ??? ???? ??
- - ????? ?? ??? ? ?? ?(Name) ??? ???
- 1 SELECT FirstName ' ' LastName AS Name,
- EmailAddress
- 2 FROM AdventureWorks.Person.Contact
- 3 UNION
- 4 SELECT ReviewerName, EmailAddress
- 5 FROM AdventureWorks.Production.ProductReview
453. ???
- - ?? 20? ?? ?? ??? ???? ??
- 1 SELECT FirstName ' ' LastName AS Name,
- 'Contact' AS source, EmailAddress
- 2 FROM AdventureWorks.Person.Contact
- 3 UNION
- 4 SELECT ReviewerName, 'ProductReview' AS
source, - EmailAddress
- 5 FROM AdventureWorks.Production.ProductReview