Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

25/08/2001 1 Bazy danych II Piotr Górczyński Instrukcja SELECT.

Podobne prezentacje


Prezentacja na temat: "25/08/2001 1 Bazy danych II Piotr Górczyński Instrukcja SELECT."— Zapis prezentacji:

1 25/08/ Bazy danych II Piotr Górczyński Instrukcja SELECT

2 25/08/ Spis treści Składnia SELECT Wyszukiwanie rekordów Funkcje agregujące Grupowanie rekordów Zagnieżdżanie zapytań Podzapytania Klauzula EXISTS i IN Funkcje i wyrażenia jednowierszowe

3 25/08/ SELECT Rozkaz SELECT służy do wybierania rekordów z jednej lub więcej tabel Składnia (skrócona): SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] Elementy ujęte w nawiasy kwadratowe mogą zostać pominięte

4 25/08/ Przykłady 1.Wybranie wszystkich pól (*) z tabeli authors dla wszystkich rekordów: SELECT * FROM authors 2.Wybranie wszystkich pól z tabeli authors dla tych rekordów, których pole au_lname jest równe Ringer SELECT * FROM authors WHERE au_lname LIKE Ringer 3.Wybranie wszystkich pól z tabeli authors dla tych rekordów, których pole au_lname zaczyna się na literę R SELECT * FROM authors WHERE au_lname LIKE R%

5 25/08/ Warunki wyszukiwania Do zdefiniowania warunku wyszukiwania lub łączenia rekordów służy wyrażenie Składnia (uproszczona): ::= {[ NOT ] | ( ) } [ { AND | OR } [ NOT ] { | ( ) } ] } [,...n ] ::= { expr { = | | ! = | > | > = | ! > | < | < = | ! < } expr | string_expr [ NOT ] LIKE string_expr | expr IS [ NOT ] NULL }

6 25/08/ Przykład warunkowego wyszukiwania Wybranie wszystkich pól z tabeli authors dla tych rekordów, których pole au_lname jest jak Ringer i pole state jest jak UT SELECT * FROM authors WHERE au_lname LIKE 'Ringer AND state LIKE 'UT' Poszczególne elementy składni: ::= au_lname LIKE 'Ringer AND state LIKE 'UT ::= au_lname LIKE 'Ringer ::= state LIKE 'UT expr ::= au_lname expr ::= state string_expr ::='Ringer string_expr ::='UT'

7 25/08/ Przykład warunkowego wyszukiwania Wynik zapytania w SQL Query Analyzer

8 25/08/ Funkcje agregujące Funkcje agregujące działają na zestawie rekordów. Poza funkcją COUNT wszystkie inne ignorują wartości NULL. Funkcje agregujące są często stosowane z klauzulą GROUP BY - zestaw rekordów, na którym działają jest wtedy ograniczony do grupy wybranej przez klauzulę GROUP BY.

9 25/08/ Najważniejsze funkcje agregujące NazwaZwraca COUNTLiczbę rekordów lub wartości w w polach dla zestawu rekordów SUMSumę wartości w polach dla zestawu rekordów MINMinimalną wartość w polach dla zestawu rekordów MAXMinimalną wartość w polach dla zestawu rekordów AVGŚrednią wartość pól dla zestawu rekordów STDEVOdchylenie standardowe wartości pól dla zestawu rekordów VARWariancję wartości pól dla zestawu rekordów

10 25/08/ Przykład ZapytanieWynik SELECT COUNT(*) FROM [SWW_TEST].[dbo].[WARTOSCI] 4 SELECT COUNT([Wartosc]) FROM [SWW_TEST].[dbo].[WARTOSCI] 3 SELECT SUM([Wartosc]) FROM [SWW_TEST].[dbo].[WARTOSCI] 70 SELECT MAX([Wartosc]) FROM [SWW_TEST].[dbo].[WARTOSCI] 40

11 25/08/ Klauzula GROUP BY Klauzula GROUP BY pozwala grupować rekordy według określonych pól. Do pogrupowanych rekordów można użyć funkcji agregujących, które działają tylko w zbiorze rekordów każdej grupy. Uproszczona składnia: SELECT column_name 1,..., column_name n,[,..., ] FROM table_source GROUP BY column_name 1,..., column_name n może byc np. funkcją agregującą

12 25/08/ Przykład ZapytanieWynik SELECT [Typ] FROM [SWW_TEST].[dbo].[PRZYKLAD] GROUP BY [Typ] SELECT [Typ],COUNT(*),SUM([Wartosc]) FROM [SWW_TEST].[dbo].[PRZYKLAD] GROUP BY [Typ] SELECT [Typ],[FKFaktura],COUNT(*) FROM [SWW_TEST].[dbo].[PRZYKLAD] GROUP BY [Typ],[FKFaktura]

13 25/08/ Aliasy Aliasy pozwalają zastąpić nazwę pola lub tabeli inną nazwą. Są niezbędne w zapytaniach złączających tabele (JOIN), które mają takie same nazwy pól - pozwalają na jednoznaczą identyfikację pola. Uproszczona składnia dla pól: ([table_alias.]column_name|expression) [column_alias] Składnia dla tabel: table_name [ [ AS ] table_alias ] Przykład: SELECT T.[Typ] TypProduktu, COUNT(*) Ilosc, SUM([Wartosc]) Suma FROM [SWW_TEST].[dbo].[PRZYKLAD] AS T GROUP BY T.[Typ]

14 25/08/ Złączenia Aby wybrać rekordy z więcej niż jednej tabeli trzeba zastanowić się w jakiej są ze sobą relacji, czyli które pola powodują, że rekordy z obu tabel można ze sobą powiązać. Składnia (uproszczona): ::= table_name [ [ AS ] table_alias ] | ::= ON ::= [ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ] JOIN

15 25/08/ Przykład wybierania rekordów z dwóch tabel Wybranie z tabel authors (A) i titleauthor (T) tylko tych rekordów, których pola au_id w tabeli A i pole au_id w tabeli (T) mają tę samą wartość: SELECT * FROM authors AS A JOIN titleauthor AS T ON A.au_id=T.au_id Poszczególne elementy składni: ::= A.au_id=T.au_id expr ::= A.au_id expr ::= T.au_id

16 25/08/ Przykład - JOIN ZapytanieWynik SELECT A.[ID] A_ID,B.[ID] B_ID FROM [SWW_TEST].[dbo].[PRZYKLAD] AS A JOIN [SWW_TEST].[dbo].[WARTOSCI] AS B ON A.[ID]=B.[ID] A B

17 25/08/ Przykład - LEFT OUTER JOIN ZapytanieWynik SELECT A.[ID] A_ID,B.[ID] B_ID FROM [SWW_TEST].[dbo].[PRZYKLAD] AS A LEFT OUTER JOIN [SWW_TEST].[dbo].[WARTOSCI] AS B ON A.[ID]=B.[ID] A B

18 25/08/ Przykład - RIGHT OUTER JOIN ZapytanieWynik SELECT A.[ID] A_ID,B.[ID] B_ID FROM [SWW_TEST].[dbo].[PRZYKLAD] AS A RIGHT OUTER JOIN [SWW_TEST].[dbo].[WARTOSCI] AS B ON A.[ID]=B.[ID] A B

19 25/08/ Zagnieżdżanie zapytań (nesting queries) Wynik (zbiór rekordów) z zapytania może być użyty jako źródło rekordów dla innego zapytania. Uproszczona składnia: SELECT statement ::= SELECT select_list FROM table_source ::= (SELECT statement) AS query_alias

20 25/08/ Przykład Zapytanie z górnego rysunku zostało użyte jako źródło rekordów do zapytania w dolnym rysunku.

21 25/08/ Podzapytania (subquery) Podzapytaniami nazywamy zapytania które używane są do wyszukiwania rekordów w elemencie składni. Podzapytania są najczęściej używane wraz z klauzulami IN oraz EXISTS

22 25/08/ Klauzula EXISTS Klauzula EXISTS testuje istnienie rekordów w podzapytaniu. Jeżeli rekordy w podzapytaniu istnieją, to EXISTS zwraca wartość TRUE, w przeciwnym wypadku FALSE. Składnia: EXISTS (subquery)

23 25/08/ Przykład ZapytanieWynik SELECT [ID] A_ID FROM [SWW_TEST].[dbo].[PRZYKLAD] AS A WHERE EXISTS (SELECT * FROM [SWW_TEST].[dbo].[WARTOSCI] WHERE A.[ID]=[ID]) A

24 25/08/ Klauzula IN Klauzula IN testuje istnienie wartości w liście lub podzapytaniu. Jeżeli wartość istnieje, to IN zwraca wartość TRUE, w przeciwnym wypadku FALSE. Składnia: test_expression [ NOT ] IN ( subquery | expression [,...n ] )

25 25/08/ Przykład ZapytanieWynik SELECT [ID] A_ID FROM [SWW_TEST].[dbo].[PRZYKLAD] WHERE [ID] NOT IN (SELECT [ID] FROM [SWW_TEST].[dbo].[WARTOSCI]) SELECT [ID] A_ID FROM [SWW_TEST].[dbo].[PRZYKLAD] WHERE [ID] IN (5,4) A

26 25/08/ Funkcje i wyrażenia jednowierszowe W instrukcjach SELECT, INSERT i UPDATE można wykorzystywać funkcje i wyrażenia, które działają dla każdego wiersza W wyrażenia można stosować operatory (przykłady): Algebraiczne: +,-,*,/ Konkatenacji: + Logiczne: AND, OR, NOT, BETWEEN, LIKE Porównania: =,>, = Funkcje (przykłady): Daty i czasu: GETDATE, DATEDIFF Matematyczne: ABS,ROUND,COS, SIN Tekstowe: LOWER, LEFT, SUBSTRING Systemowe:USER_NAME

27 25/08/ Literatura Microsoft SQL Server Books Online


Pobierz ppt "25/08/2001 1 Bazy danych II Piotr Górczyński Instrukcja SELECT."

Podobne prezentacje


Reklamy Google