LogIn
I don't have account.

How to Create a new table in SQL?

DevSniper

122 Views

Tables are the foundation of any relational database. Creating a new table is one of the fundamental tasks when working with a relational database in SQL. Tables are the primary structures that hold data in a database. Tables play a key role in organizing and structuring data. A table consists of rows and columns, where each column represents a specific type of data and each row represents a single record. Creating tables is one of the first and most important steps in working with a relational database. In this article, we will explore the syntax for creating tables, discuss the different components of a table structure and provide examples by the end of this article, you will have a clear understanding of tables in SQL.

What is a Table in SQL?

A table is a database object that stores data in a structured format. A table consists of columns and rows. where each column represents a specific type of data (eg: text, int ,date etc) and each row represents a single record or entries.

For example, a table might represent a list of employees, with columns EmployeeId, Name, Email, MobileNumber,JoiningDate, Gender, DOB and Address.

Why is Creating a Table Important?

Tables are the foundation of any relational database. It is a critical aspect of database design. Here are some key reasons why creating a table is important

  • Data Organization : Table organizes data into rows and columns. Allowing you to store, manage and manipulate data efficiently. With a well-structured table, retrieving, updating a specific data becomes simpler through SQL queries.
  • Data consistency : Tables help maintain data consistency by
    1. Defining the structure of the data. For example, using data types such as VARCHAR, INT, DATE, etc. It ensures that only valid data is entered.
    2. Defining constraints like NOT NULL, PRIMARY KEY, FOREIGN KEY, and UNIQUE. For example, a PRIMARY KEY constraint ensures that each row in a table has a unique identifier, preventing duplicate records.
  • Normalization : The primary goal of normalization is to ensure that the database is well-structured with minimal duplication of data. Which reduces redundancy and ensures efficient storage. A well-designed table allows for the proper normalization of data.
  • Data Management : Once data is organized into tables, you can perform CRUD (Create, Read, Update, Delete) operations easily. For example you can read Employee data or update employee data and other operations through simple SQL query.
  • Security and Access Control : Tables enable more granular control over who can access or modify specific data. You can set permissions on a table, restricting access to certain users or roles, which improve data security.

1. Creating a new Table

CREATE TABLE TableName (
    Column1 DataType [Constraints],
    Column2 DataType [Constraints],
    ...
    [TableConstraints]
);

Example

Creating table without Constraints

CREATE TABLE Employees ( 
 EmployeeId INT,
 Name VARCHAR(100),
 Email VARCHAR(100),
 MobileNumber VARCHAR(15),
 JoiningDate DATE,
 Gender VARCHAR(10),
 DOB DATE,
 Address TEXT );

Creating table with Constraints

CREATE TABLE Employees (
    EmployeeId INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    Email VARCHAR(100) UNIQUE NOT NULL,
    MobileNumber VARCHAR(15),
    JoiningDate DATE NOT NULL,
    Gender VARCHAR(10),
    DOB DATE NOT NULL,
    Address TEXT
);

2. Creating a Table Using IF NOT EXISTS

If you attempt to create a table using a CREATE TABLE query and the table already exists or running CREATE TABLE query multiple time, the database will throw an error.

Consider a scenario where the Employees table already exists or you are running the CREATE TABLE query multiple times.

CREATE TABLE Employees (
    EmployeeId INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    Email VARCHAR(100) UNIQUE NOT NULL,
    MobileNumber VARCHAR(15),
    JoiningDate DATE NOT NULL,
    Gender VARCHAR(10),
    DOB DATE NOT NULL,
    Address TEXT
);
Error Code: 1050. Table 'Employees' already exists 0.000 sec

For such case you can use the IF NOT EXISTS condition to check whether a table already exists before attempting to create it. This is useful to avoid errors , as it ensures that the table is only created if it doesn't already exist in the database.

CREATE TABLE IF NOT EXISTS TableName (
    Column1 DataType [Constraints],
    Column2 DataType [Constraints],
    ...
    [TableConstraints]
);

3. Creating a Table from an Existing Table

you can create a new table from an existing table as per your business requirement.

a. Copy only Structure of Existing Table

CREATE TABLE NewTableName LIKE ExistingTableName;
               OR
CREATE TABLE NewTableName AS
SELECT * FROM ExistingTableName WHERE 1 = 0;
Example
CREATE TABLE EmployeeV2 LIKE Employees;

For verification when you run describe query on EmployeeV2

Describe EmployeeV2;

Output

Field	        Type	Null	Key	    Default	Extra
EmployeeId	int	NO	PRI		
Name	   varchar(100)	NO			
Email	   varchar(100)	NO	UNI		
MobileNumber  varchar(15) YES			
JoiningDate  date	 NO			
Gender	    varchar(10)	 YES			
DOB	      date	NO			
Address	      text	YES			

and when you run select query on EmployeeV2. there will be no data in table

b. Copy Structure and Data of Existing Table

CREATE TABLE NewTableName As
SELECT * FROM ExistingTableName;

Example

CREATE TABLE EmployeeV2 AS
SELECT * FROM Employees;

For verification when you run describe and select query on EmployeeV2. describe query result will be

Field	        Type	Null	Key	    Default	Extra
EmployeeId	int	NO	PRI		
Name	   varchar(100)	NO			
Email	   varchar(100)	NO	UNI		
MobileNumber  varchar(15) YES			
JoiningDate  date	 NO			
Gender	    varchar(10)	 YES			
DOB	      date	NO			
Address	      text	YES			

and when you run select query or check data on EmployeeV2 table. you will get all data of Employees are present in EmployeeV2 table

Select * from EmployeeV2

c. Creating New Table with some Limited Columns

If you need to create another table with some limited column ( not all columns) form and existing table you can do this easily by using below SQL query syntax.

CREATE TABLE newTableName AS
    SELECT column1, column2, column3, ....
    FROM existingTableName;

Example

CREATE TABLE EmployeeV2 AS
    SELECT EmployeeId, Name, MobileNumber, DOB
    FROM Employees;

Now , when you run describe query

Describe EmployeeV2;

Output

Field	        Type	Null	Key	    Default	Extra
EmployeeId	int	NO	PRI		
Name	   varchar(100)	NO				
MobileNumber  varchar(15) YES						
DOB	      date	NO		

d. Creating new Table with some conditions

If you need to create a new table from an existing table with specific data that satisfies certain conditions, you can easily do this using an SQL query.

CREATE TABLE newTableName AS
    SELECT column1, column2,column3,....
    FROM existingTableName
    WHERE <conditions>;

Key Points of Creating a New Table in SQL

  • Each table is identified by a unique name and consists of rows and columns.
  • The rows in the table represent individual records or entries.
  • Columns holds a specific type of data (e.g., text, number, date).
  • Tables provide a clear structure to data, making it easier to query, update and manage information.
  • Table structure is predefined so taking backup, transferring or restoring data between databases becomes more efficient.
  • Tables make easier to manage and scale databases as they grow in size.
  • Tables allow you to group, filter and summarize data. For example, you can find the employee list who joined after 2022. This kind of analysis is made much easier with structured tables.
  • Name your tables and columns meaningfully so that they accurately reflect the data they store. This will make your database schema more intuitive and easier to understand.
  • Choose the appropriate data type of each column to optimize storage and query performance. For example :- use INT for numeric fields and VARCHAR for text.
  • Use constraints like NOT NULL, UNIQUE and CHECK to enforce data integrity and ensure the data stored in the tables is accurate.
  • Indexes improve data retrieval performance but can slow down data modification operations. We are suggesting you create indexes on columns that are frequently used in WHERE, JOIN and ORDER BY clauses.