Name: Bruce Lindsay 2011-01-31 12:05
I think one of the biggest mistakes in the SQL language was the “select *” notion. The “select *” constructs were developed to provide ease of use, but they really have been an implementation nightmare. “Select *” means select all the columns, but in what order?! The relational model says nothing about what the order of the columns might or should be, so you're really getting down to a physical storage issue here. More problematic, when you create a view as “select * from table where predicate”, what happens when I alter the table and add a column? What does the view mean now? Does it have more columns than before, or not? We have to figure out what to do about those views when their underlying tables are changed.
In fact, we have to make the meaning of the views be unchanged by the update, as otherwise existing applications would break. So I think that this is one example of not quite thinking it through all the way.
In fact, we have to make the meaning of the views be unchanged by the update, as otherwise existing applications would break. So I think that this is one example of not quite thinking it through all the way.