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