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

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Podział i zastosowanie
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Dr inż. Andrzej Szuwarzyński Dr inż. Marcin Forkiewicz
Hibernate zapytania.
Bazy danych i inżynieria oprogramowania
18/11/ Języki programowania 1 Piotr Górczyński Biblioteki.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
PHP + MySQL część II.
Język SQL ma ciekawe możliwości tworzenia zapytań
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
Bazy danych II Instrukcja INSERT Piotr Górczyński 25/08/2001.
25/08/ Bazy danych II Piotr Górczyński Instrukcja UPDATE.
MS Access 2000 Normalizacja Paweł Górczyński 2005.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
25/08/ Bazy danych II Piotr Górczyński Administracja MS SQL.
MS Access 2000 Pola typu odnośnik Piotr Górczyński 03/12/2003.
25/08/2001 Bazy danych II 1 Piotr Górczyński Wstęp do SQL.
KONKURS WIEDZY O SZTUCE
Język SQL – zapytania zagnieżdżone (podzapytania)
Rozdział 2: Język bazy danych - SQL
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 3: Język bazy danych - SQL Funkcje grupowe.
SQL – Structured Query Language (2)
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SQL-owskie szlaki górskie
SQLDziałanie select * from tab_kredyt wyświetla wszystko z tab_kredyt select Kredytobiorca, Bank, rodzaj, data_zawarcia, klasyfikacja from tab_kredyt.
SQL select kredytobiorca,bank, rodzaj, data_zawarcia, klasyfikacja,kwota, terminzapadalnosci-data_zawarcia iledni from tab_kredyt where (terminzapadalnosci-data_zawarcia)>1095.
Zapytania SQL: wydajność i optymalizacja
BD-LAB6 Wojciech Pieprzyca
Projektowanie fizycznej bazy danych
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
SQL ("Structured Query Language" - "Strukturalny Język Zapytań"), opracowany przez firmę IBM jest rozwinięciem języka SEQUEL (“Structured English QUEry.
Structured Query Language
dr inż. Piotr Muryjas Wyższa Szkoła Przedsiębiorczości i Administracji
MS ACCESS Kwerendy.
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Przetwarzanie w oknie - nowa siła zapytań
MySQL – ODBC - ACCESS.
Tworzenie bazy danych – mySQL
Delphi i Acad cd.. l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz);
Bazy danych podstawowe pojęcia
Temat 19: Organizacja informacji w bazie danych – część 1.
MySQL bazy danych dla witryny
SQL - Structured Query Language
KWERENDY ćw. 3.
Wyprowadzanie informacji z bazy danych - kwerendy wybierające Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Operacje edycyjne w bazie danych - kwerendy funkcjonalne Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
PL/SQL – dalsza wędrówka
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Wykład II Język SQL – polecenia DQL Powtórzenie wiadomości – cz. 1
Autor: Damian Urbańczyk
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Komendy SQL do pracy z danymi
Język SQL – polecenie Select
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
1 Instrukcja SELECT : SELECT[DISTINCT  ALL] {*  [wyrażenie_kolumnowe [AS nowa_nazwa]],[…]} FROMNazwaTabeli [alias],[...] [WHEREwarunek_selekcji_wierszy]
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Podstawy SQL.
Widoki (views) - Perspektywy:
J2EE: Bazy danych c.d. Język zapytań EJB QL.
Zapis prezentacji:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Literatura Microsoft SQL Server Books Online 25/08/2001