I would like to know how MySQL interprets the CREATE TABLE
syntax:
If I write:
CREATE TABLE tbl1 (
`v1` int,
`v2` int
CONSTRAINT idx PRIMARY KEY (v1)
)
SELECT a, b FROM tbl2;
Does it determine which value goes into v1
and which goes into v2
by their order in the select statement?
Does it use the names I designate in the CREATE TABLE
statement or
does it take them from the select statement?
I have used the CREATE TABLE XX SELECT val FROM YY
before but would like to know more specifically about the above syntax.
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.
SELECT statements The syntax is: SELECT column1, column2 FROM table1, table2 WHERE column2='value'; In the above SQL statement: The SELECT clause specifies one or more columns to be retrieved; to specify multiple columns, use a comma and a space between column names.
The create database statement is: CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, .... )
With your current solution you'll get a table with the columns v1
, v2
, a
, and b
.
To see how it is done properly, see the "CREATE TABLE ... SELECT Statement" chapter in the official MySQL documentation.
So if you just want v1
and v2
with an index on v1
, do it like this:
CREATE TABLE tbl1 (PRIMARY KEY (v1))
SELECT a v1,
b v2
FROM tbl2;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With