Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Easy 'create table from view' syntax in mysql?

Tags:

syntax

mysql

I want to create a table that's a cache of results from a view. Is there an easy way to automatically define the table from the view's definition, or will I have to cobble it together from show create table view?

like image 422
user151841 Avatar asked Feb 11 '12 16:02

user151841


People also ask

How do I create a view table in MySQL?

The basic syntax for creating a view in MySQL is as follows: CREATE VIEW [db_name.] view_name [(column_list)] AS select-statement; [db_name.] is the name of the database where your view will be created; if not specified, the view will be created in the current database.

Can I create a new table from a view?

in SQL Server Management Studio, there is no method to create a table from a view in a database. The only possible way is to use the SELECT INTO statement in a query editor in the management studio.

What is the syntax to create table in MySQL?

The general syntax for creating a table in MySQL is: CREATE TABLE [IF NOT EXISTS] table_name( column_definition1, column_definition2, ........, table_constraints ); Note: [IF NOT EXISTS] verifies if there is an identical table in the database. The query will not be executed if an identical table already exists.

What is the SQL syntax to create a view table?

The syntax for the CREATE VIEW statement in SQL is: CREATE VIEW view_name AS SELECT columns FROM tables [WHERE conditions]; view_name. The name of the SQL VIEW that you wish to create.


2 Answers

You can do CREATE TABLE SELECT from the view to build it. That should duplicate the view's structure as a new table containing all the view's rows. Here's the MySQL syntax reference for this statement.

CREATE TABLE tbl_from_view AS       SELECT     col1,     col2,     col3,     col4,     col5   FROM your_view; 

Note that you will want to be very explicit in your column selections. It isn't advisable to do a SELECT * from the source view. Make sure as well that you have aliases for any calculated or aggregate columns like COUNT(*), MAX(*), (col1 + col2), etc.

like image 53
Michael Berkowski Avatar answered Sep 28 '22 13:09

Michael Berkowski


I also found that in the mysqldump output, there are statements that create the view as a table, just before it defines the view. I can parse those out and run them as queries.

like image 45
user151841 Avatar answered Sep 28 '22 13:09

user151841