Open In App

MySQL AUTO_INCREMENT

Last Updated : 19 Jul, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In MySQL, the AUTO_INCREMENT attribute is used to generate a unique identifier for new rows in a table. This attribute is often applied to primary key columns to ensure that each row can be uniquely identified. This article will explore the AUTO_INCREMENT attribute, how to use it, and various considerations to keep in mind.

What is AUTO_INCREMENT

An attribute that can be added to a column is AUTO_INCREMENT which generates an identification number for every record that is added to a table. Usually associated with the PRIMARY KEY constraint, it helps to achieve that each record possesses a unique value, which is rather important for searching data.

Syntax:

The 'AUTO_INCREMENT' attribute is added to a column definition in a CREATE TABLE or ALTER TABLE statement. Here is the basic syntax:

CREATE TABLE table_name (

column1 datatype AUTO_INCREMENT,

column2 datatype,

...

PRIMARY KEY (column1)

);

For an existing table, you can add AUTO_INCREMENT using:

ALTER TABLE table_name MODIFY column_name datatype AUTO_INCREMENT;

Examples of MySQL AUTO_INCREMENT

Let's create a table named 'employees' with an AUTO_INCREMENT column.

CREATE TABLE employees (    
id INT AUTO_INCREMENT,
name VARCHAR(50),
position VARCHAR(50),
PRIMARY KEY (id)
);

Inserting Data into the Table

Now, let's insert some data into the 'employees' table and observe how the AUTO_INCREMENT column behaves.

INSERT INTO employees (name, position) VALUES ('Alice', 'Manager');
INSERT INTO employees (name, position) VALUES ('Bob', 'Developer');
INSERT INTO employees (name, position) VALUES ('Charlie', 'Designer');

Viewing the Table Data

To verify the inserted data and see the AUTO_INCREMENT values, execute:

SELECT * FROM employees;

Output:

This query will retrieve all records from the employees table. The expected output will look like this:

idnameposition
1AliceManager
2BobDeveloper
3CharlieDesigner

Modifying AUTO_INCREMENT Values

You can set a specific starting value for the 'AUTO_INCREMENT' column using the 'ALTER TABLE' statement:

ALTER TABLE employee AUTO_INCREMENT = 1000;

Inserting Additional Data

Now, let's insert a new row into the employees table to see the effect of setting the AUTO_INCREMENT value to 1000:

INSERT INTO employees (name, position) VALUES ('Dave', 'Tester');

Viewing the Table Data Again

SELECT * FROM employees;

Output:

idnameposition
1AliceManager
2BobDeveloper
3CharlieDesigner
1000DaveTester

By setting the AUTO_INCREMENT value to 1000, the next inserted row after setting this value receives an id of 1000, as shown in the table.

Deleting Rows and AUTO_INCREMENT

When you delete rows from a table, the 'AUTO_INCREMENT' value does not automatically reset. For example, if you delete the last row, the next insert will continue with the next incremented value. Here is an example to illustrate this:

  • Suppose the table initially has the following rows:
    idnameposition
    1AliceManager
    2BobDeveloper
    3CharlieDesigner
  • If you delete the last row:
DELETE FROM employees WHERE id = 3;
  • The table will now look like this:
    idnameposition
    1AliceManager
    2BobDeveloper
  • Inserting a new row will result in the following:
INSERT INTO employees (name, position) VALUES ('Dave', 'Tester');

Output:

idnameposition
1AliceManager
2BobDeveloper
4DaveTester

Considerations

  1. Primary Key Requirement: The AUTO_INCREMENT column must be defined as a key (typically the primary key) for the table.
  2. Only One AUTO_INCREMENT Column: Each table can have only one AUTO_INCREMENT column.
  3. Integer Data Type: The AUTO_INCREMENT attribute can be used only with integer types.
  4. Handling Duplicates: Ensure that the AUTO_INCREMENT column is unique and not manually set to a value that might cause duplicates

Conclusion

The AUTO_INCREMENT attribute in MySQL is an important feature for the generation of the new table record’s automatically running number ID’s. It makes it easy to ensure that each record within a given table has a primary key, which is very crucial for dictating the integrity and accessibility of the records within the database. With AUTO_INCREMENT being used properly, you will have the sense of improving your ability in database management.


Next Article
Article Tags :

Similar Reads