Maison > base de données > tutoriel mysql > Dans MySQL, quelle est la différence entre SERIAL et AUTO_INCRMENT ?

Dans MySQL, quelle est la différence entre SERIAL et AUTO_INCRMENT ?

WBOY
Libérer: 2023-08-24 15:09:03
avant
1099 Les gens l'ont consulté

Dans MySQL, quelle est la différence entre SERIAL et AUTO_INCRMENT ?

Dans MySQL, SERIAL et AUTO_INCRMENT sont utilisés pour définir une séquence comme valeur par défaut d'un champ. Mais ils sont techniquement différents.

Tous les types de données numériques, à l'exception de BIT et DECIMAL, prennent en charge l'attribut AUTO_INCRMENT. Il ne peut y avoir qu'un seul champ AUTO_INCRMENT par table, et les séquences générées par un champ AUTO_INCRMENT dans une table ne peuvent être utilisées dans aucune autre table.

Cette propriété nécessite un index UNIQUE sur le champ pour garantir qu'il n'y a pas de doublons dans la séquence. Par défaut, la séquence commence à 1 et est incrémentée de 1 à chaque insertion.

Exemple

mysql> Create Table Student(Student_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(20));
Query OK, 0 rows affected (0.18 sec)
Copier après la connexion

La requête ci-dessus déclare Student_id AUTO_INCRMENT.

mysql> Insert Into Student(Name) values('RAM'),('SHYAM');
Query OK, 2 rows affected (0.06 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> Select * from Student;
+------------+-------+
| Student_id | Name  |
+------------+-------+
|          1 | RAM   |
|          2 | SHYAM |
+------------+-------+
2 rows in set (0.00 sec)

mysql> Show Create Table Student\G
*************************** 1. row ***************************
      Table: Student
Create Table: CREATE TABLE `student` (
   `Student_id` int(11) NOT NULL AUTO_INCREMENT,
   `Name` varchar(20) DEFAULT NULL,
   PRIMARY KEY (`Student_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Copier après la connexion

D'un autre côté, SERIAL DEFAULT VALUE est l'abréviation de NOT NULL AUTO_INCRMENT UNIQUE KEY. Le mot clé SERIAL DEFAULT VALUE est pris en charge pour les types numériques entiers tels que TINYINT, SMALLINT, MEDIUMINT, INT et BIGINT.

Exemple

mysql> Create Table Student_serial(Student_id SERIAL, Name VArchar(20));
Query OK, 0 rows affected (0.17 sec)

mysql> Insert into Student_serial(Name) values('RAM'),('SHYAM');
Query OK, 2 rows affected (0.12 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> Select * from Student_serial;
+------------+-------+
| Student_id | Name |
+------------+-------+
|          1 | RAM   |
|          2 | SHYAM |
+------------+-------+
2 rows in set (0.00 sec)

mysql> Show Create Table Student_serial\G
*************************** 1. row ***************************
      Table: Student_serial
Create Table: CREATE TABLE `student_serial` (
   `Student_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
   `Name` varchar(20) DEFAULT NULL,
   UNIQUE KEY `Student_id` (`Student_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal