First, consider whether you really need to change the column
order in a table. The whole point of SQL is to abstract the
application from the data storage format. You should always
specify the order in which you wish to retrieve your data. The
first of the following statements returns columns in the order
col_name1
,
col_name2
,
col_name3
, whereas the second
returns them in the order
col_name1
,
col_name3
,
col_name2
:
mysql>SELECT
mysql>col_name1
,col_name2
,col_name3
FROMtbl_name
;SELECT
col_name1
,col_name3
,col_name2
FROMtbl_name
;
If you decide to change the order of table columns anyway, you can do so as follows:
Create a new table with the columns in the new order.
Execute this statement:
mysql>INSERT INTO new_table
->SELECT columns-in-new-order FROM old_table;
Drop or rename old_table
.
Rename the new table to the original name:
mysql> ALTER TABLE new_table RENAME old_table;
SELECT *
is quite suitable for testing
queries. However, in an application, you should
never rely on using SELECT
*
and retrieving the columns based on their
position. The order and position in which columns are returned
does not remain the same if you add, move, or delete columns.
A simple change to your table structure could cause your
application to fail.