$movie = "CREATE TABLE movie (
movie_id int(11) NOT NULL auto_increment,
movie_name varchar(255) NOT NULL,
movie_type tinyint(2) NOT NULL default 0,
movie_year int(4) NOT NULL default 0,
movie_leadactor int(11) NOT NULL default 0,
movie_director int(11) NOT NULL default 0,
PRIMARY KEY (movie_id),
KEY movie_type (movie_type,movie_year)
)";
Witam.
Moje pytanie dotyczy wyjaśnienia: ,
- dlaczego raz podaje się "deafult 0", raz podaje się tylko "NOT NULL" -dlaczego w linijce "movie_name varchar(255) NOT NULL," nie ma akurat" deafult " tylko w wierszu niżej ?
- jaka jest różnica między "KEY" a "PRIMARY KEY " - praktyczna a nie "regułkowa" ?
- i jakie zadanie ma tutaj "KEY" i co to właściwie jest?
Niżej podaję wyjaśnienie które znalazłem z necie:
DEFAULT wartość_domyślna: określa wartość domyślną kolumny dla nowo wprowadzanych wierszy w przypadku, gdy instrukcja tworząca nowy wiersz nie zadaje tej wartości. Jeśli w definicji kolumny pominięto opcję DEFAULT (oraz nie podano opcji NOT NULL), to w takich wypadkach wartością domyślną jest NULL. Jeżeli natomiat kolumna bez opcji DEFAULT została zadeklarowana jako NOT NULL, to w miejsce brakującej wartości zostanie automatycznie wprowadzona przez MySQL wartość domyślna zależna od typu.
------------------------------------------------------------------------------------------
ooczywiście wiadomo na podstawie tej regułki , że jest to wartość domyślna, lecz "gdy instrukcja tworząca nowy wiersz nie zadaje tej wartości" - jaka instrukcja, i gdzie się wpisuje tą wartość ?...lub "zostanie automatycznie wprowadzona przez MySQL wartość domyślna zależna od typu" - od typu, jakiego typu ? .....
-------------------------------------------------------------------------------------------
NOT NULL | NULL: określa, czy NULL jest dopuszczalną wartością w tej kolumnie. Domyślnie wartość NULL jest dopuszczalna, za wyjątkiem kluczy (kolumn indeksowanych)
-----------------------------------------------------------------------------------------------
tutaj wiadomo w czym rzecz, lecz czemu raz wpisuje się "NOT NULL default 0" a raz samo "NOT NULL "?...
-----------------------------------------------------------------------------------------------
KEY [nazwa_indeksu] (nazwa_kolumny_indeksowej, ..): deklaruje indeksowanie ze względu na wartości z odpowiednich kolumn. Indeks może być nazwany (zgodnie z wcześniej omówionymi regułami tworzenia nazw). Wartości klucza indeksowania nie mogą być NULL. W MySQL istnieje możliwość zadeklarowania długości klucza indeksowania, w postaci kolumna(długość), mniejszej niż długość pola danych odpowiedniej kolumny. Wówczas do tworzenia indeksu wykorzystana jest jedynie część pola danych, co owocuje czasami o wiele mniejszymi (w sensie zużycia miejsca na dysku) i szybciej przeszukiwanymi indeksami.
Kolumna typu BLOB nie może być indeksowana.
-----------------------------------------------------------------------------------------------
"deklaruje indeksowanie ze względu na wartości z odpowiednich kolumn" - ito zdanie wystarczy żeby dalej nie czytać.....
-----------------------------------------------------------------------------------------------
Czy ktoś mi to może przetłumaczyć na "polski" i poprzeć to jakimś normalnym prostym przykładem?
Znalazłem takie zdanie, które pasuje do tej sytuacji ( dodałem , że jestem początkujący) :
"Większość informatyków chce sprawiać wrażenie ludzi niezwykle inteligentnych, dlatego ukrywają oni proste zdania w bardzo wyrafinowanych zdaniach typu " Zaprojektuj oryginalną witrynę internetową wykorzystującą system relacyjnej bazy danych" itd...itp..
pozdrawiam
maciej