Parte dell'idea di base dei database relazionali in generale, è che i record non hanno un ordine "intrinseco" nel database stesso 1 .
L'ordinamento è normalmente imposto sul risultato di una query. In questo caso, possiamo decidere su quale colonna (s) specificare l'ordine in cui vogliamo gli articoli visualizzati, e ordinare il risultato di conseguenza.
Ad esempio, potremmo essere in grado di produrre segnalazioni di ordini in base alla data / ora di ciascun ordine (ad esempio, mostrale nell'ordine in cui sono state inserite):
select ID, value, date /* , ... */ from Orders
order by ship_date
... o la data / l'ora in cui l'ordine è stato spedito,
select ID, value, date /* , ... */ from Orders
order by ship_date
... o forse decrescente per dimensione (in modo che possiamo vedere rapidamente gli ordini più grandi, indipendentemente da quando sono accaduti).
select ID, value, date /* , ... */ from Orders
order by value desc
Puoi, naturalmente, aggiungere una colonna order_by
(con un altro nome se preferisci) quando / se vuoi veramente che gli ordini siano visualizzati in un ordine che è del tutto arbitrario (o almeno basato su criteri che non sono " t memorizzato nel database). In questo caso, quando vuoi riordinare, hai un paio di scelte. Uno è semplicemente non dire al database che questa colonna contiene valori unici. Un altro è semplicemente evitare la duplicazione. Per il tuo esempio, hai iniziato con i record numerati 1 e 2. Per invertirli, puoi cambiare i numeri rispettivamente su 4 e 3.
Per eseguire questa operazione a livello di codice, trovi il valore più grande attualmente nella colonna 2 , quindi usa uno più grande di quello come valore di base quando riordinato. Potresti anche voler controllare il valore minimo attualmente in uso. Se è maggiore del numero di record, puoi ricominciare la numerazione da 0.
1. Sebbene MS SQL abbia un concetto di "indice cluster", che si riferisce direttamente all'ordine in cui sono archiviati i record, si tratta comunque di un'ottimizzazione.
2. In genere indicizzerete questa colonna, quindi questa operazione ci aspettiamo che questa operazione sia abbastanza veloce.