MySQL AUTO_INCREMENT ar piemēriem

Anonim

Kas ir automātiskais pieaugums?

Automātiskais pieaugums ir funkcija, kas darbojas ar skaitliskiem datu tipiem. Tas automātiski ģenerē secīgas skaitliskas vērtības katru reizi, kad ieraksts tiek ievietots tabulā laukam, kas definēts kā automātisks pieaugums.

Kad izmantot automātisko pieaugumu?

Nodarbībā par datu bāzes normalizēšanu mēs apskatījām, kā datus var uzglabāt ar minimālu liekumu, uzglabājot datus daudzās mazās tabulās, kas saistītas viena ar otru, izmantojot primārās un svešās atslēgas.

Primārajai atslēgai jābūt unikālai, jo tā unikāli identificē rindu datu bāzē. Bet kā mēs varam nodrošināt, ka primārā atslēga vienmēr ir unikāla? Viens no iespējamiem risinājumiem būtu formulas izmantošana, lai pirms datu pievienošanas ģenerētu primāro atslēgu, kas tabulā pārbauda atslēgas esamību. Tas var darboties labi, taču, kā redzat, pieeja ir sarežģīta un nav droša. Lai izvairītos no šādas sarežģītības un nodrošinātu, ka primārā atslēga vienmēr ir unikāla, primāro atslēgu ģenerēšanai mēs varam izmantot MySQL automātiskās pieauguma funkciju. Automātiskais pieaugums tiek izmantots ar INT datu tipu. INT datu tips atbalsta gan parakstītās, gan neparakstītās vērtības. Neparakstītie datu tipi var saturēt tikai pozitīvus skaitļus. Kā labāko praksi ieteicams definēt neparakstītu ierobežojumu automātiskās pieauguma primārajai atslēgai.

Automātiskā pieauguma sintakse

Apskatīsim skriptu, kas izmantots filmu kategoriju tabulas izveidošanai.

CREATE TABLE `categories` (`category_id` int(11) AUTO_INCREMENT,`category_name` varchar(150) DEFAULT NULL,`remarks` varchar(500) DEFAULT NULL,PRIMARY KEY (`category_id`));

Ievērojiet "AUTO_INCREMENT" laukā category_id. Tas nozīmē, ka kategorija Id tiek automātiski ģenerēta katru reizi, kad tabulā tiek ievietota jauna rinda. Ievietojot datus tabulā, tas netiek piegādāts, MySQL tos ģenerē.

Pēc noklusējuma AUTO_INCREMENT sākuma vērtība ir 1, un katram jaunajam ierakstam tā palielināsies par 1

Pārbaudīsim kategoriju tabulas pašreizējo saturu.

SELECT * FROM `categories`;

Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret myflixdb dod mums šādus rezultātus.

 
category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL

Tagad kategoriju tabulā ievietosim jaunu kategoriju.

INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');

Izpildot iepriekš minēto skriptu pret myflixdb MySQL darbagaldā, tiek iegūti šādi rezultāti, kas parādīti zemāk.

 
category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL

Ņemiet vērā, ka mēs nenorādījām kategorijas ID. MySQL to mums automātiski ģenerēja, jo kategorijas ID ir definēts kā automātisks pieaugums.

Ja vēlaties iegūt pēdējo ielikuma ID, ko ģenerējis MySQL, varat to izdarīt, izmantojot funkciju LAST_INSERT_ID. Zemāk parādītais skripts iegūst pēdējo ģenerēto ID.

SELECT LAST_INSERT_ID();

Izpildot iepriekš minēto skriptu, tiek iegūts pēdējais automātiskā pieauguma numurs, ko ģenerējis vaicājums INSERT. Rezultāti ir parādīti zemāk.

Kopsavilkums

  • Automātiskā pieauguma atribūts, ja tas norādīts kolonnā ar skaitliskiem datu tipiem, secīgi ģenerē skaitļus ikreiz, kad datu bāzē tiek pievienota jauna rinda.
  • Automātisko pieaugumu parasti izmanto primāro atslēgu ģenerēšanai.
  • Automātiskajā pieaugumā definētajam datu tipam jābūt pietiekami lielam, lai tajā varētu ievietot daudzus ierakstus. Definējot TINYINT kā automātiskā pieauguma lauka datu tipu, ierakstu skaits, kurus var pievienot tabulai, ierobežo līdz 255 tikai tāpēc, ka TINYINT datu tips nepieņem jebkādas vērtības, kas pārsniedz to.
  • Tiek uzskatīts par labu praksi norādīt neparakstītu ierobežojumu automātiskās pieauguma primārajām atslēgām, lai izvairītos no negatīvu skaitļu izmantošanas.
  • Kad rinda tiek izdzēsta no tabulas, tās automātiski palielinātais ID netiek atkārtoti izmantots. MySQL turpina secīgi ģenerēt jaunus numurus.
  • Pēc noklusējuma AUTO_INCREMENT sākuma vērtība ir 1, un katram jaunajam ierakstam tā palielināsies par 1
  • Lai ļautu AUTO_INCREMENT secībai sākt ar citu vērtību, izmantojiet AUTO_INCREMENT = 10