SQL ("Structured Query Language" - "Strukturalny Język Zapytań"), opracowany przez firmę IBM jest rozwinięciem języka SEQUEL (“Structured English QUEry.

Slides:



Advertisements
Podobne prezentacje
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Indeksy w bazie danych Oracle
Podział i zastosowanie
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Dr inż. Andrzej Szuwarzyński Dr inż. Marcin Forkiewicz
SQL – Strukturalny język zapytań
Bazy danych i inżynieria oprogramowania
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
BD-LAB4 Wojciech Pieprzyca
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
Język SQL ma ciekawe możliwości tworzenia zapytań
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
Język SQL – zapytania zagnieżdżone (podzapytania)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
Co to jest studium przypadku?
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
SQL-owskie szlaki górskie
Funkcje agregujące Funkcja Opis Minimum Maksimum Średnia arytmetyczna
Funkcje znakowe ASCII(znak IN VARCHAR2) RETURN INTEGER
ASCII(znak IN VARCHAR2) RETURN INTEGER zwraca wartość numeryczną kod ascii znaku CHAR(n Integer)zwraca znak odpowiadający kodowi n CONCAT(tekst1, tekst2)zwraca.
SQL select kredytobiorca,bank, rodzaj, data_zawarcia, klasyfikacja,kwota, terminzapadalnosci-data_zawarcia iledni from tab_kredyt where (terminzapadalnosci-data_zawarcia)>1095.
Zapytania SQL: wydajność i optymalizacja
BD-LAB6 Wojciech Pieprzyca
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Structured Query Language
OPERACJA DZIELENIA W SQL
MS ACCESS Kwerendy.
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
MySQL – ODBC - ACCESS.
SQL – podstawowe funkcje
Tworzenie bazy danych – mySQL
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
dr hab. Ryszard Walkowiak prof. nadzw.
Budowanie tabel i relacji
MySQL bazy danych dla witryny
Andrzej Macioł Bazy danych – SQL – cz. 1. Andrzej Macioł Składowe SZBD Jądro SZBD realizuje podstawowe funkcje związane z przechowywaniem danych, kontrolą
SQL - Structured Query Language
Komendy SQL do pracy z tabelami i bazami
Język manipulacji danymi – SQL cz. I
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Systemy Baz Danych Wykład III
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Język SQL – polecenie Select
TEMAT: ACCESS - KWERENDY.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Podstawy SQL.
Widoki (views) - Perspektywy:
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Zapis prezentacji:

SQL ("Structured Query Language" - "Strukturalny Język Zapytań"), opracowany przez firmę IBM jest rozwinięciem języka SEQUEL (“Structured English QUEry Language ”) jest językiem służącym do budowania systemów obsługi relacyjnych baz danych (RDBMS) na dowolnej płaszczyźnie sprzętowe . W chwili obecnej jest on standardowym językiem służącym do wymiany danych pomiędzy różnymi platformami sprzętowymi i programowymi.

Najważniejsze zasady obowiązujące przy formułowaniu zapytań w języku SQL: W każdym zapytaniu występują tzw. klauzule rozpoczynające się od słów kluczowych (np. SELECT, FROM, WHERE ... ) Zapytania SQL mogą być zapisane w jednym lub kilku wierszach. Małe i wielkie litery nie są rozróżniane. Nie dotyczy to jednak wartości pisanych w cudzysłowach.

SELECT (wybierz) Najprostsze zapytanie ma postać: SELECT * FROM tabela Po tym słówku umieszczamy nazwy kolumn, które chcemy uzyskać w odpowiedzi. Najprostsze zapytanie ma postać: SELECT * FROM tabela Przykład SELECT * FROM ”JNI.DB”

BazaAdresowPracownikow Numer Ubezpieczenia Socjalnego Imie Nazwisko Adres Miasto Stan 512687458 Joe Smith 83 First Street Howard Ohio 758420012 Mary Scott 842 Vie Ave. Losantile 102254896 Sam Jones 33 Elm St. Paris New York 876512563 Sarah Ackerman 440 U.S. 110 Upton Michigan

SELECT Imie, Nazwisko, Adres, Miasto, Stan FROM TabelaAdresowPracownikow; Joe Smith 83 First Street Howard Ohio Mary Scott 842 Vie Ave. Losantile Sam Jones 33 Elm St. Paris New York Sarah Ackerman 440 U.S. 110 Upton Michigan

Aby wyświetlić jedynie część informacji z tabeli w zapytaniu należy wypisać nazwy kolumn, które mają zostać wyświetlone: SELECT wyrażenie_1 [, wyrażenie_2, ..., wyrażenie_n] FROM tabela [tabela_2, ..., tabela_n]

WHERE Po tym słowie kluczowym podaje się warunki selekcji, czyli wymagania jakie musi spełniać rekord aby zakwalifikować go do odpowiedzi. SELECT wyrażenie_1 [, wyrażenie_2, ..., wyrażenie_n] FROM relacja WHERE warunek_1 [AND/OR warunek_2 ... AND/OR warunek_n] SELECT * FROM ”JNI.DB” WHERE RodzSGM = 10

Operatory arytmetyczne Symbol Znaczenia = równość <> nierówność > większość >= większość lub równość < mniejszość <= mniejszość lub równość

Operatory języka SQL Operator Znaczenie between ... and ... wartość z przedziału like wartość zgodna z wzorcem is null wartość pusta - null in wartość w zbiorze danych Każdy z operatorów SQL może być poprzedzony negacją NOT

TablicaStatystykPracownikow NumerID Pracownika Pensja Zyski Stanowisko 010 75000 15000 Kierownik 105 65000 152 60000 215 12500 244 50000 12000 Personel 300 45000 10000 335 40000 400 32000 7500 Ekspedient 441 28000

SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja >= 50000; NumerIDPracownika 010 105 152 215 244

Przykłady SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Stanowisko = 'Kierownik'; SELECT NumerIDPracownika FROM TablicaStatystykPraconikow WHERE Pensja > 40000 AND Stanowisko = 'Personel'; SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Stanowisko = 'Manager' AND (Pensja > 50000 OR Zyski > 10000);

SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Stanowisko IN ('Kierownik', 'Personel'); SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja BETWEEN 30000 AND 50000; SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja NOT BETWEEN 30000 AND 50000;

Operator LIKE Pozwala on na porównywanie napisów, gdzie jeden z napisów może posiadać znaki specjalne: _ znak podkreślnika zastępuje w napisie dokładnie jeden znak % znak procentu zastępuje w napisie dowolny ciąg znaków (nawet pusty) . SELECT NumerIDPracownika FROM TablicaAdresowPracownikow WHERE Nazwisko LIKE 'L%';

PosiadaczeAntykow Zamowienia IDPosiadacza NazwiskoPosiadacza ImiePosiadacza 01 Jones Bill 02 Smith Bob 15 Lawson Patricia 21 Akins Jane 50 Fowler Sam Zamowienia IDPosiadacza ZadanyPrzedmiot 02 Stół Biurko 21 Krzesło 15 Lustro

Antyki IDSprzedajacego IDKupujacego Rzecz 01 50 Łóżko 02 15 Stół Krzesło 21 Lustro Biurko Gabinet Stolik do kawy Szkatułka Garnki Biblioteka Doniczka

RELACJE - Połączenia SELECT NazwiskoPosiadacza, ImiePosiadacza FROM PosiadaczeAntykow, Antyki WHERE IDKupujacego = IDPosiadacza AND Rzecz = 'Krzesło'; SELECT PosiadaczeAntykow.NazwiskoPosiadacza, PosiadaczeAntykow.ImiePosiadacza FROM PosiadaczeAntykow, Antyki WHERE Antyki.IDKupujacego = PosiadaczeAntykow.IDPosiadacza AND Antyki.Rzecz = 'Krzesło';

Aliasy i podzapytania w in aliasy - nazwy zastępcze SELECT Posiad.NazwiskoPosiadacza Nazwisko, Zam.ZadanyPrzemiot Zamawiany przedmiot FROM Zamowienia Zam, PosiadaczeAntykow Posiad WHERE Zam.IDPosiadacza = Posiad.IDPosiadacza AND Zam.ZadanyPrzedmiot IN (SELECT Rzecz FROM Antyki);

Nazwisko Zamawiany przedmiot Smith Stół Smith Biurko Akins Krzesło Lawson Lustro SELECT artybut_1 AS Atrybut jeden, atrybut_2 AS Atrybut_Dwa ... FROM relacja [WHERE warunki]

DISTINCT Klauzuli tą stosujemy celem uniknięcia wielokrotnych wystąpień identycznych wierszy w tabeli stanowiącej wynik zapytania. SELECT DISTINCT atrybut FROM tabela [WHERE warunek]

ORDER BY Sortowanie SELECT artybut_1, atrybut_2, atrybut_3 FROM tabela [WHERE warunki] ORDER BY "Atrybut jeden", “atrybut_dwa”, “atrybut_3” [ASC|DESC]

Funkcje agregujące SUM () zwraca sumę wartości z wierszy spełniających zapytanie dla kolumny numerycznej. AVG () zwraca średnią dla danej kolumny. MAX () zwraca największą wartość w danej kolumnie. MIN () zwraca najmniejszą wartość w danej kolumnie. COUNT(*) zwraca liczbę określającą ilość wierszy spełniających warunki.

SELECT SUM(Pensja), AVG(Pensja) FROM TablicaStatystykPracownikow; SELECT IDPosiadacza, MAX(Cena) FROM Antyki GROUP BY IDKupujacego; SELECT DrogaAdm, COUNT(JNI) AS Ilosc_Obiektow FROM "Jni.db" GROUP BY DrogaAdm

ALTER Uzupełnianie tabel Dodajmy do tabeli Antyki kolumnę umożliwiającą wpisywanie ceny danej Rzeczy: ALTER TABLE Antyki ADD (Cena DECIMAL(8,2) NULL);

INSERT Dodawanie danych INSERT INTO Antyki VALUES (21, 01, 'Ottoman', 200.00); INSERT INTO Antyki (IDKupujacego, IDSprzedajacego, Rzecz) VALUES (01, 21, 'Ottoman');

DELETE Usuwanie danych DELETE FROM Antyki WHERE Rzecz = 'Ottoman';

UPDATE Odświeżanie danych UPDATE Antyki SET Cena = 500.00 WHERE Rzecz = 'Krzesło'; To ustawi Ceny wszystkich krzeseł na 500.00

CREATE TABLE Tworzenie nowych tabel CREATE TABLE Zamowienia (IDPosiadacza INTEGER NOT NULL, ZadanyPrzedmiot CHAR(40) NOT NULL);

Indeksy CREATE INDEX POID_IDX ON PosiadaczeAntykow (IDPosiadacza); CREATE INDEX IMIE_IDX ON PosiadaczeAntykow (NazwiskoPosiadacza, ImiePosiadacza); DROP INDEX POID_IDX; CREATE UNIQUE INDEX POID_IDX ON PosiadaczeAntykow (IDPosiadacza);

CREATE VIEW Zestawienia CREATE VIEW ANTVIEW AS SELECT ZadanyPrzedmiot FROM Zamowienia;

HAVING SELECT IDKupujacego, MAX(Cena) FROM Antyki GROUP BY IDKupujacego HAVING Cena > 1000;

podzapytania SELECT IDKupujacego FROM Antyki WHERE Cena > (SELECT AVG(Cena) + 100 FROM Antyki); UPDATE PosiadaczeAntykow SET ImiePosiadacza = 'John' WHERE IDPosiadacza = (SELECT IDKupujacego FROM Antyki WHERE Rzecz = 'Biblioteka');

EXISTS SELECT ImiePosiadacza, NazwiskoPosiadacza FROM PosiadaczeAntykow WHERE EXISTS (SELECT * FROM Antyki WHERE Rzecz = 'Krzesło');

ALL SELECT IDKupujacego, Rzecz FROM Antyki WHERE Cena >= ALL (SELECT Cena FROM Antyki);

UNION Unie – połączenie wyników zapytań SELECT IDKupujacego FROM Antyki UNION SELECT IDPosiadacza FROM Zamowienia; Wymagana zgodność typów pól danych Automatyczne DISTINCT

Połączenia zewnętrzne SELECT IDPosiadacza, 'jest w tabeli Zamowienia i Antyki' FROM Zamowienia, Antyki WHERE IDPosiadacza = IDKupujacego UNION SELECT IDPosiadacza, 'jest tylko w tabeli Antyki' FROM Antyki WHERE IDKupujacego NOT IN (SELECT IDPosiadacza FROM Zamowienia);

INTERSECT i MINUS są jak polecenie UNION, z wyjątkiem tego, że INTERSECT produkuje wiersze, które występują w obydwu zapytaniach, a MINUS rezultaty pierwszego zapytania, ale bez rezultatów drugiego.

Dodatkowe funkcje matematyczne ABS(X) Moduł z X. CEIL(X) Zaokrąglenie w górę dziesiętnego X-a. FLOOR(X) Zaokrąglenie w dół dziesiętnego X-a. GREATEST(X,Y) Zwraca największą z tych dwóch wartości. LEAST(X,Y) Zwraca najmniejszą z tych dwóch wartości. MOD(X,Y) Zwraca reszte z dzielenia X/Y. POWER(X,Y) Zwraca X do potęgi Y. ROUND(X,Y) Zaokrągla X do Y miejsc po przecinku. Gdy Y jest pominięte, zaokrąglenie następuje do najbliższej liczby całkowitej. SIGN(X) Zwraca minus gdy X<0, lub plus w innym wypadku. SQRT(X) Zwraca pierwiastek kwadratowy z X.

Dodatkowe funkcje znakowe LEFT(<<>tekst>,X) Zwraca pierwsze X znaków z lewej strony tekstu. RIGHT(<<>tekst>,X) J.w. tylko z prawej strony. UPPER(<<>tekst>) Zmienia tekst na duże litery. LOWER(<<>tekst>) Zmienia tekst na małe litery. INITCAP(<<>tekst>) Zmienia tekst do oryginalnych caps'ów. LENGTH(<<>tekst>) Zwraca liczbę znaków w tekście. <<>tekst>||<<>tekst> Łączy dwa teksty w jeden połączony tekst, gdzie po pierwszym tekście natychmiast następuje następny. LPAD(<<>tekst>,X,'*') Wypełnia tekst od lewej określonymi znakami (tu znakami '*'), aby tekst nabrał X znaków długości. RPAD(<<>tekst>,X,'*') J.w. ale wypełnia z prawej strony. SUBSTR(<<>tekst>,X,Y) Wyciąga Y liter z miejsca tekstu wskazywanego przez X.

ALTER TABLE Dodajmy do tabeli Antyki kolumnę ceny ALTER TABLE Antyki ADD (Cena DECIMAL(8,2) NULL); Modyfikujemy kolumnę ceny ALTER TABLE Antyki MODIFY (Cena DECIMAL(6,4) NULL); Kasujemy kolumnę ceny ALTER TABLE Antyki DROP (Cena);

Typy danych Char(x) - kolumna znakowa, gdzie x oznacza maksymalną ilość znaków dozwolonych w tej kolumnie. Integer - Kolumna liczb całkowitych, dodatnich lub ujemnych. Decimal(x, y) - Kolumna liczb dziesiętnych, gdzie x to maksymalna ilość cyfr w tej kolumnie, a y to maksymalna ilość cyfr w części ułamkowej. Maksymalna liczba dla deklaracji Decimal(4,2) to 99.99. Date - kolumna z datą w formacie zależnym od DBMS-a Logical - kolumna, która może przechowywać tylko dwie wartości: TRUE lub FALSE (prawda lub fałsz).

CREATE / ALTER TABLE argumenty 1. NULL lub NOT NULL 2. UNIQUE wymusza unikalność każdego wiersza w kolumnie 3. PRIMARY KEY mówi bazie danych, że ta kolumna jest kolumną podstawowego klucza (używane tylko gdy klucz jest jednokolumnowym kluczem, w przeciwnym wypadku instrukcja PRIMARY KEY(kolumna, kolumna, ...) powinna się pojawić na końcu polecenia, za definicją ostatniej kolumny. 4. CHECK umożliwia dodanie warunku, który będzie sprawdzany przy wprowadzaniu danych do tej kolumny; np. CHECK (CENA > 0) spowoduje, że system będzie sprawdzał kolumnę Cena czy przypadkiem nie jest większa niż zero, zanim przyjmie wartość... 5. DEFAULT wstawia domyślną wartość do bazy danych, jeśli wiersz jest wprowadzony bez uwzględninia danej kolumny. Np. ZYSKI INTEGER DEFAULT = 10000

COMMIT i ROLLBACK COMMIT; -- sprawia, że zmiany jakie dokonaliśmy na systemie bazy danych pozostaną w nim na stałe. ROLLBACK; --Anuluje wszystkie zmiany na bazie danych od czasu wykonania ostatniego polecenia Commit.