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

Język SQL. Rozdział 2. Proste zapytania

Wprowadzenie do języka SQL

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

Relacyjne bazy danych. Podstawy SQL

Autor: Joanna Karwowska

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Język SQL podstawy zapytań

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Wykład 6. SQL praca z tabelami 3

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

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

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

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

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

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

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

Relacyjne bazy danych. Podstawy SQL

Bazy danych. Dr inż. Paweł Kasprowski

3. Podzapytania, łączenie tabel i zapytań

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

Autor: Joanna Karwowska

Wykład 5. SQL praca z tabelami 2

SQL Structured Query Language

Microsoft SQL Server Podstawy T-SQL

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

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

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

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

Autor: Joanna Karwowska

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

Język SQL, zajęcia nr 1

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

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

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

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

Wprowadzenie do baz danych

Bazy danych. Polecenia SQL

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

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

Podstawy języka SQL cz. 2

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

Wprowadzenie do SQL Użycie kwerend i SQL

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

Zadania z SQLa (MS SQL Server)

Oracle11g: Wprowadzenie do SQL

Język SQL, zajęcia nr 2

SIECI KOMPUTEROWE I BAZY DANYCH

LAB 3 (część 1 Projektu)

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

Grupowanie i funkcje agregujące

Pobieranie danych, czyli instrukcja SELECT

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

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

Podstawowe zapytania SELECT (na jednej tabeli)

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ś(

Projektowanie systemów baz danych

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

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

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

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

SQL Structured Query Language

ACESS- zadania z wykorzystaniem poleceń SQL

PL/SQL. Funkcje wbudowane

Bazy danych Access KWERENDY

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wykład 05 Bazy danych

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

Technologie baz danych

SQL praca z tabelami 4. Wykład 7

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

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

Bazy danych 7. SQL podstawy

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

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

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

Język SQL. Rozdział 3. Funkcje wierszowe

Laboratorium Bazy danych SQL 2

Transkrypt:

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

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

SELECT wybieranie danych Tabela Column1 Column2 Column3 ColumnN Wiersz 1 Wiersz 2 Wiersz 3 Wiersz 4 Wiersz 5.. Wybieranie danych w kolumnach Wybieranie danych w wierszach

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).

SELECT wskazanie kolumn SELECT [kolumny] FROM * - wszystkie kolumny [nazwa1] wskazana kolumna [nazwa1], [nazwa2], [nazwak] wybrane kolumny [nazwax] + [nazwa2] łączenie kolumn [wartość] obliczenie wartości (na podstawie kolumny lub nie związanej z nią)

SELECT filtrowanie wierszy SELECT [kolumny] FROM. WHERE [warunek] Warunek wyrażenie zwracające wartość typu BOOLEAN (wartość logiczna) [kolumna1] = [wartość1] filtrowanie wierszy wg wartości [warunek1] AND OR [warunek 2] - łączenie warunków NOT [warunek1] negacja warunku

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

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

SELECT sortowanie wyniku SELECT FROM ORDER BY [kolumny] Wynik kwerendy może być posortowany w dowolnej kolejności [kolumna1], [kolumna2], [kolumnax] najpierw wg kolumny 1, następnie kolumny 2 itp. [kolumna] DESC sortowanie malejące Jako nazwa kolumny może występować kolumna z tabeli lub sztywnie stworzona kolumna wyniku

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

Funkcje skalarne Funkcje działają na pojedynczych wartościach. Zwracają w miejscu wywołania wartość wyrażenia obliczonego na podstawie wartości pojedynczej komórki w tabeli ile mamy wierszy, tyle mamy wyników funkcji

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 ) CHARINDEX( what, where, [from] ) REPLACE( string, from, to ) Konwersja na małe / wielkie litery 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 Zwraca łańcuch string w którym wszystkie wystąpienia from zamieniono ciągiem znaków to

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 / Funkcje trygonometryczne ATAN 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