
Αν είμαι προσθέτοντας μια στήλη σε έναν πίνακα του Microsoft SQL Server, μπορώ να ελέγξω, όπου εμφανίζεται η στήλη λογικά σε ερωτήματα;


Δεν θέλω να το χάος με τη φυσική διάταξη των στηλών στο δίσκο, αλλά θα ήθελα να λογικά στήλες ομάδα μαζί, όταν είναι δυνατόν, έτσι ώστε τα εργαλεία, όπως το SQL Server Management Studio λίστα τα περιεχόμενα του πίνακα με βολικό τρόπο.


Ξέρω ότι μπορώ να το κάνω αυτό μέσω SQL Management Studio με τη μετάβαση σε κατάσταση τους «σχέδιο» για τους πίνακες και σύροντας τη σειρά των στηλών γύρω, αλλά θα ήθελα να είναι σε θέση να το κάνουμε με τις πρώτες SQL ώστε να μπορώ να εκτελέσει την παραγγελία σενάριο από τη γραμμή εντολών.

 
Μπορώ λογικά αλλάξετε τη σειρά των στηλών σε έναν πίνακα;
=========================================================



Δεν μπορείτε να το κάνετε αυτό κάποιου προγράμματος (με ασφαλή τρόπο που είναι) χωρίς να δημιουργεί έναν νέο πίνακα. 


Τι του Enterprise Manager κάνει όταν διαπράττουν μια αναδιάταξη είναι να δημιουργήσει ένα νέο πίνακα, μετακινήστε τα στοιχεία και στη συνέχεια να διαγράψετε το παλιό τραπέζι και να μετονομάσετε το νέο πίνακα με το υπάρχον όνομα. 


Αν θέλετε στήλες σας σε μια συγκεκριμένη σειρά / ομάδα χωρίς να μεταβάλλει τη φυσική τους σειρά, μπορείτε να δημιουργήσετε μια προβολή η οποία μπορεί να είναι ό, τι επιθυμείτε.

 

Όταν Management Studio το κάνει, είναι η δημιουργία ενός προσωρινού πίνακα, αντιγράφοντας τα πάντα σε όλη, ρίχνοντας την αρχική τραπέζι σας και τη μετονομασία του προσωρινού πίνακα. Δεν υπάρχει απλή δήλωση ισοδύναμο T-SQL.


Εάν δεν φανταχτερό κάνουμε αυτό, θα μπορούσατε να δημιουργήσετε πάντα μια προβολή του πίνακα με τις στήλες με τη σειρά που θέλετε και να χρησιμοποιήσετε αυτό;


Επεξεργασία: ηττηθεί!

 

Αν κατάλαβα την ερώτησή σας, θέλετε να επηρεάσουν αυτό που στήλες επιστρέφονται πρώτο, δεύτερο, τρίτο, κλπ σε **υπάρχοντα** ερωτήματα, έτσι δεν είναι;


Αν όλα τα ερωτήματα σας είναι γραμμένα με `SELECT * FROM TABLE`- τότε θα εμφανιστούν στην έξοδο όπως αυτές που ορίζονται στην SQL.


Αν οι απορίες σας γραμμένο με `SELECT Field1, Field2 FROM TABLE`- τότε η σειρά που καθορίζονται στην SQL δεν έχει σημασία.

 

Αυτό μπορεί να γίνει με τη χρήση SQL, τροποποιώντας άμεσα τους πίνακες του συστήματος. Για παράδειγμα, κοιτάξτε εδώ:


[Alter τραπέζι - Προσθέστε νέα στήλη στο μεταξύ](http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912)


Ωστόσο, εγώ δεν θα συνιστούσα να παίζουν με τους πίνακες του συστήματος, εκτός αν είναι απολύτως απαραίτητο.

 

Νομίζω ότι αυτό που λείπει όλοι εδώ, είναι ότι, αν και όχι ο καθένας έχει να ασχοληθεί με το 10, το 20, ή να 1000 περιπτώσεις το ίδιο σύστημα λογισμικού που έχουν εγκατασταθεί σε όλη τη χώρα και τον κόσμο ... όσοι από εμάς ότι ο σχεδιασμός πωλούνται στο εμπόριο λογισμικό το πράξουν. Ως αποτέλεσμα, έχουμε επεκτείνει τα συστήματα πάροδο του χρόνου, αναπτύξτε πίνακες με την προσθήκη πεδίων όπως απαιτείται νέα ικανότητα, και τα εν λόγω πεδία εντοπίζονται ανήκουν σε έναν υπάρχοντα πίνακα, και ως εκ τούτου, πάνω από μια δεκαετία από την επέκταση, την καλλιέργεια, προσθέτοντας πεδία, κλπ σε πίνακες .... και στη συνέχεια να συνεργαστεί με αυτούς τους πίνακες από το σχεδιασμό, την υποστήριξη, σε ορισμένες περιπτώσεις το σκάψιμο σε πρωτογενή δεδομένα / επίλυσης προβλημάτων για να διορθώσετε νέα σφάλματα λειτουργία .... είναι εξαιρετικά επιβαρυντικές να μην έχουν την πρωταρχική πληροφορίες που θέλετε να δείτε μέσα στην πρώτη χούφτα των πεδίων, όταν μπορείτε να έχετε πίνακες με 30-40-50 ή ακόμα και 90 πεδία και ναι σε μια αυστηρά κανονικοποιημένη βάση δεδομένων.


Έχω συχνά επιθυμούσε θα μπορούσα να κάνω αυτό, για αυτό ακριβώς το λόγο. Αλλά μικρή για να γίνει ακριβώς αυτό κάνει SQL, οικοδόμηση ενός Δημιουργία δέσμης ενεργειών για έναν νέο πίνακα με τον τρόπο που θέλω, γράφοντας το Εισαγωγή σε αυτό, στη συνέχεια, ρίχνοντας όλα τα υπάρχοντα προβλήματα, τις σχέσεις, τα κλειδιά, δείκτης, κλπ κλπ κλπ από το υπάρχον τραπέζι και μετονομασία η «νέα» πίνακα πίσω στο παλιό όνομα, και στη συνέχεια την ανάγνωση όλων εκείνων κλειδιά, σχέσεις, δείκτης, κτλ κτλ ....


Δεν είναι μόνο κουραστικό, χρονοβόρο, αλλά ... σε πέντε χρόνια, θα πρέπει να συμβεί ξανά ....


Είναι τόσο κοντά που αξίζει να τεράστιο ποσό της εργασίας, όμως το θέμα είναι ... ότι δεν θα είναι η τελευταία φορά που χρειαζόμαστε αυτή την ικανότητα, δεδομένου ότι τα συστήματα μας θα συνεχίσει να αυξάνεται, την επέκταση, και να πάρει τα πεδία σε ένα Wacked διέταξε οδηγείται από προσθήκες ανάγκη / σχεδιασμού.


Η πλειοψηφία των προγραμματιστών σκέφτονται από μια ενιαία άποψη σύστημα που εξυπηρετεί μιας και μόνο εταιρείας ή πολύ συγκεκριμένη αγορά σκληρό κουτί.


Η «off-the-shelf», αλλά πολύ προοδευτική σχεδιαστές και τους ηγέτες της ανάπτυξης στο χώρο της αγοράς τους θα πρέπει πάντα να ασχοληθεί με αυτό το πρόβλημα, ξανά και ξανά ..... θα ήθελαν μια δημιουργική λύση αν υπάρχει κάποιος έχει ένα. Αυτό θα μπορούσε εύκολα να σώσει την εταιρεία μου μια ντουζίνα ώρες την εβδομάδα, απλά δεν χρειάζεται να μετακινηθείτε προς τα πάνω, ή να θυμάστε πού «ότι» το πεδίο είναι στον πίνακα δεδομένων πηγή ....

 

Υπάρχει ένας τρόπος, αλλά είναι μόνο προσωρινά για το ίδιο το ερώτημα. Για παράδειγμα,


Ας υποθέσουμε ότι έχετε 5 τραπέζια. Πίνακας ονομάζεται`T_Testing`


Όνομα, επώνυμο, PhoneNumber, e-mail, και Member\_ID


θέλετε στη λίστα ταυτότητάς τους, στη συνέχεια, Επώνυμο, στη συνέχεια, Όνομα, τότε Τηλέφωνο τότε Email. 


Μπορείτε να το κάνετε σύμφωνα με το Επιλογή. 



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

```

Εκτός από αυτό, αν απλά θέλετε το Επώνυμο στην κράτηση πριν από την πρώτη όνομα για κάποιο λόγο, μπορείτε να το κάνετε, επίσης, ως εξής: 



```
Select LastName, *
From T_Testing

```

Το μόνο πράγμα που θέλω να βεβαιωθείτε ότι έχετε κάνει είναι ότι η OrderBy ή Πού Λειτουργία πρέπει να δηλώνεται ως Table.Column αν πρόκειται να χρησιμοποιείτε ένα Πού ή OrderBy


Παράδειγμα: 



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

```

Ελπίζω ότι αυτό βοηθά, εγώ το κατάλαβα γιατί έπρεπε να κάνω αυτό ο ίδιος. 

 

1. Σενάριο υπάρχον τραπέζι σας σε ένα παράθυρο ερωτήματος.
2. Εκτελέστε το σενάριο σε μια βάση δεδομένων δοκιμής (αφαιρέστε την χρήση δήλωση)
3. Χρησιμοποιήστε SSMS να κάνει η στήλη αλλαγές που χρειάζεστε
4. Κάντε κλικ στο κουμπί Δημιουργία Αλλαγή Script (αριστερά περισσότερο και κατώτατο εικονίδιο στην buttonbar, από προεπιλογή)
5. Χρησιμοποιήστε αυτό το σενάριο σχέση με τις πραγματικές τραπέζι σας


Όλο το σενάριο είναι πραγματικά κάνει είναι να δημιουργήσει ένα δεύτερο πίνακα πίνακα με τις επιθυμητές εντολές στήλη, αντίγραφα όλων των δεδομένων σας σε αυτό, μειώνεται το αρχικό πίνακα και, στη συνέχεια, μετονομάζει το δευτερεύοντα πίνακα για να πάρει τη θέση του. Αυτό δεν μπορείτε να αποθηκεύσετε το γράψιμο τον εαυτό σας αν θα πρέπει να θέλετε ένα αναπτύξετε σενάριο.

 

Δεν είναι δυνατό να αλλάξετε τη σειρά των στηλών, χωρίς να δημιουργήσει εκ νέου ολόκληρο τον πίνακα. Αν έχετε μερικές περιπτώσεις μόνο της βάσης δεδομένων, μπορείτε να χρησιμοποιήσετε SSMS για το σκοπό αυτό (Επιλέξτε τον πίνακα και κάντε κλικ στο «design»).


Σε περίπτωση που έχετε πάρα πολλές περιπτώσεις για μια αυτόματη διαδικασία, θα πρέπει να δοκιμάσετε αυτό το σενάριο:
 <https://github.com/Epaminaidos/reorder-columns>

 