WPROWADZENIE DO JĘZYKA SQL



Podobne dokumenty
Widok Connections po utworzeniu połączenia. Obszar roboczy

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

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

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

Paweł Rajba

ACESS- zadania z wykorzystaniem poleceń SQL

SQL (ang. Structured Query Language)

Język SQL, zajęcia nr 1

Wykład 8. SQL praca z tabelami 5

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

Bazy danych. Dr inż. Paweł Kasprowski

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

Relacyjne bazy danych. Podstawy SQL

Ćwiczenie zapytań języka bazy danych PostgreSQL

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wprowadzenie do języka SQL

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

Wykład 05 Bazy danych

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

Relacyjne bazy danych. Podstawy SQL

Wykład 5. SQL praca z tabelami 2

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Bazy danych. Polecenia SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Przestrzenne bazy danych Podstawy języka SQL

Autor: Joanna Karwowska

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

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

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

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

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych 7. SQL podstawy

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy Danych i Usługi Sieciowe

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

Systemy GIS Tworzenie zapytań w bazach danych

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

Bazy danych i usługi sieciowe

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Język SQL. Rozdział 2. Proste zapytania

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

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

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

Język SQL, zajęcia nr 2

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

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

Grupowanie i funkcje agregujące

Bazy danych. dr inż. Arkadiusz Mirakowski

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

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

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

Bazy danych - Materiały do laboratoriów VIII

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

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

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

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

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

Bazy danych i usługi sieciowe

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

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

Projektowanie systemów baz danych

Komunikacja z bazą danych psql

Wykład 6. SQL praca z tabelami 3

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

Dr Michał Tanaś(

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

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

Bazy danych 5. Samozłaczenie SQL podstawy

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

Aspekty aktywne baz danych

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

Baza danych Uczniowie.mdb

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

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

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

Laboratorium Bazy danych SQL 3 1

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

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

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

SIECI KOMPUTEROWE I BAZY DANYCH

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

Zarządzanie bazą danych za pomocą poleceń języka SQL*Plus

Typy Oracle atrybutów relacji Typ NUMBER (1)

Wykład 2. SQL 1 Structured Query Lenguage

Typy Oracle atrybutów relacji Typ NUMBER (1)

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Hurtownia Świętego Mikołaja projekt bazy danych

Tworzenie baz danych i tabel

Wykład 4. SQL praca z tabelami 1

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.

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

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

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

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

NARZĘDZIA WIZUALIZACJI

Kurs. Podstawy MySQL

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Transkrypt:

J.NAWROCKI, M. ANTCZAK, H. DWIEK, W. FROHMBERG, A. HOFFA, M. KIERZYNKA, S. WĄSIK WPROWADZENIE DO JĘZYKA SQL KORZYSTANIE Z SQLITE 1) Pobierz paczkę z bazą danych ze strony prowadzącego (np. http://www.cs.put.poznan.pl/wfrohmberg/download/sqlite.zip) 2) Rozpakuj paczkę (np. do folderu sqlite) 3) Otwórz wiersz poleceo systemu Windows (Start->Uruchom, cmd<enter>) 4) Przejdź do folderu, do którego została wypakowana paczka (np. cd "C:\Documents and Settings\Default User\Desktop\sqlite ) 5) Uruchom wiersz poleceo sqlite3 (wpisując: sqlite3.exe nazwa_bazy) 6) Alternatywnie do 3)-5) można uruchomid skrypt sqlite.bat znajdujący się w rozpakowanym folderze. 7) Celem uzyskania pomocy na temat komend wiersza poleceo sqlite wpisujemy.help 8) W wierszu poleceo sqlite możemy korzystad z języka SQL celem wydobywania informacji z tabel bazy danych 9) Celem wyjścia z wiersza poleceo sqlite wpisujemy komendę.quit SCHEMATY BAZ DANYCH: Schematy baz danych stanowią opis ich struktury. Relacyjne bazy danych składają się z zależnych od siebie tabel. Zależności te reprezentowane są na schematach przez kreski łączące tabele (opisane nazwami tabel prostokąty). Schemat odnosi się również do organizacji danych zawartych w samych tabelach. Nazwy kolumn i ich typy są wyspecyfikowane w prostokątach tabeli. Przykładowy schemat bazy danych przedstawiony jest poniżej: ZESPOLY + ID_ZESP int NAZWA varchar(20) ADRES varchar(20) PRACOWNICY + ID_PRAC int NAZWISKO varchar(20) IMIE varchar(20) Bycie szefem ETATY + ID_ETAT int NAZWA varchar(20) PLACA_OD real PLACA_DO real

SKŁADNIA PROSTYCH ZAPYTAŃ SQL/DDL (DATA MANIPULATION LANGUAGE): 1. Wydobywanie danych Składnia prostego zapytania: SELECT kolumna(, kolumna)* FROM tabela (WHERE warunek)?; Sortowanie po kolumnie/kolumnach: SELECT kolumna(, kolumna)* FROM tabela (WHERE warunek)? ORDER BY kolumna (, kolumna)* (DESC ASC)?; Zapytanie do wielu tabel: SELECT ((tabela alias)\.)?kolumna(, ((tabela alias)\.)?kolumna)* FROM tabela1 (alias)? (LEFT RIGHT)? JOIN tabela2 (alias)? ON warunek_łączenia WHERE warunek; W miejscu kolumn można również wpisad formułę (np. matematyczną kolumna + wartość). 2. Funkcje agregacyjne Funkcje agregacyjne służą do wydobywania informacji statystycznych na temat zbiorów wartości. Przykładowe funkcje agregacyjne: COUNT(kolumna \*) liczba niepustych (NOT NULL) komórek (lub liczba wierszy w przypadku *), SUM(kolumna) suma niepustych wartości z komórek danej kolumny, AVG(kolumna) średnia niepustych wartośd z komórek danej kolumny, MIN(kolumna) minimalna spośród niepustych wartości z komórek danej kolumny, MAX(kolumna) maksymalna spośród niepustych wartości z komórek danej kolumny Przykład użycia funkcji agregacyjnych: SELECT COUNT(*) FROM tabela WHERE warunek; Najczęściej funkcje agregacyjne wykorzystywane są przy grupowaniu wierszy po którejś z kolumn. Grupowaniem nazywamy zatem łączenie krotek (wierszy) w zbiory nazywane zwyczajowo grupami. Poniżej przedstawiono przykład zgrupowania kilku wierszy tabeli X w grupy.

Tabela X: A B C D 1 25 178 4 2 25 165 NULL 3 19 200 2 4 21 NULL 1 5 NULL 180 1 6 21 145 NULL Grupując wiersze względem kolumny B otrzymamy 4 grupy oznaczone różnymi kolorami: 1 25 178 4 2 25 165 NULL 3 19 200 2 4 21 NULL 1 5 NULL 180 1 6 21 145 NULL Składnia grupowania: SELECT (kolumna_grupowania funkcja_agregacyjna(kolumna)) (, )? FROM tabelka (WHERE warunek)? GROUP BY kolumna (, kolumna)*; Klauzula HAVING pozwala wybrad te spośród grup, które spełniają odpowiednie warunki. Składnia grupowania z klauzulą HAVING: SELECT (kolumna_grupowania funkcja_agregacyjna(kolumna)) (, )? FROM tabelka (WHERE warunek)? GROUP BY kolumna (, kolumna)* HAVING warunek; Należy zwrócid uwagę, iż warunek klauzuli HAVING może zawierad tylko funkcje agregacyjne lub kolumny po których tworzono grupy. 3. Podzapytania Podzapytania to instrukcje SELECT zagnieżdżone wewnątrz innych instrukcji SQL. Podzapytania można umieszczad w następujących częściach instrukcji SELECT: wewnątrz klauzuli SELECT pod warunkiem zwrócenia przez podzapytanie wartości skalarnej. Np.: SELECT podzapytanie wewnątrz klauzuli WHERE pod warunkiem zwrócenia przez podzapytanie wartości skalarnej. Np.: WHERE kolumna<podzapytanie jako tabelę w klauzuli FROM lub JOIN. Np.: FROM tabela JOIN podzapytanie

Podzapytania umieszcza się w nawiasie w celu ujednoznacznienia kodu. 4. Wprowadzanie nowych krotek Wprowadzanie wartości do tabeli odbywa się za pomocą komendy INSERT. Składnia komendy INSERT jest następująca: INSERT INTO tabela (\(kolumna1(, kolumna2 )\))? ((VALUES \(wartość1(, wartość2 )?\)) podzapytanie); Przykładowo: INSERT INTO pracownicy (imie, nazwisko) VALUES ('Jan', 'Kowalski'); Należy zwrócid uwagę, iż wszystkie kolumny bez wartości domyślnych (tj. takie, które nie mogą zostad puste z modyfikatorem NOT NULL) muszą byd uwzględnione podczas wprowadzania krotek tabeli. 5. Zmiana wartości krotek Zmiany wartości w określonych kolumnach danych wierszy odbywa się za pomocą instrukcji UPDATE. Składnia instrukcja UPDATE jest następująca: UPDATE tabela SET kolumna = nowa_wartość (, kolumna = nowa_wartość ) WHERE warunek_zmiany; Warto zauważyd, że nowa_wartośd może korzystad z informacji o poprzedniej wartości. Do tego celu korzystamy z nazwy kolumny po prawej stronie podstawiania. Na przykład: UPDATE pracownicy SET placa=placa*1.1 WHERE nazwisko='kowalski'; Zwiększy pensję 1.1 krotnie pracownikom o nazwisku Kowalski. 6. Usuwanie krotek Usuwanie odpowiednich wierszy tabeli odbywa się za pomocą polecenia DELETE. Składnia polecenia jest następująca: DELETE FROM tabela WHERE warunek_usuwania; Przykładowo: DELETE FROM pracownicy WHERE nazwisko='nowak'; Usunie z bazy danych wszystkich pracowników o nazwisku Nowak.

SKŁADNIA INSTRUKCJI SQL/DDL (DATA DEFINITION LANGUAGE) Instrukcje DDL służą do definiowania/zmiany struktury tabel. W celu pełnego zrozumienia podstawowych instrukcji związanych z tworzeniem i modyfikacją struktury tabel trzeba wyjaśnid kilka pojęd: ograniczenie nałożone na tabele warunek spójności danych w tabeli; w przypadku, gdy któraś krotka nie spełniałaby tego warunku nie może zostad zapisana w tabeli. Zarówno wstawianie nowych krotek, usuwanie istniejących jak i modyfikacja na takie wartości, które zaburzyłoby ten warunek nie są dozwolone i powinno byd zablokowane przez bazę danych. ograniczenie na unikalnośd kolumny warunkiem spójności tabeli w przypadku nałożenia na tabelę tego ograniczenia jest to, że wartości w danej kolumnie tabeli nie powtarzają się. W przypadku, gdy ograniczenie to jest nałożone na kilka kolumn jednocześnie, warunkiem spójności jest to, że nie będzie istniał dokładnie taki sam zestaw wartości z unikalnych kolumn. klucz główny (podstawowy) tabeli to ograniczenie na unikalnośd kolumny/kolumn jednoznacznie identyfikujące wiersze tabeli. Domyślnie zabroniona jest modyfikacja wartości w kolumnach klucza głównego tabeli w wierszach, do których odwołują się inne tabele. klucz obcy tabeli ograniczenie na wartości kolumny/kolumn tabeli zapewniające, że w tabeli do której odwołuje się klucz będzie istniała wartośd/zestaw wartości, które chcemy wstawid do tabeli. ograniczenie na krotki warunkiem spójności danych w tabeli jest spełnienie ograniczenia przez każdą z krotek. 1. Instrukcja definiująca strukturę tabeli Składnia instrukcji jest następująca: CREATE nazwa_tabeli \( kolumna typ_danych ograniczenia (DEFAULT wartość_domyślna)?(, kolumna typ_danych ograniczenia (DEFAULT wartość_domyślna)?)* (CONSTRAINT nazwane_ograniczenie (, CONSTRAINT nazwane_ograniczenie)*)? \); Typy danych w SQLite: INTEGER wartości całkowitoliczbowe zapisane na 1, 2, 3, 4, 6 lub 8 bajtach REAL wartości zmiennoprzecinkowe zapisane zgodnie ze standardem IEEE TEXT wartości ciągoznakowe (kodowane UTF-8, UTF-16BE lub UTF-16-FE) BLOB dane binarne. Ograniczenia: PRIMARY KEY klucz podstawowy tabeli. Składnia: kolumna typ_danych PRIMARY KEY, lub: CONSTRAINT nazwa_klucza PRIMARY KEY \(kolumna(, kolumna)*\), FOREIGN KEY klucz obcy tabeli. Składnia: kolumna typ_danych REFERENCES tabela(kolumna),

lub: CONSTRAINT nazwa_klucza FOREIGN KEY \(kolumna(, kolumna)*\) REFERENCES tabela\(kolumna(, kolumna)*\), UWAGA! W celu włączenia obsługi kluczy obcych w SQLite należy wpisad komendę: PRAGMA foreign_keys = ON; UNIQUE klucz unikalny tabeli. Składnia: kolumna typ_danych UNIQUE, lub: CONSTRAINT nazwa_klucza UNIQUE \(kolumna(, kolumna)*\), CHECK ograniczenie na wartości. Składnia: kolumna typ_danych CHECK (warunek), lub: CONSTRAINT nazwa_klucza CHECK (warunek). UWAGA! W pierwszym wypadku warunek nie powinien dotyczyd innych kolumn niż ta, na której warunek jest zdefiniowany (może definiowad na przykład, że wartości w kolumnie mają byd większe od pewnej stałej). NOT NULL ograniczenie mówiące, że nie można pozostawiad pustej wartości kolumny. Składnia: kolumna typ_danych NOT NULL, W przypadku klucza głównego - gdy jest nim kolumna typu INTEGER - możemy zastosowad słówko kluczowe AUTOINCREMENT zamiast DEFAULT, które spowoduje, że domyślnie kolejne wstawiane krotki będą miały kolejne (poczynając od 1) wartości całkowite w tej kolumnie. Jest to jednak własnośd języka SQLite, a nie języka SQL. Inne bazy danych mogą mied - i w ogólności mają - to rozwiązane inaczej. 2. Instrukcja usuwania tabeli Składnia instrukcji: DROP TABLE (IF EXISTS)? nazwa_tabeli; UWAGA! Również tabeli nie można usunąd, jeśli istnieją do niej referencje kluczy obcych innych tabel. 3. Instrukcja zmiany struktury tabeli Składnia instrukcji: ALTER TABLE nazwa_tabeli (ADD COLUMN definicja_kolumny ADD definicja_ograniczeń DROP COLUMN kolumna)

UWAGA! SQLite nie implementuje dodawania nowych ograniczeo do tabeli oraz usuwania kolumn tabeli.

ZADANIA ZAD. 1. Do uruchamiania poleceo zawartych w skrypcie *.sql w konsoli SQLite służy polecenie: sqlite>.read nazwa_pliku (sqlite> to znak zachęty konsoli SQLite) W pliku wyswietl_prac.sql zapisz komendę wydobywającą wszystkie dostępne informacje na temat wszystkich pracowników z tabeli pracownicy. Z poziomu konsoli uruchom tak przygotowany skrypt. ZAD. 2. Zmodyfikuj skrypt wyswietl_prac.sql wyświetlający rosnące ze względu na całkowitą płacę nazwisko oraz całkowitą płacę pracownika z tabeli pracownicy. Ogranicz wyświetlanych pracowników do tych, których całkowita płaca jest większa od 1000 złotych. Skorzystaj z funkcji IFNULL w celu pozbycia się pustych wartości kolumny PLACA_DOD. ZAD. 3(*). Skonstruuj skrypt wyświetlający pracowników, których nazwisko kooczy się na SKI. Użyj do tego celu operator like. ZAD. 4. Utwórz skrypt wyświetlający nazwisko pracownika oraz nazwę zespołu, do którego ten pracownik należy. ZAD. 5. Utwórz skrypt wyświetlający nazwisko pracownika oraz nazwisko jego szefa. ZAD. 6. Utwórz skrypt wyświetlający nazwę zespołu oraz sumę płac wszystkich jego pracowników. ZAD. 7(*). Utwórz skrypt wyświetlający nazwę zespołu oraz liczbę różnych(!) etatów pracowników pracujących w tych zespołach. Skorzystaj do tego celu ze słówka kluczowego DISTINCT. ZAD. 8. Do przekierowania wyjścia konsoli SQLite do pliku służy komenda: sqlite>.output NAZWA_PLIKU Do przekierowania wyjścia konsoli z powrotem na ekran służy komenda: sqlite>.output stdout Słówko kluczowe LIMIT N ogranicza ilośd wyników zwracanych przez zapytanie do N. Korzystając z tych właściwości konsoli SQLite utwórz skrypt, który wypisze do pliku wynik.dat rezultat zapytania zwracającego trzech pracowników z największą pensją. Istnieje rozwiązanie bez słówka kluczowego LIMIT. Dla chętnych proszę postarad się je wymyśled. ZAD. 9(*). Uogólnij powyższy skrypt na dowolną określoną ilośd pracowników z największą pensją. ZAD. 10(*). Utwórz program w języku ANSI C, którego zadaniem będzie sformatowanie pliku utworzonego przez konsolę SQLite (takiego jak wynik.dat z ZAD. 8.) do formatu csv (comma separated values).

ZAD. 11. Wprowadź do tabeli PRACOWNICY 3 nowych pracowników, następnie przetestuj skrypty stworzone na potrzeby poprzednich zadao. ZAD. 12. Stwórz skrypt usuwający pracowników na etacie ASYSTENT, których pensja podstawowa nie przekracza 400 zł. ZAD. 13(*). Stwórz skrypt usuwający pracowników na etacie STAZYSTA, należących do zespołu, do którego należy profesor SLOWINSKI. ZAD. 14. Podwyższ dwukrotnie pensję tych pracowników, których szef pracuje na uczelni przynajmniej 35 lat. ZAD. 15(*). Obniż o 100 zł. pensję tym pracownikom, których suma całkowitych pensji 2 bezpośrednich zwierzchników (szefa i szefa szefa) przekracza 3000 zł. ZAD. 16. Stwórz skrypt tworzący tabelę WYDARZENIA oraz ZAPROSZENIA wg następującego schematu bazy danych: WYDARZENIA + ID_WYDA integer NAZWA text MIEJSCE text ZAPROSZENIA + ID_ZAPR integer organizowanie PRACOWNICY + ID_PRAC int NAZWISKO varchar(15) ZATRUDNIONY date PLACA_POD number(6, 2) PLACA_DOD number(6, 2) ZAD. 17. Stwórz wydarzenie INAUGURACJA, które ma się odbyd w CENTRUM WYKLADOWYM, którego organizatorem jest profesor WEGLARZ. Następnie stwórz na to wydarzenie zaproszenia do wszystkich asystentów i stażystów.