> -----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

Reply via email to