MySQL AUTO_INCREMENT dengan Contoh

Anonim

Apa itu kenaikan automatik?

Auto Increment adalah fungsi yang beroperasi pada jenis data berangka. Secara automatik menghasilkan nilai numerik berurutan setiap kali catatan dimasukkan ke dalam jadual untuk bidang yang ditakrifkan sebagai kenaikan automatik.

Bila menggunakan kenaikan automatik?

Dalam pelajaran mengenai normalisasi pangkalan data, kami melihat bagaimana data dapat disimpan dengan redundansi minimum, dengan menyimpan data ke dalam banyak tabel kecil, yang saling terkait menggunakan kunci primer dan asing.

Kunci utama mesti unik kerana mengenal pasti baris dalam pangkalan data secara unik. Tetapi, bagaimana kita dapat memastikan bahawa kunci utama selalu unik? Salah satu penyelesaian yang mungkin adalah, menggunakan formula untuk menghasilkan kunci utama, yang memeriksa keberadaan kunci, dalam jadual, sebelum menambahkan data. Ini mungkin berfungsi dengan baik tetapi seperti yang anda lihat, pendekatannya rumit dan tidak mudah dibuat. Untuk mengelakkan kerumitan seperti itu dan memastikan kunci utama selalu unik, kami dapat menggunakan fitur kenaikan Auto MySQL untuk menghasilkan kunci utama. Peningkatan automatik digunakan dengan jenis data INT. Jenis data INT menyokong kedua-dua nilai yang ditandatangani dan tidak ditandatangani. Jenis data yang tidak ditandatangani hanya boleh mengandungi nombor positif. Sebagai amalan terbaik, disarankan untuk menentukan kekangan yang tidak ditandatangani pada kunci utama kenaikan automatik.

Sintaks kenaikan automatik

Sekarang mari kita lihat skrip yang digunakan untuk membuat jadual kategori filem.

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

Perhatikan "AUTO_INCREMENT" di medan kategori_id. Ini menyebabkan kategori Id dihasilkan secara automatik setiap kali baris baru dimasukkan ke dalam jadual. Ia tidak dibekalkan semasa memasukkan data ke dalam jadual, MySQL menghasilkannya.

Secara lalai, nilai permulaan untuk AUTO_INCREMENT adalah 1, dan akan meningkat sebanyak 1 untuk setiap rekod baru

Mari kita periksa kandungan jadual kategori terkini.

SELECT * FROM `categories`;

Melaksanakan skrip di atas di MySQL workbench terhadap myflixdb memberikan hasil berikut.

 
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

Sekarang mari masukkan kategori baru ke dalam jadual kategori.

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

Melaksanakan skrip di atas terhadap myflixdb di MySQL workbench memberi kami hasil berikut yang ditunjukkan di bawah.

 
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

Harap maklum bahawa kami tidak memberikan id kategori. MySQL menghasilkannya secara automatik untuk kami kerana id kategori didefinisikan sebagai kenaikan automatik.

Sekiranya anda ingin mendapatkan id sisipan terakhir yang dihasilkan oleh MySQL, anda boleh menggunakan fungsi LAST_INSERT_ID untuk melakukannya. Skrip yang ditunjukkan di bawah mendapat id terakhir yang dihasilkan.

SELECT LAST_INSERT_ID();

Melaksanakan skrip di atas memberikan nombor kenaikan Auto terakhir yang dihasilkan oleh pertanyaan INSERT. Hasilnya ditunjukkan di bawah.

Ringkasan

  • Atribut kenaikan automatik apabila ditentukan pada lajur dengan jenis data berangka, menghasilkan angka secara berurutan setiap kali baris baru ditambahkan ke dalam pangkalan data.
  • Kenaikan Auto biasanya digunakan untuk menghasilkan kunci utama.
  • Jenis data yang ditentukan pada kenaikan Auto harus cukup besar untuk menampung banyak rekod. Mendefinisikan TINYINT sebagai jenis data untuk medan kenaikan automatik menghadkan bilangan rekod yang dapat ditambahkan ke tabel menjadi 255 hanya kerana nilai di luar itu tidak akan diterima oleh jenis data TINYINT.
  • Ini dianggap sebagai amalan yang baik untuk menentukan kekangan yang tidak ditandatangani pada kunci utama kenaikan automatik untuk mengelakkan daripada mempunyai nombor negatif.
  • Apabila satu baris dihapus dari sebuah jadual, idnya yang ditambahkan secara automatik tidak digunakan lagi. MySQL terus menghasilkan nombor baru secara berurutan.
  • Secara lalai, nilai permulaan untuk AUTO_INCREMENT adalah 1, dan akan meningkat sebanyak 1 untuk setiap rekod baru
  • Untuk membiarkan urutan AUTO_INCREMENT bermula dengan nilai lain, gunakan AUTO_INCREMENT = 10