MySQL memiliki kata kunci AUTO_INCREMENT untuk melakukan peningkatan otomatis. Nilai awal untuk AUTO_INCREMENT adalah 1, yang merupakan nilai default. Itu akan mendapatkan kenaikan sebesar 1 untuk setiap rekor baru
Untuk mendapatkan id auto increment berikutnya di MySQL, kita bisa menggunakan fungsi last_insert_id() dari MySQL atau auto_increment dengan SELECT
Membuat tabel, dengan "id" sebagai penambahan otomatis
mysql> create table NextIdDemo -> ( -> id int auto_increment, -> primary key(id) -> ); Query OK, 0 rows affected (1.31 sec)Memasukkan record ke dalam tabel
mysql> insert into NextIdDemo values(1); Query OK, 1 row affected (0.22 sec) mysql> insert into NextIdDemo values(2); Query OK, 1 row affected (0.20 sec) mysql> insert into NextIdDemo values(3); Query OK, 1 row affected (0.14 sec) _Untuk menampilkan semua catatan
mysql> select *from NextIdDemo;Berikut ini adalah outputnya
+----+ | id | +----+ | 1 | | 2 | | 3 | +----+ 3 rows in set (0.04 sec)Kami telah memasukkan 3 catatan di atas. Oleh karena itu, id berikutnya harus 4
Berikut ini adalah sintaks untuk mengetahui id selanjutnya
SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "yourDatabaseName" AND TABLE_NAME = "yourTableName" _Berikut kuerinya
mysql> SELECT AUTO_INCREMENT -> FROM information_schema.TABLES -> WHERE TABLE_SCHEMA = "business" -> AND TABLE_NAME = "NextIdDemo";Ini adalah output yang menampilkan peningkatan otomatis berikutnya
+----------------+ | AUTO_INCREMENT | +----------------+ | 4 | +----------------+ 1 row in set (0.25 sec) _Ringkasan. dalam tutorial ini, Anda akan belajar bagaimana menggunakan urutan MySQL untuk secara otomatis menghasilkan nomor unik untuk kolom tabel ID
Membuat urutan MySQL
Di MySQL, urutan adalah daftar bilangan bulat yang dihasilkan dalam urutan naik i. e. , 1,2,3… Banyak aplikasi membutuhkan urutan untuk menghasilkan nomor unik terutama untuk identifikasi e. g. , ID pelanggan di CRM, nomor karyawan di SDM, dan nomor peralatan di sistem manajemen layanan
Untuk membuat urutan di MySQL secara otomatis, Anda mengatur atribut AUTO_INCREMENT untuk kolom, yang biasanya adalah kolom kunci utama
Aturan berikut diterapkan saat Anda menggunakan atribut AUTO_INCREMENT
- Setiap tabel hanya memiliki satu kolom AUTO_INCREMENT yang tipe datanya biasanya bilangan bulat
- Kolom AUTO_INCREMENT harus diindeks, artinya dapat berupa indeks
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)2 atauINSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)3 - Kolom AUTO_INCREMENT harus memiliki batasan
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)5. Saat Anda menyetel atribut AUTO_INCREMENT ke kolom, MySQL secara otomatis menambahkan batasanINSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)5 ke kolom secara implisit
Membuat contoh urutan MySQL
Pernyataan berikut membuat tabel bernama
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)8 yang memiliki kolomINSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)9 adalah kolom AUTO_INCREMENTCREATE TABLE employees ( emp_no INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50) );
Code language: SQL (Structured Query Language) (sql)Bagaimana urutan MySQL bekerja
Kolom AUTO_INCREMENT memiliki atribut berikut
- Nilai awal kolom AUTO_INCREMENT adalah 1 dan bertambah 1 saat Anda memasukkan nilai
SELECT * FROM employees;
Code language: SQL (Structured Query Language) (sql)3 ke dalam kolom atau saat Anda menghilangkan nilainya dalam pernyataanSELECT * FROM employees;
- Untuk mendapatkan nomor urut yang dibuat terakhir, Anda menggunakan fungsi
SELECT * FROM employees;
Code language: SQL (Structured Query Language) (sql)5 . Kami sering menggunakan ID sisipan terakhir untuk pernyataan selanjutnya e. g. , masukkan data ke dalam tabel. Urutan yang dihasilkan terakhir bersifat unik di seluruh sesi. Dengan kata lain, jika sambungan lain menghasilkan nomor urut, dari sambungan Anda, Anda dapat memperolehnya dengan menggunakan fungsiSELECT * FROM employees;
Code language: SQL (Structured Query Language) (sql)6 - Jika Anda memasukkan baris baru ke dalam tabel dan menentukan nilai untuk kolom urut, MySQL akan memasukkan nomor urut jika nomor urut tidak ada di kolom atau mengeluarkan kesalahan jika sudah ada. Jika Anda memasukkan nilai baru yang lebih besar dari nomor urut berikutnya, MySQL akan menggunakan nilai baru sebagai nomor urut awal dan menghasilkan nomor urut unik yang lebih besar dari yang sekarang untuk penggunaan berikutnya. Ini menciptakan celah dalam urutan
- Jika Anda menggunakan pernyataan
SELECT * FROM employees;
Code language: SQL (Structured Query Language) (sql)7 untuk memperbarui nilai di kolom AUTO_INCREMENT ke nilai yang sudah ada, MySQL akan mengeluarkan kesalahan kunci duplikat jika kolom memiliki indeks unik. Jika Anda memperbarui kolom AUTO_INCREMENT ke nilai yang lebih besar dari nilai yang ada di kolom, MySQL akan menggunakan nomor berikutnya dari nomor urut penyisipan terakhir untuk baris berikutnya. Misalnya, jika nomor urut yang terakhir dimasukkan adalah 3, Anda memperbaruinya menjadi 10, nomor urut untuk baris baru adalah 4 - Jika Anda menggunakan pernyataan
DELETE FROM employees WHERE emp_no = 2;
Code language: SQL (Structured Query Language) (sql)_0 untuk menghapus baris yang dimasukkan terakhir, MySQL mungkin atau mungkin tidak menggunakan kembali nomor urut yang dihapus tergantung pada mesin penyimpanan tabel. Tabel MyISAM tidak menggunakan kembali nomor urut yang dihapus jika Anda menghapus baris e. g. , id sisipan terakhir dalam tabel adalah 10, jika Anda menghapusnya, MySQL masih menghasilkan nomor urut berikutnya yaitu 11 untuk baris baru. Mirip dengan tabel MyISAM, tabel InnoDB tidak menggunakan kembali nomor urut saat baris dihapus
Setelah Anda menetapkan atribut AUTO_INCREMENT untuk kolom, Anda dapat menyetel ulang nilai kenaikan otomatis dengan berbagai cara e. g. , dengan menggunakan pernyataan
DELETE FROM employees WHERE emp_no = 2;
Code language: SQL (Structured Query Language) (sql)_2Mari kita lihat beberapa contoh untuk mendapatkan pemahaman yang lebih baik tentang urutan MySQL
Pertama, masukkan dua baris baru ke dalam tabel
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)8INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)Kedua, pilih data dari tabel
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)_8SELECT * FROM employees;
Code language: SQL (Structured Query Language) (sql)Ketiga, hapus karyawan kedua yang
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
DELETE FROM employees WHERE emp_no = 2;
Code language: SQL (Structured Query Language) (sql)_Keempat, masukkan karyawan baru.
INSERT INTO employees(first_name,last_name) VALUES('Jack','Lee');
Code language: SQL (Structured Query Language) (sql)_Karena mesin penyimpanan dari tabel
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)8 adalah InnoDB, itu tidak menggunakan kembali nomor urut yang dihapus. Baris baru memilikiINSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)9 3.Kelima, perbarui karyawan yang ada dengan
INSERT INTO employees(first_name,last_name) VALUES('John','Doe'), ('Mary','Jane');
Code language: SQL (Structured Query Language) (sql)9 3 ke 1UPDATE employees SET first_name = 'Joe', emp_no = 1 WHERE emp_no = 3;
Code language: SQL (Structured Query Language) (sql)MySQL mengeluarkan kesalahan entri duplikat untuk kunci utama. Mari kita perbaiki
UPDATE employees SET first_name = 'Joe', emp_no = 10 WHERE emp_no = 3;
Code language: SQL (Structured Query Language) (sql)_Keenam, masukkan pegawai baru setelah memperbarui nomor urut menjadi 10.
INSERT INTO employees(first_name,last_name) VALUES('Wang','Lee');
Code language: SQL (Structured Query Language) (sql)Nomor urut selanjutnya dari penyisipan terakhir adalah nomor 4, oleh karena itu, MySQL menggunakan nomor 4 untuk baris baru, bukan 11.
Dalam tutorial ini, Anda telah mempelajari cara menggunakan urutan MySQL untuk menghasilkan angka unik untuk kolom kunci utama dengan menetapkan atribut AUTO_INCREMENT ke kolom