Pot să reordona logic coloane într-un tabel?

voturi
77

Dacă am adăugarea unei coloane într-un tabel în Microsoft SQL Server, pot controla în cazul în care este afișată coloana logic în interogări?

Nu vreau să te pui cu aspectul fizic al coloane pe disc, dar aș dori să logic coloane de grup, împreună atunci când este posibil, astfel încât instrumente cum ar fi SQL Server Management Studio lista conținutul tabelului într-un mod convenabil.

Știu că pot face acest lucru prin SQL Management Studio de a intra în modul lor de „proiectare“ pentru tabele și trăgând ordinea coloanelor în jurul valorii, dar aș vrea să fie în măsură să o facă în SQL brut, astfel încât să pot efectua ordonarea scriptat din linia de comandă.

Întrebat 04/08/2008 la 22:37
sursa de către utilizator
În alte limbi...                            


8 răspunsuri

voturi
61

Nu poți face acest lucru prin programare (într-un mod sigur, care este), fără a crea un nou tabel.

Ce Enterprise Manager face atunci când comite o reordonare este de a crea un tabel nou, muta datele și apoi ștergeți tabelul vechi și a redenumi nou tabel numele existent.

Dacă doriți coloanele într-o anumită ordine / grupare, fără a modifica ordinea lor fizică, puteți crea o imagine care poate fi orice doriți.

Publicat 04/08/2008 la 22:54
sursa de către utilizator

voturi
35

Cred că ceea ce lipsește toată lumea de aici, este că, deși nu toată lumea trebuie să se ocupe de 10, la 20 lui, sau 1000 de instanțe ale aceluiași sistem software-ul instalat în toată țara și lumea ... aceia dintre noi care de proiectare a vândut comercial de software face acest lucru. Ca rezultat, vom extinde sisteme de-a lungul timpului, extinde tabele prin adaugarea domenii, este nevoie de noi capacități, și ca aceste domenii sunt identificate fac parte într-un tabel existent, și, ca atare, peste un deceniu de expansiune, în creștere, adaugand domenii, etc. la mese .... si apoi a trebui să lucreze cu aceste tabele de la proiectare, pentru a sprijini, la săpat, uneori, în date brute / depanare pentru a depana bug-uri noi de funcționalitate .... este incredibil de agravantă să nu aibă informațiile principale pe care doriți să a se vedea, în prima mână de câmpuri, atunci când este posibil să aveți tabele cu 30-40-50 sau chiar 90 câmpuri și da, într-o bază de date strict normalizat.

de multe ori am dorit am putut face acest lucru, pentru acest motiv exact. Dar scurt de a face exact ceea ce face SQL, Construirea unui Creați un script pentru un nou tabel așa cum îmi doresc, scris Inserare pentru a-l, apoi scăzând toate existente constrângeri, relații, chei, index, etc, etc, etc din tabel și redenumirea existente „noul“ tabel înapoi la vechiul nume, și apoi citiți toate cheile, relatii, index, etc, etc ....

Este nu numai plictisitoare, consumatoare de timp, dar ... în mai mult de cinci ani, va trebui să se întâmple din nou ....

Este atât de aproape de acea valoare de cantitate masivă de muncă, cu toate acestea punctul este ... aceasta nu va fi ultima dată când avem nevoie de această abilitate, deoarece sistemele noastre vor continua să crească, se extindă, și a obține câmpuri într-un wacked ordonate condus de adăugări nevoie / proiectare.

Majoritatea dezvoltatorilor cred că dintr-un singur punct de vedere sistem, care servește o singură companie sau piață foarte specifice caseta de greu.

De „off-the-raft“, dar in mod semnificativ designeri progresive și lideri de dezvoltare în spațiul lor de piață va avea întotdeauna să se ocupe de această problemă, de peste si peste ..... ar iubi o soluție creativă, dacă cineva are una. Acest lucru ar putea salva cu ușurință compania mea o duzină de ore pe săptămână, nu doar să defileze peste, sau să vă amintiți în cazul în care „că“ câmp este în tabelul de date sursă ....

Publicat 01/02/2013 la 01:10
sursa de către utilizator

voturi
5

Dacă am înțeles întrebarea dumneavoastră, pe care doriți să afecteze ceea ce coloanele sunt returnate mai întâi, a doua, a treia, etc , în existente interogări, nu?

Dacă toate interogările sunt scrise cu SELECT * FROM TABLE- atunci ei vor apărea în producția în care acestea sunt stabilite în SQL.

În cazul în care interogările sunt scrise cu SELECT Field1, Field2 FROM TABLE- atunci ordinea în care sunt stabilite în SQL nu contează.

Publicat 06/08/2008 la 16:42
sursa de către utilizator

voturi
1
  1. Script-ul tabelul existent într-o fereastră de interogare.
  2. Rulați acest script împotriva unei baze de date de testare (eliminați Utilizare declarația)
  3. Utilizați SSMS pentru a face coloana modificări trebuie
  4. Faceți clic pe Generați Change Script (din stânga și cele mai de jos pictograma de pe buttonbar, în mod implicit)
  5. Utilizați acest script împotriva tabelului reale

Toate script-ul într-adevăr nu este a crea un al doilea tabel tabel cu ordinele de coloană dorite, copiază toate datele în el, scade masa de original și apoi redenumește tabelul secundar să îi ia locul. Aceasta salvează ai scris tu însuți, deși ar trebui să vă doriți un script Implementați.

Publicat 08/03/2016 la 14:31
sursa de către utilizator

voturi
1

Există o cale, dar numai ei temporar pentru interogarea în sine. De exemplu,

Să presupunem că aveți 5 mese. Tabelul se numeșteT_Testing

FirstName, LastName, NumărTelefon, e-mail, și Member_ID

doriți să-l lista ID-ul lor, apoi numele, apoi FirstName, apoi telefonul apoi e-mail.

Puteți face acest lucru ca pe Select.

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

Altele decât că, dacă doriți doar LastName va afișa înainte primul nume pentru un motiv oarecare, o poți face, de asemenea, după cum urmează:

Select LastName, *
From T_Testing

Singurul lucru pe care vrei să fii sigur că faci este că orderby sau în care funcția trebuie să fie notate ca Table.Column dacă urmează să fie folosind un În cazul în care sau orderby

Exemplu:

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

Sper că acest lucru ajută, l-am dat seama că aveam nevoie să fac eu asta.

Publicat 06/11/2014 la 18:08
sursa de către utilizator

voturi
1

Se poate face folosind SQL, prin modificarea directă tabelele de sistem. De exemplu, uita-te aici:

Alter tabel - Adăugați nouă coloană între

Cu toate acestea, nu aș recomanda să joace cu mese de sistem, dacă nu este absolut necesar.

Publicat 05/10/2008 la 21:34
sursa de către utilizator

voturi
1

Când Management Studio face, este crearea unui tabel temporar, copiind totul peste, scăzând tabelul original și redenumirea tabelul temporar. Nu există nici o simplă declarație echivalentă T-SQL.

Dacă nu place să fac asta, ai putea crea întotdeauna o vizualizare a tabelului cu coloanele în ordinea în care doriți și de a folosi asta?

Editare: bătut!

Publicat 04/08/2008 la 23:00
sursa de către utilizator

voturi
0

Nu este posibil să se schimbe ordinea coloanelor fără a recrea întregul tabel. Dacă aveți câteva cazuri de numai baza de date, puteți utiliza SSMS pentru aceasta (Selectați din tabel și faceți clic pe „Design“).

În cazul în care aveți prea multe instanțe pentru un proces manual, ar trebui să încercați acest script: https://github.com/Epaminaidos/reorder-columns

Publicat 03/09/2016 la 10:56
sursa de către utilizator

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