Detailed introduction to MySQL auto-increment field value (with code)
This article brings you a detailed introduction to the MySQL auto-increment field value (with code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
1 Foreword
This article comes from answering a question from a Sifou netizen. This netizen created a new table, auto_increment_increment is set to 10, and the starting value of the AUTO_INCREMENT primary key is set to 9. When When he inserted the data, he found that the primary key value started from 11, so he was confused. This article discusses the issue of auto-increment fields.
2 Auto-increment field calculation method
The value of the auto-increment field is related to the auto_increment_increment parameter and the auto_increment_offset parameter. The auto_increment_offset parameter sets the auto-increment field offset value, also It is to calculate the starting value. The auto_increment_increment parameter sets the step size of the auto-increment field, that is, how much it increases each time. auto_increment_increment and auto_increment_offset are often used in master-master replication to prevent primary key duplication. auto_increment_increment is an Integer type, with a value of 1-65535. If it is set to 0, it will be changed to 1. If the setting exceeds the value range, it will be changed to 65535.
The value of the auto-increment field is calculated through the formula auto_increment_offset N × auto_increment_increment, and N is an increasing sequence similar to [1,2,3,...]. When a piece of data is inserted, the database will take the smallest element greater than or equal to the current AUTO_INCREMENT from the increment sequence calculated by auto_increment_offset N × auto_increment_increment as the next auto-increment value of the field.
auto_increment_increment can be changed dynamically, but when calculating the value of the auto-increment field, it will not be affected by the existing data, and the calculation method remains unchanged.
Let us do some tests
db83-3306>>SET @@auto_increment_increment=10; Query OK, 0 rows affected (0.00 sec) db83-3306>>SHOW VARIABLES LIKE 'auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.00 sec) db83-3306>>CREATE TABLE autoinc1( -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY -> ) engine=InnoDB; Query OK, 0 rows affected (0.01 sec) db83-3306>>INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 db83-3306>>select * from autoinc1; +----+ | id | +----+ | 1 | | 11 | | 21 | | 31 | +----+ 4 rows in set (0.00 sec)
We first created a table containing auto-increment fields, set the step size to 10, inserted the data and found that the growth is indeed the value calculated in the formula. Next, let's test whether setting AUTO_INCREMENT when creating a table will have any impact
db83-3306>>CREATE TABLE autoinc2( -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY -> ) engine=InnoDB AUTO_INCREMENT=8; Query OK, 0 rows affected (0.01 sec) db83-3306>>INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 db83-3306>>select * from autoinc2; +----+ | id | +----+ | 11 | | 21 | | 31 | | 41 | +----+ 4 rows in set (0.00 sec)
You can see that even if the value of AUTO_INCREMENT is set, it will not affect the calculation of auto-increment fields
3 Others Situation
The above is the value under normal circumstances. Below we discuss a special situation
3.1 According to group auto-growth
There is a special situation that will cause The auto-incrementing field may not auto-increment, that is, when using the MyISAM engine and using a joint index, the auto-incrementing field is the first field of the non-joint index.
In this case, the value of the auto-increment field is MAX(auto_increment_column) auto_increment_offset WHERE prefix=given-prefix. How to understand it is that when calculating the growth value, group the fields in front of the joint index auto-increment field. , do an independent growth calculation within this group.
For example, if a joint index is made on a, b, and c, and c is an auto-increment field, then an independent growth calculation is performed on the data under the condition where a=xx and b=xx. The following is an example:
db83-3306>>CREATE TABLE user_pets ( -> name varchar(16) NOT NULL, -> id_inc INT NOT NULL AUTO_INCREMENT, -> pets varchar(16) NOT NULL, -> PRIMARY KEY (name, id_inc) -> ) ENGINE=MyISAM; Query OK, 0 rows affected (0.00 sec) db83-3306>>INSERT INTO user_pets(name, pets) VALUES -> ('chengqm', 'dog'), -> ('chengqm', 'cat'), -> ('chengqm', 'fish'), -> ('yexm', 'dog'), -> ('yexm', 'cat'), -> ('yexm', 'fish'); Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0 db83-3306>>SELECT * FROM user_pets; +---------+--------+------+ | name | id_inc | pets | +---------+--------+------+ | chengqm | 1 | dog | | chengqm | 11 | cat | | chengqm | 21 | fish | | yexm | 1 | dog | | yexm | 11 | cat | | yexm | 21 | fish | +---------+--------+------+ 6 rows in set (0.00 sec)
It can be seen from the results that in the fields with the same name
field, there will be independent self-growth calculations. This calculation method is doing group by It is very convenient when
.
The above is the detailed content of Detailed introduction to MySQL auto-increment field value (with code). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



MySQL is suitable for beginners because it is simple to install, powerful and easy to manage data. 1. Simple installation and configuration, suitable for a variety of operating systems. 2. Support basic operations such as creating databases and tables, inserting, querying, updating and deleting data. 3. Provide advanced functions such as JOIN operations and subqueries. 4. Performance can be improved through indexing, query optimization and table partitioning. 5. Support backup, recovery and security measures to ensure data security and consistency.

Navicat itself does not store the database password, and can only retrieve the encrypted password. Solution: 1. Check the password manager; 2. Check Navicat's "Remember Password" function; 3. Reset the database password; 4. Contact the database administrator.

Create a database using Navicat Premium: Connect to the database server and enter the connection parameters. Right-click on the server and select Create Database. Enter the name of the new database and the specified character set and collation. Connect to the new database and create the table in the Object Browser. Right-click on the table and select Insert Data to insert the data.

MySQL is an open source relational database management system. 1) Create database and tables: Use the CREATEDATABASE and CREATETABLE commands. 2) Basic operations: INSERT, UPDATE, DELETE and SELECT. 3) Advanced operations: JOIN, subquery and transaction processing. 4) Debugging skills: Check syntax, data type and permissions. 5) Optimization suggestions: Use indexes, avoid SELECT* and use transactions.

MySQL and SQL are essential skills for developers. 1.MySQL is an open source relational database management system, and SQL is the standard language used to manage and operate databases. 2.MySQL supports multiple storage engines through efficient data storage and retrieval functions, and SQL completes complex data operations through simple statements. 3. Examples of usage include basic queries and advanced queries, such as filtering and sorting by condition. 4. Common errors include syntax errors and performance issues, which can be optimized by checking SQL statements and using EXPLAIN commands. 5. Performance optimization techniques include using indexes, avoiding full table scanning, optimizing JOIN operations and improving code readability.

You can create a new MySQL connection in Navicat by following the steps: Open the application and select New Connection (Ctrl N). Select "MySQL" as the connection type. Enter the hostname/IP address, port, username, and password. (Optional) Configure advanced options. Save the connection and enter the connection name.

You can open phpMyAdmin through the following steps: 1. Log in to the website control panel; 2. Find and click the phpMyAdmin icon; 3. Enter MySQL credentials; 4. Click "Login".

Steps to perform SQL in Navicat: Connect to the database. Create a SQL Editor window. Write SQL queries or scripts. Click the Run button to execute a query or script. View the results (if the query is executed).
