Jak zmienić kolejność kolumn w tabeli za pomocą zapytania SQL w programie SQL Server 2005?
Chcę zmienić kolejność kolumn w tabeli za pomocą zapytania SQL.
sql
sql-server-2005
Himadri
źródło
źródło
Odpowiedzi:
Nie możesz. Kolejność kolumn to tylko „kosmetyczna” rzecz, na której nam zależy - dla SQL Server jest prawie zawsze zupełnie nieistotna.
To, co SQL Server Management Studio robi w tle, gdy zmieniasz kolejność kolumn, polega na odtworzeniu tabeli od podstaw za pomocą nowego
CREATE TABLE
polecenia, skopiowaniu danych ze starej tabeli, a następnie upuszczeniu jej.Nie ma polecenia SQL definiującego kolejność kolumn.
źródło
INSERT
bez wyraźnego określenia kolumn!Musisz jawnie wymienić pola w takiej kolejności, w jakiej mają być zwracane, zamiast używać * dla zamówienia „domyślnego”.
oryginalne zapytanie:
zwroty
teraz pisz
źródło
według http://msdn.microsoft.com/en-us/library/aa337556.aspx
Cóż, można to zrobić, używając
create
/ copy /drop
/ rename, zgodnie z odpowiedzią komma8.komma1Lub możesz użyć SQL Server Management Studio
Następnie kliknij Zapisz. Ta metoda faktycznie usuwa i odtwarza tabelę, więc mogą wystąpić błędy.
Jeśli opcja śledzenia zmian jest włączona dla bazy danych i tabeli, nie należy używać tej metody.
Jeśli jest wyłączona, opcja Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli, powinna być wyczyszczona w menu Narzędzia> Opcje> Projektanci, w przeciwnym razie wystąpi błąd „Zapisywanie zmian jest niedozwolone” .
Problemy mogą również wystąpić podczas tworzenia klucza podstawowego i obcego.
Jeśli wystąpi którykolwiek z powyższych błędów, zapisywanie się nie powiedzie, co pozostawi oryginalną kolejność kolumn.
źródło
This task cannot be performed using Transact-SQL statements.
” w dokumencie było błędne. Wyjaśniłem autorowi i poprosiłem go, aby zmienił to na „This task is not supported using Transact-SQL statements.
”. Około dnia temu autor zgodził się i dokument został naprawiony. Możesz śledzić dyskusję, którą mieliśmy na GitHub .Jest to podobne do pytania o porządkowanie rekordów w wyniku zapytania .. i zazwyczaj nikt nie lubi formalnie poprawnej odpowiedzi ;-)
Więc oto idzie:
select *
nie wymusza zwrócenia kolumn w określonej kolejnościcreate table' or in the
tablicy alter add `instrukcjeźródło
Możesz oczywiście zmienić kolejność kolumn w instrukcji sql. Jeśli jednak chcesz wyodrębnić fizyczną kolejność kolumn tabel, możesz utworzyć widok. to znaczy
źródło
W SQLServer Management Studio:
Narzędzia -> Opcje -> Projektanci -> Projektanci tabel i baz danych
Następnie:
SQLServer Management studio usunie tabelę i odtworzy ją przy użyciu danych.
źródło
Możesz to zrobić, tworząc nową tabelę, kopiując wszystkie dane, usuwając starą tabelę, a następnie zmieniając nazwę nowej, aby zastąpić starą.
Możesz także dodać nowe kolumny do tabeli, skopiować dane kolumny po kolumnie, upuścić stare kolumny, a następnie zmienić nazwy nowych kolumn, aby pasowały do starych. Prosty przykład poniżej: http://sqlfiddle.com/#!3/67af4/1
źródło
W SQLServer Management Studio:
Tools
->Options
->Designers
->Table and Database Designers
Odznacz
Prevent saving changes that require table re-creation
.Teraz możesz zmienić kolejność stołu.
źródło
Serwer SQL wewnętrznie skompiluj skrypt. Tworzy tymczasową tabelę z nowymi zmianami i kopiuje dane i usuwa bieżącą tabelę, a następnie ponownie tworzy wstawkę do tabeli z tabeli tymczasowej. Odnajduję go z opcji „Generuj skrypt zmiany” ssms 2014. Skrypt taki. Z tego miejsca: Jak zmienić kolejność kolumn w tabeli za pomocą zapytania sql
źródło
Jeśli Twoja tabela ma wystarczającą liczbę kolumn, możesz spróbować. Najpierw utwórz nową tabelę z preferowaną kolejnością kolumn.
Teraz upuść tabelę za pomocą polecenia drop
teraz zmień nazwę nowo utworzonej tabeli na starą nazwę tabeli.
teraz wybierz tabelę, masz uporządkowane kolumny zgodnie z wcześniejszymi preferencjami.
źródło
Ostatecznie nie możesz tego zrobić w MS SQL. Niedawno utworzyłem tabele w podróży (uruchamianie aplikacji) przy użyciu przechowywanej procedury, która czyta z tabeli odnośników. Kiedy tworzyłem widok, który łączył je z inną tabelą, którą ręcznie utworzyłem wcześniej (ten sam schemat, z danymi), nie powiodło się - po prostu dlatego, że użyłem opcji „Wybierz * UNION Select *” dla widoku. Jednocześnie, jeśli używam tylko tych utworzonych za pomocą procedury składowanej, odnoszę sukces.
Podsumowując: jeśli jest jakaś aplikacja, która zależy od kolejności kolumn, to naprawdę nie jest to dobre programowanie i na pewno spowoduje problemy w przyszłości. Kolumny powinny swobodnie znajdować się w dowolnym miejscu i być używane w dowolnym procesie przetwarzania danych (WSTAW, AKTUALIZUJ, WYBIERZ).
źródło
Możesz to osiągnąć, wykonując następujące czynności:
usuń wszystkie klucze obce i klucz podstawowy oryginalnej tabeli.
zmienić nazwę oryginalnej tabeli.
używając CTAS utwórz oryginalną tabelę w żądanej kolejności.
upuść stary stół.
zastosuj wszystkie wiązania z powrotem do oryginalnej tabeli
źródło
Jeśli kolumny do zmiany kolejności zostały niedawno utworzone i są puste, można je usunąć i ponownie dodać we właściwej kolejności.
Zdarzyło mi się to podczas ręcznego rozszerzania bazy danych w celu dodania nowej funkcjonalności i przegapiłem kolumnę, a kiedy ją dodałem, sekwencja była nieprawidłowa.
Po znalezieniu tutaj odpowiedniego rozwiązania po prostu poprawiłem tabelę, używając następujących poleceń.
Uwaga: zrób to tylko wtedy, gdy nie masz danych w kolumnach, które upuszczasz.
Ludzie mówią, że kolejność kolumn nie ma znaczenia. Regularnie używam SQL Server Management Studio do „generowania skryptów” do tworzenia tekstowej wersji schematu bazy danych. Aby efektywnie kontrolować wersje tych skryptów (git) i porównywać je (WinMerge), konieczne jest, aby dane wyjściowe z kompatybilnych baz danych były takie same, a wyróżnione różnice są autentycznymi różnicami w bazach danych.
Kolejność kolumn ma znaczenie; ale tylko dla niektórych, nie dla wszystkich!
źródło
Przypuszczam, że chcesz dodać nową kolumnę w określonej pozycji. Możesz utworzyć nową kolumnę, przenosząc bieżące kolumny w prawo.
Usuń wszystkie indeksy, których to dotyczy, i odniesienia do kluczy obcych. Dodaj nową kolumnę z dokładnie takim samym typem danych jak ostatnia kolumna i skopiuj tam dane.
Zmień typ danych w trzeciej kolumnie na taki sam jak w poprzedniej kolumnie i skopiuj tam dane.
Zmień odpowiednio nazwy kolumn, ponownie utwórz usunięte indeksy i odniesienia do kluczy obcych.
Zmień typ danych w drugiej kolumnie.
Pamiętaj, że kolejność kolumn jest tylko „kosmetyczną” rzeczą, jak powiedział marc_s .
źródło
Posługiwać się
który wyświetla domyślną kolejność kolumn w tabeli.
Jeśli chcesz zmienić kolejność kolumn.
Określ nazwę kolumny, która ma być wyświetlana odpowiednio
źródło
możesz użyć indeksowania .. Po zindeksowaniu, jeśli wybierz * z XXXX wyniki powinny być zgodne z indeksem, ale tylko zestaw wyników .. nie structrue z tabeli
źródło
Możesz to zmienić za pomocą zapytania SQL. Oto zapytanie sql, aby zmienić kolejność kolumn.
źródło
Aby mieć określoną kolejność kolumn, musisz wybierać kolumny w żądanej kolejności. Kolejność wyboru określa kolejność kolumn w wynikach.
źródło
Wypróbuj to polecenie:
Spowoduje to zmianę pozycji wieku na pierwszą pozycję.
źródło
zmień nazwę tabeli zmodyfikuj najpierw nazwę kolumny int (5); przeniesie kolumnę na pierwszą zmianę nazwy tabeli. edit nazwa_kolumny int (5) po (nazwa_tabeli);
źródło
Przykład: Zmień pozycję field_priority po field_price w statusie tabeli.
źródło