Język SQL ma ciekawe możliwości tworzenia zapytań

Slides:



Advertisements
Podobne prezentacje
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Egzamin.
Podział i zastosowanie
Bazy danych i inżynieria oprogramowania
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
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.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Pola typu odnośnik Piotr Górczyński 03/12/2003.
Kwerendy –wszystkie typy (usuwające, aktualizujące i inne)
Kwerendy, formularze, relacje, raporty i makra
Język SQL – zapytania zagnieżdżone (podzapytania)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 3: Język bazy danych - SQL Funkcje grupowe.
Co to jest studium przypadku?
Proste bazy danych w Excelu
Obsługa bazy danych z poziomu phpMyAdmin
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
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Język SQL – podstawy zapytań
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
OPERACJA DZIELENIA W SQL
MS ACCESS Kwerendy.
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Przetwarzanie w oknie - nowa siła zapytań
SQL – podstawowe funkcje
Microsoft Office Excel
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);
SQL - Structured Query Language
Arkusz kalkulacyjny MS Excel
Komendy SQL do pracy z tabelami i bazami
MICROSOFT Access TWORZENIE MAKR
PL/SQL – dalsza wędrówka
Język manipulacji danymi – SQL cz. I
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
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Excel Filtrowanie Funkcje bazodanowe
Autor: Damian Urbańczyk
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Krakowski Piotr, Woliński Radosław, Kowalski Piotr, Machowski Michał.
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.
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Filtrowanie, Funkcje bazodanowe
Tabele Przestawne Adam Wójcik Tomasz Kowalski.  Czym Tabele Przestawne są?  Jak je używać?  Zadania.
„Filtry i funkcje bazodanowe w EXCELU”
Excel 2007 dla średniozaawansowanych Zajęcia z Prowadzący: Artur Kołos.
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.
Warszawska Wyższa Szkoła Informatyki Andrzej Kuska Promotor : dr inż. Paweł Figat Konsultant : mgr inż. Andrzej Ptasznik.
Optymalizacja zapytań w SQL Server
Widoki (views) - Perspektywy:
Strukturalny język zapytań SQL - historia
Haskell Składnia funkcji.
Zapis prezentacji:

Język SQL ma ciekawe możliwości tworzenia zapytań Język SQL ma ciekawe możliwości tworzenia zapytań. Ciekawe możliwości daje dyrekytywa GROUP BY. Na przykładzie DBMS MySQL i bazy danych o strukturze zapożyczonej z projektu mediawiki oraz danych pl.wikibooks.org pokaże w jaki sposób można wykorzystać dyrektywe GROUP BY.

Podstawowa składnia dyrektywy GROUP BY Dyrektywa GROUP BY występuje po dyrektywie FROM lub bezpośrednio po WHERE jeśli taka występuje. Prosta składnia opisana jest poniżej: SELECT pola FROM tabla [WHERE warunki] GROUP BY kolumna,kolumna; Doskonale wraz z tą dyrektywą spisują się wszelkie funkcje agregujące. Są nimi m.in. SUM, COUNT, MIN, MAX oraz AVG. Służą one kolejno do sumowania wartości, zliczania rekordów, wybierania miniumum oraz maksimum, oraz zliczania średniej. Dzięki użyciu GROUP BY możemy porgrupować te wartości. Przykład - zliczanie artykułów W aplikacjach typu wikiwiki najważniejszą funkcję pełnią artykuły. W systemie mediawiki zostały one podzielone na tak zwane przestrzenie nazw. Każda przestrzeń nazw odpowiada innej kategori arykułów (np przestrzeń 0 - artykuły zwykłe, 1 - rozmowy, 2 - userzy, itd...). Pokaże teraz jak szybko zliczyć liczbę artykułów. Do tego służy poniższe zapytanie. select cur_namespace, count(*) as liczba_artow from cur group by cur_namespace; Zapytanie to, zwróci listę przestrzeni nazw wraz ze zliczonymi artykułami. Oto przykładowa wynik zapytania:

+---------------+--------------+ | cur_namespace | liczba_artow | +---------------+--------------+ | 0 | 1228 | | 1 | 79 | | 2 | 78 | | 3 | 179 | | 4 | 53 | | 5 | 9 | | 6 | 10 | | 7 | 2 | | 8 | 919 | | 10 | 404 | | 11 | 4 | | 12 | 5 | | 14 | 89 | | 15 | 2 | +---------------+--------------+ 14 rows in set (0.00 sec)

Ładnie byłoby, gdyby udało się jeszcze posortować wszystko malejąco względem liczby artykułów. W tym celu wystarczy dodać klauzule ORDER BY. select cur_namespace, count(*) as liczba_artow from cur group by cur_namespace order by liczba_artow DESC; Oczywiście dyrektywa DESC zapewnia posortowanie malejąco. A co stało by się jeśli chcielibyśmy ograniczyć wyświetlane rekordy. Gdybyśmy chcieli wyświetlić tylko przestrzenie nazw o numerach mniejszych niż 5 można do tego posłużyć się dyrektywą where. Jednak jeśli chcemy posłużyć się funkcją agregującą (np. kolumną liczba_artow) MySQL zwróci błąd. Aby osiągnąć porządany rezultat należy użyć dyrektywy HAVING.

Dyrektywa HAVING Dyrektywa HAVING zawsze występuje za dyrektywą GROUP BY. Składnia zapytania będzie wyglądała następująco: SELECT kolumny FROM tabla GROUP BY kolumna HAVING warunek [ORDER BY kolumna [ASC|DESC]] Wyświetlmy tylko te przestrzenie nazw, które mają więcej niż 50 artykułów. Oto zapytanie wraz ze zwróconym wynikiem. select cur_namespace, count(*) as liczba_artow from cur where cur_namespace<5 group by cur_namespace having liczba_artow>50 order by liczba_artow DESC; +---------------+--------------+ | cur_namespace | liczba_artow | +---------------+--------------+ | 0 | 1228 | | 3 | 179 | | 1 | 79 | | 2 | 78 | | 4 | 53 | +---------------+--------------+ 5 rows in set (0.01 sec) Jak widać zapytanie zwróciło oczekiwane wartości.

Przykład ze zliczaniem znaków w tekscie Załóżmy, że chcielibyśmy się dowiedzieć, która kategoria jest najobszerniejsza. Policzymy liczbę znaków w całej przestrzeni nazw. Aby to zrobić musimy zapoznać się z funkcją CHAR_LENGTH. Przyjmuje ona jako argument kolumnę, a zwraca liczbę znaków w danym polu. Wraz z funkcjąSUM i dyrektywą GROUP BY zliczymy całkowitą liczbę znaków w danej przestrzeni nazw. Wynik ograniczymy tylko do 5 największych używając klauzuli LIMIT. select cur_namespace, sum(char_length(cur_text)) as sum_len from cur group by cur_namespace order by sum_len DESC LIMIT 5; +---------------+---------+ | cur_namespace | sum_len | +---------------+---------+ | 0 | 1476111 | | 4 | 243888 | | 3 | 224856 | | 1 | 96712 | | 8 | 55802 | +---------------+---------+ 5 rows in set (0.03 sec)

Zamiast funkcji SUM, możemy zastosować inne funkcje Zamiast funkcji SUM, możemy zastosować inne funkcje. Użycie funkcji MINzwróci nam długość najkrótszego artykułu w danej przestrzeni, MAX długość najdłuższego, a AVG średnią długość. Od wersji MySQL 4.1.1 można zastosować także klauzulę WITH ROLLUP, która doda jeden dodatkowy rekord sumujący wszystkie wyswietlone wyżej rekordy. Jak taki przykład może wyglądać. select cur_namespace, sum(char_length(cur_text)) as sum_len from cur group by cur_namespace with rollup order by sum_len DESC; +---------------+---------+ | cur_namespace | sum_len | +---------------+---------+ | 0 | 1476111 | | 4 | 243888 | | 3 | 224856 | | 1 | 96712 | | 8 | 55802 | | 2 | 32360 | | 10 | 29515 | | 12 | 15373 | | 5 | 14281 | | 14 | 6340 | | 11 | 2271 | | 7 | 1537 | | 15 | 769 | | 6 | 262 | | NULL | 2200077 | +---------------+---------+

Zakończenie MySQL daje ogromne możliwości manipulacji danymi. Możliwości wykorzystania dyrektywy GROUP BY jest bardzo dużo. Dyrektywa ta jest niezwykle przydatna do robienia wszelakich statystyk. Zachęcam to własnych testów i prób.   Pozdrawiam kolo175 z zadane.pl