Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


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

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

2 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 25/08/2001

3 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 25/08/2001

4 Przykłady Wybranie wszystkich pól (*) z tabeli authors dla wszystkich rekordów: SELECT * FROM authors 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’ 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%’ 25/08/2001

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

6 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: < search_condition > ::= au_lname LIKE 'Ringer‘ AND state LIKE 'UT‘ < predicate > ::= au_lname LIKE 'Ringer‘ < predicate > ::= state LIKE 'UT‘ expr ::= au_lname expr ::= state string_expr ::='Ringer‘ string_expr ::='UT' 25/08/2001

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

8 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. 25/08/2001

9 Najważniejsze funkcje agregujące
Nazwa Zwraca COUNT Liczbę rekordów lub wartości w w polach dla zestawu rekordów SUM Sumę wartości w polach dla zestawu rekordów MIN Minimalną wartość w polach dla zestawu rekordów MAX AVG Średnią wartość pól dla zestawu rekordów STDEV Odchylenie standardowe wartości pól dla zestawu rekordów VAR Wariancję wartości pól dla zestawu rekordów 25/08/2001

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

11 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_name1,..., column_namen,[<expression1>,...,<expressionm>] FROM table_source GROUP BY column_name1,..., column_namen <expressioni> może byc np. funkcją agregującą 25/08/2001

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

13 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] 25/08/2001

14 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_source > ::= table_name [ [ AS ] table_alias ] | < joined_table > < joined_table > ::= < table_source > < join_type > < table_source > ON < search_condition > < join_type > ::= [ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ] JOIN 25/08/2001

15 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: < search_condition > ::= A.au_id=T.au_id < predicate > ::= A.au_id=T.au_id expr ::= A.au_id expr ::= T.au_id 25/08/2001

16 Przykład - JOIN A B Zapytanie Wynik 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] 25/08/2001

17 Przykład - LEFT OUTER JOIN
A B Zapytanie Wynik 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] 25/08/2001

18 Przykład - RIGHT OUTER JOIN
A B Zapytanie Wynik 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] 25/08/2001

19 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 < table_source > ::= (SELECT statement) AS query_alias 25/08/2001

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

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

22 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) 25/08/2001

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

24 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/08/2001

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

26 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 25/08/2001

27 Literatura Microsoft SQL Server Books Online 25/08/2001


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

Podobne prezentacje


Reklamy Google