![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 14.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Jestem nowy w MySQL'u więc napewno mój kod ma pełno błędów, może go ktoś poprawić?
id -> id uzytkownika, nie powtarzalne numer -> numer nie powtarzalny. ban -> cyfra 0 lub 1, (chyba) nie moze sie powtarzac ale niewiem czy to nie zepsuje jak inni by byli zablokowani online -> cyfra 0 lub 1 ranga -> cyfry do 10.000 od 0, moze byc puste jedyne nick -> do 32 znakow [A-Z][a-z][0-9], timeregister -> czas rejestracji dzieki funkcji SQL NOW().
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
id ok, ustaw tylko jako INT
numer klucz unikalny ban bez klucza online ok ranga int nick ok, bez klucza time ok |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 14.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
id ok, ustaw tylko jako INT numer klucz unikalny ban bez klucza online ok ranga int nick ok, bez klucza time ok gdzieś czytałem (na forum.php.pl) że INT bierze 4bajty a TINYINT 1, robi to jakas roznice? edit: Dziękuje za pomoc ![]() edit2: Zrobiłem tak jak było kazane, mam nadzieje że już dobrze
ps. nick mial byc tez nie powtarzalny, dodac PRIMARY KEY? Ten post edytował Czatowicz 2.02.2014, 16:11:36 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
a spróbuj dodać drugi PRIMARY KEY i poznasz odpowiedź
![]() zobacz do dokumentacji to będziesz wiedział dlaczego int http://dev.mysql.com/doc/refman/5.0/en/integer-types.html te kilka bajtów na rekord nie zrobi żadnej różnicy |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 14.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
a spróbuj dodać drugi PRIMARY KEY i poznasz odpowiedź ![]() zobacz do dokumentacji to będziesz wiedział dlaczego int http://dev.mysql.com/doc/refman/5.0/en/integer-types.html te kilka bajtów na rekord nie zrobi żadnej różnicy edit: uu, niewiedziałem że tinyint ma taki mały limit... edit2: to "SMAILLINT" chyba będzie lepsze niż "INT" bo dane do 10.000 znaków. ps. kod podczas dodania wywalil bledy, musialem wrecz przeciwnie skasowac primary key zeby byl tylko jeden i do tego mialbyc tam gdzie auto_increment.. glupie troche Ten post edytował Czatowicz 2.02.2014, 22:45:32 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie ma cyfry 10000. Jest co najwyzej liczba 10000.
INT to za duzy zakres dla 10000. Dostales linka do typow, wiec wybierz wlasciwy. I co to za typy z (2) Kolejna lektura http://nospor.pl/int11-kontra-int.html Cytat kod podczas dodania wywalil bledy, musialem wrecz przeciwnie skasowac primary key zeby byl tylko jeden i do tego mialbyc tam gdzie auto_increment.. glupie troche No wlasnie..... moze byc tylko jeden PRIMARY.... to nie glupota, to logiczna madrosc.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 14.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
przeczytałem lekture, wnioski mam takie że inni programisci a konkretniej początkujący (jak ja) używaja z braku wiedzy np. INT(5) który wg. ich "Oznacza liczby 5-cio cyfrowe" ja to troche inaczej widziałem, a konkretniej że TINYINT(2) przyjmie wartosci 1, 01, ale nie 001. (do 2 cyfr) a jeśli o to nie chodzi to co robi (?...?) , ? bo nie znlazłem lub nie czytam z uwagą. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
(2) ma znaczenie gdy uzywasz ZEROFILL. Wyraznie o tym napisalem w arcie, ktory jest pisany po polsku.
Cytat Liczby w nawiasach przy typach z rodziny INT służą tylko i wyłącznie w przypadku, gdy używamy ZEROFILL....
Tak więc zapis INT(1) nie ogranicza nas w żaden sposób do maksymalnie liczby 9 i w żaden sposób taka kolumna nie będzie zajmowała jednego bajta tylko nadal 4 jak każdy INT. Jeśli chcemy ograniczyć nasze pole do jednego bajta to poprostu użyjmy TINYINT. Jeśli chcemy ograniczyć kolumnę do 50tys (a konkretnie 65535) to używamy nie INT(5) tylko SMALLINT. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Kolejna mądrość:
Jak nie trzymasz liczb ujemnych to używaj Unsigner, dostajesz 2x większy zakres Unikalność załatwiasz poprzez klucz Unique lub nadanie Primary Key na kilka pól (co przydaje się najczęściej w tabelach do powiązań n:M lub tam gdzie wyszukuje się po obu kolumnach) Kolejna ważna uwaga. Jeżeli użyjesz Unsigned dla kolumny z PK to podczas robienia relacji poprzez Foreign Keys każde pole dowiązywane musi być z Unsigned inaczej się wysypie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:31 |