Mogę logicznie zmienić kolejność kolumn w tabeli?

głosy
77

Jeśli mam dodanie kolumny do tabeli w Microsoft SQL Server, można kontrolować, gdzie kolumna jest wyświetlana w zapytaniach logicznie?

Nie chcę zadzierać z fizycznego rozmieszczenia kolumn na dysku, ale chciałbym, aby logicznie kolumny zgrupować gdy to możliwe, że narzędzia, takie jak SQL Server Management Studio wyświetlić zawartość tabeli w wygodny sposób.

Wiem, że mogę to zrobić za pomocą SQL Management Studio, przechodząc w tryb ich „design” dla tabel i przeciągając kolejność kolumn wokół, ale chciałbym być w stanie to zrobić w surowego SQL, aby można było wykonać kolejność skryptów z linii poleceń.

Utwórz 04/08/2008 o 22:37
źródło użytkownik
W innych językach...                            


8 odpowiedzi

głosy
61

Nie można zrobić to programowo (w sposób bezpieczny, że jest), bez tworzenia nowej tabeli.

Co Enterprise Manager robi kiedy popełnić zmiana kolejności jest utworzenie nowej tabeli, przenieść dane, a następnie usunąć starą tabelę i zmień nazwę nowej tabeli do istniejącej nazwy.

Jeśli chcesz, aby kolumn w określonej kolejności / grupy bez zmiany ich kolejności fizycznej, można utworzyć widok, który może być cokolwiek chcesz.

Odpowiedział 04/08/2008 o 22:54
źródło użytkownik

głosy
35

Myślę, że to, co wszyscy tutaj brakuje, jest to, że chociaż nie każdy ma do czynienia z 10-tych, 20-tych, lub 1000 za wystąpień tego samego systemu oprogramowania zainstalowanego w całym kraju i na świecie ... tych z nas, że projekt sprzedawane na rynku oprogramowania zrobić. W rezultacie, możemy rozwinąć systemy w czasie rozwinąć tabel przez dodanie pól, jaka jest potrzebna nowa funkcja, jak i te pola są oznaczone należą w istniejącej tabeli, i jako takie, od ponad dziesięciu lat rozwija, rośnie, dodanie pól, etc na stołach .... a następnie o pracę z tych tabel z projektu, aby wspierać, czasami kopanie do surowych danych / usterek do debugowania nowych błędów funkcjonalności .... to jest bardzo obciążająca nie mieć podstawową informację chcesz zobaczyć w pierwszej garści dziedzinach,

Ja często chciał, mógł to zrobić, bo dokładnie z tego powodu. Ale brakuje robi dokładnie to, co robi SQL, budowanie Utwórz skrypt dla nowej tabeli sposób chcę go, pisząc Włożyć do niego, a następnie spada wszystkie istniejące ograniczenia, relacje, klucze, indeks, etc etc etc z istniejącej tabeli i zmiana nazwy „nowe” stół z powrotem do starej nazwy, a następnie przeczytaniu wszystkich tych kluczy, relacje, indeks, etc etc ....

Jest nie tylko uciążliwe, czasochłonne, ale ... w ciągu pięciu kolejnych lat, będzie musiał powtórzy ....

To jest tak blisko, że warto ogromny nakład pracy, ale chodzi o to ... to nie będzie ostatni raz, musimy tę zdolność, ponieważ nasze systemy będą nadal rosnąć, rozwijać i uzyskać pól w wacked nakazał napędzane konieczność uzupełnienia / projektu.

Większość deweloperów myśleć z pojedynczego punktu widzenia systemu, który służy pojedynczą firmę lub bardzo specyficzny rynek twarde pudełko.

„Off-the-shelf”, ale znacznie postępowych projektantów i liderami rozwoju swego miejsca na rynku zawsze będą miały do ​​czynienia z tym problemem, w kółko ..... chcielibyśmy twórcze rozwiązanie jeśli ktoś ma. Można łatwo zaoszczędzić moja firma kilkanaście godzin tygodniowo, po prostu nie konieczności przewijania nad lub pamiętać gdzie „że” pole jest w tabeli danych źródłowych ....

Odpowiedział 01/02/2013 o 01:10
źródło użytkownik

głosy
5

Jeśli dobrze rozumiem pytanie, chcesz mieć wpływ na to, co kolumny zwracane są po raz pierwszy, drugi, trzeci itd w istniejących zapytań, prawda?

Jeśli wszystkie Twoje pytania są napisane SELECT * FROM TABLE- wtedy pokażą się na wyjściu, jak są one określone w SQL.

Jeśli twoje pytania są napisane SELECT Field1, Field2 FROM TABLE- wtedy kolejności są ułożone w SQL nie ma znaczenia.

Odpowiedział 06/08/2008 o 16:42
źródło użytkownik

głosy
1
  1. Scenariusz istniejący stół do okna kwerendy.
  2. Uruchom ten skrypt na bazie testowej (usunąć oświadczenie użycia)
  3. Użyj SSMS aby kolumna zmienia trzeba
  4. Kliknij Generowanie skryptów zmiany (lewy najwięcej i najniżej ikonę na paska przycisków domyślnie)
  5. Użyć tego skryptu przed swoim prawdziwym stole

Cały scenariusz naprawdę jest utworzyć drugi stół z pożądanymi zleceń kolumnie kopiuje wszystkie dane do niego, krople oryginalną tabelę, a następnie zmienia nazwę wtórną tabelę, aby zająć jego miejsce. To zapisuje piszesz to sam chociaż powinny chcesz skrypt wdrożyć.

Odpowiedział 08/03/2016 o 14:31
źródło użytkownik

głosy
1

Jest tylko jedna droga, ale jest tylko tymczasowo dla samego zapytania. Na przykład,

Powiedzmy masz 5 stołów. Tabela nazywaT_Testing

Imie, Nazwisko, PhoneNumber, e-mail, a Member_ID

chcesz go wymienić swój identyfikator, a następnie nazwisko, potem imię, a następnie Telefon następnie Wyślij.

Można to zrobić, jak na Select.

Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing

Poza tym, jeśli chcesz tylko lastName wykazać przed imię jakiegoś powodu, można to zrobić również w następujący sposób:

Select LastName, *
From T_Testing

Jedyną rzeczą, którą chcę mieć pewność, że robisz to, że OrderBy lub gdy potrzebuje Funkcja zostać oznaczona jako table.column jeśli będą przy użyciu gdzie i orderby

Przykład:

Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc

Mam nadzieję, że to pomaga, ja zorientowaliśmy się, bo musiałem to zrobić sam.

Odpowiedział 06/11/2014 o 18:08
źródło użytkownik

głosy
1

Można to zrobić za pomocą SQL, poprzez modyfikację tabel systemowych bezpośrednio. Na przykład, spójrz tutaj:

Alter table - dodaj nową kolumnę pomiędzy

Jednak nie polecam gry z tabel systemowych, chyba że jest to absolutnie konieczne.

Odpowiedział 05/10/2008 o 21:34
źródło użytkownik

głosy
1

Kiedy Management Studio to robi, to tworzenie tabeli tymczasowej, kopiując wszystko w poprzek, zrzucając swój oryginalny stół i zmiany nazwy tabeli tymczasowej. Nie ma proste stwierdzenie odpowiednik T-SQL.

Jeśli nie fantazyjny sposób, że zawsze można utworzyć widok tabeli z kolumn w celu chcesz i używać?

Edit: pobity!

Odpowiedział 04/08/2008 o 23:00
źródło użytkownik

głosy
0

Nie jest możliwe, aby zmienić kolejność kolumn bez odtworzenie całej tabeli. Jeśli masz kilka wystąpień tylko bazy danych, można użyć do tego SSMS (Wybierz tabelę i kliknij „design”).

W przypadku, gdy masz zbyt wiele wystąpień dla ręcznego procesu, należy spróbować tego skryptu: https://github.com/Epaminaidos/reorder-columns

Odpowiedział 03/09/2016 o 10:56
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more