Wykład 4 SQL praca z tabelami 1
Typy danych Typy liczbowe Typy całkowitoliczbowe Integer types - Typ INTEGER; 32-bitowa liczba ze znakiem z zakresu -2 31 do 2 31 1 - Typ SMALLINT; typ całkowity mniejszy niż INTEGER; liczba 16-bitowa - Typ BIGINT; ; typ całkowity wiekszy niż INTEGER; liczba 64-bitowa Typy zmiennoprzecinkowe rzeczywiste - Typ REAL - Typ DOUBLE PRECISION - Typ FLOAT Typ DOUBLE PRECISION umożliwia przedstawienie większego zakresu niż REAL. W zależności od wersji języka SQL umożliwiają również podanie precyzji np. FLOAT5
Typy danych Typy liczbowe Typy dla liczb z częścią dziesiętną - Typ NUMERIC - Typ DECIMAL Pozwalają na reprezentowanie liczb zawierających część dziesiętną np. 11.4, 152.581 Oba typy pozwalają na określenie precyzji całkowitą liczbę cyfr i opcjonalnie skali liczbę cyfr po separatorze dziesiętnym np. NUMERIC5 pozwala zapisać liczby 111.11, 22.222, 2.2222, NUMERIC5,2 pozwala zapisać liczby 333.33, 5.55, 66.66
Typy danych Typy daty i czasu Typ DATA; opisuje datę Typ TIME; opisuje czas Typ TIMESTAMP; opisuje datę i czas
Typy danych Typy łańcuchowe Typy służące do przechowywanie łańcuchów znakowych, czyli tekstów. Typ CHARACTER skrót CHAR Typ CHARACTER VARYING skrót VARCHAR Typ CLOB Wymagają podania długości łańcucha: CHAR długość, VARCHARdługość. Dla CHAR cała kolumna w bazie danych będzie miała długość wskazaną parametrem długość krótsze łańcuchy są uzupełniane spacjami. Jest stosowany gdy kolumny mają ustaloną liczbę znaków. Dla VARCHAR wiersze mają różną długość zależnie od ilości znaków w łańcuchach.
Typy danych Typ null Jest to typ specjalny. Wartość null jest wartością pustą i oznacza brak wartości. Pola tabeli nie zawierające wartości są właśnie null. Przykładowo: Osoby OsobaId Imię Nazwisko Data urodzenia 1 Jan Kowalski 1995-01-01 2 Piotr Nowak 1994-11-03 3 Ewa Jabłońska null 4 Andrzej Wiśniewski 1994-04-08
Tworzenie tabel Do tworzenia tabel służy instrukcja CREATE TABLE postaci: CREATE TABLE nazwa_tabeli nazwa_kolumny_1 typ_kolumny_1 [atrybuty], nazwa_kolumny_2 typ_kolumny_2 [atrybuty],.. Nazewnictwo tabel i kolumn jest w zasadzie dowolne choć najlepiej pisać małymi literami łacińskimi. Przykłady: CREATE TABLE klient CREATE TABLE test CREATE TABLE test2 id INTEGER, id INTEGER, dataczas TIMESTAMP, nazwa VARCHAR20 wartosc DOUBLE PRECISION wartosc DECIMAL6,3
Tworzenie tabel atrybuty kolumn Najczęściej spotykane atrybuty kolumn to PRIMARY KEY, NOT NULL, DEFAULT, UNIQUE, AUTO_INCREMENT. Atrybut PRIMARY KEY oznacza, że kolumna będzie kluczem podstawowym. Kolumny z tym atrybutem są automatycznie indeksowane oraz unikatowe o różnych wartościach. CREATE TABLE nazwa_tabeli nazwa_kolumny typ_kolumny PRIMARY KEY, definicje pozostałych kolumn
Tworzenie tabel atrybuty kolumn Atrybut PRIMARY KEY przykład 1: CREATE TABLE test id INTEGER PRIMARY KEY, nazwa VARCHAR20 W przypadku gdy klucz podstawowy ma się składać z więcej niż jednej kolumny, jego definicja wygląda inaczej: CREATE TABLE nazwa_tabeli nazwa_kolumny_1 typ_kolumny_1 [atrybuty], nazwa_kolumny_2 typ_kolumny_2 [atrybuty],.. nazwa_kolumny_n typ_kolumny_n [atrybuty], PRIMARY KEY kolumna_x, kolumna_y,., kolumna_z
Tworzenie tabel - atrybuty kolumn Atrybut PRIMARY KEY przykład 2: CREATE TABLE test id INTEGER, nazwa VARCHAR20, PRIMARY KEYid, nazwa
Tworzenie tabel atrybuty kolumn Atrybut NOT NULL oznacza, że w danej kolumnie nie mogą znajdować się wartości puste, czyli każdy wiersz w kolumnie musi zawierać jakąś wartość. W takiej sytuacji próba zapisania wartości pustej kończy się niepowodzeniem. Przykład: CREATE TABLE test id INTEGER, nazwa VARCHAR20 NOT NULL
Tworzenie tabel atrybuty kolumn Atrybut DEFAULT wykorzystujemy wówczas, gdy chcemy aby w kolumnie w której nie podano wartości pojawiała się przypisana wartość domyślna default value. Definicja kolumny wygląda wówczas: nazwa_kolumny typ_kolumny [atrybuty] DEFAULT wartość_domyślna Przykład: CREATE TABLE test id INTEGER, nazwa VARCHAR20 DEFAULT brak
Tworzenie tabel atrybuty kolumn Przy projektowaniu tabel należy zwracać uwagę aby wartości jednej lub kilku kolumn były unikatowe czyli niepowtarzalne. Aby serwer nie pozwalał na wprowadzanie do kolumny duplikatów danych stosujemy atrybut UNIQUE. Definicja kolumny wygląda wówczas: nazwa_kolumny typ_kolumny [atrybuty] UNIQUE Przykład: CREATE TABLE test id INTEGER, nazwa VARCHAR20 UNIQUE
Tworzenie tabel atrybuty kolumn Czasem chcemy, aby wartości wybranej kolumny automatycznie zwiększały swoją wartość podczas wprowadzania każdego nowego wiersza danych. Najczęściej dotyczy to kolumn zawierających identyfikatory wierszy często klucze główne. Definicja kolumny wygląda wówczas: nazwa_kolumny typ_kolumny [atrybuty] AUTO _INCREMENT Przykład: CREATE TABLE test id INTEGER PRIMARY KEY AUTO_INCREMENT, nazwa VARCHAR20
Tworzenie tabel indeksy Indeksowanie kolumny oznacza, że wewnątrz bazy powstanie specjalna struktura porządkująca dane w kolumnie, co przyspiesza wiele operacji, takich jak sortowanie czy przeszukiwanie. Indeks może dotyczyć jednej lub wielu kolumn. Instrukcja tworzenia indeksu: CREATE [UNIQUE] INDEX nazwa_ind ON nazwa_tabeli kolumny skł. Przykłady: CREATE INDEX id_ind on testid CREATE INDEX imie_ind ON test imie CREATE INDEX nazw_ind ON test nazwisko
Tworzenie tabel indeksy Możliwe jest również MySQL definiowanie indeksu podczas tworzenia tabeli : CREATE TABLE nazwa_tabeli definicje kolumn, INDEX nazwa_indeksu_1 kolumna_x, kolumna_y, kolumna_z,. INDEX nazwa_indeksu_n kolumna_x, kolumna_y, kolumna_z, Przykład: CREATE TABLE test id INTEGER, imie VARCHAR20, nazwisko VARCHAR30, INDEX ind_imie imie, INDEX ind_nazwisko nazwisko
Tworzenie tabel indeksy Usunięcie indeksu zapewnia instrukcja DROP INDEX o postaci: DROP INDEX nazwa_indeksu ON nazwa_tabeli Przykłady: DROP INDEX id_ind ON test DROP INDEX imie_ind ON test DROP INDEX nazwisko_ind ON test DROP INDEX indeks1 ON test
Modyfikacja tabel Strukturę istniejącej tabeli można modyfikować za pomocą polecenia ALTER TABLE : ALTER TABLE nazwa_tabeli zmiana Zmiana to ciąg będący poleceniem do wykonania. Można w ten sposób dodawać/usuwać kolumny, modyfikować typy i nazwy kolumn, dodawać/usuwać indeksy. Najczęściej spotykane polecenia Zmiana: ADD COLUMN definicja_kolumny dodanie nowej kolumny DROP COLUMN nazwa usuwa kolumnę nazwa ADD CONSTRAINT symbol PRIMARY KEY kolumna1, kolumna2,, kolumnan dodanie do tabeli klucza podstawowego DROP PRIMARY KEY usuwa klucz podstawowy ALTER COLUMN nazwa SET NOT NULL-ustawia atrybut NOT NULL dla kolumny nazwa ALTER COLUMN nazwa SET DEFAULT -ustawia wartość domyślną dla kol nazwa ALTER COLUMN nazwa DROP NOT NULL-usuwa atrybut NOT NULL z kolumny nazwa ALTER COLUMN nazwa DROP DEFAULT-usuwa wartość domyślną z kolumny nazwa RENAME COLUMN stara_nazwa TO nowa_nazwa zmienia nazwe kolumny RENAME TO nowa_nazwa zmienia nazwe tabeli
Modyfikacja tabel/usuwanie tabel Modyfikacja tabel. Przykłady: ALTER TABLE osoby DROP PRIMARY KEY ALTER TABLE osoby ADD COLUMN pesel VARCHAR11 ALTER TABLE osoby ALTER COLUMN imie SET DEFAULT nieznane ALTER TABLE osoby ALTER COLUMN imie DROP DEFAULT ALTER TABLE osoby MODIFY COLUMN nazwisko VARCHAR30 NOT FULL Usunięcie tabeli następuje poprzez polecenie DROP TABLE: DROP TABLE tabela1, tabela2,, tabelan usuwanie tabel