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

Podobne dokumenty
Wykład 6. SQL praca z tabelami 3

Wykład 5. SQL praca z tabelami 2

SQL (ang. Structured Query Language)

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych. dr inż. Arkadiusz Mirakowski

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Relacyjne bazy danych. Podstawy SQL

Struktura drzewa w MySQL. Michał Tyszczenko

Język SQL, zajęcia nr 1

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Relacyjne bazy danych. Podstawy SQL

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

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

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

Paweł Rajba

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Wykład 8. SQL praca z tabelami 5

ACESS- zadania z wykorzystaniem poleceń SQL

Wykład 05 Bazy danych

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

Bazy danych SQL Server 2005

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Język SQL, zajęcia nr 2

Systemy GIS Tworzenie zapytań w bazach danych

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

Bazy danych. Polecenia SQL

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

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

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

Język SQL podstawy zapytań

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

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

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Zadania z SQLa (MS SQL Server)

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

Wstęp do relacyjnych baz danych. Jan Bartoszek

Bazy danych. Dr inż. Paweł Kasprowski

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

Przestrzenne bazy danych Podstawy języka SQL

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

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

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

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

Grupowanie i funkcje agregujące

Bazy danych 10. SQL Widoki

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

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

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

Bazy Danych i Usługi Sieciowe

Oracle11g: Wprowadzenie do SQL

3. Podzapytania, łączenie tabel i zapytań

Kurs. Podstawy MySQL

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

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

Baza danych Uczniowie.mdb

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Bazy danych i usługi sieciowe

Przykładowa baza danych BIBLIOTEKA

SIECI KOMPUTEROWE I BAZY DANYCH

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Bazy danych 7. SQL podstawy

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

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

Krótki przegląd zapytań

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

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

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

WPROWADZENIE DO JĘZYKA SQL

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

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

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

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

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

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

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Autor: Joanna Karwowska

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

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

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

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

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

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)

Widok Connections po utworzeniu połączenia. Obszar roboczy

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

SQL Structured Query Language

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Instalacja MySQL.

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

Transkrypt:

Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna baza może składać się z wielu tabel, przechowujących różne informacje. Zazwyczaj informacje te są ze sobą powiązane. Jeśli na przykład projektowałbym bazę danych dla systemu sprzedaży, używanego w supermarketach, zapewne musiałbym stworzyć tabele: produkty, paragony, faktury, a po dokładniejszej analizie zapewne okazałoby się, że byłoby ich jeszcze więcej. Utwórzmy zatem przykładową tabelę, zawierającą informacje o ludziach: CREATE TABLE ludzie ( id INTEGER PRIMARY KEY, imie TEXT, nazwisko TEXT, rok_urodzenia INT, plec CHAR(1) DEFAULT 'k', wzrost INT);Polecenie to utworzy nową tabelę "ludzie", zbudowaną z wymienionych pól (kolumn). Po nazwie każdego pola podajemy jego typ, żeby baza danych wiedziała jak traktować te dane (np. podczas sortowania), pozwala to też zapisywać informacje w najbardziej zwięzły sposób, co ma znaczenie, gdy chcemy przechowywać w bazie miliony rekordów danych. Poszczególne systemy zarządzania bazami danych różnią się nieraz co do zastosowanych typów pól (albo co nazw typów), ale w każdym systemie możliwe jest tworzenie pól tekstowych, liczbowych i datowych. Teraz druga tabela: CREATE TABLE zwierzeta( id INTEGER PRIMARY KEY, imie TEXT, ludzie_id INT); Wprowadzanie, modyfikowanie i usuwanie danych Wprowadzanie: ('Jan','Kowalski',1980,'m',175);Aktualizacja (uwaga jeśli nie będzie wąskiego warunku, można zmodyfikować dane w dużej części tabeli lub nawet całej tabeli): UPDATE ludzie SET rok_urodzenia = 1981 WHERE id = 91;Usuwanie tutaj ta sama uwaga

co w przypadku aktualizacji. Pamiętaj, że w SQL u nie ma Ctrl+z :( DELETE FROM ludzie WHERE id = 30;Teraz możemy wprowadzić trochę danych: ('Jan','Kowalski',1980,'m',175); ('Janina','Malinowska',1970,'k',165); ('Jacek','Plackowski',1982,'m',181); ('Zenobia','Kociubowska',1960,'k',160); ('Alfred','Domkowski',1989,'m',176); ('Jacek','Malina',1984,'m',189); ('Alfred','Tomba',1980,'m',176);Jeszcze dane zwierząt: INSERT INTO zwierzeta (imie, ludzie_id) VALUES ('Azor',3); INSERT INTO zwierzeta (imie, ludzie_id) VALUES ('Miauczek',5); INSERT INTO zwierzeta (imie, ludzie_id) VALUES ('As',6); INSERT INTO zwierzeta (imie, ludzie_id) VALUES ('Kicia',3); Pobieranie danych z jednej tabeli Pobieranie wszystkiego SELECT * FROM ludzie; id imie nazwisko rok_urodzenia plec wzrost 1 Jan Kowalski 1980 m 175 2 Janina Malinowska 1970 k 165 3 Jacek Plackowski 1982 m 181 4 Zenobia Kociubowsk 1960 k 160 5 Alfred Domkowski 1989 m 176 6 Jacek Malina 1984 m 189 7 Alfred Tomba 1980 m 176 Wybrane kolumny SELECT nazwisko, imie FROM ludzie; nazwisko imie Kowalski Jan Malinowska Janina Plackowski Jacek Kociubowsk Zenobia Domkowski Alfred Malina Jacek

Tomba Alfred Proste działania matematyczne SELECT 3 * 7; 3 * 7 21Dzięki zastosowaniu AS możemy nadać kolumnie wyników nazwę: SELECT 3 * 7 AS wynik; wynik 21Możemy też wykorzystać działania matematyczne do obliczenia wieku. SELECT *, 2009 rok_urodzenia AS wiek FROM ludzie; id imie nazwisko rok_urodzenia plec wzrost wiek 1 Jan Kowalski 1980 m 175 29 2 Janina Malinowska 1970 k 165 39 3 Jacek Plackowski 1982 m 181 27 4 Zenobia Kociubowsk 1960 k 160 49 5 Alfred Domkowski 1989 m 176 20 6 Jacek Malina 1984 m 189 25 7 Alfred Tomba 1980 m 176 29 Warunek, warunek wielokrotny Sami panowie: SELECT * FROM ludzie WHERE plec = 'm'; id imie nazwisko rok_urodzenia plec wzrost 1 Jan Kowalski 1980 m 175 3 Jacek Plackowski 1982 m 181 5 Alfred Domkowski 1989 m 176 6 Jacek Malina 1984 m 189 7 Alfred Tomba 1980 m 176 Tylko pełnoletnie panie: SELECT * FROM ludzie WHERE plec = 'k' AND 2009 rok_urodzenia >= 18; id imie nazwisko rok_urodzenia plec wzrost 2 Janina Malinowska 1970 k 165 4 Zenobia Kociubowsk 1960 k 160 Sortowanie kolumn, sortowanie odwrotne, sortowanie wielu kolumn

SELECT imie, nazwisko, rok_urodzenia FROM ludzie ORDER BY rok_urodzenia; imie nazwisko rok_urodzenia Zenobia Kociubowska 1960 Janina Malinowska 1970 Jan Kowalski 1980 Alfred Tomba 1980 Jacek Plackowski 1982 Jacek Malina 1984 Alfred Domkowski 1989 SELECT imie, nazwisko, rok_urodzenia FROM ludzie ORDER BY rok_urodzenia DESC; imie nazwisko rok_urodzenia Alfred Domkowski 1989 Jacek Malina 1984 Jacek Plackowski 1982 Jan Kowalski 1980 Alfred Tomba 1980 Janina Malinowska 1970 Zenobia Kociubowsk 1960 SELECT nazwisko, imie, rok_urodzenia FROM ludzie WHERE rok_urodzenia > 1980 ORDER BY nazwisko DESC; nazwisko imie rok_urodzenia Plackowski Jacek 1982 Malina Jacek 1984 Domkowski Alfred 1989 Agregowanie danych, liczba, średnia, min, max SELECT COUNT(*) FROM ludzie; COUNT(*) 7 SELECT MAX(rok_urodzenia) FROM ludzie; MAX(rok_urodzenia) 1989 SELECT AVG(2009 rok_urodzenia) AS sredni_wiek FROM ludzie; sredni_wiek 31.1428571428571

Agregowanie z grupowaniem SELECT plec, COUNT(*) AS ile FROM ludzie GROUP BY plec; plec ile k 2 m 5 Wartość unikalna SELECT DISTINCT imie FROM ludzie; imie Alfred Jacek Jan Janina Zenobia Warunek po grupowaniu SELECT imie, COUNT(*) AS ile FROM ludzie GROUP BY imie HAVING COUNT(*) > 1; imie ile Alfred 2 Jacek 2 Tworzy statystyki występowania imion, ale tylko tych, które wystąpiły więcej niż 1 raz w tabeli ludzie. Złączenia wielu kolumn Proste złączenie SELECT * FROM zwierzeta LEFT JOIN ludzie ON zwierzeta.ludzie_id = ludzie.id; id imie ludzie_id id imie nazwisko rok_urodzenia plec

wzrost 1 Azor 3 3 Jacek Plackowski 1982 m 181 2 Miauczek 5 5 Alfred Domkowski 1989 m 176 3 As 6 6 Jacek Malina 1984 m 189 4 Kicia 3 3 Jacek Plackowski 1982 m 181 Różnice między złączeniem lewym, wewnętrznym i prawym LEFT JOIN bierze wszystkie dane z pierwszej (lewej) tabeli, jeśli nie udało się do nich dopasować żadnego rekordu z drugiej tabeli, wstawia wartości NULL. INNER JOIN = JOIN bierze tylko takie pary lewej i prawej kolumny, które udało się dopasować RIGHT JOIN w niektórych systemach bazowych w ogóle nie występuje, działa jak LEFT JOIN tylko odwrotnie złącza tabele (do prawej dopasowuje lewą, zamiast do lewej prawą). Ten sam efekt uzyskuje się zmieniając kolejność złączania kolumn w zapytaniu Złączenie z podzapytaniem SELECT * FROM ludzie LEFT JOIN (SELECT ludzie_id, COUNT(*) AS ile FROM zwierzeta GROUP BY ludzie_id) as zwierzeta_statystyki ON ludzie.id = zwierzeta_statystyki.ludzie_id; id imie nazwisko rok_urodzenia plec wzrost ludzie_id ile 1 Jan Kowalski 1980 m 175 2 Janina Malinowska 1970 k 165 3 Jacek Plackowski 1982 m 181 3 2 4 Zenobia Kociubowsk 1960 k 160 5 Alfred Domkowski 1989 m 176 5 1 6 Jacek Malina 1984 m 189 6 1 7 Alfred Tomba 1980 m 176 W tym przypadku jeśli osoba nie ma zwierzęcia, baza zwraca NULL. Jeśli chcielibyśmy w tym przypadku otrzymać 0, możemy zastosować funkcję COALESCE(), która zwraca pierwszy parametr inny niż NULL. SELECT ludzie.*, COALESCE(zwierzeta_statystyki.ile, 0) AS ile FROM ludzie LEFT JOIN (SELECT ludzie_id, COUNT(*) AS ile FROM zwierzeta GROUP BY ludzie_id) as zwierzeta_statystyki ON ludzie.id = zwierzeta_statystyki.ludzie_id; id imie nazwisko rok_urodzenia plec wzrost ile

1 Jan Kowalski 1980 m 175 0 2 Janina Malinowska 1970 k 165 0 3 Jacek Plackowski 1982 m 181 2 4 Zenobia Kociubowsk 1960 k 160 0 5 Alfred Domkowski 1989 m 176 1 6 Jacek Malina 1984 m 189 1 7 Alfred Tomba 1980 m 176 0