Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałSalomea Potok Został zmieniony 11 lat temu
1
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.
2
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.
3
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”
4
BazaAdresowPracownikow
Numer Ubezpieczenia Socjalnego Imie Nazwisko Adres Miasto Stan 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
5
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
6
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]
7
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
8
Operatory arytmetyczne
Symbol Znaczenia = równość <> nierówność > większość >= większość lub równość < mniejszość <= mniejszość lub równość
9
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
10
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
11
SELECT NumerIDPracownika
FROM TablicaStatystykPracownikow WHERE Pensja >= 50000; NumerIDPracownika 010 105 152 215 244
12
Przykłady SELECT NumerIDPracownika FROM TablicaStatystykPracownikow
WHERE Stanowisko = 'Kierownik'; SELECT NumerIDPracownika FROM TablicaStatystykPraconikow WHERE Pensja > AND Stanowisko = 'Personel'; SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Stanowisko = 'Manager' AND (Pensja > OR Zyski > 10000);
13
SELECT NumerIDPracownika
FROM TablicaStatystykPracownikow WHERE Stanowisko IN ('Kierownik', 'Personel'); SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja BETWEEN AND 50000; SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja NOT BETWEEN AND 50000;
14
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%';
15
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
16
Antyki IDSprzedajacego IDKupujacego Rzecz 01 50 Łóżko 02 15 Stół
Krzesło 21 Lustro Biurko Gabinet Stolik do kawy Szkatułka Garnki Biblioteka Doniczka
17
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';
18
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);
19
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]
20
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]
21
ORDER BY Sortowanie SELECT artybut_1, atrybut_2, atrybut_3 FROM tabela
[WHERE warunki] ORDER BY "Atrybut jeden", “atrybut_dwa”, “atrybut_3” [ASC|DESC]
22
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.
23
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
24
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);
25
INSERT Dodawanie danych
INSERT INTO Antyki VALUES (21, 01, 'Ottoman', ); INSERT INTO Antyki (IDKupujacego, IDSprzedajacego, Rzecz) VALUES (01, 21, 'Ottoman');
26
DELETE Usuwanie danych
DELETE FROM Antyki WHERE Rzecz = 'Ottoman';
27
UPDATE Odświeżanie danych
UPDATE Antyki SET Cena = WHERE Rzecz = 'Krzesło'; To ustawi Ceny wszystkich krzeseł na
28
CREATE TABLE Tworzenie nowych tabel
CREATE TABLE Zamowienia (IDPosiadacza INTEGER NOT NULL, ZadanyPrzedmiot CHAR(40) NOT NULL);
29
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);
30
CREATE VIEW Zestawienia
CREATE VIEW ANTVIEW AS SELECT ZadanyPrzedmiot FROM Zamowienia;
31
HAVING SELECT IDKupujacego, MAX(Cena) FROM Antyki
GROUP BY IDKupujacego HAVING Cena > 1000;
32
podzapytania SELECT IDKupujacego FROM Antyki WHERE Cena >
(SELECT AVG(Cena) FROM Antyki); UPDATE PosiadaczeAntykow SET ImiePosiadacza = 'John' WHERE IDPosiadacza = (SELECT IDKupujacego FROM Antyki WHERE Rzecz = 'Biblioteka');
33
EXISTS SELECT ImiePosiadacza, NazwiskoPosiadacza FROM PosiadaczeAntykow WHERE EXISTS (SELECT * FROM Antyki WHERE Rzecz = 'Krzesło');
34
ALL SELECT IDKupujacego, Rzecz FROM Antyki WHERE Cena >= ALL
(SELECT Cena FROM Antyki);
35
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
36
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);
37
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.
38
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.
39
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.
40
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);
41
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 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).
42
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
43
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.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.