![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam pytanie odnosnie zmiany kolejnosci kolumn w bazie. powiedzmy tabela dane ma taka strukture: id (int) name (varchar) desc (varchar) id_kat (int) ... (int) id_sub (int) i teraz chce uzyskac taka, bez straty danych: id (int) id_kat (int) ... (int) id_sub (int) name (varchar) desc (varchar) -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
A co za różnica jaka jest kolejność? I tak w zapytaniach możesz podawać kolumny dowolnie.
Cztery zapytania ALTER TABLE Utwórz sobie name1 i desc1 na końcu tabeli. UPDATE Skopiuj zawartość z name do name1, z desc do desc1 ALTER TABLE skasuj kolumny name i desc ALTER TABLE zmień nazwę name1 na name i desc1 na desc Trzecie i czwarte pewnie da się zrobić razem, ale ja wolę osobno ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
oj jest roznica:)
gdzies bylo o tym pisane, ze pola varchar powinny byc na koncu. (jak dobrze pamietam) Mysql majac taki zapis pole varchar pole2 char traktuje drugie pole w sposob varchar (czy jakos tak), chodzi o to ze dane nie znajduja sie na takim sammym oddaleniu co w poprzednim wierszu. Czyli za kazdym przeszukaniem wiersza musi wyliczac przesuniecie danych aby dobrac sie do tych co sa za kolumna varchar a co do Twojego rozwiazania to jest inne szybsze utworzyc sobie tabele i insert into tabnew select * from tabold - ale mi nie o takie rozwiazanie chodzi:) myslalem ze istnieje takie cos jak przestawienie kolumn -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 29 Dołączył: 18.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze mówisz.
Poleceniem alter możesz takie rzeczy zrobić . Ale jak dobrze pamiętam to zapytanie ma pokaźną długość.
Ten post edytował tvister 29.11.2009, 18:16:27 -------------------- Kto rano wstaje ten leje jak z cebra.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Jak znajdziesz tę informację to rzuć linkiem, chętnie poczytam.
MySQL ładując dane do RAM zamienia VARCHAR na CHAR o długości odpowiadającej najdłuższej zawartości w tej kolumnie, tak więc w pamięci wszystkie wiersze są sobie równe - tak przynajmniej ja gdzieś czytałem ![]() [edit] A można jeszcze inaczej: http://dev.mysql.com/doc/refman/5.0/en/cha...lumn-order.html (w komentarzach) Ten post edytował Mchl 29.11.2009, 18:22:44 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
Cytat myslalem ze istnieje takie cos jak przestawienie kolumn Pytanie i odpowiedź już było tutaj. Trzeba tylko "dobrze" szukać ;) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 04:16 |