BAZY DANYCH JĘZYK ZAPYTAŃ BAZ DANYCH SQL. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Podobne dokumenty
Język SQL, zajęcia nr 1

Systemy GIS Tworzenie zapytań w bazach danych

Relacyjne bazy danych. Podstawy SQL

Wprowadzenie do baz danych

Relacyjne bazy danych. Podstawy SQL

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

SQL (ang. Structured Query Language)

Autor: Joanna Karwowska

Przestrzenne bazy danych Podstawy języka SQL

PL/SQL. Funkcje wbudowane

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Wykład 5. SQL praca z tabelami 2

Autor: Joanna Karwowska

Bazy danych. Polecenia SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Oracle11g: Wprowadzenie do SQL

SQL - Structured Query Language. strukturalny język zapytań

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Widok Connections po utworzeniu połączenia. Obszar roboczy

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Kurs. Podstawy MySQL

Autor: Joanna Karwowska

Ref. 7 - Język SQL - polecenia DDL i DML

Wykład 6. SQL praca z tabelami 3

Grupowanie i funkcje agregujące

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Współczesne systemy baz danych

Język SQL. Rozdział 3. Funkcje wierszowe

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

SIECI KOMPUTEROWE I BAZY DANYCH

Paweł Rajba

Zadania z SQLa (MS SQL Server)

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Współczesne systemy baz danych

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Bazy danych SQL Server 2005

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Język SQL, zajęcia nr 2

Technologie baz danych

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

P o d s t a w y j ę z y k a S Q L

Struktura drzewa w MySQL. Michał Tyszczenko

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Bazy danych 7. SQL podstawy

Podstawowe zapytania SELECT (na jednej tabeli)

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

SQL Structured Query Language

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Ćwiczenie zapytań języka bazy danych PostgreSQL

Projektowanie systemów baz danych

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

3. Podzapytania, łączenie tabel i zapytań

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Wprowadzenie do SQL Użycie kwerend i SQL

Język SQL. Rozdział 2. Proste zapytania

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

SQL praca z tabelami 4. Wykład 7

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Baza danych Uczniowie.mdb

Microsoft SQL Server Podstawy T-SQL

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Język SQL podstawy zapytań

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

8.9. Język SQL Kwerenda wybierająca w języku SQL

PL/SQL. Część 1 Oracle SQL. Piotr Medoń

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Transkrypt:

BAZY DANYCH Microsoft Access JĘZYK ZAPYTAŃ BAZ DANYCH SQL Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i Inżynierii Biomedycznej Laboratorium Biocybernetyki 30-059 Kraków, al. Mickiewicza 30, paw. C3/205 horzyk@agh.edu.pl, Google: Adrian Horzyk

JĘZYK ZAPYTAŃ BAZ DANYCH SQL Język zapytań baz danych (SQL Structured Query Language) to język umożliwiający pobierane, dodawanie, usuwanie i modyfikowanie danych w relacyjnych bazach danych. Język ten ewoluował przez lata i posiada wiele swoich standardów, dodatkowo często modyfikowanych przez twórców silników baz danych Język SQL jest językiem deklaratywnym, polegającym na opisie warunków, jakie ma spełniać końcowe rozwiązanie. O sposobie przechowywania i pobierania danych decyduje system zarządzania bazą danych (DBMS Database Management System).

Bazę możemy utworzyć: Instrukcja tworzące CREATE CREATE DATABASE [IF NOT EXISTS] nazwa_bazy_danych Tabelę tworzymy: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [nazwa_bazy_danych].nazwa_tabeli [(definicja, )] Gdzie definicja ma następującą postać: nazwa_kolumny typ [NOT NULL] [DEFAULT wartość_domyślna], [AUTO_INCREMENT] [PRIMARY KEY] PRIMARY KEY (nazwa_kolumny_indeksu, ) INDEX [nazwa_indeksu] (nazwa kolumny indeksu, ) FULLTEXT [nazwa_indeksu] (nazwa kolumny indeksu, ) UNIQUE [INDEX] [nazwa_indeksu] (nazwa kolumny indeksu, )

Instrukcja tworzące CREATE Utworzenie nowego indeksu przyspieszającego wyszukiwanie wg poindeksowanych kolumn dla istniejącej tabeli: CREATE [UNIQUE FULLTEXT] INDEX nazwa_indeksu ON nazwa_tabeli (nazwa kolumny[(rozmiar)], )

Instrukcja wstawiające INSERT Wstawianie nowych rekordów przeprowadzimy przy pomocy instrukcji INSERT: INSERT [LOW_PRIORITY DELAYED] [IGNORE] nazwa_tabeli [(nazwa kolumny, )] VALUES (wyrażenie, )

Instrukcja usuwająca DELETE Instrukcja DELETE służy do usuwania rekordów z tabeli DELETE * [LOW_PRIORITY] [QUICK] [IGNORE] FROM Studenci WHERE Stypendium = (SELECT Max(Stypendium) FROM Studenci) ORDER BY Nr_indeksu LIMIT 100; Usuwa z tabeli 100 pierwszych rekordów studentów, którzy otrzymują największe stypendia w kolejności wg ich rosnących numerów indeksów. LOW_PRIORITY wykonuje tą kwerendę dopiero, gdy nikt nie ma tej tabeli otwartej do czytania, QUICK przyspiesza kasowanie przez zmianę aktualizacji indeksów, IGNORE ignoruje ew. błędy pojawiające się podczas operacji.

Instrukcje usuwające Całą bazę danych skasujemy poleceniem: DROP DATABASE [IF EXISTS] nazwa_bazy_danych Kasowanie wcześniej utworzonego indeksu dla tabeli: DROP INDEX nazwa indeksu ON nazwa_tabeli Kasowanie tabeli: DROP TABLE [IF EXISTS] nazwa_tabeli

Instrukcje informujące Celem zdobycia informacji o nazwie, typie, indeksacji, wartości domyślnej i unikalności danych w kolumnie stosujemy polecenie: DESCRIBE nazwa tabeli.[nazwa kolumny]

Instrukcja SELECT Instrukcja wyboru SELECT służy do pobierania wybranych danych z tabel bazodanowych: SELECT [ALL DISTINCT DISTINCTROW ] [* nazwakolumny, ] FROM nazwa_tabeli [WHERE warunek] [GROUP BY [nazwa kolumny numer kolumny] [ASC DESC]] [HAVING warunek] [ORDER BY [nazwa kolumny numer kolumny] [ASC DESC]] [LIMIT ilość_rekordów];

Instrukcja SELECT klauzula FROM Instrukcja SELECT służy do pobierania wybranych danych z tabel bazodanowych: SELECT * FROM Studenci; wybiera wszystkie rekordy z wszystkich kolumn z tabeli Studenci. SELECT Imie, Nazwisko, Telefon FROM Studenci; wybiera wszystkie rekordy z podanych kolumn z tabeli Studenci w kolejności według podanej listy kolumn niezależnie od tego, w jakiej kolejności te kolumny występowały w tabeli Studenci. SELECT Imie, Nazwisko, nvl (Telefon, brak ) FROM Studenci; wybiera wszystkie rekordy z podanych kolumn z tabeli Studenci, przy czym funkcja NVL zapewnia, iż jeśli nie podano telefonu, zastąpi go tekstem brak.

Instrukcja SELECT klauzula DISTINCT SELECT Imie, Nazwisko, Stypendium*1.1 StypendiumWaloryzowane FROM Studenci; wybiera wskazane rekordy z podanych kolumn z tabeli Studenci oraz dodaje nową kolumnę obliczeniową podającą wartość stypendium waloryzowanego o 10% nazwaną StypendiumWaloryzowane. Jako przecinek dziesiętny stosujemy w SQLu kropkę. SELECT DISTINCT Imie FROM Studenci; wybiera wszystkie unikalne rekordy z kolumny Imie z tabeli Studenci, czyli zwraca imiona wszystkich studentów bez powtórzeń.

Instrukcja SELECT klauzula WHERE WHERE to klauzula warunkowa umożliwiająca określenie warunku wyboru rekordów, które go spełniają: SELECT Imie, Nazwisko, Stypendium FROM Studenci WHERE Stypendium > 500; wybiera rekordy z podanych kolumn z tabeli Studenci gdy pole w Kolumnie Stypendium jest wyższe niż 500 zł. Klauzulę WHERE stawiamy zawsze po klauzuli FROM. Warunki logiczne mogą zawierać wiele różnych operatorów i funkcji matematycznych, podstawowe z nich to: <, <=, =, =>, >, <>,!=, ^= (porównawcze) LIKE (dopasowania) AND, OR, NOT (logiczne) NULL, IS NULL (sprawdzania wartości)

Instrukcja SELECT klauzula WHERE SELECT Imie, Nazwisko, Stypendium FROM Studenci WHERE Stypendium > 500 AND Plec = kobieta ; Umożliwiają więc konstruowanie bardziej skomplikowanych warunków logicznych. SELECT Imie, Nazwisko, Stypendium FROM Studenci WHERE Imie LIKE A% ; Operator LIKE umożliwia odnajdywanie wszystkich podobnych fraz do określonego wzorca, przy czym: % (zastępuje dowolny ciąg znaków) _ (zastępuje dowolny znak) SELECT * FROM Studenci WHERE Imie LIKE J%n_ ; Wybiera wszystkie rekordy z tabeli Studenci, których imię rozpoczyna się na literę J a przedostatnią ma n, np. Justyna, Janina itp.

Instrukcja SELECT klauzula WHERE SELECT * FROM Studenci WHERE Telefon IS NULL; Umożliwia wybranie wszystkich rekordów dla których nie określono numeru telefonu. Uwaga nie wolno wpisywać konstrukcji znanej z innych języków programowania = NULL. SELECT Imie, Nazwisko, Stypendium FROM Studenci WHERE Imie LIKE A% ; Operator LIKE umożliwia odnajdywanie wszystkich podobnych fraz do określonego wzorca, przy czym: % (zastępuje dowolny ciąg znaków) _ (zastępuje dowolny znak) SELECT * FROM Studenci WHERE Imie LIKE J%n_ ; Wybiera wszystkie rekordy z tabeli Studenci, których imię rozpoczyna się na literę J a przedostatnią ma n, np. Justyna, Janina itp.

Instrukcja SELECT klauzula ORDER BY SELECT * FROM Studenci ORDER BY Nazwisko, Imie; Umożliwia wybranie wszystkich rekordów i ich posortowanie najpierw według nazwiska, a następnie według imienia. Domyślnie sortowanie jest dokonywane rosnącą, lecz można to zmienić stosując kwalifikator: SELECT * FROM Studenci WHERE Stypendium IS NOT NULL ORDER BY Stypendium DESC, Nazwisko ASC, Imie ASC; Wybiera wszystkie rekordy z tabeli studenci, którzy posiadają stypendium i sortuje je malejąco wg wielkości tego stypendium, a dla studentów o tym samym stypendium dodatkowo sortuje ich według nazwiska, a następnie imienia rosnąco. ASC (ascendent - rosnąco) DESC (descendent - malejąco)

Instrukcja SELECT klauzula ORDER BY SELECT Imie, Nazwisko, Telefon FROM Studenci ORDER BY 2, 1 ASC; Wybiera wszystkie dane z podanych kolumn z tabeli Studenci uporządkowane rosnąco najpierw według kolumny 2 (Nazwisko), a następnie według kolumny 1 (Imie).

Instrukcja SELECT i funkcje wbudowane Funkcje wbudowane umożliwiają dokonywanie operacji tekstowych i numerycznych na wybieranych danych, a dzięki temu tworzenie kolumn obliczeniowych zawierających wyniki tych działań: TRUNC (l, m) Obcina liczbę l do m miejsc po przecinku, jeśli wartość m jest liczbą ujemną, wtedy obcinane są liczby znaczące przed przecinkiem dziesiętnym: TRUNC(888.888, 2) daje w wyniku liczbę 888.88 TRUNC(888.888, 1) daje w wyniku liczbę 888.8 TRUNC(888.888, 0) daje w wyniku liczbę 888 TRUNC(888.888, -1) daje w wyniku liczbę 880 TRUNC(888.888, -2) daje w wyniku liczbę 800 SELECT Imię, Nazwisko, Trunc(Stypendium, 0) FROM Studenci;

Instrukcja SELECT i funkcje wbudowane ROUND (l, m) Zaokrągla liczbę l do m miejsc po przecinku, jeśli wartość m jest liczbą ujemną, wtedy zaokrąglane są liczby znaczące przed przecinkiem dziesiętnym: ROUND (888.888, 2) daje w wyniku liczbę 888.89 ROUND (888.888, 1) daje w wyniku liczbę 888.9 ROUND (888.888, 0) daje w wyniku liczbę 889 ROUND (888.888, -1) daje w wyniku liczbę 890 ROUND (888.888, -2) daje w wyniku liczbę 900 SELECT Imię, Nazwisko, Round(Stypendium, 0) FROM Studenci;

Instrukcja SELECT i funkcje wbudowane FLOOR (l) czyli tzw. podłoga, tzn. l Zwraca największą liczbę całkowitą mniejszą lub równą liczbie l: FLOOR(888.888) daje w wyniku liczbę 888 FLOOR(-888.888) daje w wyniku liczbę -889 FLOOR(0) daje w wyniku liczbę 0 SELECT Imię, Nazwisko, Floor(Stypendium) FROM Studenci; CEIL(l) czyli tzw. sufit, tzn. l Zwraca najmniejszą liczbę całkowitą większą lub równą liczbie l: CEIL(888.888) daje w wyniku liczbę 889 CEIL(-888.888) daje w wyniku liczbę -888 CEIL(0) daje w wyniku liczbę 0 SELECT Imię, Nazwisko, Ceil(Stypendium) FROM Studenci;

Instrukcja SELECT i funkcje wbudowane ABS(l) Zwraca wartość bezwzględną liczby l: ABS(888.888) daje w wyniku liczbę 888.888 ABS(-888.888) daje w wyniku liczbę 888.888 ABS(0) daje w wyniku liczbę 0 SIGN(l) Zwraca znak liczby l: SIGN(888.888) daje w wyniku liczbę 1 SIGN(-888.888) daje w wyniku liczbę -1 SIGN(0) daje w wyniku liczbę 0

Instrukcja SELECT i funkcje wbudowane MOD(l1, l2) Zwraca resztę z dzielenia całkowitego liczby l1 przez liczbę l2. MOD(8, 3) daje w wyniku liczbę 2 SQRT(l) Zwraca pierwiastek kwadratowy liczby l: SQRT(9) daje w wyniku liczbę 3 POWER(l, p) Zwraca p-tą potęgę liczby l: POW(10, 2) daje w wyniku liczbę 100 POW(10, 3) daje w wyniku liczbę 1000

Instrukcja SELECT i funkcje wbudowane LOWER(tekst) Zwraca tekst z zamienionymi wszystkimi znakami na małe litery. UPPER(tekst) Zwraca tekst z zamienionymi wszystkimi znakami na duże litery. SELECT Imie, Upper(Nazwisko) from Studenci; Zwraca np.: Jan KOWALSKI czy Ania LESZCZYŃSKA INITCAP(tekst) Zamienia wszystkie pierwsze litery na duże, pozostałe na małe: SELECT InitCap(Nazwa) from Studenci; Zwraca dla nazwy jan kowalski Jan Kowalski

Instrukcja SELECT i funkcje wbudowane LPAD(tekst1, d1 [, tekst2]) Zwraca tekst od długości d1 utworzony przez dodanie z lewej strony tekstu 2, a w przypadku jego braku dodawane są spacje: SELECT LPAD(Imie, 10, + ) from Studenci; Zwraca np.: +++++++Jan czy +++++Kasia RPAD(tekst1, d1 [, tekst2]) Zwraca tekst od długości d1 utworzony przez dodanie z prawej strony tekstu 2, a w przypadku jego braku dodawane są spacje: SELECT LPAD(Imie, 10, + ) from Studenci; Zwraca np.: Jan+++++++ czy Kasia+++++

Instrukcja SELECT i funkcje wbudowane LTRIM(tekst1 [, tekst2]) Usuwa z tekst1 z lewej strony tekst2, a jeśli go nie podano wtedy usuwa spacje. RTRIM(tekst1 [, tekst2]) Usuwa z tekst1 z prawej strony tekst2, a jeśli go nie podano wtedy usuwa spacje. TRIM(tekst1) Usuwa spacje z tekst1 z lewej i prawej strony. LENGTH(tekst1) Zwraca długość tekst1, czyli ilość znaków tekst1.

Instrukcja SELECT i funkcje wbudowane SUBSTR(tekst, m [, n]) Wybiera z tekstu n znaków począwszy od m-tej pozycji, zaś w przypadku nie podania n, wybierany jest ciąg znaków od pozycji m do końca tekstu. INSTR(tekst1, tekst2 [, m, n]) Szuka n-tego wystąpienia tekst2 w tekst1 począwszy od pozycji m. REPLACE(tekst1, tekst2 [, tekst3]) Zamienia wszystkie wystąpienia tekst2 w tekst1 na tekst3, a w przypadku braku podania tekst3 na ciąg pusty, czyli usuwa wszystkie wystąpienia tekst 2 w tekst1. TRANSLATE(tekst1, tekst2, tekst3) Zamienia wszystkie znaki tekst2 w tekst1 na znaki tekst3: TRANSLATE( Alanek, An, XY ) zwraca XlaYek

Instrukcja SELECT i funkcje wbudowane SYSDATE Zwraca aktualną datę typu date. SYSDATE+100 Zwraca datę za 100 dni względem aktualnej. SYSDATE+1/24 Zwraca datę, jaka będzie za 1 godzinę względem aktualnej. Add_Months(data, liczba_miesięcy) Zwraca datę, jaka będzie za liczbę miesięcy, np.: SELECT * FROM Pracownicy WHERE Add_Months(data_zatrudnienia, 2*12) >= SYSDATE; Zwraca pracowników zatrudnionych w ostatnich 2 latach. Add_Months(SYSDATE, -6) zwraca datę pół roku temu

Instrukcja SELECT i funkcje wbudowane Wyznaczanie różnic: SELECT *, Trunc(SYSDATE - data_zatrudnienia) FROM Pracownicy; Zwraca ile pełnych dni są zatrudnieni poszczególni pracownicy. SELECT *, Trunc(Month_Between(SYSDATE - data_zatrudnienia)) FROM Pracownicy; Zwraca ile pełnych miesięcy są zatrudnieni poszczególni pracownicy. Last_Day(SYSDATE) Zwraca ostatni dzień bieżącego miesiąca. Next_Day(SYSDATE, wtorek ) Zwraca dzień najbliższego wtorku (lub po podanej dacie).

Instrukcja SELECT i funkcje wbudowane To_Char(data [, format]) Rzutuje datę na tym znakowy (string) i umożliwia jego sformatowanie korzystając z następujących znaków: SELECT *, To_Char(data_zatrudnienia, q ) FROM Pracownicy; Dla każdego pracownika podaje kwartał, w którym został zatrudniony.

Instrukcja SELECT i funkcje agregujące Do obliczania po danych w kolumnach można wykorzystać funkcje agregujące: SELECT Min(Stypendium), Max(Stypendium), Avg(Stypendium) FROM Studenci; Zwraca minimalne, maksymalne i średnie stypendium. SELECT Count(*) FROM Studenci; Zwraca ilość wszystkich rekordów w tabeli Studenci. SELECT Count(Stypendium) FROM Studenci; Zwraca ilość przyznanych stypendiów studentom, czyli wartości, które posiadają wartość inną niż NULL. SELECT Count(DISTINCT Stypendium) FROM Studenci; Zwraca ilość rodzajów stypendiów, zliczając wszystkie unikalne wartości stypendiów, np. 500zł, 1000zł, 1500zł, wtedy wynik jest 3.

Instrukcja SELECT i funkcje agregujące Funkcje agregujące można łączyć z warunkowymi, np.: SELECT Count(*), Max(Stypendium) FROM Studenci WHERE To_Char(data_rozpoczecia_studiow, 'yyyy')=2014; Zwraca ilość przyznanych stypendiów oraz maksymalne stypendium przyznane studentom, którzy rozpoczęli studia w 2014 r. SELECT Max(Stypendium) - Min(Stypendium), Sum(Stypendium) FROM Studenci WHERE To_Char(data_rozpoczecia_studiow, 'yyyy')=2015; Zwraca różnicę pomiędzy maksymalnym i minimalnym stypendium przyznanym dla studentów, którzy rozpoczęli studia w 2015 r. oraz łączną sumę wszystkich przyznanych stypendiów dla nich.

Instrukcja SELECT i klauzula grupująca GROUP BY Grupowanie to łączenie rekordów w oparciu o wspólną cechę/y: SELECT Stypendium, Count(*) FROM Studenci GROUP BY Stypendium; Zwraca ilości przyznanych stypendiów w ramach poszczególnych grup stypendialnych, np. ilości studentów, którzy otrzymali stypendium w wysokości 500zł, 1000zł i 1500zł. UWAGA: Po SELECT można wykorzystać tylko te kolumny, względem których zachodzi grupowanie, tzn. te występujące po GROUP BY. SELECT Stypendium, Count(*) ilu_studentów FROM Studenci WHERE EXTRACT(YEAR FROM data_rozpoczecia_studiow)>2012 GROUP BY Stypendium; Ilu jest studentów, którzy rozpoczęli studia po roku 2012, którym przyznano stypendia w ramach określonych grup stypendialnych.

Instrukcja SELECT i klauzula grupująca GROUP BY Podaj, ilu jest stypendystów (studentów) w ramach poszczególnych grup stypendialnych pod warunkiem, że grupa liczy powyżej pięciu studentów: SELECT Stypendium, Count(*) ilu_studentów FROM Studenci GROUP BY Stypendium; HAVING Count(*) >5 Zwraca ilości przyznanych stypendiów w ramach poszczególnych grup stypendialnych, np. ilości studentów, którzy otrzymali stypendium w wysokości 500zł, 1000zł i 1500zł. UWAGA: Niedozwolone jest stosowanie funkcji agregujących po WHERE, do tego służy klauzula HAVING: WHERE Count(*) >5 HAVING Count(*) >5

Instrukcja SELECT i klauzula łącząca JOIN W przypadku potrzeby połączenia danych znajdujących się w różnych tabelach korzystamy ze złączeń, czyli klauzuli JOIN: SELECT Studenci.[Nr_indeksu], Przedmioty.[Nazwa] FROM Studenci INNER JOIN Przedmioty ON Studenci.[Nr_przedmiotu] = Przedmioty.[Nr_przedmiotu]; Powyższe złącznie nazywamy złączenie wewnętrznym (INNER JOIN), czyli takim, które wymusza dopasowanie obiektów z obu tabel. Istnieją też złączenia zewnętrzne lewostronne (LEFT JOIN), prawostronne (RIGHT JOIN) i dwustronne (FULL JOIN), gdy potrzebujemy wybrać wszystkie obiekty z jednej lub z obu tabel, nawet jeśli nie mają odpowiedników w drugiej tabeli. SELECT Studenci.[Nr_indeksu], Przedmioty.[Nazwa] FROM Studenci LEFT JOIN Przedmioty ON Studenci.[Nr_przedmiotu] = Przedmioty.[Nr_przedmiotu];

Podzapytania, czyli zapytania zagnieżdżone Podzapytania stosujemy z kilku powodów: wynik jednego zapytania może służyć do filtrowania rekordów w drugim zapytaniu (klauzula WHERE lub HAVING), można objeść ograniczenia języka SQL, np. brak możliwości stosowania funkcji agregujących w klauzuli WHERE, Tworzyć zapytania operujące na wynikach działania innych zapytań, co umożliwia dalsze dogłębne przeprowadzenie analiz. SELECT * FROM Studenci WHERE Stypendium = (SELECT Max(Stypendium) FROM Studenci); Zwraca studentów, którzy otrzymują największe stypendia. SELECT * FROM Studenci WHERE Stypendium IN (SELECT zwracający więcej wartości); Zwraca studentów, którzy otrzymują specyficzne stypendia.

BAZY DANYCH