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



Podobne dokumenty
Wprowadzenie do języka SQL

Systemy GIS Tworzenie zapytań w bazach danych

Przestrzenne bazy danych Podstawy języka SQL

Wypisujemy nazwiska pracowników o numerach równych 100 lub 500. SELECT DISTINCT Nazwisko FROM Pracownik WHERE NrPrac IN (100,500);

Relacyjne bazy danych. Podstawy SQL

Język SQL. Rozdział 2. Proste zapytania

Autor: Joanna Karwowska

Relacyjne bazy danych. Podstawy SQL

Podstawowe zapytania SELECT (na jednej tabeli)

Autor: Joanna Karwowska

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

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

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

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

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

SQL (ang. Structured Query Language)

Wykład 5. SQL praca z tabelami 2

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

SQL 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

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

SQL praca z tabelami 4. Wykład 7

Zadania z SQLa (MS SQL Server)

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Język SQL podstawy zapytań

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

Technologie baz danych

Język SQL, zajęcia nr 1

Wprowadzenie do baz danych

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

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

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład :45 BD-1 W_3

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

Bazy danych SQL Server 2005

Język SQL, zajęcia nr 2

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

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

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

Oracle11g: Wprowadzenie do SQL

Bazy danych 7. SQL podstawy

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

Wyższa Szkoła Zarządzania i Marketingu w Sochaczewie. Grzegorz Domaoski. grzegorz.domanski@wszim-sochaczew.edu.pl. MS SQL Server

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

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

PODZAPYTANIE (SUBSELECT)

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Grupowanie i funkcje agregujące

Konstruowanie Baz Danych DQL agregacja danych

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

Technologie baz danych

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

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

Bazy danych. Dr inż. Paweł Kasprowski

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

Projektowanie systemów baz danych

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

Współczesne systemy baz danych

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

Wykład 6. SQL praca z tabelami 3

Podyplomowe Studia Systemy informatyczne w logistyce

Bazy danych Ćwiczenia projektowe

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

BAZY DANYCH. Wykład 1: Wprowadzenie do baz danych. Marcin Czajkowski. Przygotowanie wykładu: Małgorzata Krętowska

SQL Structured Query Language

Współczesne systemy baz danych

Tworzenie zapytań do Microsoft SQL Server

Kurs. Podstawy MySQL

Bazy danych - Materiały do laboratoriów IV

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

Laboratorium Bazy danych SQL 3 1

Bazy danych. Polecenia SQL

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

Autor: Joanna Karwowska

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

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

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

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

Struktura bazy danych

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

LITERATURA. Wprowadzenie do systemów baz danych C.J.Date; WNT Warszawa 2000

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

QUERY język zapytań do tworzenia raportów w AS/400

Bazy danych i systemy zarzadzania

Optymalizacja poleceń SQL Metody dostępu do danych

Wprowadzenie do SQL Użycie kwerend i SQL

Transkrypt:

6. Język SQL

Język SQL (Structured Query Language): - język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji - stworzony w IBM w latach 70-tych DML (Data Manipulation Language) - pobieranie danych z relacji (zapytania), dopisywanie, usuwanie, modyfikowanie danych w relacjach DDL (Data Definition Language) - tworzenie nowych relacji DCL (Data Control Language ) - nadzór nad ustanawianiem praw dostępu do danych dla poszczególnych użytkowników

SELECT FROM WHERE atrybuty relacja warunek; atrybuty ( warunek (relacja))

Rzutowanie w języku SQL S:= zbiór_atrybutów (R) SELECT zbiór_atrybutów FROM R; Selekcja w języku SQL S:= warunek_logiczny (R) SELECT * FROM R WHERE warunek_logiczny;

OsobaWaga:= {Imię, Waga} (Osoba) SELECT Imię, Waga FROM Osoba; Osoba OsobaWaga Imię Wiek Waga Imię Waga Henryk 34 80 Henryk 80 Sonia 28 55 Sonia 55 Grzegorz 29 70 Grzegorz 70 Marta 54 54 Marta 54 Piotr 34 80 Piotr 80

OsobaLekka := Waga<=70 (Osoba) SELECT * FROM Osoba WHERE Waga<=70; Osoba OsobaLekka Imię Wiek Waga Imię Wiek Waga Henryk 34 80 Sonia 28 55 Sonia 28 55 Grzegorz 29 70 Grzegorz 29 70 Marta 54 54 Marta 54 54 Piotr 34 80

WiekWagaCiężka:= {Wiek, Waga} ( Waga>70 (Osoba)) SELECT Wiek, Waga FROM Osoba WHERE Waga>70; Osoba OsobaCiężka WiekWagaCiężka Imię Wiek Waga Imię Wiek Waga Wiek Waga Henryk 34 80 Henryk 34 80 34 80 Sonia 28 55 Piotr 34 80 Grzegorz 29 70 Marta 54 54 Piotr 34 80

Zapytania dotyczące jednej tabeli

a) zawartość całej tabeli; SELECT * FROM Projekt; ProjektID Nazwa Dzial MaxGodzin 1000 Q3 Analiza portfela Finanse 75.0 1200 Q3 Podatki Ksiegowosc 145.0 1400 Q4 Plan produkcji Marketing 138.0 1500 Q4 Analiza portfela Finanse 110.0

b) wybrane atrybuty relacji SELECT Nazwa, Dzial, MaxGodzin FROM Projekt; Nazwa Dzial MaxGodzin Q3 Analiza portfela Finanse 75.0 Q3 Podatki Ksiegowosc 145.0 Q4 Plan produkcji Marketing 138.0 Q4 Analiza portfela Finanse 110.0

c) wybrane atrybuty relacji w innej kolejności SELECT Dzial, MaxGodzin, Nazwa FROM Projekt; Dzial MaxGodzin Nazwa Finanse 75.0 Q3 Analiza portfela Ksiegowosc 145.0 Q3 Podatki Marketing 138.0 Q4 Plan produkcji Finanse 110.0 Q4 Analiza portfela

d) pojedynczy atrybut SELECT Dzial FROM Projekt; Dzial Finanse Ksiegowosc Marketing Finanse wiersze powtarzają się!!! - sprawdzanie tego warunku jest czasochłonne

e) pojedynczy atrybut z usunięciem duplikatów SELECT DISTINCT Dzial FROM Projekt; Dzial Finanse Ksiegowosc Marketing

f) wyznaczanie krotek spełniających określony warunek SELECT ProjektID, Nazwa, Dzial, MaxGodzin FROM Projekt WHERE Dzial = 'Finanse'; ProjektID Nazwa Dzial MaxGodzin 1000 Q3 Analiza portfela Finanse 75.0 1500 Q4 Analiza portfela Finanse 110.0

g) wyznaczanie wszystkich atrybutów dla krotek spełniających określony warunek SELECT * FROM Projekt WHERE Dzial = 'Finanse'; ProjektID Nazwa Dzial MaxGodzin 1000 Q3 Analiza portfela Finanse 75.0 1500 Q4 Analiza portfela Finanse 110.0

h) małe i wielkie litery w zapytaniach select * from projekt where dzial = 'Finanse'; ProjektID Nazwa Dzial MaxGodzin 1000 Q3 Analiza portfela Finanse 75.0 1500 Q4 Analiza portfela Finanse 110.0

Oracle: rozróżnia wielkie i małe litery w napisach SELECT * FROM Projekt WHERE dzial = 'FINANSE'; Empty set

MySQL: - standardowo nie rozróżnia wielkich i małych liter w napisach - można to zmienić używając opcji BINARY przy tworzeniu tabeli SELECT * FROM Projekt WHERE dzial = 'FINANSE'; ProjektID Nazwa Dzial MaxGodzin 1000 Q3 Analiza portfela Finanse 75.0 1500 Q4 Analiza portfela Finanse 110.0

i) wyznaczenie projektów o maksymalnej ilości godzin większej niż 100 SELECT * FROM Projekt WHERE MaxGodzin>100; ProjektID Nazwa Dzial MaxGodzin 1200 Q3 Podatki Ksiegowosc 145.0 1400 Q4 Plan produkcji Marketing 138.0 1500 Q4 Analiza portfela Finanse 110.0

j) wyznaczenie projektów o maksymalnej ilości godzin większej niż 100 w dziale finansowym SELECT * FROM Projekt WHERE Dzial='Finanse' AND MaxGodzin>100; ProjektID Nazwa Dzial MaxGodzin 1500 Q4 Analiza portfela Finanse 110.0

k) wyznaczenie danych o nazwisku i dziale pracowników działu księgowego SELECT Nazwisko, Dzial FROM Pracownik WHERE Dzial='Ksiegowosc'; Nazwisko Maria Jackowska Regina Jamna Dzial Ksiegowosc Ksiegowosc

l) wyznaczenie danych o nazwisku i dziale pracowników działu księgowego, finansowego i marketingu SELECT Nazwisko, Dzial FROM Pracownik WHERE Dzial='Ksiegowosc' OR Dzial='Finanse' OR Dzial='Marketing'; Nazwisko Maria Jackowska Krzysztof Niski Halina Jakubiec Regina Jamna Karol Skrutynia Dzial Ksiegowosc Marketing Finanse Ksiegowosc Marketing

SELECT Nazwisko, Dzial FROM Pracownik WHERE Dzial IN ('Ksiegowosc','Finanse','Marketing'); Nazwisko Maria Jackowska Krzysztof Niski Halina Jakubiec Regina Jamna Karol Skrutynia Dzial Ksiegowosc Marketing Finanse Ksiegowosc Marketing

m) wyznaczenie danych o nazwisku i dziale pracowników działów różnych od księgowego, finansowego i marketingu SELECT Nazwisko, Dzial FROM Pracownik WHERE NOT (Dzial='Ksiegowosc' OR Dzial='Finanse' OR Dzial='Marketing'); Nazwisko Jakub Nestor Ryszard Wujec Dzial Informatyka Informatyka

SELECT Nazwisko, Dzial FROM Pracownik WHERE Dzial NOT IN ('Ksiegowosc','Finanse','Marketing'); Nazwisko Jakub Nestor Ryszard Wujec Dzial Informatyka Informatyka

n) sortowanie kolumn SELECT Nazwisko, Dzial FROM Pracownik ORDER BY Dzial; Nazwisko Halina Jakubiec Jakub Nestor Ryszard Wujec Maria Jackowska Regina Jamna Krzysztof Niski Karol Skrutynia Dzial Finanse Informatyka Informatyka Ksiegowosc Ksiegowosc Marketing Marketing

SELECT Nazwisko, Dzial FROM Pracownik ORDER BY Dzial DESC; Nazwisko Krzysztof Niski Karol Skrutynia Maria Jackowska Regina Jamna Jakub Nestor Ryszard Wujec Halina Jakubiec Dzial Marketing Marketing Ksiegowosc Ksiegowosc Informatyka Informatyka Finanse

SELECT Nazwisko, Dzial FROM Pracownik ORDER BY Dzial DESC, Nazwisko ASC; Nazwisko Karol Skrutynia Krzysztof Niski Maria Jackowska Regina Jamna Jakub Nestor Ryszard Wujec Halina Jakubiec Dzial Marketing Marketing Ksiegowosc Ksiegowosc Informatyka Informatyka Finanse

o) wyszukiwanie z zadanym zakresem SELECT Nazwisko, Dzial FROM Pracownik WHERE NrPrac >= 200 AND NrPrac <= 500; SELECT Nazwisko, Dzial FROM Pracownik WHERE NrPrac BETWEEN 200 AND 500; Nazwisko Krzysztof Niski Halina Jakubiec Regina Jamna Jakub Nestor Dzial Marketing Finanse Ksiegowosc Informatyka

p) wyszukiwanie wg zadanego wzorca: _ oznacza dowolny jeden znak % oznacza dowolny ciąg znaków SELECT * FROM Projekt WHERE Nazwa LIKE 'Q_ Analiza Portfela'; ProjektID Nazwa Dzial MaxGodzin 1000 Q3 Analiza portfela Finanse 75.0 1500 Q4 Analiza portfela Finanse 110.0

SELECT * FROM Pracownik WHERE Telefon LIKE '285 '; SELECT * FROM Pracownik WHERE Telefon LIKE '285%'; NrPrac Nazwisko Telefon Dzial 100 Maria Jackowska 2858879 Ksiegowosc 400 Regina Jamna 2851273 Ksiegowosc

SELECT * FROM Pracownik WHERE Dzial LIKE '%ing'; NrPrac Nazwisko Telefon Dzial 200 Krzysztof Niski 2870098 Marketing 700 Karol Skrutynia 2873222 Marketing

SELECT * FROM Pracownik WHERE Nazwisko LIKE '% Ja%'; NrPrac Nazwisko Telefon Dzial 100 Maria Jackowska 2858879 Ksiegowosc 300 Halina Jakubiec 2879981 Finanse 400 Regina Jamna 2851273 Ksiegowosc

SELECT * FROM Pracownik WHERE Nazwisko LIKE '%Ja%'; NrPrac Nazwisko Telefon Dzial 100 Maria Jackowska 2858879 Ksiegowosc 300 Halina Jakubiec 2879981 Finanse 400 Regina Jamna 2851273 Ksiegowosc 500 Jakub Nestor NULL Informatyka

q) wyszukiwanie wartości NULL SELECT * FROM Pracownik WHERE Telefon IS NULL; NrPrac Nazwisko Telefon Dzial 500 Jakub Nestor NULL Informatyka NIE TAK SELECT * FROM Pracownik WHERE Telefon = NULL; SELECT * FROM Pracownik WHERE Telefon ='NULL';

r) funkcje agregujące: COUNT, MAX, MIN, SUM, AVG SELECT COUNT(*) FROM Projekt; COUNT(*) 4 SELECT COUNT(Dzial) FROM Projekt; COUNT(Dzial) 4

SELECT COUNT(DISTINCT Dzial) FROM Projekt; COUNT(DISTINCT Dzial) 3 SELECT MIN(MaxGodzin),MAX(MaxGodzin), SUM(MaxGodzin) FROM Projekt; MIN(MaxGodzin) MAX(MaxGodzin) SUM(MaxGodzin) 75.0 145.0 468.0

SELECT MIN(MaxGodzin),MAX(MaxGodzin), SUM(MaxGodzin) FROM Projekt WHERE ProjektID < 1500; MIN(MaxGodzin) MAX(MaxGodzin) SUM(MaxGodzin) 75.0 145.0 358.0

niedozwolone przypadki: - mieszanie nazw kolumn i funkcji agregujących SELECT Name, SUM(MaxGodzin) FROM Projekt WHERE ProjektID < 1500; - używanie funkcji agregujących w klauzuli WHERE SELECT Name FROM Projekt WHERE MaxGodzin < AVG(MaxGodziny);

s) grupowanie krotek - zliczyć pracowników w poszczególnych działach SELECT Dzial, COUNT(*) FROM Pracownik GROUP BY Dzial; Dzial COUNT(*) Finanse 1 Informatyka 2 Ksiegowosc 2 Marketing 2 tylko w tym przypadku nazwa kolumny i funkcja agregująca mogą pojawić się obok siebie

- wypisać ilość pracowników w poszczególnych działach ale tylko, jeśli ich więcej niż 1 SELECT Dzial, COUNT(*) FROM Pracownik GROUP BY Dzial HAVING COUNT(*)>1; Dzial COUNT(*) Informatyka 2 Ksiegowosc 2 Marketing 2

- wypisać ilość pracowników o numerach powyżej 600 w poszczególnych działach ale tylko, jeśli ich więcej niż 1 SELECT Dzial, COUNT(*) FROM Pracownik WHERE NrPrac < 600 GROUP BY Dzial HAVING COUNT(*)>1; Dzial Ksiegowosc 2 COUNT(*) - najpierw warunek WHERE, potem grupowanie, na końcu funkcje agregujące