MySQL AUTO_INCREMENT dengan Contoh

Anonim

Apa itu kenaikan otomatis?

Auto Increment adalah fungsi yang beroperasi pada tipe data numerik. Ini secara otomatis menghasilkan nilai numerik berurutan setiap kali catatan dimasukkan ke dalam tabel untuk bidang yang didefinisikan sebagai kenaikan otomatis.

Kapan menggunakan kenaikan otomatis?

Dalam pelajaran tentang normalisasi database, kita melihat bagaimana data dapat disimpan dengan redundansi minimal, dengan menyimpan data ke dalam banyak tabel kecil, terkait satu sama lain menggunakan kunci utama dan asing.

Kunci utama harus unik karena secara unik mengidentifikasi baris dalam database. Tapi, bagaimana kita bisa memastikan bahwa kunci utama selalu unik? Salah satu solusi yang mungkin adalah, menggunakan rumus untuk menghasilkan kunci utama, yang memeriksa keberadaan kunci, dalam tabel, sebelum menambahkan data. Ini mungkin bekerja dengan baik tetapi seperti yang Anda lihat, pendekatannya rumit dan tidak selalu mudah. Untuk menghindari kerumitan seperti itu dan untuk memastikan bahwa kunci primer selalu unik, kita dapat menggunakan fitur kenaikan Otomatis MySQL untuk menghasilkan kunci primer. Penambahan otomatis digunakan dengan tipe data INT. Tipe data INT mendukung nilai yang ditandatangani dan tidak ditandatangani. Tipe data tak bertanda tangan hanya boleh berisi bilangan positif. Sebagai praktik terbaik, disarankan untuk menentukan batasan unsigned pada kunci utama penambahan otomatis.

Sintaks kenaikan otomatis

Sekarang mari kita lihat skrip yang digunakan untuk membuat tabel kategori film.

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 bidang category_id. Ini menyebabkan Id kategori dibuat secara otomatis setiap kali baris baru dimasukkan ke dalam tabel. Itu tidak disediakan saat memasukkan data ke dalam tabel, MySQL menghasilkannya.

Secara default, nilai awal untuk AUTO_INCREMENT adalah 1, dan akan bertambah 1 untuk setiap record baru

Mari kita periksa konten tabel kategori saat ini.

SELECT * FROM `categories`;

Menjalankan skrip di atas di meja kerja MySQL terhadap myflixdb memberi kita hasil sebagai 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 kita masukkan kategori baru ke dalam tabel kategori.

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

Menjalankan skrip di atas terhadap myflixdb di meja kerja MySQL memberi kita hasil berikut yang ditunjukkan di bawah ini.

 
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

Perhatikan bahwa kami tidak menyediakan id kategori. MySQL secara otomatis membuatnya untuk kita karena id kategori didefinisikan sebagai kenaikan otomatis.

Jika Anda ingin mendapatkan ID penyisipan terakhir yang dibuat oleh MySQL, Anda dapat menggunakan fungsi LAST_INSERT_ID untuk melakukannya. Skrip yang ditunjukkan di bawah ini mendapatkan id terakhir yang dibuat.

SELECT LAST_INSERT_ID();

Menjalankan skrip di atas memberikan angka kenaikan Otomatis terakhir yang dihasilkan oleh kueri INSERT. Hasilnya ditunjukkan di bawah ini.

Ringkasan

  • Atribut kenaikan otomatis ketika ditentukan pada kolom dengan tipe data numerik, menghasilkan angka secara berurutan setiap kali baris baru ditambahkan ke database.
  • Kenaikan otomatis biasanya digunakan untuk menghasilkan kunci utama.
  • Tipe data yang ditentukan pada kenaikan otomatis harus cukup besar untuk menampung banyak rekaman. Mendefinisikan TINYINT sebagai tipe data untuk bidang penambahan otomatis membatasi jumlah rekaman yang dapat ditambahkan ke tabel hanya 255 karena nilai di luar itu tidak akan diterima oleh tipe data TINYINT.
  • Ini dianggap sebagai praktik yang baik untuk menentukan batasan unsigned pada kunci utama penambahan otomatis untuk menghindari angka negatif.
  • Ketika sebuah baris dihapus dari tabel, id yang bertambah secara otomatis tidak digunakan kembali. MySQL terus menghasilkan nomor baru secara berurutan.
  • Secara default, nilai awal untuk AUTO_INCREMENT adalah 1, dan akan bertambah 1 untuk setiap record baru
  • Untuk membiarkan urutan AUTO_INCREMENT dimulai dengan nilai lain, gunakan AUTO_INCREMENT = 10