SQL INSERT INTO Statement - Adding Data to SQL Tables

INSERT INTO Statement

Tables are like empty registers — they need entries to become useful. That’s where the INSERT INTO statement steps in. It lets you add rows of meaningful data into your SQL tables — student records, teacher assignments, exam scores — all start here.

Syntax of INSERT INTO

Standard Syntax

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

Short Syntax (Only when inserting all columns in order)

INSERT INTO table_name
VALUES (value1, value2, ...);

1. Example - INSERT Single Record

Assume we already created a students table:

CREATE TABLE students (
  roll_no INT PRIMARY KEY,
  name VARCHAR(50),
  class VARCHAR(10),
  age INT,
  city VARCHAR(30)
);

Now let’s insert data for a student named Arjun:

INSERT INTO students (roll_no, name, class, age, city)
VALUES (1, 'Arjun Deshmukh', '10A', 15, 'Pune');

Table Contents after INSERT

SELECT * FROM students;
roll_no name class age city
1 Arjun Deshmukh 10A 15 Pune

2. Inserting Multiple Records

Rather than inserting one record at a time, you can insert many in a single statement:

INSERT INTO students (roll_no, name, class, age, city)
VALUES
(2, 'Priya Reddy', '9B', 14, 'Hyderabad'),
(3, 'Karan Mehta', '10A', 15, 'Ahmedabad'),
(4, 'Neha Iyer', '8C', 13, 'Chennai');

Table Contents after INSERT

SELECT * FROM students;
roll_no name class age city
1 Arjun Deshmukh 10A 15 Pune
2 Priya Reddy 9B 14 Hyderabad
3 Karan Mehta 10A 15 Ahmedabad
4 Neha Iyer 8C 13 Chennai

3. Inserting Only Specific Columns

If you don't have data for all columns, you can skip them — but you must exclude them in the column list as well:

INSERT INTO students (roll_no, name, class)
VALUES (5, 'Devanshi Shah', '9A');

Table Contents after INSERT

SELECT * FROM students;
roll_no name class age city
1 Arjun Deshmukh 10A 15 Pune
2 Priya Reddy 9B 14 Hyderabad
3 Karan Mehta 10A 15 Ahmedabad
4 Neha Iyer 8C 13 Chennai
5 Devanshi Shah 9A null null

4. What If You Miss Required Columns?

Let’s try inserting without specifying roll_no (which is PRIMARY KEY):

INSERT INTO students (name, class, age, city)
VALUES ('Ishaan Pandey', '10B', 15, 'Lucknow');
ERROR: Column 'roll_no' cannot be null

This teaches an important lesson — columns marked NOT NULL or PRIMARY KEY must always be provided.

5. INSERT with DEFAULT Values

Suppose we use the students table, where the city column has a default value of 'Delhi':

CREATE TABLE students (
  roll_no INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  class VARCHAR(10),
  age INT,
  city VARCHAR(30) DEFAULT 'Delhi'
);

Now insert a student record without specifying the city column:

INSERT INTO students (roll_no, name, class, age)
VALUES (1, 'Mehul Arora', '10A', 15);

Table Contents after INSERT

SELECT * FROM students;
roll_no name class age city
1 Mehul Arora 10A 15 Delhi

Since no city was provided, SQL automatically filled in the default value 'Delhi'.

Best Practices for INSERT INTO

  • Always specify column names for clarity and future safety.
  • Validate data types — inserting text into a number column will cause errors.
  • Insert in batches if you have many records.

QUIZ

Question 1:Which of the following statements correctly inserts a new student into the `students` table?

Question 2:The INSERT INTO statement can only be used if you specify values for all columns in order.

Question 3:Which of the following are valid uses of the INSERT INTO statement?

Question 4:What does this SQL command do?
INSERT INTO students (roll_no, name, class) VALUES (110, 'Lakshmi', '6A');

Question 5:You can insert multiple rows using a single INSERT INTO statement.

Question 6:Which of the following mistakes can lead to errors when using INSERT INTO?