'How to create table like another table with additional columns in MYSQL

I have 'Name, Age, Gender' columns in a 'test' table.

I now, want to create another table 'test1' which will have these columns : 'Name, Age, Gender, Occupation'.

How do I do it without creating and then altering? Is there any way to do it in a single line?

I tried adding one column, but I was able to add it at the start only, like: CREATE TABLE test1 (Occupation VARCHAR(50)) LIKE test;

This would result in 'Occupation, Name, Age, Gender'.

I tried CREATE TABLE test1 LIKE test (Occupation VARCHAR(50)) which gave me an error.

How to add columns at last while creation?



Solution 1:[1]

Though you have obligation regarding adding the column at the begining, I am sharing here two approaches with which you can add a column along with the constraint while creating new table from old one.

 CREATE TABLE test (
     name varchar(100),
     age int,
     gender char(1)
 );

 INSERT INTO test values('name1',30,'M');

 INSERT INTO test values('name2',50,'F');

Create table statement from old table:

 CREATE TABLE test1 (id INT NOT NULL AUTO_INCREMENT,
             PRIMARY KEY (id))
             SELECT *  FROM test;

Select query on old table:

 SELECT* FROM test;

Output:

name age gender
name1 30 M
name2 50 F

Slect query on new table:

 select * from test1

OUtput:

id name age gender
1 name1 30 M
2 name2 50 F

Another approach is to create a new table with all the column names from old table with the new column at the end

 CREATE TABLE test2 (
     name varchar(100),
     age int,
     gender char(1),
     id int not null auto_increment,
     primary key(id)
 );

Then insert the data from old table to new table with a single insert statement:

 insert into test2 (name,age,gender) select name, age, gender from test

Select query on new table:

 select * from test2 

Output:

name age gender id
name1 30 M 1
name2 50 F 2

db<>fiddle here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kazi Mohammad Ali Nur