MySQL Workbench Reverse Engineering Using a Create Script

To reverse-engineer a database using a create script, do one of the following:

Tables, views, routines, routine groups, indexes, keys, and constraints can be imported from an SQL script file. Objects imported using an SQL script can be manipulated within MySQL Workbench the same as other objects. The following figure shows an example of the input and options available for this action.

Figure 9.41 Reverse Engineer SQL Script: Input

Content is described in the surrounding text.

If your script creates a database, MySQL Workbench creates a new Physical Schemas area within the open MySQL Model tab.

Click Execute to reverse-engineer the SQL script, verify its results, and optionally place the objects in a new EER diagram. The next figure shows an example of the finished operation.

Figure 9.42 Reverse Engineer SQL Script: Execution

Content is described in the surrounding text.

Click Next to view a summary of the results and then Finish to close the wizard.

Figure 9.43 Reverse Engineer SQL Script: Results

Content is described in the surrounding text.

Before exiting MySQL Workbench, save the schema. Click File and then Save from the menu to save the reverse-engineered database as a MySQL Workbench file with the extension mwb.

For a tutorial on reverse engineering the sakila database, see Section 9.3.3, “Importing a Data Definition SQL Script”.

Creating a DDL script

You can create a data definition (DDL) script by executing the mysqldump db_name --no-data > script_file.sql command. Using the --no-data option ensures that the script contains only DDL statements. However, if you are working with a script that also contains DML statements you need not remove them; they will be ignored.


If you plan to redesign a database within MySQL Workbench and then export the changes, be sure to retain a copy of the original DDL script. You will need the original script to create an ALTER script. For more information, see Section, “Altering a Schema”.

Use the --databases option with mysqldump if you wish to create the database as well as all its objects. If there is no CREATE DATABASE db_name statement in your script file, you must import the database objects into an existing schema or, if there is no schema, a new unnamed schema is created.