Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Podobne dokumenty
Paweł Rajba

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

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

Język SQL, zajęcia nr 2

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wykład 8. SQL praca z tabelami 5

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

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

Przestrzenne bazy danych Podstawy języka SQL

Bazy danych 10. SQL Widoki

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

Bazy danych. Dr inż. Paweł Kasprowski

Język SQL podstawy zapytań

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

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

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

Systemy GIS Tworzenie zapytań w bazach danych

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

Przykładowa baza danych BIBLIOTEKA

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

LAB 3 (część 1 Projektu)

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

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Oracle PL/SQL. Paweł Rajba.

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Język SQL, zajęcia nr 1

SQL (ang. Structured Query Language)

Grupowanie i funkcje agregujące

Oracle11g: Wprowadzenie do SQL

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

Relacyjne bazy danych. Podstawy SQL

Bazy danych Ćwiczenia projektowe

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

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

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Bazy danych - Materiały do laboratoriów VIII

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Autor: Joanna Karwowska

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

Wykład 05 Bazy danych

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

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

Projektowanie systemów baz danych

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

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

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

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

ACESS- zadania z wykorzystaniem poleceń SQL

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Współczesne systemy baz danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy danych 7. SQL podstawy

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

SQL Structured Query Language

Język SQL. Rozdział 8. Język manipulowania danymi DML

Bazy danych i usługi sieciowe

Wykład 6. SQL praca z tabelami 3

Typy Oracle atrybutów relacji Typ NUMBER (1)

Aspekty aktywne baz danych

Typy Oracle atrybutów relacji Typ NUMBER (1)

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

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Język zapytań SQL- język relacyjnych baz danych

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

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

Współczesne systemy baz danych

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

Wykład 2. SQL 1 Structured Query Lenguage

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Autor: Joanna Karwowska

Oracle PL/SQL. Paweł Rajba.

Bazy danych Ćwiczenia projektowe

WPROWADZENIE DO JĘZYKA SQL

SQL Structured Query Language

3. Podzapytania, łączenie tabel i zapytań

Microsoft SQL Server Podstawy T-SQL

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

MS SQL Język definiowania danych (DDL): ćwiczenia

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Zbiór zadań z SQLa z elementami T-SQLa. (Wersja robocza z dnia r.) (Zgłaszanie usterek Robert.Fidytek@inf.ug.edu.pl)

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

Wykład 5. SQL praca z tabelami 2

Bazy danych. Polecenia SQL

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

SQL/MySQL. Rafał Kern

Bazy danych Język SQL część 1 Wykład dla studentów matem

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

Transkrypt:

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia, podzapytania, grupowanie, operacje na zbiorach

SQL, czyli Structured Query Language Umożliwia Definiowanie struktur bazy danych DDL Data Definition Language Operowanie na danych: dodawanie, udostępnianie, modyfikowanie i usuwanie DML Data Manipulation Language Zarządzanie dostępem do danych DCL Data Control Language Definiowanie zapytań DQL Data Query Language

Język pojawił się oficjalnie w 1974 jako Structured English Query Language SEQUEL Twórcy: Donald D. Chamberlin i Raymond F. Boyce 1987: SQL-86 jako oficjalny standard ISO/ANSI Kolejne standardy: SQL-89, SQL-92, SQL:1999 SQL:2003, SQL:2006, SQL:2008, SQL:2011 http://en.wikipedia.org/wiki/sql#standardization Przyjrzymy się językowi SQL w wersji Oracle

Relacyjna baza danych składa się z: Tabelek (a.k.a. encji, relacji) Powiązań między nimi i mnóstwem innych obiektów, ale podstawa to tabelki Tabela Kolumny, wiersze Klucz główny Więzy integralności Powiązania między tabelami, czyli klucz obcy Ksiazka(isbn, tytul, autor, rok_wydania, cena) Egzemplarz(sygnatura, isbn) {Egzemplarz.isbn} {Ksiazka.isbn}

Wbudowane typy danych VARCHAR2(size), NVARCHAR2(size) NUMBER [ (p [, s]) ], FLOAT [(p)] LONG, INT DATE BINARY_FLOAT, BINARY_DOUBLE TIMESTAMP RAW(size), LONG RAW ROWID CHAR [(size)], NCHAR[(size)] CLOB, NCLOB BLOB, BFILE Więcej: http://docs.oracle.com/database/121/sqlrf/sql_elements001.htm#sqlrf30020 Można także tworzyć własne typy dane

CREATE TABLE <nazwa> ( <kolumna1> <typ1> [<więzy kolumny 1>], <kolumnan> <typn> [<więzy kolumny N>], [<więzy tabeli>] )

Więzy kolumny [CONSTRAINT <nazwa więzu>] NOT NULL DEFAULT <wartość domyślna> PRIMARY KEY UNIQUE CHECK (<warunek>) REFERENCES <tabela> [(<kolumna>)] [ON DELETE {SET NULL CASCADE}] Więzy tabeli [CONSTRAINT <nazwa więzu>] PRIMARY KEY (<lista kolumn>) UNIQUE (<lista kolumn>) FOREIGN KEY (<lista kolumn>) REFERENCES <tabela>(<lista kolumn>) [ON DELETE {SET NULL CASCADE}] CHECK (<warunek>)

CREATE TABLE KSIAZKA ( KSIAZKA_ID INT, ISBN VARCHAR2(20), TYTUL VARCHAR2(300), AUTOR VARCHAR2(200), ROK_WYDANIA NUMBER(4), CENA NUMBER(10,2), CONSTRAINT KSIAZKA_PK PRIMARY KEY (KSIAZKA_ID), CONSTRAINT KSIAZKA_UK_ISBN UNIQUE (ISBN) ); CREATE TABLE EGZEMPLARZ ( EGZEMPLARZ_ID INT, SYGNATURA CHAR(8), KSIAZKA_ID INT, CONSTRAINT PK_KSIAZKA PRIMARY KEY (KSIAZKA_ID), CONSTRAINT EGZEMPLARZ_UK_SYGNATURA UNIQUE (SYGNATURA), CONSTRAINT KSIAZKA_FK FOREIGN KEY (KSIAZKA_ID) REFERENCES KSIAZKA (KSIAZKA_ID) ON DELETE CASCADE );

CREATE VIEW <nazwa widoku> AS <select statement> http://docs.oracle.com/cd/b28359_01/server.111/b28286/statements_8004.htm#sqlrf01504

CREATE SEQUENCE KSIAZKA_PKSEQ INCREMENT BY 1 START WITH 1 NOMAXVALUE MINVALUE 1 CYCLE CACHE 20 ORDER;

ALTER TABLE <nazwa tabeli> ADD COLUMN <kol> <typ> RENAME COLUMN <kol1> TO <kol2> DROP COLUMN <nazwa kolumny> ADD CONSTRAINT <nazwa> CHECK (<wiez>) DROP TABLE <nazwa tabeli> DROP SEQUENCE <nazwa>

INSERT INTO t (k1,k2, ) VALUES(v1,v2, ) UPDATE t SET k1=v1,k2=v2, WHERE <warunek> DELETE FROM t WHERE <warunek> CRUD= CREATE RETRIEVE UPDATE DELETE

Podstawowa składnia SELECT kolumna1, kolumna2, FROM tabela1 WHERE warunki ORDER BY 1,2, Jakie mogą być warunki? Operatory: =, <, >, <=, >=, IN (s1,s2, ), LIKE napis, BETWEEN AND Cena < 1000,00 Nazwisko LIKE 'A%' Gatunek IN ('muzyka', 'sf', 'biografie') Wiek BETWEEN 30 AND 40

Funkcje agregujące COUNT, AVG, SUM, MIN, MAX Znaczenie słowa DISTINCT Znaczenie tabeli DUAL SELECT 2+3 as wynik FROM dual

Lista książek o cenie do 60 zł, które mają w tytule SQL Server SELECT * FROM Ksiazka WHERE Tytul LIKE '%SQL Server%' AND Cena<60 Najdroższa i najtańsza książka SELECT MIN(Cena) AS Najtańsza, MAX(Cena) AS Najdroższa FROM Ksiazka Średni czas wypożyczenia SELECT AVG(LICZBA_DNI) AS "Średni czas wypożyczenia" FROM Wypozyczenie

Złączenie polega na wyświetleniu w wynikowej tabelce danych z wielu tabel Jak ta tabelka jest budowana? Mamy kilka rodzajów złączeń: Pełne Wewnętrzne Zewnętrzne lewe i prawe

Pełne SELECT k.*, e.* FROM Ksiazka k, Egzemplarz e Wewnętrzne SELECT k.*, e.* FROM Ksiazka k, Egzemplarz e WHERE k.ksiazka_id=e.ksiazka_id SELECT k.*, e.* FROM Ksiazka k INNER JOIN Egzemplarz e ON k.ksiazka_id=e.ksiazka_id Zewnętrzne SELECT k.*, e.* FROM Ksiazka k LEFT JOIN Egzemplarz e ON k.ksiazka_id=e.ksiazka_id

Tytuły i liczby dni, na które książki były wypożyczane SELECT k.tytuł, w.dni FROM Wypozyczenie w, Egzemplarz e, Ksiazka k WHERE w.egzemplarz_id = e.egzemplarz_id AND k.ksiazka_id = e.ksiazka_id SELECT k.tytul, w.liczba_dni FROM Wypozyczenie w JOIN Egzemplarz e ON w.egzemplarz_id = e.egzemplarz_id JOIN Ksiazka k ON k.ksiazka_id = e.ksiazka_id Cena wszystkich książek (10) SELECT SUM(Cena) FROM Ksiazka k JOIN Egzemplarz e ON k.ksiazka_id = e.ksiazka_id

Inny przykład Nośnik reklamowy można rezerwować dokładnością do 10 minut Rezerwację na zakres pewnej liczby dni chcemy modelować listą slotów 10 minutowych Z której możemy potem usuwać pojedyncze sloty Jak to zrobić?

Rozwiązanie Tworzymy dwie tabele: Slownik_Dni Slownik_Slotow_Na_Dzien Dane: dzien_od, dzien_do Wstawianie rezerwacji: INSERT INTO rezerwacja ( ) SELECT FROM Slownik_Dni, Slownik_Slotow_Na_Dzien WHERE Slownik_Dni.dzien BETWEEN dzien_od and dzien_do

Kiedy występuje podzapytanie? Rodzaje podzapytań Nieskorelowane SELECT czytelnik_id, nazwisko FROM czytelnik WHERE czytelnik_id IN (SELECT DISTINCT czytelnik_id FROM WYPOZYCZENIE); Skorelowane SELECT c.czytelnik_id, c.nazwisko FROM czytelnik c WHERE EXISTS (SELECT 1 FROM WYPOZYCZENIE w WHERE w.czytelnik_id=c.czytelnik_id);

Inny przykład SELECT * FROM (SELECT * FROM Ksiazka WHERE ROK_WYDANIA>2008)

Operatory ANY/SOME, ALL substr(nazwisko,1,1) = ANY('A', 'B','C') pensja > ALL(SELECT pensja FROM pracownik) EXISTS, NOT EXISTS EXISTS(SELECT * FROM Zamowienia WHERE ) IN, NOT IN substr(nazwisko,1,1) IN ('A', 'B','C') telefon NOT IN (SELECT telefon FROM pracownik) http://stackoverflow.com/questions/2298550/oracle-any-vs-in http://awads.net/wp/2005/08/09/any-some-and-all-in-oracle/

Wynik zapytania dzielimy na grupy Dla każdej grupy wykonujemy agregację Przykłady Proste podliczenie liczby egzemplarzy SELECT ksiazka_id, COUNT(egzemplarz_id) as "Liczba egzemplarzy" FROM egzemplarz GROUP BY ksiazka_id; SELECT k.tytul, COUNT(e.egzemplarz_id) as "Liczba egzemplarzy" FROM ksiazka k JOIN egzemplarz e ON k.ksiazka_id = e.ksiazka_id GROUP BY k.tytul; Jaka jest różnica? Czy w drugim przypadku ten JOIN jest najlepszym pomysłem?

Klauzula HAVING umożliwia określanie grup, które mają się znaleźć w wyniku Jaka jest zależność pomiędzy WHERE i HAVING? Przykłady SELECT k.tytul, COUNT(e.egzemplarz_id) as "Liczba egzemplarzy" FROM ksiazka k JOIN egzemplarz e ON k.ksiazka_id = e.ksiazka_id GROUP BY k.tytul HAVING COUNT(e.egzemplarz_id)>=3 SELECT k.tytul, COUNT(e.egzemplarz_id) as "Liczba egzemplarzy" FROM ksiazka k JOIN egzemplarz e ON k.ksiazka_id = e.ksiazka_id WHERE e.egzemplarz_id NOT IN (SELECT egzemplarz_id FROM wypozyczenie) GROUP BY k.tytul HAVING COUNT(e.egzemplarz_id)>=3

UNION [ALL], INTERSECT, MINUS SELECT tytul FROM ksiazka WHERE substr(tytul, 1, 1)='S' UNION UNION ALL INTERSECT MINUS SELECT tytul FROM ksiazka WHERE substr(tytul, -1) in ('w','a','k')