SQL (ang. Structured Query Language)



Podobne dokumenty
Systemy GIS Tworzenie zapytań w bazach danych

Wykład 5. SQL praca z tabelami 2

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

SQL praca z tabelami 4. Wykład 7

Przestrzenne bazy danych Podstawy języka SQL

Autor: Joanna Karwowska

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

Podstawowe zapytania SELECT (na jednej tabeli)

Relacyjne bazy danych. Podstawy SQL

Autor: Joanna Karwowska

Bazy danych SQL Server 2005

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

Wykład 8. SQL praca z tabelami 5

Relacyjne bazy danych. Podstawy SQL

Grupowanie i funkcje agregujące

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Zadania z SQLa (MS SQL Server)

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Wykład 05 Bazy danych

Paweł Rajba

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

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

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

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

Język SQL. Rozdział 2. Proste zapytania

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

Wprowadzenie do języka SQL

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

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Laboratorium Bazy danych SQL 3 1

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

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Kurs. Podstawy MySQL

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

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

Wykład 6. SQL praca z tabelami 3

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

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

Język SQL podstawy zapytań

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

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

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

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Bazy danych. Polecenia SQL

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

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

Konstruowanie Baz Danych DQL agregacja danych

Wprowadzenie do baz danych

Język SQL, zajęcia nr 1

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

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

Język SQL, zajęcia nr 2

Bazy danych. dr inż. Arkadiusz Mirakowski

Autor: Joanna Karwowska

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

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

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

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Podstawy języka SQL cz. 2

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

PODZAPYTANIE (SUBSELECT)

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

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

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

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

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Plan. Wyświetlanie n początkowych wartości (TOP n) Użycie funkcji agregujących. Grupowanie danych - klauzula GROUP BY

W y k ł a d SELECT. Polecenie wyświetlające zawartość tabeli. Składnia uproszczona: Temat: Polecenie SELECT. Plan wykładu:

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

3. Podzapytania, łączenie tabel i zapytań

Struktura drzewa w MySQL. Michał Tyszczenko

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Technologie baz danych

Bazy danych 7. SQL podstawy

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

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

SQL do zaawansowanych analiz danych część 1.

Oracle11g: Wprowadzenie do SQL

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

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

SQL Structured Query Language

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

Podyplomowe Studia Systemy informatyczne w logistyce

Transkrypt:

SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze do tabeli lub do tabel przynależących do widoku. Aby dodać wiersze do tabeli należy być właścicielem tabeli, administratorem (DBA) lub posiadać uprawnienia dopisywania do tej tabeli. Opis: Rozkaz INSERT użyty z klauzulą VALUES zawsze dodaje dokładnie jeden wiersz. Do pól wyspecyfikowanych w liście kolumn (lub do wszystkich kolumn) wstawiane są podane wartości. Kolumny nie wyspecyfikowane na liście kolumn przyjmują wartości puste NULL (w związlu z tym nie mogą być uprzednio zadeklarowane jako NOT NULL). Jeśli użyje się rozkazu SELECT zamiast klauzuli VALUES, to możliwe jest dodanie większej ilości wierszy (wszystkich zwróconych przez zapytanie). Po wykonaniu zapytania kolumny będące jego rezultatem są dopasowywane i wpisywane do kolumn podanych na liście kolumn (lub do wszystkich kolumn, jeśli ich nie wyspecyfikowano). Zapytanie może odwoływać się również do tabeli, do której dopisywane są wiersze. W przypadku, gdy lista kolumn nie jest podana, to wartości są dopasowywane do poszczególnych kolumn na podstawie ich wewnętrznego porządku. Porządek ten nie musi być taki sam jak kolejność kolumn przy tworzeniu tabeli. Żaden wiersz nie zostanie dopisany, jeśli zapytanie nie zwróci żadnych wierszy. Przykłady: INSERT INTO VALUES (50, 'JAN', 'KOWALSKI', 3); INSERT INTO ksiazki (tytul, autor, miejsce) SELECT 'Pan Tadeusz', autor_nr, miejsce_nr FROM autorzy, miejsca WHERE nazwisko = 'Mickiewicz' AND miejsce = 'lewa polka'; 1

Rozkaz DELETE Rozkaz DELETE służy do usuwania wierszy z tabeli. table - nazwa tabeli lub widoku, z którego należy usunąć wiersze alias - nazwa aliasu odnoszącego się do tabeli, który jest używany w rozkazie DELETE z powiązanymi zapytaniami condition - warunek jaki muszą spełniać wiersze, które należy usunąć. Warunek ten może odwoływać się do tabeli, na której przeprowadza się operację i zawierać powiązane z nim zapytania. Konieczne jest jednak, by warunek, dla każdego z wiersza podanej tabeli, był obliczany do wartości TRUE lub FALSE. Opis: Cała przestrzeń zwolniona przez skasowane wiersze i elementy indeksów jest zatrzymywana przez tę tabelę i indeks. Przykłady: Skasowanie wszystkich wierszy w tabeli : DELETE ; Skasowanie wszystkich wierszy zawierających książki, których autor oznaczony jest numerem 2: DELETE FROM ksiazki WHERE autor = 2 ; Rozkaz SELECT Rozkaz SELECT służy do wyświetlania wierszy i kolumn z jednej lub kilku tabel. Może być używany jako osobny rozkaz lub (z pewnymi ograniczeniami) jako zapytanie lub podzapytanie w innych poleceniach. Parametry: ALL - ustawiane domyślnie, oznacza, że wszystkie wiersze, które spełniają warunki rozkazu SELECT powinny zostać pokazane. DISTINCT - określa, że wiersze powtarzające się powinny zostać usunięte przed zwróceniem ich na zewnątrz. Dwa wiersze traktuje się jako równe jeśli wszystkie wartości dla każdej z kolumn zwracanych rozkazem SELECT są sobie równe. * - oznacza, że wszystkie kolumny ze wszystkich wymienionych tabel powinny zostać pokazane. table.* - oznacza, że wszystkie kolumny z podanej tabeli powinny zostać pokazane ASC, DESC - określa, że zwracane wiersze powinny być posortowane w kolejności rosnącej lub malejącej (odpowiednio). 2

Użycie nazwy tabeli przed nazwą kolumny i nazwy użytkownika przed nazwą tabeli jest najczęściej opcjonalne, to jednak dobrym zwyczajem jest podawanie nazw w pełni kwalifikowanych z dwóch powodów: jeśli dwie tabele mają kolumny o tej samej nazwie, to nie wiadomo, która powinna być użyta w rozkazie SELECT ORACLE wykonuje znacznie mniej obliczeń, jeśli nazwy te są podane i nie trzeba ich szukać. Przykłady: SELECT imie, nazwisko ; SELECT tytul, autorzy.imie, autorzy.nazwisko, miejsca.miejsce FROM ksiazki, autorzy, miejsca WHERE ksiazki.autor = autorzy.autor_nr AND ksiazki.miejsce = miejsca.miejsce_nr; Rozkaz UPDATE Rozkaz UPDATE służy do zmiany danych zapisanych w tabeli. Opis: Klauzula SET określa, które kolumny zostaną zmienione i jakie nowe wartości mają być w nich zapisane. Klauzula WHERE określa warunki jakie muszą spełniać wiersze, w których należy wymienić wartości podanych wcześniej kolumn. Jeśli klauzula WHERE nie jest podana, to zmieniane są wszystkie wiersze w tabeli. Rozkaz UPDATE dla każdego wiersza, który spełnia warunki klauzuli WHERE oblicza wartości wyrażeń znajdujących się po prawej stronie operatora '=' i przypisuje te wartości do pola określanego przez nazwę kolumny z lewej strony. Jeśli klauzula SET posiada podzapytanie, to musi ono zwrócić dokładnie jeden wiersz dla każdego ze zmienianych wierszy. Każda wartość jest przypisywana zgodnie z kolejnością na liście kolumn. Jeśli zapytanie (w przypadku klauzuli postaci SET value = query) nie zwróci wierszy to odpowiednie pola są ustawiane na NULL. Zapytanie może odwoływać się do zmienianej tabeli. Jest ono obliczane oddzielnie dla każdego zmienianego wiersza a nie dla całego rozkazu UPDATE. 3

Przykłady: UPDATE SET nr_wydziału = 4 WHERE nr_wydziału = 3; Grupowanie Klauzule GROUP BY i HAVING występujące w rozkazie SELECT pozwalają dzielić relację wynikową na grupy, wybierać niektóre z tych grup i na każdej z nich z osobna wykonywać pewne (dozwolone przez system) operacje. Operacje te działają na wszystkich wierszach wchodzących w skład grupy. Na samym końcu zwracana jest tylko zbiorcza informacja o wybranych grupach (nie zwraca się wszystkich wierszy wchodzących w skład grupy). Klauzula GROUP BY służy do dzielenia krotek relacji na mniejsze grupy. Sposób takiego podziału ilustruje przykład: SELECT stanowisko, avg(placa_podstawowa) GROUP BY stanowisko ; Istnieje możliwość odrzucenia pewnych krotek przed podziałem na grupy. Dokonuje się tego za pmocą klauzuli WHERE: SELECT stanowisko, avg(placa_podstawowa) WHERE stanowisko!= 'KIEROWCA' GROUP BY stanowisko ; Dzielenie na grupy może być zagnieżdżane, co umożliwia wydzielanie podgrup w uprzednio znalezionych podgrupach. W przykładzie poniżej wszyscy są dzieleni na wydziały, w których pracują, a w ramach każdego wydziały grupowani według stanowiska: SELECT wydzial, stanowisko, avg(placa_podstawowa) GROUP BY nr_wydzialu, stanowisko ; Klauzula HAVING ogranicza wyświetlanie grup do tych, które spełniają określony warunek. Chcąc wyświetlić tylko te grupy, w których płaca podstawowa przynajmniej jednego pracownika jest większa niż 3 000 należy zastosować następujące zapytanie: 4

SELECT stanowisko, max(placa_podstawowa) GROUP BY stanowisko HAVING max(placa_podstawowa) > 3000 ; Kolejność klauzul w rozkazie SELECT Klauzule mające wpływ na realizację rozkazu SELECT uwzględniane są w następującej kolejności: 1. SELECT i WHERE 2. GROUP BY 3. HAVING 4. ORDER BY Podzapytania Zapytania języka SQL mogą być zagnieżdżane, tzn. wynik jednego zapytania może być użyty np. jako warunek selekcji innego zapytania. Podzapytania można podzielić na dwa rodzaje: podzapytania proste (nazywane po prostu podzapytaniem) - podzapytanie jest wykonywane przed wykonaniem zapytania głównego; podzapytania skorelowane - podzapytanie jest wykonywane dla każdej krotki podzapytania głównego. Najczęściej podzapytania używane są w klauzuli WHERE rozkazu SELECT. Jeśli wiadomo, że wynikiem podzapytania będzie pojedyncza wartość, to wartość tą można użyć bezpośrednio w warunku klauzuli WHERE w następujący sposób: SELECT nazwisko WHERE placa_podstawowa = (SELECT min(placa_podstawowa) ); Powyższy przykład znajduje nazwiska pracowników zarabiających najmniej. 5

Składnia Przeznaczenie Przykład AVG( [DISTINCT ALL] num) COUNT( [DISTINCT ALL] expr) COUNT(*) MAX( [DISTINCT ALL] expr) MIN( [DISTINCT ALL] expr) STDDEV( [DISTINCT ALL] num) SUM( [DISTINCT ALL] num) VARIANCE( [DISTINCT ALL] num) Zwraca wartość średnią ignorując wartości puste Zwraca liczbę wierszy, w których expr nie jest równe NULL Zwraca liczbę wierszy w tabeli włączając powtarzające się i równe NULL Zwraca maksymalną wartość wyrażenia Zwraca minimalną wartość wyrażenia Zwraca odchylenie standardowe wartości num ignorując wartości NULL. Zwraca sumę wartości num. Zwraca wariancję wartości num ignorując wartości NULL SELECT AVG(placa) "Srednia" FROM SELECT COUNT(nazwisko) "Liczba" SELECT COUNT(*) "Wszystko" FROM SELECT MAX(Placa) "Max" FROM SELECT MIN(Placa) "Min" FROM SELECT STDDEV(Placa) "Odchylenie" SELECT SUM(Placa) "Koszty osobowe" SELECT VARIANCE(Placa) "Wariancja" 1. Wyświetl zawartość całej tabeli SELECT * FROM nazwa_tabeli; 2. Utwórz kwerendę wyświetlającą adres wraz z datą_urodzenia SELECT adres, data_urodzenia FROM nazwa_tabeli; 3. Zlicz wszystkich uczestników, grupuj według zakresu wiekowego SELECT COUNT(uczestnicy) AS wszyscy, zakres_wiekowy FROM nazwa_tabeli GROUP BY zakres_wiekowy; 4. Wyświetl osoby które są starsze niż 15 lat i młodsze niż 22 lata SELECT imie, nazwisko, wiek FROM nazwa_tabeli WHERE wiek>15 and wiek<22; 5. Wyświetl towary (Nazwa, Firma, Cena) który cena wynosi 620 zł i 750 zł SELECT nazwa, firma, cena FROM nazwa_tabeli WHERE cena=620 or cena=750; 6. Podaj łączną kwotę pensji z każdego stanowiska SELECT SUM(pensja), stanowisko FROM nazwa_tabeli GROUP BY stanowisko; 7. Dodaj nowy rekord do tabeli; INSERT INTO nazwa_tabeli VALUES ( Jan, Nowak,500,222); 8. Zaktualizuj dane w bazie dla rekordu/ów którego/ych cena wynosi 3100 zł, ustaw wartość ceny na 3050zł; UPDATE nazwa_tabeli SET cena=3050 WHERE cena=3100; 9. Usuń towar z bazy o id: 7-N44. DELETE FROM nazwa_tabeli WHERE id=7-n44; 6