Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySql] zmiana kolejnosci kulumn
maly_swd
post 29.11.2009, 17:12:30
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..
Go to the top of the page
+Quote Post
Mchl
post 29.11.2009, 17:27:46
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 winksmiley.jpg
Go to the top of the page
+Quote Post
maly_swd
post 29.11.2009, 17:59:01
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..
Go to the top of the page
+Quote Post
tvister
post 29.11.2009, 18:11:20
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ść.

  1. ALTER TABLE `dupa_db`.`tabela` CHANGE `id` `id` int(11) NOT NULL AUTO_INCREMENT comment '' first, CHANGE `id_kat` `id_kat` int(11) NULL comment '' after `id`, CHANGE `dane` `dane` char(1) NULL collate utf8_general_ci comment '' after `id_kat`, CHANGE `id_sub` `id_sub` int(11) NULL comment '' after `dane`, CHANGE `name` `name` char(1) NULL collate utf8_general_ci comment '' after `id_sub`, CHANGE `desc` `desc` int(11) NULL comment '' after `name`;


Ten post edytował tvister 29.11.2009, 18:16:27


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
Mchl
post 29.11.2009, 18:20:32
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 tongue.gif

[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
Go to the top of the page
+Quote Post
artega
post 30.11.2009, 09:20:01
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ć ;)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 04:16