> -----Original Message----- > From: Jochem van Dieten [mailto:joch...@gmail.com] > Sent: Tuesday, February 10, 2009 5:10 AM > To: mysql@lists.mysql.com > Subject: Re: MySQL View > > On Mon, Feb 9, 2009 at 3:41 PM, Steven Buehler wrote: > > Ok, I just saw a post about using view's in mysql. I tried to look > it up > > and found how to use it, but my question is: what is a view and why > would > > you use it? > > The problem with any definition of an object in a database is that > there are multiple definitions. Usually on the one hand you have the > definition from abstract relational theory, and on the other hand you > have the definition from actual working databases. So I am not going > to bother with a definition, I will try to explain how a view works > internally inside database code. > > The easiest way to understand a view is to consider a view as a macro > that gets expanded during the execution of every query that references > that view in its FROM. Lets take for example the view that your DBA > has defined for you using: > CREATE VIEW x AS SELECT * FROM y INNER JOIN z ON y.id = z.id; > > Then you query that view with the query: > SELECT a FROM x; > > What the database will do for you behind the scenes is expand your > usage of the view. In effect, the database will replace "x" with its > definition. So your query SELECT a FROM x; gets expanded to: > SELECT a FROM (SELECT * FROM y INNER JOIN z ON y.id = z.id); > > Notice that I have done nothing but replace x with its definition > between parenthesis. And this results in a valid query that can be > executed. And that is exactly what the database will do. It will do > this substitution and then it will run the result of that substitution > as if it were the query that you submitted. > > > Obviously a bit more will go on behind the scenes to handle things > like permissions and optimizations (especially if you get to databases > that have more functionality then MySQL), but this is really all there > is to it. A view is a simple macro that assigns an alias to a select > statement, and when you reference that alias the select statement will > get substituted back in.
Jochem, Not sure about the other poster, but this helps explain it to me. If I understand you correctly, if I have multiple tables with many columns in them, but have several queries that need to pull only a few columns from each and put them together, it is probably best to create a view to do this so that I don't have to keep running joins in my queries? Even if I reboot the computer, the view will still be there when it comes back up too? Thanks Steve -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql?unsub=arch...@jab.org