SQL Structured Query Language



Podobne dokumenty
SQL Structured Query Language

SQL Structured Query Language

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

Przestrzenne bazy danych Podstawy języka SQL

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

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Dr inż. Paweł Kasprowski

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

Relacyjne bazy danych. Podstawy SQL

Paweł Rajba

mail: strona: konsultacje: na stronie (po wcześniejszym umówieniu drogą mailową)

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

Relacyjne bazy danych. Podstawy SQL

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Wykład 5. SQL praca z tabelami 2

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

Model relacyjny. Wykład II

Język SQL, zajęcia nr 1

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

27 lutego Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład I. dr inż.

Język SQL podstawy zapytań

Model relacyjny. Wykład II

SQL (ang. Structured Query Language)

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Wprowadzenie do języka SQL

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

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

1 Wstęp do modelu relacyjnego

Microsoft SQL Server Podstawy T-SQL

Bazy danych 7. SQL podstawy

Wykład 8. SQL praca z tabelami 5

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Język SQL. Rozdział 2. Proste zapytania

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

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

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

Projektowanie systemów baz danych

Wykład 6. SQL praca z tabelami 3

Grupowanie i funkcje agregujące

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

STANDARDY JĘZYKA SQL CECHY JĘZYKA SQL WADY I ZALETY

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

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

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

BAZY DANYCH. Anomalie. Rozkład relacji i normalizacja. Wady redundancji

Dr Michał Tanaś(

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

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

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

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Wykład 4. SQL praca z tabelami 1

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

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

Wykład XII. optymalizacja w relacyjnych bazach danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Wykład 05 Bazy danych

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

Współczesne systemy baz danych

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

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

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

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

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

Bazy danych - Materiały do laboratoriów VIII

Współczesne systemy baz danych

SIECI KOMPUTEROWE I BAZY DANYCH

Tworzenie baz danych i tabel

Bazy danych 5. Samozłaczenie SQL podstawy

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

3. Podzapytania, łączenie tabel i zapytań

Autor: Joanna Karwowska

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

Wykład 2. SQL 1 Structured Query Lenguage

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

Oracle11g: Wprowadzenie do SQL

Ćwiczenie zapytań języka bazy danych PostgreSQL

Wykład :45 BD-1 W_3

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Autor: Joanna Karwowska

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawy języka SQL cz. 2

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.

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych. Polecenia SQL

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

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

Technologie baz danych

Transkrypt:

SQL Structured Query Language stworzony na początku lat 70 ubiegłego wieku w IBM przez Donalda Messerly'ego, Donalda Chamberlina oraz Raymonda Boyce'a pod nazwą SEQUEL pierwszy SZBD System R utworzony przez IBM w 1973 r wykorzystujący SEQUEL pierwszy komercyjny SZBD stworzony przez Relational Software ( obecnie Oracle ) w 1979 r dla amerykańskiej marynarki wojennej, CIA i kilku agencji rządowych od 1986 r SQL jest oficjalnym standardem ( ANSI ), od 1987 ( ISO ) aktualny standard SQL: 2011 Cechy SQL: język deklaratywny język interpretowany dostęp do danych z poziomu tabel zbliżony konstrukcją do języka naturalnego wykorzystuje logikę trójwartościową bazuje na algebrze relacyjnej nie jest w pełni zgodny z modelem relacyjnym Możliwości SQL wyszukiwanie danych dopisywanie, usuwanie i modyfikacja danych tworzenie, usuwanie i modyfikowanie obiektów bazo_danowych zarządzanie transakcjami zarządzanie bazą danych Formy języka SQL interakcyjny ( autonomiczny ) statyczny kod SQL ( Static SQL ) dynamiczny kod SQL ( Dynamic SQL ) Składowe SQL DML ( Data Manipulation Language ) do manipulacji danymi, zawierający polecenia SELECT, UPDATE, INSERT, DELETE itp. DDL ( Data Definition Language ) do definiowania obiektów baz danych; polecenia CREATE, DROP, ALTER itp. DCL ( Data Control Language ) do zarządzania bazą danych polecenia COMMIT, ROLLBACK, GRANT, REVOKE itp. 1

Wady SQL standard nie jest przestrzegany przez różnych producentów narzędzi do baz danych nie określa zachowań bazy danych w wielu sytuacjach ( np.: indeksowanie, składowanie ) zbliżenie SQL'a do języka mówionego spowodowało większą złożoność składni czasem brak konsekwencji w składni wynikająca z pozostawienia starych form zbyt łatwe uzyskiwanie wyniku iloczynu kartezjańskiego Składniki polecenia ( instrukcji ) SQL klauzule, niektóre opcjonalne wyrażenia predykaty określające warunki średnik kończący polecenie wielkość liter w składni nie ma znaczenia Podstawowe typy danych SQL wg ANSI CHARACTER( n ), CHAR( n ) - ciąg znaków o stałej długości określone przez rozmiar n CHARACTER VARYING( n ), CHAR VARYING( n ) - ciąg znaków o zmiennej długości, nie przekraczającej podanego rozmiaru n NUMERIC( p, s ), DECIMAL( p, s ) - liczby o ustalonej precyzji p i skali s INTEGER, INT, SMALLINT liczby całkowite FLOAT( b ), DOUBLE PRECISION, REAL liczby zmiennoprzecinkowe DATE data w formacie: YYYY-MM-DD TIME czas w formacie: HH:MI:SS TIMESTAMP data wraz z czasem znacznik czasu w formacie : YYYY-MM-DD HH:MI:SS INTERVAL przedział czasu BLOB dane binarne CLOB dane znakowe XML dane w formacie XML Składnia zapytania SELECT [ DISTICT ] < lista_wynikowa > FROM < źródło_danych > [ WHERE < warunek_logiczny_dla_wierszy > ] [ GROUP BY < kryterium_grupowania > [ HAVING < warunek_logiczny_dla_grup > ] ] [ ORDER BY < kryterium_porządkowania > ] ; Klauzule SELECT oraz FROM są obowiązkowe; kolejność poszczególnych klauzul jest ważna 2

Klauzula SELECT określa schemat relacji wynikowej; słowo kluczowe DISTINCT ( bez duplikatów) stosujemy aby w wyniku otrzymać różne krotki ( wiersze ) praktykuje się użycie operatora * - lista wynikowa zawiera wszystkie atrybuty z relacji źródłowych lista wynikowa to elementy oddzielane przecinkiem element z listy może być atrybutem z relacji źródłowych, wyrażeniem typu liczbowego, tekstowego, datowego w szczególności funkcją istnieje możliwość stosowania aliasów ( przezwisk ) dla wyrażeń Klauzula FROM określa źródło danych; może to być jedna ( nazwana ) relacja, lub połączone relacje w szczególności ( nienazwana ) relacja jako wynik podzapytania Klauzula WHERE określa warunek logiczny jaki ma być spełniony przez krotki ( wiersze tabeli ) relacji wynikowej Warunek logiczny budujemy używając operatory: porównania ( =, <>, <, <=, >, LIKE, NOT LIKE ) zawierania w przedziale ( BETWEEN... AND ) zawierania w zbiorze ( IN ) operatorów logicznych (ALL, AND, ANY, EXISTS, NOT, OR ) operatory do obsługi wartości NULL ( IS NULL, IS NOT NULL) oraz atrybuty z relacji źródłowych, literały, a także funkcje Klauzula GROUP BY umożliwia podzielenie relacji wynikowej na podzbiory agregację pojedynczy podzbiór/grupę stanowią krotki, dla których kryterium grupowania ma identyczną wartość. na liście wynikowej klauzuli SELECT mogą wystąpić jedynie elementy związane z kryterium grupowania, funkcje agregujące (COUNT, SUM, AVG, MIN, MAX i inne) Klauzula HAVING określa warunki dla podzbiorów/grup, które powstały w wyniku agregacji jest możliwa tylko z klauzulą GROUP BY Klauzula ORDER BY umożliwia posortowanie danych wynikowych według zadanego kryterium kryterium może to być lista atrybutów z relacji źródłowych, wyrażenie, alias lub liczba wskazująca pozycje na liście wynikowej klauzuli SELECT możliwy jest porządek sortowania; rosnący, malejący, losowy opcja (klauzula) ORDER BY występuje w składni tylko raz SELECT nr_albumu, rok, gr_dziekan FROM Studenci WHERE rodzaj_studiow='inż_niest' AND rok IS NOT NULL ORDER BY 2, 3 ; SELECT kraj, Count(*), Sum(koszt) FROM Filmy GROUP BY kraj HAVING Count(*) > 2 ORDER BY kraj ; 3

Złączenia tabel w języku SQL Notacja w standardzie ANSI SQL FROM < tabela1> [ AS <alias> ] { CROSS JOIN [ NATURAL ] [ <rodzaj_połączenia> ] JOIN < tabela2 > [ AS < alias > ] { ON <warunek1> [ { AND OR } <warunek2> ] [... ] ] USING <atrybut1 > [,... ] ) } } Typy połączeń Iloczyn kartezjański daje w wyniku tabelę składającą się ze wszystkich możliwych kombinacji wierszy obu łączonych tabel SELECT m.imiona,m.rok FROM Studenci k CROSS JOIN Studenci m WHERE k.nr_albumu = ' ' AND to_char(m.data_urodzenia,'yyyy') IN ('1988', '1989','1990') AND m.rodzaj_studiow=' INŻ_NIEST' AND m.imiona NOT LIKE '%A' ; Złączenia naturalne daje w wyniku iloczyn kartezjański łączonych tabel ograniczony do tych wierszy, dla których atrybuty o tych samych nazwach i typach w obu tabelach mają równe wartości SELECT nazwisko, imie, rola, tytul FROM Filmy NATURAL JOIN Obsady WHERE rezyser LIKE 'Wajda%' ; Złączenie warunkowe ( tetha złączenie ) daje w wyniku iloczyn kartezjański łączonych tabel ograniczony do tych wierszy, dla których został spełniony warunek tetha SELECT nazwa, nazwisko FROM Pracownicy JOIN Dzialy USING ( id_dzialu); stary zapis SELECT * FROM Pracownicy p, Dzialy d WHERE p.id_dzialu=d.id_dzialu; Złączenie zewnętrzne rozszerza rezultat złączenia równościowego o te wiersze jednej lub obu tabel, dla których nie odnaleziono odpowiedników w drugiej tabeli. Wiersze stanowiące rozszerzenie są wypełnione wartością NULL. Złączenia zewnętrzne dzielą się na lewostronne, prawostronne, pełne SELECT nazwa,count(nr_akt) Liczba, sum(placa+nvl(dodatek_funkcyjny,0)) Budzed FROM Pracownicy FULL JOIN Dzialy USING(Id_dzialu) GROUP BY Nazwa ; 4

Samozłączenie złączenie relacji samej z sobą SELECT p.nazwisko AS Pracownik, s.nazwisko AS Kierownik FROM Pracownicy p JOIN Pracownicy s ON (p.kierownik = s.nr_akt ); Podzapytania mogą być zagnieżdżone w klauzulach SELECT, FROM, WHERE oraz HAVING SELECT nazwisko,placa FROM Pracownicy WHERE placa = ( SELECT min( placa ) FROM Pracownicy ); SELECT * FROM ( SELECT nazwisko, placa FROM Pracownicy ORDER BY 2 DESC ) WHERE rownum<=3 ; SELECT imiona,count(*) FROM Studenci WHERE rodzaj_studiow='inż_niest' GROUP BY imiona HAVING count(*) = ( SELECT max(count(*)) FROM Studenci WHERE rodzaj_studiow='inż_niest' GROUP BY imiona) ; SELECT nr_albumu, rok FROM Studenci s WHERE data_urodzenia = ( SELECT max(data_urodzenia) FROM Studenci WHERE rok = s.rok ) ; polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { <nazwa_tabeli> <nazwa_perspektywy>} SET { {<nazwa_atrybutu1> = <wyrażenie> DEFAULT NULL}, {<nazwa_atrybutu2> = <wyrażenie> DEFAULT NULL},...} [WHERE <warunek_logiczny> ]; UPDATE Studenci SET rok = rok + 1 WHERE rodzaj_studiow =' INŻ_NIEST'; UPDATE Studenci SET rok = rok 1 WHERE nr_albumu IN ( '111','100'); 5

UPDATE Pracownicy SET placa = placa * 1.2 WHERE nr_akt IN ( SELECT kierownik FROM Pracownicy ); polecenie INSERT pozwala wstawiać do tabeli lub perspektywy nowe wiersze. składnia: INSERT INTO { <nazwa_tabeli> <nazwa_perspektywy>} [ (<nazwa_atrybutu1> [,... ] ) ] { DEFAULT VALUES VALUES ( <wartość1 [,...] ) SELECT... } ; INSERT INTO Dzialy VALUES (85,' Logistyka','Radom'); INSERT INTO Pracownicy ( nr_akt, nazwisko ) VALUES ( 700,'Nowak'); INSERT INTO Absolwenci ( nazwisko, imiona, rocznik ) SELECT nazwisko, imiona, to_char(sysdate,'yyyy') FROM Studenci WHERE rodzaj_studiow='inż_st' AND semestr='vii' ; Polecenie DELETE Usuwa wiersze z danej tabeli lub perspektywy Składnia: DELETE FROM { <nazwa_tabeli> <nazwa_perspektywy> } [ WHERE <warunek_logiczny> ]; Przykłady: DELETE Studenci WHERE rok = 5; DELETE FROM Robocza ; Normalizacja Anomalie Proces dekompozycji; odwracalny rozpoczynający się od podstawowej relacji zmierzającej do schematu optymalnego, pozbawionego anomalii. wstawiania usuwania modyfikacji 6

Proces normalizacji musi odbywać się bez strat danych; żaden atrybut nie może zostać zgubiony zależności; wszystkie zależności funkcyjne muszą być reprezentowane w pojedynczych schematach relacji proces normalizacji spowoduje: o o o spłaszczenie struktury danych poprzez eliminację atrybutów złożonych ustalenie pierwotnych i obcych kluczy relacji wyeliminowanie niepożądanych zależności pomiędzy kolumnami relacji poprzez wprowadzenie nowych relacji aktualnie rozróżnia się pięć postaci normalnych proces normalizacji jest (zazwyczaj) kończony po osiągnięciu 3NF, która w większości praktycznych zastosowań uznawana jest za wystarczającą przekształcanie relacji do zaawansowanych postaci normalnych dotyczy tabel, które posiadają więcej niż 3 atrybuty i każdy z nich pełni funkcję klucza Postacie normalne ( zdefiniowane przez Codda ) Pierwsza postać normalna 1NF relacja jest w pierwszej postaci normalnej, jeśli każda wartość atrybutu w każdej krotce tej relacji jest wartością atomową Dalsze postacie normalne 2NF, 3NF relacja jest w drugiej postaci normalnej, jeśli jest w 1NF i każdy atrybut nie należący do żadnego klucza potencjalnego jest zależny funkcyjnie od całego klucza głównego relacja jest w trzeciej postaci normalnej jeśli jest w 2NF i wszystkie atrybuty nie należące do żadnego klucza potencjalnego są wzajemnie niezależne Przysięga normalizacji ( parafraza ) 1. Bez powtórzeń 2. Atrybuty zależą od klucza 3. Od całego klucza 4. I niczego innego, tylko klucza 5. Tak mi dopomóż Codd. 7

Tabela ZAMÓWIENIA Nr_ Id_ zamówienia dostawcy Nazwa_ dostawcy Adres_ dostawcy Id_ części Nazwa_ Części Ilość_ zam_części Magazyn Adres_ magazynu 001 300 NISSAN Liege 53 Pompa 100 5 Warszawa 001 300 NISSAN Liege 57 Filtr 50 5 Warszawa 001 300 NISSAN Liege 59 Błotnik 500 6 Szczecin 002 400 HONDA Glasgow 54 Pompa 500 5 Warszawa 002 400 HONDA Glasgow 32 Koło 100 6 Szczecin 003 500 TOYOTA Tokio 88 Silnik 15 7 Poznań 004 600 HONDA London 59 Błotnik 400 6 Szczecin Założenia tabela zawiera informacje o zamówieniach części u dostawców i skierowaniu ich do odpowiednich magazynów jedno zamówienie może dotyczyć wielu części dostarczanych przez tego samego dostawcę różne zamówienia mogą dotyczyć tego samego dostawcy i tych samych części ta sama część może być dostarczana przez różnych dostawców te same części są składowane zawsze w tym samym magazynie w zamówieniach jest podawany identyfikator dostawcy i nazwa dostawcy, gdyż różni dostawcy mogą mieć tę samą nazwę ( np. Honda ) Wady ( ANOMALIE ) tabeli ZAMÓWIENIA występuje dublowanie się danych; wielokrotnie jest pamiętany adres dostawcy; podobnie magazynu w tej tabeli nie możemy zapisać adresu dostawcy, do którego nie złożono żadnego zamówienia usuwając informację o zamówieniu skierowanym do danego dostawcy, możemy utracić informacje o jego adresie analogiczna sytuacja występuje w odniesieniu do magazynu i jego adresu proponowane tabele po normalizacji: Zamowienie_do_dostawcy(Nr_zamowienia, Id_dostawcy) Czesci(Id_czesci, Nazwa_czesci) Czesci_w_magazynie(Id_czesci, Magazyn) Magazyny(Magazyn, Adres_magazynu) Dostawcy(Id_dostawcy, Nazwa_dostawcy, Adres_dostawcy) Dostawy_czesci(Nr_zamowienia, id_czesci, ilosc_zam_czesci) Wykorzystano Wykłady dr inż. Olga Siedlecka-Lamch - Systemy baz danych z roku 2012 8