Instrukcje DML (ang. Data Manipulation Language)

Transkrypt

Instrukcje DML (ang. Data Manipulation Language)
Bazy danych
ZSTE Kalisz
Język SQL cz. 2
Instrukcje DML (ang. Data Manipulation Language)
- INSERT - umieszcza nowe wiersze w bazie;
- UPDATE - zmienia zawartośd istniejącego wiersza;
- DELETE - usuwa wiersze z tabeli;
- SELECT - wybiera dane z bazy.
WSTAWIANIE DANYCH DO TABELI
Dodawanie nowych wierszy (rekordów czy krotek)
I sposób - określa nazwy kolumn i wartości, które mają byd wstawione:
INSERT INTO nazwa_tabeli (kolumna_1, kolumna_2, ...)
VALUES ('wartosc_1', 'wartosc_2', ...);
Przykład:
INSERT INTO nauczyciele (imie, nazwisko, pesel)
VALUES ('Piotr', 'Majkowski',’67987610663’)
II sposób - nie określa nazwy kolumn, w której umieszczone zostaną dane, tylko ich wartości:
INSERT INTO nazwa_tabeli
VALUES (wartośd1, warośd2, wartośd3,...)





pola typu AUTO_INCREMENT, IDENTITY, DEFAULT nie musimy zapełniad, zapełniają się
automatycznie
INTO - jest to predykat wskazujący, który wskazuje na tabelę, która będziemy używali
'...' stosujemy przy polach o typie varchar, przy int nie;
ustawienie NOT NULL spowoduje, że próba zapisania bez podania wartości dla nowego
wiersza nie powiedzie się;
wartości do wierszy możemy wstawiad kilka na raz.
ZMIANA DANYCH W TABELI
Zmiana danych we wszystkich rekordach jednej kolumny tabeli
UPDATE nazwa_tabeli
SET nazwa_kolumny='nowa_wartosc'
Przykład
UPDATE Pracownik
SET login='lary';
Zmiana danych tylko w wybranych wierszach z użyciem WHERE
Przykłady:
UPDATE Uczen
SET email='farala@gmail'
WHERE login='lary';
UPDATE Ksiazki
SET stan='nowa'
WHERE rok_wydania>=2012;
1
Bazy danych
ZSTE Kalisz
Język SQL cz. 2
UPDATE Klient
SET kod_pocztowy='62-800', miejscowosc='Kalisz', ulica='Celtycka', nr_domu=304
WHERE nazwisko='Nowak' AND imie='Andrzej';
Usunięcie wszystkich wierszy w tabeli
DELETE FROM nazwa_tabeli;
Przykład:
DELETE FROM uczniowie;
Usuwanie wybranych wierszy w tabeli z użyciem WHERE
DELETE FROM nazwa_tabeli WHERE nazwa_kolumny='wartosc';
Przykład
DELETE FORM Klient WHERE miejscowosc='Kalisz';
Usuwanie wierszy w tabeli - grupowo
DELETE FROM nazwa_tabeli WHERE nazwa_kolumny IN('wartosc_1', 'wartosc_2');
WYBÓR KOLUMN Z TABELI
Projekcja (selekcja pionowa) to wybór kolumn z tabeli czyli Projekcja nazywana jest również rzutem definiowana jest jako wybór kolumny.
SELECT nazwa_kolumny1, nazwa_kolumny2, ... FROM nazwa_tabeli;
Przykład
SELECT nazwisko, imie FROM Klient;
Klauzula występuje po poleceniu (słowie kluczowym) i jest dookreśleniem dla słowa kluczowego.
Klauzule stosujemy, gdy chcemy odczytywad tylko określone kolumny:

odczytanie wszystkich kolumn z tabeli
Przykład
SELECT * FROM nazwa_tabeli;
 DISTINCT eliminuje wyświetlanie powtarzających się wierszy
Przykład
SELECT DISTINCT kod_pocztowy, miejscowosc FROM Klient;
 ORDER BY sortowanie danych (domyślnie sortuje rosnąco - ASC)
ASC (ang. ascending) - posortuje rosnąco (domyślnie, nie potrzeba podawad)
Przykład
SELECT * FORM Ksiazki ORDER BY tytul;
DESC (ang. descending) - posortuje malejąco
Przykład
SELECT * FROM user ORDER BY id DESC;
Przykład (sortowanie po nr kolumny)
SELECT * FROM user ORDER BY 1 DESC;
Sortowanie zwykle wydłuża czas wykonywania zapytania, jeżeli wynik nie musi byd posortowany
należy unikad stosowania klauzuli ORDER BY.

WHERE umożliwia wybór interesujących nas krotek - po WHERE stosujemy operatory =,>,<,
itp …
2
Bazy danych
ZSTE Kalisz
Język SQL cz. 2
możemy używad również operatorów logicznych OR, AND, NOT, np. id_goscia<3 OR
id_goscia>4
Przykłady:
SELECT tytul, cena FORM Ksiazki WHERE rok_wydania=2012;
SELECT * FROM Klienci WHERE id=1;
SELECT * FROM Klienci WHERE email='[email protected]';
Wybór wierszy z zakresu
SELECT tytul, cena FROM ksiazki WHERE cena BETWEEN 50 AND 100;
Wybór klientów z miast zaczynających się od litery A
SELECT nazwisko, imie, miejscowosc FROM Klienci WHERE miejscowosc LIKE'A%;
Wybór klientów, którzy nie podali nr telefonów
SELECT nazwisko, imie, nr_telefon FROM Klienci WHERE nr_telefon IS NULL;
Wybór klientów, którzy nie podali nr telefonów i mieszkają w Kaliszu
SELECT nazwisko, imie FROM Klienci WHERE nr_telefon IS NULL AND miejscowosc='Kalisz';
 LIMIT służy do wybierania określonej liczby wierszy (krotek)
Przykłady:
Pokazywanie tylko określonej ilości krotek (wierszy)
SELECT * FROM nazwa_tabeli LIMIT ilosc_wierszy;
Pokazywanie tylko określonej ilości krotek licząc od określonej (np: 2 krotki licząc od 4)
SELECT * FROM nazwa_tabeli LIMIT ilosc_wierszy OFFSET 4;

TOP służy do wybierania określonej liczby wierszy (po TOP podajemy ilośd wierszy, która ma
byd pokazana) - TOP występuje bezpośrednio po SELECT.
Przykłady
Wybór najdroższego samochodu
SELECT TOP 1 marka, model, rok_produkcji, cena FROM Klienci ORDER BY cena DESC;
Jeśli jest więcej aut z tą samą najwyższą ceną
SELECT TOP 1 WITH TIES marka, model, rok_produkcji, cena FROM Klienci ORDER BY cena DESC;
GRUPOWANIE DANYCH
Funkcje agregujące działają na wartościach wybranego pola w grupie wierszy. Wynikiem może byd
suma, średnia, liczba wierszy, minimalna lub maksymalna wartośd. Wywoływane są poleceniem
SELECT i zwracają pojedyncze wartości:
- COUNT (nazwa_kolumny) - zwraca liczbę wierszy w grupie,
- SUM (nazwa_kolumny) - zwraca sumę wartości w grupie dla wskazanej kolumny,
- AVG (nazwa_kolumny) - zwraca średnią wartości w grupie dla wskazanej kolumny,
- MAX (nazwa_kolumny) - zwraca największą wartości w grupie dla wskazanej kolumny,
- MIN (nazwa_kolumny) - zwraca najmniejszą wartości w grupie dla wskazanej kolumny.
Przykłady:
Obliczanie ilości wierszy w tabeli (z * liczy również NULL, w każdym innym przypadku pomija NULL)
SELECT COUNT(*) AS 'Liczba_klientow' FROM Klient;
Obliczanie ilości klientów, którzy podali maile
SELECT COUNT(email) AS 'Liczba maili' FROM Klient;
Średnia ocen w klasie
SELECT AVG(ocena) AS 'Średnia ocen w klasie' FROM Uczniowie;
Liczba miejscowości, z których pochodzą klienci (DISTINCT - pomijamy wartości powtarzające się)
SELECT COUNT(DISTINCT miejscowosc) AS 'Liczba miejscowości' FROM Klient;
3
Bazy danych
ZSTE Kalisz
Język SQL cz. 2
Liczba książek wydanych po 2001
SELECT COUNT(tytul) AS 'Liczba tytułow' FROM Ksiazki WHERE rok_wydania>2001;
Różnica pomiędzy najniższym a najwyższym uczniem w klasie
SELECT MAX(wzrost) - MIN(wzrost) FROM Uczniowie;
Złączenie służy do pobierania danych z dwóch lub większej ilości tabel w celu porównania lub
zestawienia. W tabelach, które łączymy muszą występowad które są zgodne ze sobą
Przykład:
SELECT imie, nazwisko, cena_za_dobe FROM zawodnicy JOIN pokoje ON nr=od_goscia;
Suma (unia) to złącznie dwóch relacji o tym samym schemacie, np. sumowanie dwóch tabel o tym
samym schemacie.
SELECT * FROM tabela_1 UNION SELECT * FROM tabela_2;
Schematy są to grupy obiektów w bazie stworzone, aby uprawnienia dla użytkowników były
definiowane nie na poziomie tabel ale na poziomie całych schematów, do których będą przypisane
tabele.
Tworzenie schematu
CREATE SCHEMA nazwa_schematu;
Podczas tworzenia schematu można tworzyd tabele, widoki, definiowad prawa dostępu. Obiekty,
które są tworzone za pomocą polecenia CREATE SCHEMA, są umieszczane wewnątrz tworzonego
schematu:
CREATE SCHEMA Magazyn
CREATE TABLE tabela_1
(...)
CREATE TABLE tabela_2
(...)
...
CREATE TABLE tabela_n
(...);
Zmiana domyślnego schematu użytkownikowi
DEFAULT_SCHEMA CREATE USER;
Jeśli domyślny schemat nie był zdefiniowany, użytkownikowi zostanie przypisany dbo
4