Współczesne systemy baz danych

Podobne dokumenty
Współczesne systemy baz danych

Przestrzenne bazy danych Podstawy języka SQL

Systemy GIS Tworzenie zapytań w bazach danych

SQL (ang. Structured Query Language)

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

Paweł Rajba

Bazy danych SQL Server 2005

Wprowadzenie do języka SQL

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

Język SQL. Rozdział 2. Proste zapytania

Relacyjne bazy danych. Podstawy SQL

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Autor: Joanna Karwowska

Język SQL podstawy zapytań

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

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

Wykład 6. SQL praca z tabelami 3

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

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

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

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

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

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

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

Relacyjne bazy danych. Podstawy SQL

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

3. Podzapytania, łączenie tabel i zapytań

Bazy danych. Dr inż. Paweł Kasprowski

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

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

SQL Structured Query Language

Autor: Joanna Karwowska

Wykład 5. SQL praca z tabelami 2

Microsoft SQL Server Podstawy T-SQL

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

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

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

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

Autor: Joanna Karwowska

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

Bazy danych. Polecenia SQL

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

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

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

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

Oracle11g: Wprowadzenie do SQL

Wprowadzenie do baz danych

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

Podstawy języka SQL cz. 2

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

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

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

Grupowanie i funkcje agregujące

Język SQL, zajęcia nr 1

SIECI KOMPUTEROWE I BAZY DANYCH

Wprowadzenie do SQL Użycie kwerend i SQL

Język SQL, zajęcia nr 2

LAB 3 (część 1 Projektu)

Zadania z SQLa (MS SQL Server)

Pobieranie danych, czyli instrukcja SELECT

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

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

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

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Administracja i programowanie pod Microsoft SQL Server 2000

Dr Michał Tanaś(

Podstawowe zapytania SELECT (na jednej tabeli)

Projektowanie systemów baz danych

SQL Structured Query Language

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

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

PL/SQL. Funkcje wbudowane

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

SQL w praktyce. Miłej i owocnej nauki!!!

SQL Structured Query Language

Ściągawka z funkcji i właściwości systemowych VBA. Opis działania i parametrów. Nazwa funkcji. Składnia zwracanej wartości

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

Technologie baz danych

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

SQL praca z tabelami 4. Wykład 7

ACESS- zadania z wykorzystaniem poleceń SQL

Język SQL. Rozdział 3. Funkcje wierszowe

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

Laboratorium Bazy danych SQL 2

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Bazy danych Access KWERENDY

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Wykład 05 Bazy danych

PODZAPYTANIE (SUBSELECT)

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

Transkrypt:

Współczesne systemy baz danych dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu Zakład Systemów Informatycznych i Mechatronicznych (SIMT) 2018

Język SQL Język SQL (ang. Structured Query Language) deklaratywny strukturalny język zapytań stosowany do wstawiania, wyszukiwania oraz modyfikacji danych w RBD, zarządzania jej strukturą oraz uprawnieniami użytkowników. Deklaratywność: użytkownik formułuje co chce uzyskać, pozostawiając decyzję o sposobie realizacji zapytania systemowi zarządzania baza danych. Z tego wynika że: użytkownik nie ma wpływu na sposób wykonania zapytania, podobne zapytania mogą się wykonywać na różne sposoby, sposób wykonania różnych zapytań może być identyczny

Podgrupy języka SQL DML (Data Manipulation Language) polecenia manipulowania danymi (instrukcje wstawiania, pobierania, aktualizacji oraz usuwania danych - CRUD). DDL (Data Definition Language) polecenia zarządzania strukturą danych (definiowanie tabel, zmiana struktury oraz usuwanie). DCL (Data Control Language) polecenia zarządzania uprawnieniami użytkowników (GRANT, REVOKE, DENY).

Typy danych języka SQL TYP OPIS PRZYKŁAD char(n) tekst o stałej długości n znaków A varchar(n) tekst o zmiennej długości Ala ma kota (maksymalnie n znaków) nchar, nvarchar tekst unicode ŁÓDŹ int, integer Liczba całkowita (32 bit) 10 numeric(c,p) Liczba dziesiętna (c liczba cyfr 10.123456 razem z kropką i znakiem, p liczba cyfr po przecinku ) decimal(c,p) Liczba dziesiętna z ograniczoną 10.25 precyzją (p < 6) float Liczba zmiennoprzecinkowa 3.1457. datetime Godzina i data 2011-02-28 23:35:01 date Data 2011-02-28 Binary, blob Ciąg znaków binarny (obiekty multimedia, grafika itp.) 0xFA13 (Kod binarny)

Polecenie SELECT SELECT [DISTINCT] * <kolumna> [, <kolumna> ] [, <funkcja agregująca> ] [, <wyrażenie>.. ] FROM <tabela> [, <tabela> ] <złączone tabele> [ WHERE <warunek wyboru wierszy> ] [ GROUP BY <kolumna> [, <kolumna> ] ] [ HAVING <warunek wyboru grup> ] [ UNION EXCEPT INTERSECT ] [ ORDER BY <kolumna> [ASC DESC] [, <kolumna> ] ]

Polecenie SELECT Po SELECT należy wskazać kolumny tabeli (lub tabel) z których mają być pobrane dane. Znak * oznacza pobranie wszystkich kolumn. Klauzula FROM określa tabele, z których maja być pobrane dane. Sposób łączenia wielu tabel będzie omówiony później. Klauzula WHERE określa warunek jaki muszą spełniać wiersze wybierane z tabel(i). Klauzula GROUP BY służy do grupowania danych pobranych z tabel wg wymienionych kolumn. Grupowanie może odbywać się po kilku kolumnach. Wszystkie pozostałe kolumny wynikowe nie biorące udział w grupowaniu wymagają zastosowania tzw. funkcji agregujących (o tym dalej). Filtrowanie już pogrupowanych wierszy odbywa się za pomocą klauzuli HAVING. Klauzula UNION łączy wyniki dwóch zapytań SELECT (pod warunkiem iż ilość zwracanych kolumn jest identyczna). Sortowanie ostateczne pobranych danych dokonuje się za pomocą klauzuli ORDER BY. Domyślną kolejnością sortowania jest rosnąca (ASC), sortowanie malejące należy wskazywać jawnie (DESC).

Operatory relacji Operator Opis = Równe <> lub!= Nierówne < Mniejszy > Większy <= Mniejszy lub równy >= Większy lub równy LIKE Podobny do (wyrażenie regularne) BETWEEN W przedziale od do (włącznie) IN Należy do zbioru wartości IS NULL Równy wartości NULL ANY (syn. SOME) Dla dowolnej wartości ze zbioru ALL Dla każdej wartości ze zbioru

Operatory logiczne Operator Opis AND Iloczyn logiczny ( I ) OR Suma logiczna ( LUB ) NOT Negacja ( NIE )

Operatory arytmetyczne Operator Opis + Dodawanie - Odejmowanie * Mnożenie / Dzielenie

Funkcje skalarne Funkcje działające na pojedynczych wartościach. Zwracają w miejsce zapytania wartość wyrażenia obliczonego na podstawie wartości pojedynczej komórki w tabeli

Funkcje skalarne Funkcja Opis Godzina i Data GETDATE() Zwraca bieżącą datę serwerową YEAR / MONTH / DAY( datetime ) Zwraca rok / miesiąc / dzień daty przekazanej jako parametr DATEPART( part, datetime ) Zwraca część part parametru datetime part = { YEAR, DAY, MONTH, HOUR, MINUTE, SECOND } DATEDIFF( part, startdate, enddate ) Zwraca część part interwału pomiędzy datami startdate enddate DATEADD( part, increment, datetime) Zwraca datę otrzymaną w wyniku dodania do daty datetime liczby jednostek increment interwału określonego przez part Łańcuchy znaków LEN( string ) Zwraca długość łańcucha znaków string SUBSTRING( string, from, count ) Zwraca wycinek łańcucha string od pozycji from (licząc od 1) długością count znaków LOWER( string ) / UPPER( string ) Konwersja na małe / wielkie litery CHARINDEX( what, where, [from] ) Zwraca pozycję (licząc od 1) znaku what w łańcuchu where rozpoczynając szukanie od pozycji from (opcja); zwraca 0 jeśli nic nie zostało znaleziono REPLACE( string, from, to ) Zwraca łańcuch string w którym wszystkie wystąpienia from zamieniono ciągiem znaków to REVERSE( string ) Zwraca odwrócony łańcuch

Funkcje skalarne Matematyczne ABS( value ) Zwraca wartość bezwzględną liczby EXP( value ) Zwraca wartość wyrażenia e^value LOG( value ) Zwraca logarytm naturalny value PI() Zwraca wartość Pi POWER( a, b ) Zwraca wartość a podniesioną do potęgi b a % b Zwraca resztę z dzielenia a przez b SQRT( x ) Zwraca pierwiastek kwadratowy x SIGN( x ) Zwraca znak wartości x (-1, 0, 1) ROUND( float, positions ) Zwraca wartość float zaokrągloną do positions znaków po przecinku FLOOR( float ) Zwraca najbliższą wartość całkowitą mniejszą od float SIN / COS / TAN / ASIN / ACOS / ATAN Funkcje trygonometryczne Inne przydatne funkcje IsNULL( value, replace ) Sprawdza czy wartość value == NULL i jeśli tak, zwraca wartość zastępczą replace CAST( value AS type ) Rzutowanie (konwersja) wartości value na wartość typu danych type (nie wszystkiej konwersje są dozwolone!)

Funkcje agregujące Funkcje agregujące (syn. funkcje grupujące) funkcje działające na grupie wierszy i zwracające jeden wynik (np. suma wartości wszystkich komórek w jednej kolumnie) Funkcja agregująca COUNT(*) COUNT( column ) MAX( column ) MIN( column ) SUM( column ) AVG (column ) STDEV( column ) VAR( column ) Opis Zwraca liczbę wszystkich wierzy Zwraca liczbę wierszy tabeli wartość pola w kolumnie column których jest różna od NULL Zwraca maksymalną / minimalną wartość w kolumnie column Zwraca sumę wartości w kolumnie column Zwraca wartość średnią Zwraca odchylenie standardowe Zwraca wariację

Klauzula GROUP BY Klauzula GROUP BY pozwala podzielić wynik zapytania SELECT na mniejsze grupy wierszy poprzez grupowanie identycznych wartości Grupowanie może być zagnieżdżonym (odbywać się wg kilku kolumn) Przez wykonaniem operacji grupowania dane można odfiltrować za pomocą klauzuli WHERE Jeśli w skład zapytania SELECT wchodzi kolumna nie objęta warunkiem grupowania (nie występująca w GROUP BY), należy wskazać metodę za pomocą której zbiór jej wartości (niekoniecznie identycznych) ma być zastąpiony jedną wartością będącą wynikiem pogrupowania. W tym celu stosuje się funkcje agregujące (p. 4.2.2). Filtrowanie wierszy już pogrupowanych odbywa się za pomocą klauzuli HAVING (w niektórych przypadkach można to wykonać umieszczając odpowiedni filtr w sekcji WHERE, lecz np. filtrowanie wg wartości obliczonych w locie przez funkcje agregujące jest możliwe tylko poprzez HAVING)

Złączenie tabel

Złączenie tabel W operacji złączenia tabel zawsze biorą udział dwie tabele A i B ( lewa i prawa odpowiednio; ta sama tabela może występować w złączeniu po obu stronach). Złączenie odbywa się poprzez porównanie wartości z kolumn wskazanych w sekcji ON. Z reguły kolumny te są kluczem własnym jednej z tabel oraz kluczem obcym drugiej tabeli.

Złączenie tabel Przykład: złączenie tabel Grupa i Student może się odbyć względem kolumn Grupa.ID oraz Student.GrupaID (w tym przypadku jest to jedyny możliwy sposób złączenia).

Rodzaje złączenia tabel: LEFT OUTER JOIN JOIN OUTER JOIN INNER JOIN RIGHT OUTER JOIN FULL OUTER JOIN

Złączenie wewnętrzne (inner join) Tabelę wynikową stanowią wiersze z obu tabel, wartości łączonych kolumn których są identycz Kolejność łączonych tabel A i B przy wykorzystaniu INNER JOIN nie jest istotna (tj. nie jest ważne którą z tabel wymieniono w SELECT a którą w sekcji JOIN).

Złączenie zewnętrzne (outer join) Złączenie zewnętrzne różni się od wewnętrznego sposobem traktowania pustej wartości NULL. W złączeniu wewnętrznym wiersze zawierające NULL przynajmniej w jednej z łączonych kolumn są pomijane. Złączenie zewnętrzne pozwala uwzględnić je w wyniku zwracanym przez kwerendę, tj.: OUTER JOIN = INNER JOIN + NULL W złączeniu zewnętrznym kolejność wystąpienia złączanych tabel jest istotna! Rozróżniają 3 rodzaje złączenia zewnętrznego: LEFT OUTER JOIN RIGHT OUTER JOIN (RIGHT JOIN) FULL OUTER JOIN (FULL JOIN)

Złączenie zewnętrzne lewostronne (LEFT OUTER JOIN) Złączenie lewostronne [A] Left Outer Join [B] umieszcza w tabeli wynikowej wszystkie wiersze z lewej tabeli (A) oraz odpowiadające im wartości z prawej (B). Przykład: Lista wszystkich studentów (włącznie z tymi nie przypisanymi do żadnej z grup)

Złączenie zewnętrzne prawostronne (RIGHT OUTER JOIN) Złączenie prawostronne [A] Right Outer Join [B] umieszcza w tabeli wynikowej wszystkie wiersze z prawej tabeli (B) oraz odpowiadające im wartości z lewej (A). Przykład: Lista wszystkich grup oraz przypisanych do nich studentów (włącznie z grupami nieposiadającymi ani jednego studenta)

Złączenie zewnętrzne obustronne (pełne) (FULL OUTER JOIN) W złączeniu obustronnym pełnym biorą udział wszystkie wierszy obu złączonych tabel kolejność wystąpienia tabel w SELECT JOIN nie ma znaczenia. Przykład: lista wszystkich grup oraz studentów (w tym grupy nie mające studentów oraz studenci nie należące do żadnej z grup)

Złączenie wielu tabel w jednym zapytaniu Klauzula JOIN może występować w zapytaniu SELECT wielokrotnie

Złączenie nierównościowe Złączenie nierównościowe opiera się na innym niż = operatorze relacyjnym. Przykład: zapytanie wybiera wszystkie pary grup A i B z tabeli Grupy, przy tym ta sama grupa nie może wystąpić w obu kolumnach jednocześnie ("turniej")

Podzapytania Zapytania w języku SQL mogą być zagnieżdżane. Wynik zwrócony przez zapytanie może być daną wejściową dla innego zapytania np. jako warunek SELECT lub JOIN. W zależności od ilości wartości zwracanych przez podzapytanie, rozróżniają: Podzapytania proste wykonywane jednokrotnie przed wykonaniem zapytania głównego Podzapytania skorelowane wykonywane dla każdego wiersza zapytania głównego

Podzapytania proste Przykład: zapytanie zwraca numer grupy o maksymalnej liczbie studentów Jeśli podzapytanie zwraca więcej niż jedną wartość, należy posłużyć się instrukcją IN. Przykład: zapytanie zwraca listę grup liczba studentów których przekracza 15: SELECT Numer FROM Grupa WHERE ID IN ( SELECT GrupaID FROM Student GROUP BY GrupaID HAVING COUNT(*) > 15 ) Podzapytania proste mogą być wielokrotnie zagnieżdżane, wykonanie zawsze rozpoczyna się od najbardziej zagnieżdżonego zapytania i podąża w kierunku zapytania nadrzędnego

Podzapytania skorelowane Podzapytania skorelowane są wykonywane dla każdego wiersza zapytania nadrzędnego wykorzystując zwróconą przez niego informację. Przykład: zapytanie zwraca listę grup liczba studentów których przekracza 15: SELECT Numer FROM Grupa WHERE (SELECT COUNT(*) FROM Student WHERE GrupaID=Grupa.ID) > 15 Zapytania skorelowane często są wykonywane na tej samej tabeli. W takim przypadku należy posłużyć się aliasem nazwy. Przy napisaniu zapytań skorelowanych należy brać pod uwagę potencjalną czasochłonność ich wykonania.

Polecenie INSERT INSERT INTO [tabela] ( lista kolumn ) VALUES ( lista wartości ) Uwaga: Liczba wymienionych kolumn = liczba wartości w sekcji VALUES Typy danych kolumn = typy danych wstawianych wartości Kolejność kolumn nie ma znaczenia Kolumny nie wymienione na liście uzyskają wartości NULL lub wartości domyślne o ile zostały one zdefiniowane Zapis wartości poszczególnych typów: Łańcuchy tekstowe, daty oraz wartości binarne w apostrofach Liczby bez apostrofów

Polecenie UPDATE UPDATE [tabela] SET kolumna1 = wartość1 [, kolumna2 = wartość2 ] WHERE [warunek] Aktualizacja dotyczy dowolnej liczby wierszy (w tym zerowej) dla których spełniony zostaje warunek WHERE Pominięcie WHERE aktualizuje wszystkie wiersze w tabeli Aktualizacja dotyczy tylko danych w wymienionych kolumnach Aktualizować można również dane w kolumnach objętych warunkiem WHERE, ponieważ SZBD najpierw dokonuje operacji selekcji wierszy wg warunku WHERE

Polecenie DELETE DELETE FROM [tabela] WHERE [warunek] Operacja usunięcia dotyczy całego wiersza Usuwane są wszystkie wiersze, dla których spełniony jest warunek WHERE Pominięcie WHERE powoduje usunięcie danych z całej tabeli DELETE FROM Obecnosc Operację usunięcia wszystkich danych z tabeli zaleca się przeprowadzać za pomocą alternatywnego polecenia TRUNCATE TABLE [tabela], które się wykonuje znacznie szybciej