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



Podobne dokumenty
Relacyjne bazy danych. Podstawy SQL

SQL (ang. Structured Query Language)

Relacyjne bazy danych. Podstawy SQL

Wykład 5. SQL praca z tabelami 2

Przestrzenne bazy danych Podstawy języka SQL

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

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

Paweł Rajba

Systemy GIS Tworzenie zapytań w bazach danych

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

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

Bazy danych. Dr inż. Paweł Kasprowski

Wykład 6. SQL praca z tabelami 3

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Ref. 7 - Język SQL - polecenia DDL i DML

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

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

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

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

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

Język SQL. Rozdział 2. Proste zapytania

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Autor: Joanna Karwowska

Wykład 8. SQL praca z tabelami 5

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Oracle11g: Wprowadzenie do SQL

Autor: Joanna Karwowska

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

Podstawowe zapytania SELECT (na jednej tabeli)

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład 05 Bazy danych

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Wprowadzenie do języka SQL

Autor: Joanna Karwowska

Wprowadzenie do baz danych

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

Bazy danych 7. SQL podstawy

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

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

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

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

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

Język SQL, zajęcia nr 1

Bazy danych - Materiały do laboratoriów VIII

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

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

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

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

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych.

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

Autor: Joanna Karwowska

Bazy danych SQL Server 2005

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

SQL Structured Query Language

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

Język SQL podstawy zapytań

Bazy danych - wykład wstępny

Technologie baz danych

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Bazy danych. Polecenia SQL

3. Podzapytania, łączenie tabel i zapytań

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

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

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Model relacyjny. Wykład II

Bazy danych 6. Klucze obce. P. F. Góra

Model relacyjny. Wykład II

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Bazy danych 2. Wykład 3. Metodologia projektowania baz danych (projektowanie fizyczne)

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

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych. dr inż. Arkadiusz Mirakowski

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

Projektowanie systemów baz danych

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

Bazy danych 5. Samozłaczenie SQL podstawy

SQL Structured Query Language

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

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

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

Microsoft SQL Server Podstawy T-SQL

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

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

Transkrypt:

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

Języki baz danych Interfejs DBMS składa się z podjęzyka bazy danych. Jest to język programowania przeznaczony specjalnie do inicjowania funkcji DBMS. Składa się on z trzech części: Język definiowania danych (DDL) Język definiowania danych jest stosowany do tworzenia i usuwania struktur danych oraz do uzupełniania istniejących struktur. DDL aktualizuje metadane przechowywane w słowniku danych. Język operowania danymi (DML) Język operowania danymi jest uŝywany do określania poleceń, które realizują działania CRUD na bazie danych. DML jest podstawowym mechanizmem stosowanym przy określaniu transakcji wykonywanych na bazie danych. Język kontroli danych (DCL) Język kontroli danych jest przeznaczony do wykorzystania przez administratora bazy. Jest on stosowany zwłaszcza do definiowania uŝytkowników bazy danych oraz przyznawania im uprawnień. Głównym przykładem takiego podjęzyka jest strukturalny język zapytań SQL. 2

Język zapytań SQL - historia SQL = Structured Query Language (Strukturalny Język Zapytań) Opracowany w latach siedemdziesiątych przez firmę IBM. Po raz pierwszy zaimplementowany przez IBM w prototypowym, relacyjnym produkcie nazwanym System R (1973). Pierwszy komercyjny relacyjny system zarządzania bazami danych wprowadziła na rynek w 1977 firma ORACLE. W 1986 powstał pierwszy standard języka. Drugi został opracowany w 1989 a trzeci w 1992 (SQL 92). Komercyjne implementacje wprowadzają często własne konstrukcje, jak równieŝ czasami nie zachowują pełnej zgodności z wybranym standardem. 3

SQL - DML Najczęściej uŝywaną częścią języka SQL jest część dotycząca manipulowania danymi. NajwaŜniejszą instrukcją jest instrukcja słuŝąca do wydobywania informacji z bazy danych instrukcja SELECT. 4

Przykładowa tabela OSOBY(id, imie, nazwisko, nr, wiek, plec) 5

SELECT Przykład. WyraŜenie wybiera z tabeli OSOBY wszystkie wiersze i kolumny. 6

SELECT Przykład. Instrukcja wybiera z tabeli OSOBY wszystkie wiersze i jedną kolumnę (nazwisko) 7

SELECT Przykład. WyraŜenie wybiera z tabeli OSOBY wszystkie wiersze i dwie kolumny (imię oraz nazwisko). 8

SELECT a operacja rzutu Instrukcja postaci SELECT nazwa_kolumny_1,..., nazwa_kolumny_k FROM nazwa_tabeli jest częściowym odpowiednikiem operacji rzutu z algebry relacyjnej. Częściowym, poniewaŝ wynikiem rzutu relacji jest nowa relacja, a relacja jest zbiorem krotek, więc nie moŝe w nim wystąpić kilka razy ten sam element. Wynikiem instrukcji SELECT moŝe być natomiast tabela, w której znajduje się kilka takich samych wierszy. Aby otrzymać prawdziwie relacyjny wynik (czyli tabelę bez powtarzających się wierszy), naleŝy uŝyć słowa kluczowego DISTINCT (zaraz po klauzuli SELECT). 9

SELECT - DISTINCT 10

SELECT - aliasy Domyślne nagłówki kolumn moŝemy zastąpić innymi nazwami, które będą bardziej znaczące. Alias podaje się bezpośrednio po nazwie kolumny, której nazwę chcemy zmienić. Pomiędzy nazwami moŝna uŝyć słowa kluczowego AS 11

SELECT ORDER BY Aby określić kolejność, w jakiej będą zwracane wyniki, naleŝy uŝyć klauzuli ORDER BY (uporządkuj wg). Klauzula ORDER BY musi być ostatnią klauzulą polecenia SELECT. Kolumnę sortującą moŝna wyznaczyć przez nazwę: 12

SELECT ORDER BY Kolumnę sortującą moŝna równieŝ wyznaczyć przez liczbę. Wskazuje ona numer kolumny sortującej w tabeli wynikowej. W obydwu przypadkach sortujemy wg kolumny nazwisko. 13

SELECT ORDER BY Liczby trzeba uŝyć wtedy, gdy kolumna sortująca jest wyraŝeniem i nie posiada aliasu. 14

SELECT ORDER BY Domyślnie dane są sortowane w porządku rosnącym (ASCENDING). Aby odwrócić kolejność sortowania naleŝy uŝyć słowa DESC (DESCENDING) uŝytego bezpośrednio po nazwie kolumny wyspecyfikowanej w klauzuli ORDER BY. Słowa kluczowego ASC nie trzeba uŝywać, gdyŝ domyślnie porządek sortowania jest rosnący. 15

SELECT MoŜna sortować według kilku kolumn, wtedy po słowie kluczowym ORDER BY naleŝy podać nazwy kolumn, po których chcemy sortować, przy czym pierwsza kolumna ma najwyŝszy priorytet. 16

SELECT - WHERE Klauzula WHERE odpowiada operacji selekcji. Klauzula ta specyfikuje kryteria doboru wierszy. Klauzula WHERE, o ile jest, musi występować bezpośrednio po klauzuli FROM. SELECT kolumna_1,..., kolumna_k FROM tabela WHERE warunek; Operatory w klauzuli WHERE mogą być dwojakiego rodzaju: operatory logiczne (=, <, >, <=, >=, <>, AND, OR, NOT) operatory SQL. W klauzuli WHERE moŝna równieŝ porównywać dla kaŝdego wiersza wartości dwóch kolumn. Klauzula WHERE określa, czy dany wiersz ma znaleźć się w tabeli wynikowej, przed jakimkolwiek przetwarzaniem. 17

SELECT - WHERE Przykład. Instrukcja wyszukuje wszystkie osoby z tabeli OSOBY mające więcej niŝ 20 lat. Przykład. Instrukcja wyszukuje wszystkie kobiety z tabeli OSOBY. MoŜna w warunku uŝywać atrybutów, których później nie wyświetlamy. 18

Operatory SQL WyróŜniamy 4 operatory SQL, działające na wszystkich typach danych: BETWEEN... AND, IN (lista), LIKE, IS NULL. 19

BETWEEN... AND Operator BETWEEN...AND słuŝy do sprawdzenia, czy wartość znajduje się w podanym przedziale (wliczając w to krańce przedziału). Górna granica musi następować po dolnej. Przykład. Instrukcje wybierają osoby z przedziału wieku <20;40>. 20

IN Operator IN słuŝy do sprawdzania, czy dana wartość znajduje się na wyspecyfikowanej liście. Przykład. Instrukcje wybierają osoby z nazwiskiem Nowak lub Kowalski. 21

LIKE Operator LIKE słuŝy do wybierania wartości odpowiadających podanemu wzorcowi. Wzorzec tworzą dwa specjalne symbole: % (znak procent) odpowiada dowolnemu ciągowi znaków (równieŝ pustemu), _ (znak podkreślenia) odpowiada dokładnie jednemu dowolnemu znakowi. Przykład. Instrukcje wybierają osoby z nazwiskiem 5-literowym zawierającym owa, z nazwiskiem co najmniej 4-literowym zawierającym owa. 22

IS NULL Operator IS NULL słuŝy do wyszukiwania wartości NULL. x IS NULL zwraca TRUE, gdy dana wartość jest NULL x IS NOT NULL zwraca TRUE, gdy dana wartość nie jest NULL. Przykład. Instrukcja wybiera osoby bez podanego numeru. Dobrze! Źle!!! 23

Funkcje grupujące Funkcje grupujące słuŝą do działania na grupach wierszy. Wynikiem funkcji grupującej jest pojedyncza wartość dla całej grupy. Przykładowe funkcje grupujące, to: Funkcja COUNT ([DISTINCT ALL] wyraŝenie) AVG ([DISTINCT ALL] wyraŝenie) MAX ([DISTINCT ALL] wyraŝenie) MIN ([DISTINCT ALL] wyraŝenie) SUM ([DISTINCT ALL] wyraŝenie) Wynik funkcji ilość wystąpień wartości wyraŝeń róŝnych od NULL, gwiazdka (*) uŝyta w miejscu wyraŝenia powoduje obliczenia ilości wszystkich wierszy łącznie z duplikatami i wartościami NULL wartość średnia wyraŝeń, NULL nie jest uwzględniane maksymalna wartość wyraŝenia minimalna wartość wyraŝenia suma wartości wyraŝeń, bez uwzględniania wartości NULL 24

Funkcje grupujące Kwalifikator DISTINCT ogranicza działanie funkcji grupujących do róŝnych wartości argumentów. Kwalifikator ALL jest domyślny funkcje grupujące nie eliminują duplikatów. Argumentami funkcji grupujących są liczby, a w przypadku funkcji MAX, MIN i COUNT takŝe daty, znaki i ciągi znaków. Wszystkie funkcje grupujące, za wyjątkiem COUNT(*) ignorują wartości NULL. 25

Przykładowa tabela POBORY(id, imie, nazwisko, plec, dzial, pensja) 26

Funkcje grupujące - przykłady Przykład. Zliczanie wszystkich wierszy zwracanych przez zapytanie. Przykład. Zliczanie tych wierszy zwracanych przez zapytanie, w których wartością atrybutu Pensja nie jest NULL. 27

Funkcje grupujące - przykłady 28

Funkcje grupujące GROUP BY Znacznie częściej funkcji grupujących uŝywa się do grup wartości. Pojedynczą grupę stanowią wszystkie wiersze, dla których wartości dla danych atrybutów są identyczne. Do podzielenia wierszy tablicy na grupy uŝywamy klauzuli GROUP BY. Wiersze w tabeli wynikowej uporządkowane są wg kolumny wymienionej w klauzuli GROUP BY. Na liście wyboru klauzuli SELECT mogą występować tylko i wyłącznie nazwy kolumn, które są przedmiotem działania klauzuli GROUP BY, chyba, Ŝe występują one jako argument funkcji grupującej. 29

GROUP BY - przykłady 30

GROUP BY W klauzuli GROUP BY moŝna uŝyć nazw kilku kolumn. Wówczas najpierw wiersze tabeli są grupowane wg wartości w pierwszej wymienionej kolumnie. Następnie w obrębie kaŝdej grupy wiersze są grupowane wg drugiej kolumny itd.. 31

HAVING Klauzula WHERE określa, czy dany wiersz ma znaleźć się w tabeli wynikowej, przed jakimkolwiek przetwarzaniem. JeŜeli chcemy najpierw wykonać obliczenia i pogrupować dane, a dopiero później wybrać niektóre juŝ pogrupowane wiersze, to naleŝy uŝyć klauzuli HAVING. Klauzula HAVING określa, czy dany wiersz ma znaleźć się w tabeli wynikowej, po przetwarzaniu danych. SELECT nazwy_grupowanych_kolumn FROM nazwa_tabeli GROUP BY nazwy_kolumn HAVING warunek; 32

HAVING - przykład 33

Klauzule w instrukcji SELECT Kolejność wykonywania poszczególnych klauzul w instrukcji SELECT jest następująca: 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. ORDER BY 34

Pobieranie danych z wielu tabel W celu wybrania danych z wielu tabel dokonujemy złączeń. Tabelom biorącym udział w złączeniu moŝna nadawać aliasy (inne nazwy). JeŜeli nazwy kolumn w tabelach nie są unikalne, trzeba poprzedzić je nazwa tabeli lub jej aliasem. 35

Iloczyn kartezjański W wyniku otrzymujemy złączenia kaŝdego wiersza z jednej tabeli z kaŝdym wierszem z drugiej tabeli. Składnia (starsza) SELECT kolumny_z_tab_1, kolumny_z_tab_2 FROM tab_1, tab_2; Składnia (nowsza) SELECT kolumny_z_tab_1, kolumny_z_tab_2 FROM tab_1 CROSS JOIN tab_2; 36

Iloczyn kartezjański - przykład t1 t2 37

Złączenie wewnętrzne W tabeli wynikowej pojawią się tylko pasujące wiersze, czyli wiersze spełniające zadany warunek. Przykład. Niech tab_1(a1, A2,..., An) oraz tab_2(b1, B2,..., Bm) będą dwiema tabelami. Szukamy w tych tabelach wierszy, które mają takie same wartości dla atrybutów A1 i B3. WyraŜenie wybierające takie wiersze ma postać (starsza składnia): SELECT tab_1.*, tab_2.* FROM tab_1, tab_2 WHERE tab_1.a1=tab_2.b3 Nowsza składnia ma postać: SELECT tab_1.*, tab_2.* FROM tab_1 INNER JOIN tab_2 ON tab_1.a1=tab_2.b3 38

Złączenie wewnętrzne JeŜeli tabele mają wspólne kolumny (atrybuty o takich samych nazwach) to moŝna uŝyć jeszcze dwóch innych postaci. Przykład. Niech tab_1(a1, A2,..., An, C1, C2, C3) oraz tab_2(b1, B2,..., Bm, C1, C2, C3) będą dwiema tabelami mającymi wspólne atrybuty C1, C2 i C3. JeŜeli w warunku nie chcemy uŝyć wszystkich wspólnych atrybutów, to zapisujemy instrukcje wyboru z uŝyciem słowa USING, np..: SELECT tab_1.*, tab_2.* FROM tab_1 INNER JOIN tab_2 USING (C1, C2) JeŜeli natomiast chcemy uŝyc wszystkich wspólnych atrybutów, to wystarczy napisać: SELECT tab_1.*, tab_2.* FROM tab_1 NATURAL JOIN tab_2 39

Złączenie wewnętrzne - przykłady t1 t2 40

Złączenie wewnętrzne - przykłady t1 t2 41

Złączenia zewnętrzne Za pomocą złączenia zewnętrznego moŝna ograniczyć w tabeli wynikowej wiersze z jednej tabeli. MoŜemy wyróŝnić: złączenie lewostronnie zewnętrzne, złączenie prawostronnie zewnętrzne. 42

Złączenie lewostronnie zewnętrzne Składa się ze wszystkich wierszy z tabeli pierwszej i wierszy z pasującymi wartościami z tabeli drugiej. Gdy w tabeli drugiej nie ma pasujących wierszy, w kolumnach wybranych z tej tabeli będą wartości NULL. t1 t2 43

Złączenie prawostronnie zewnętrzne Składa się ze wszystkich wierszy z tabeli drugiej i wierszy z pasującymi wartościami z tabeli pierwszej. Gdy w tabeli pierwszej nie ma pasujących wierszy, w kolumnach wybranych z tej tabeli będą wartości NULL. t1 t2 44

Samozłączenie Samozłączenie to złączenie tabeli z samą sobą. Przykład. Z tabeli OSOBY wybrać te osoby o danym nazwisku, które nie są najstarsze. 45

Podzapytania Zapytania to instrukcje SELECT słuŝące do wyszukiwania danych w tabelach. Podzapytania to zapytania zwracające dane, które nie są końcowym wynikiem, lecz będą wykorzystywane w dalszej części instrukcji. Podzapytanie musi być ujęte w nawiasy zwykłe. Najpierw uruchamiane jest podzapytanie (zapytanie wewnętrzne), a później zapytanie zewnętrzne. JeŜeli wynik podzapytania będzie porównywany operatorem =, <, >, <=, >= lub <>, to musi ono zwrócić jedną wartość. 46

Podzapytania Przykład. Instrukcja wybiera osoby mające więcej lat, niŝ wynosi średnia wieku wszystkich osób z tabeli OSOBY. Przykład. Instrukcja wybiera osoby mające więcej lat, niŝ wynosi średnia wieku wszystkich kobiet z tabeli OSOBY. 47

Tworzenie tabel Do budowania tabel słuŝy polecenie CREATE TABLE. Definiując tabelę musimy podać listę kolumn opisywaną przez nazwę kolumny, jej typ i czasami długość przechowywanej wartości. CREATE TABLE nazwa_tablicy (nazwa_kolumny typ_danych(rozmiar), nazwa_kolumny typ_danych(rozmiar), ); 48

Tworzenie tabel typy danych Podstawowe typy danych, to: Typy tekstowe CHAR(n) łańcuch znaków o ustalonej długości (n) VARCHAR(n) łańcuch znaków o zmiennej długości (maksymalnie n) Typy całkowite TINYINT, INT, SMALLINT, BIGINT Typy rzeczywiste FLOAT, REAL, NUMERIC Data DATE, TIME Poszczególne implementacje mogą zawierać dodatkowe typy lub typy o innych nazwach. 49

Klauzula DEFAULT Klauzula DEFAULT słuŝy do wskazania, jaka wartość ma być wstawiona do kolumny, jeśli nie została określona konkretna wartość.... kolumna typ (rozmiar) DEFAULT wyraŝenie... WyraŜenie musi być proste, nie wolno stosować podzapytań. Przykład. miasto VARCHAR(20) DEFAULT Sopot 50

Warunki integralności Podczas definiowania tabeli mamy moŝliwość określić, jakie warunki powinny spełniać dane w wierszach wprowadzanych do tablicy. Warunki takie nazywa się warunkami integralności (constraints). MoŜemy zaŝądać, aby wypełnienie wartości w danej kolumnie było obowiązkowe, aby wartości pochodziły z określonego zakresu, aby były unikalne itd. 51

Ograniczenia NULL i NOT NULL Podczas definiowania kolumn tabeli moŝemy zaŝądać, aby wiersze tej tabeli w polach tej kolumny nie dopuszczały (NOT NULL) wartości nieokreślonych. CREATE TABLE nazwa_tablicy ); (nazwa_kolumny typ(rozmiar) [NULL NOT NULL], nazwa_kolumny typ(rozmiar) [NULL NOT NULL], Opcja NULL (domyślna) oznacza, Ŝe pola tej kolumny mogą przyjmować wartość NULL. Opcja NOT NULL oznacza, Ŝe pola tej kolumny muszą mieć określoną wartość, nie mogą przyjmować wartości NULL. 52

Ograniczenia CONSTRAINT Do definiowania innych niŝ NOT NULL warunków integralności słuŝy klauzula CONSTRAINT. Warunki mogą być wpisanie bezpośrednio przy definicji kolumny lub na końcu po zdefiniowaniu wszystkich kolumn. Warunek moŝe być umieszczony przy definicji kolumny: CREATE TABLE nazwa_tablicy (... nazwa_kolumny typ (rozmiar) CONSTRAINT nazwa_warunku typ_warunku [warunek], ); Warunek umieszczony po definicjach wszystkich kolumn: CREATE TABLE nazwa_tablicy (... nazwa_kolumny typ (rozmiar), CONSTRAINT nazwa_warunku typ_warunku warunek, CONSTRAINT nazwa_warunku typ_warunku warunek, ); 53

Ograniczenia CONSTRAINT warunek dodatkowe informacje w zaleŝności od typu warunku, w przypadku umieszczenia klauzuli CONSTRAINT po definicjach kolumn warunek musi być zawsze określony. typ_warunku jeden z następujących: CHECK, PRIMARY KEY, FOREIGN KEY. nazwa_warunku jest identyfikatorem warunku integralności, nie jest wymagane jego podanie, ale wtedy system nada warunkowi własny, zazwyczaj nieczytelny identyfikator. Identyfikator jest potrzebny przy komendach włączających i wyłączających warunki integralności. 54

Ograniczenie CHECK Określa warunek, jaki musi spełniać wartość w kolumnie kaŝdego wstawianego wiersza, warunek nie moŝe się odwoływać się do innych tabel. CONSTRAINT CHECK (warunek logiczny); Warunek logiczny musi być prosty, nie wolno stosować podzapytań. Przykład. CREATE TABLE tab (... wiek INT,... CHECK(wiek>0) ); 55

Ograniczenie PRIMARY KEY Definiuje klucz główny tabeli. Jeśli kluczem głównym jest jedna kolumna, wygodniej warunek zapisać po definicji tej kolumny. W przypadku klucza głównego opartego na kilku kolumnach wygodniej zdefiniować go po definicji wszystkich kolumn. Definicja warunku przy definicji kolumny: kolumna typ(rozmiar) CONSTRAINT nazwa_warunku PRIMARY KEY; Definicja warunku po definicji wszystkich kolumn: CONSTRAINT nazwa_warunku PRIMARY KEY (kolumna_1, kolumna_2, ); W tabeli moŝe być tylko jeden klucz główny. Wszystkie kolumny wchodzące w skład klucza głównego są obowiązkowe nie musimy dodatkowo nakładać warunku NOT NULL. 56

Ograniczenie PRIMARY KEY Definiuje klucz obcy, reprezentujący związek z inną tabelą. Sprawia Ŝe, wartości kolumn z tym kluczem mogą przyjmować tylko wartości z klucza głównego lub unikalnego innej, wskazanej tabeli. Jeśli kluczem obcym jest jedna kolumna, wygodniej warunek zapisać po definicji tej kolumny. W przypadku klucza opartego na kilku kolumnach wygodniej zdefiniować go po definicji wszystkich kolumn. Definicja warunku przy definicji kolumny: kolumna typ(rozmiar) CONSTRAINT nazwa_warunku REFERENCES nazwa_tabeli lista_kolumn; Definicja warunku po definicji wszystkich kolumn: CONSTRAINT nazwa_warunku FOREIGN KEY (lista kolumn tabeli definiowanej) REFERENCES nazwa_tabeli lista_kolumn; Aby klucz obcy mógł być zdefiniowany musi być zdefiniowana wcześniej tabela, do której klucz ten się odwołuje, a na zestawie kolumn wskazanym przez klucz obcy musi być zdefiniowany klucz główny lub unikalny. Jeśli odwołujemy się do klucza głównego obcej tabeli, to nie musimy specyfikować listy kolumn tego klucza. 57

Wstawianie wierszy Do wstawiania nowych wierszy do tabeli słuŝy polecenie INSERT : INSERT INTO nazwa_tabeli [(lista_kolumn)] VALUES (lista_wartości); Przy wstawianiu do wszystkich kolumn tabeli nie musimy podawać listy kolumn, ale wtedy musimy wartości wprowadzać w takiej kolejności, jaka była wyspecyfikowana podczas polecenia CREATE TABLE. Z tego względu, aby uniezaleŝnić się od późniejszych modyfikacji tabeli bezpieczniej jest podawać listę kolumn w klauzuli INSERT INTO. Przykład INSERT INTO t1 (nr, nazwisko) VALUES (50, Stawicki ); W kaŝdym poleceniu INSERT moŝna wstawić tylko jeden wiersz. 58

Modyfikacja wierszy Do zmiany zawartości wierszy słuŝy polecenie UPDATE. UPDATE nazwa_tabeli [alias] SET kolumna = { wyraŝenie podzapytanie } [ WHERE warunek ]; Przykład UPDATE t1 SET WHERE [, kolumna= { wyraŝenie podzapytanie }...] nazwisko= Wolski' nr=2; Jeśli nie wpiszemy klauzuli WHERE, to zostaną zmodyfikowane wszystkie wiersze tabeli. 59

Usuwanie wierszy Do usuwania wierszy z tabeli słuŝy polecenie DELETE. DELETE [FROM] tabela [ WHERE warunek ]; Warunek w klauzuli WHERE określa, które wiersze będą usunięte. Przykład DELETE FROM t1 WHERE nazwisko= Nowak ; Zostaną usunięte osoby o nazwisku Nowak. 60