282 PHP i MySQL dla każdego
W przypadku gdy klucz podstawowy miałby się składać z więcej niż jednej kolumny, jego definicja będzie inna. Schematycznie konstrukcja tego typu ma postać:
CREATE TABLE nazwa tabeli (
nazwa_kolumny_l typ_kolumny_l [atrybuty], nazwa_kolumny_2 typ_kolumny_2 [atrybuty],
nazwa_kolumny_n typ_kolumny_n [atrybuty].
PRIMARY KEY (kolumna_x, kolumnaj.....kolumna_z)
Przykładowo, jeśli tabela ma trzy kolumny: Identyfikator o typie INTEGER, Imię o typie VARCHAR i Nazwisko, również o typie VARCHAR, i wszystkie te kolumny mają tworzyć klucz podstawowy, instrukcja SQL tworząca taką tabelę przybierze postać:
CREATE TABLE Klientt Identyfikator INTEGER NOT NULL.
Imię VARCHAR(20) NOT NULL.
Nazwisko VARCHAR(20) NOT NULL,
PRIMARY KEY(Identyfikator. Imię, Nazwisko)
Każda kolumna tabeli w bazie danych ma przypisany typ, określający rodzaj danych, które mogą być w tej kolumnie przechowywane. Występujące w SQL typy danych można podzielić na trzy główne rodzaje:
♦ typy liczbowe
♦ typy daty i czasu
♦ typy łańcuchowe
Typy liczbowe możemy podzielić na dwa rodzaje: typy całkowitoliczbowe oraz typy zmiennoprzecinkowe. Zgodnie z nazwami obu typów, służą one do reprezentacji wartości całkowitych oraz zmiennoprzecinkowych (zmiennopozycyjnych, rzeczywistych). Typy całkowitoliczbowe zostały przedstawione w tabeli 10.1. Jeden z wymienionych w niej typów — INTEGER — wykorzystywaliśmy już przy tworzeniu przykładowych tabel. W każdym z wymienionych przypadków, z wyjątkiem B00L i B00LEAN, można zastosować dodatkowy modyfikator określający maksymalną szerokość wyświetlania, w postaci: nazwa_typu(Ile)
Dozwolone są także modyfikatory UNSIGNEO oraz ZEROFILL. Pierwszy z nich oznacza, że wartość ma być traktowana jako liczba bez znaku (czyli niedopuszczalne są wartości ujemne). Drugi powoduje, że jeżeli liczba cyfr w danej wartości jest mniejsza od maksymalnej liczby wyświetlanych znaków, wolne miejsca zostaną dopełnione zerami. Zastosowanie atrybutu ZEROFILL sprawia, że automatycznie zostanie również zastosowany atrybut UNSIGNEO.