?????? ??? ??: MS SQL ??

1 / 45
About This Presentation
Title:

?????? ??? ??: MS SQL ??

Description:

Title: : MS SQL Author: , Last modified by: user Created Date: 6/3/2003 1:10:51 AM – PowerPoint PPT presentation

Number of Views:5
Avg rating:3.0/5.0
Slides: 46
Provided by: 2349

less

Transcript and Presenter's Notes

Title: ?????? ??? ??: MS SQL ??


1
?? ??? ??
  • ? ??? ???? ???? ???? ??? ????.
  • ??? ????, ?? ??? ??? ??? ? ??.
  • ?? ??? ????, ?? ??? ??? ??? ? ??.
  • ???? ????, ?? ??? ??? ??? ? ??.

2
?? ??? ??
  • ??
  • ?? ??
  • ???

3
1. ??
  • ??
  • ??(join) ? ? ??? ????? ??? ?, ??? ???
  • ??? ???? ??
  • ??? ??? ?? ??? ?? ??? ???? ?? ?? ???? ??? ??
  • ??? ??, ?? ??, ?? ??, ?? ??, ?? ?? ?? ??
  • ?? ?? ????? ??? ??? ?? ??? ??????
  • ???? ?(???? ?? ????? ???, ?? 45? ????? ???
    ??? ??? ?? ???? ???.)
  • - Test1DB ?? ? ?? ???? ???? ????? ??

4
1. ??
  • ??? ??
  • ??? ??(cross join, ?? ??) ? ???? ?? ???
  • ??? ????, ?? ??? ?(Cartesian product)?? ?
  • ?? ??(natural join) ?? ???? ?? ??? ??
  • ? ? ?? ???? ??? ?? ??
  • ?? ???? ? ?? ? ???? ? ?? ?? ?? ?? ? ??
  • ? ???? ? ?? ?? ?? ?

5
1. ??
  • ??? ??
  • buyer ???? orders ???? ?? ??? ??? ??
  • ???? ?? ???(buyer orders ???)? ???.

6
1. ??
  • ??? ??
  • Transact-SQL?? ??? ??? ???? ?? ? ??
  • ? ?? ?? ?? ???? ?? ????ON ? ??
  • WHERE ?? ?? ?? ??? ?
  • ?? SQL-92(1? ??)???? ?? ?? ????,
  • ???? ?? ??? ?? ??

7
1. ??
  • ??? ??
  • 1 USE Test1DB
  • 2 GO
  • 3 SELECT
  • 4 FROM buyer
  • 5 CROSS JOIN orders



8
1. ??
  • ?? ??
  • ?? ??(inner join) ? ????? ?? ???? ?? ??
  • ??? ???? ??? ?? ???? ?????? ????,
  • ???? ??? ?? ???
  • ?? ???? ? ?? ?? ???(orders)? ? ?? ??.

9
1. ??
  • ?? ??
  • ?? ??? ??
  • ?? ?? ?? ?? ?? ????, ON ?? ??? ? ??
  • ?? ??? ?? ? ?? ??? WHERE ??? ????
  • ???? ??? ???? ???. ??? ?? ?? ???
  • ???? ?? ?? ??.

10
1. ??
  • ?? ??
  • ?? ??
  • INNER ??? ? ??(???? ??? ?? ????).
  • join_condition
  • - ?? ???(, lt, ltgt ?)? ???? ???
  • ???? ?? ?? ????, lt ?? gt? ?? ???? ?? ?????,
  • ?? ?? ???? ?? ???? ??
  • join_condition?table1.column1 lt gt
    table2.column2?
  • ??? ???, column1? column2? ??? ??? ???? ???
    ??,
  • ???? ?? ?? ???? ? ?? ?? ???? ?? ?? ???
  • ?? ???? ?? ? ?? ?? ???? ? ?? ?? ?? ???? ??
  • ??? ?? ?? ???? AND? ???? ?

11
1. ??
  • ?? ??
  • ?? ??? column
  • ??? ??? ???? ??? ???? ??(? ?? ???? ???),
  • ? ???? ?? ??? ??? ?? ???? table.column? ????
  • ??? ???? ?
  • ?? ?? table.column? ???? ????? ???? ?????,
  • ? ???? ??? ??alias? ???? ?? ????
  • ? ? ??? ??? ?? ??? ????, ??? JOIN ??
  • ???? ????

12
1. ??
  • ?? ??
  • - ??? ??? ??
  • - 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

13
1. ??
  • ?? ??
  • - ?? 3-2? ??? ??

14
1. ??
  • ?? ??
  • - ? ?? ???? ?? ??
  • 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



15
1. ??
  • ?? ??
  • ?? ??(outer join) ?? ??? ???? ?? ??? ??
  • ??? ???? ???? ??? ????, ??? ? ?? ????.
  • ?? ?? ??, ??? ?? ??, ?? ?? ??

16
1. ??
  • ?? ??
  • ?? ?? ??
  • ?? ?? ?? ?? ?? ????, ON ?? ??? ? ??
  • ?? ??? ?? ? ?? ??? WHERE ??? ????
  • ????? ??? ????? ? ??. ?? ?? ??? ???
  • ??? ???? ??? ??? ???? ???? ??? ????
  • ?? ?? ??.

17
1. ??
  • ?? ??
  • ?? ??
  • LEFT? ??, RIGHT? ???, FULL? ?? ?? ??? ???
  • OUTER? ?? ??(LEFT, RIGHT, FULL? ??? ? ??)
  • outer_join_condition?table1.column1
    table2.column2? ??? ?
  • ???? ??, ???? ???, ???? ?? ?? ??? ???

18
1. ??
  • ?? ??
  • - ?? 3-3? ??? ??

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

19
1. ??
  • ?? ??
  • - 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 '??'

20
1. ??
  • ?? ??
  • - ?? ?? ?? ?? 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 '??'

21
1. ??
  • ?? ??
  • - ?? ?? ?? ??? ??? ???? ?? ?? 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 '??
22
1. ??
  • ?? ??

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 '??

23
1. ??
  • ?? ??
  • ?? 9? ?? ??? ?? 7? ?? ??
  • SELECT ?? 4??? WHERE ?? ??? ??? ???
  • p.product_name ltgt??? ?? ?? ???
  • ? ? ???? ?? product_name ? ????? ??
  • ?? ?? ?? ????? ???? ????. ?? ??? ??
  • ???, ??? ???? ? ? ??.
  • ??? ?? ?? ?? ?? ????? ? ??.

24
1. ??
  • ?? ??
  • - ??? ??? ?? ??(??? 100? SQL Server 2008?
  • ???)
  • 1 ALTER DATABASE Test1DB
  • 2 SET COMPATIBILITY_LEVEL 100

25
1. ??
  • ?? ??
  • ?? ??(self join) ?? ??? ???? ?? ??
  • ?? ??? ???? ???, ?? ???? ?? ??? ??
  • ??? ???? ??? ??? ?? ? ?? ???

26
1. ??
  • ?? ??

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
27
2. ?? ??
  • ?? ?? ??
  • ?? ??(subquery)
  • ?? ???(SELECT, INSERT, UPDATE ?? DELETE ?)?
  • ??? SELECT ?
  • ?? ?? ??(simple subquery)
  • ??(correlated) ?? ??? ?? ?? ??

28
2. ?? ??
  • ?? ?? ??
  • ?? ??? ?? ??? ??
  • ??? ??? ??? ??? ??? ????? ?? ??? ???
  • ???? ??? ?? ? ???
  • ?? ??? ??? ( )? ???? ?
  • ?? ??? ?? ??? ? ??? ??? ??, ???? ?? ??
  • ??? ? ??, ???? ?? ?? ??? ?? ??
  • ??? ??? ??(? Transact-SQL? text? image)? ??
  • ???? ?? ??? ?? ? ??

29
2. ?? ??
  • ?? ?? ??
  • - ?? ??? ????? ??
  • 1 SELECT SalesOrderDetailID, UnitPriceDiscount,
  • UnitPriceDiscount - (
  • 2 SELECT AVG(UnitPriceDiscount) FROM
  • SalesLT.SalesOrderDetail
  • 3 ) AS 'UnitPriceDiscount? ????? ??'
  • 4 FROM SalesLT.SalesOrderDetail

30
2. ?? ??
  • ?? ?? ??
  • - ?? ??? ???? ?? ?? ??
  • 1 SELECT a.ProductCategoryID, a.Name
  • 2 FROM (
  • 3 SELECT FROM AdventureWorksLT.SalesLT.
  • ProductCategory
  • 4 ) AS a
  • 5 WHERE a.ParentProductCategoryID IS NULL

31
2. ?? ??
  • ?? ?? ??
  • ?? ?? ??(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

32
2. ?? ??
  • ?? ?? ??
  • ?? 14? ?? 15? ?? ??? ????? ?? ???
  • ?????.
  • ? a? ? ?? ??? ????(? SalesOrderID71774,
  • SalesOrderDetailID110562, UnitPrice356.898).
  • ? a? SalesOrderID ?(? 71774)? ?? ??? ???.
  • ? b? SalesOrderID? ?? ???? ???? ?(? 71774)?
  • ??(2?) ??? UnitPrice? ???(? 356.898)?
    ???(4?)
  • ?? ??? ????.
  • ? a? UnitPrice? ?? ?? ???? ???? ???(? 356.898)
  • ? ?????? ????(3?).

33
2. ?? ??
  • ?? ?? ??
  • ? ?? ?? ?? ???TRUE? ? ?? ?SalesOrderID(? 71774),
  • SalesOrderDetailID((? 110562), UnitPrice(?
    356.898)) ??
  • ? ?? ??? ?????. UnitPrice ? ??? ???? ? ? ??
  • ?? ???? 1?? DISTINCT? ?? ? ?? ?? ??? ????.
  • ? a? ?? ?(? SalesOrderID71774,
    SalesOrderDetailID110563,
  • UnitPrice356.898)? ??? ??? ????. UnitPrice
    ?
  • ??? ???? ? ? ?? ?? ???? 1?? DISTINCT? ??
  • ? ?? ?? ??? ????.

34
2. ?? ??
  • ?? ?? ??

35
2. ?? ??
  • EXISTS? NOT EXISTS
  • EXISTS? NOT EXISTS ???? ?? ??(?? ??, ?? ??
  • ??)? ?? ???? ??? ?????, ?? ?? ??? ? ??
  • ?? ?? ??? ?????? ??? ? ???
  • EXISTS ?? ????? ?? ????? ??? ???? ???
  • SELECT ???? ?? ??? ? ??? ??? ??? ??
  • EXISTS?NOT EXISTS? ??? ???? ??

36
2. ?? ??
  • ?? ?? ??
  • - ? ???? ??? ?? ???? ??? ???? ???.
  • - 37?? ?? ??? ? ???? ?? ??? ????(? orders
  • ???? ???? product_id??) EXISTS ???? ????,
  • ? product_id? ?? product ???? ?? ???? ??
  • ??? ????.

37
2. ?? ??
  • ?? ?? ??

38
2. ?? ??
  • ?? ?? ??
  • - NOT EXISTS? ??
  • - ? ?? ??? ?? ?? ???? ??? ???? ??

39
2. ?? ??
  • ????? ??
  • ???? ?? ?? ??? ???? ??? ? ??
  • ?? ?? ??? ??
  • JOIN? ?? ??? ???.
  • ?? ??? ??? ?? ?? ?? ?? ??? ?? ??
  • ??? ???? ???.

40
2. ?? ??
  • ????? ??
  • 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

41
2. ?? ??
  • ????? ??
  • - ?? 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

42
3. ???
  • ??
  • ???(UNION) ? ??? SELECT ??? ?? ??? ????
  • ??? ?? ???? ????? ???
  • ??? ???? ??? SELECT ?? ????? ??? ?? ?
  • ??? ?? ??? ???? ??? SELECT ??? ??? ??
  • ??? ??? ???? ???
  • ??? ???? ??? ??

43
3. ???
  • ??
  • ?? ??
  • select_statement? ??? ??? ???? ??, ???? ???
  • ??? ??? ?? ???? ??? ??.
  • ???? ?? ??? ? ??? ? ?? select_statement? ??
  • ????, ? ?? select_statement? ??? ??? ? ???
  • ???? ??(????? ???? ???? ? ??? ???).
  • ??? ?? ????. ?? ?? ????? ??? ALL? ????.
  • ????? ?? ??? ? ?? ? ??? ????. ? ???
  • ???? ORDER BY ?? ???? ??. ORDER BY ????
  • ? ?? select_statement? ? ??? ????.

44
3. ???
  • ???
  • - ? ??? 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

45
3. ???
  • ???
  • - ?? 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
Write a Comment
User Comments (0)