Cara menggunakan peningkatan otomatis MySQL

Cara menggunakan peningkatan otomatis MySQL

Peningkatan otomatis adalah atribut MySQL yang sangat penting. Ketika sebuah tabel membutuhkan bidang numerik yang akan bertambah secara otomatis untuk menghasilkan nomor urut, maka atribut kenaikan otomatis digunakan untuk bidang itu. Bidang peningkatan otomatis dapat ditetapkan sebagai kunci utama atau kunci unik untuk tabel jika diperlukan. Bidang ini tidak dapat menyimpan nilai NULL. Jadi, ketika atribut kenaikan otomatis disetel untuk bidang mana pun dari tabel, batasan NOT NULL akan disetel secara otomatis untuk bidang itu. Saat catatan baru perlu dimasukkan ke dalam tabel yang berisi bidang kenaikan otomatis, user tidak perlu memberikan nilai apa pun untuk bidang itu. Cara kerja atribut ini di tabel MySQL ditampilkan di artikel ini.

Fitur bidang kenaikan otomatis:

  • Catatan pertama bidang ini selalu dimulai dari 1 secara default dan bertambah 1 saat catatan baru dimasukkan.
  • Jika user menentukan nilai numerik tertentu tanpa NULL untuk bidang ini pada saat penyisipan yang tidak berurutan maka pesan error akan dihasilkan oleh MySQL.
  • Jika ada nilai dari bidang ini yang diperbarui dengan nilai lain yang sudah ada di tabel maka MySQL akan menghasilkan pesan error.
  • Jika user menghapus record terakhir dari tabel, maka nomor urut yang baru akan tergantung pada engine tabel. Tabel InnoDB tidak pernah menghasilkan nomor yang dibuat sebelumnya saat catatan baru dimasukkan, tetapi tabel MyISAM menghasilkan nomor urut terakhir yang dihapus dari tabel.
  • Fungsi LAST_INSERT_ID() digunakan untuk mengambil nilai angka yang dihasilkan pada penyisipan terakhir.

Sintaksis:

CREATE TABLE table1
(
field1 datatype AUTO_INCREMENT [PRIMARY KEY],
field2 datatype [ NULL | NOT NULL ],
...
fieldn datatype [ NULL | NOT NULL ],
);

Di Sini, field1 didefinisikan sebagai bidang kenaikan otomatis dan tipe data bidang ini dapat berupa tipe data numerik apa pun seperti INT atau BIGINT. Tidak wajib mendefinisikan bidang kenaikan otomatis sebagai KUNCI UTAMA. Tapi itu bisa digunakan sebagai KUNCI UTAMA untuk membuat hubungan antara dua tabel.

Prasyarat:

Jalankan perintah SQL berikut untuk membuat database bernama ‘newdb‘ dan pilih database untuk membuat tabel dengan atribut kenaikan otomatis.

CREATE DATABASE newdb;
use newdb;

Buat tabel dengan kenaikan otomatis:

Jalankan pernyataan CREATE berikut untuk membuat tabel bernama students di mana id bidang akan dibuat dengan atribut kenaikan otomatis dan ditetapkan sebagai kunci utama. Selanjutnya, dua jenis pernyataan INSERT akan dieksekusi. Dalam pernyataan INSERT pertama, tidak ada nama bidang yang disebutkan dalam kueri penyisipan dan Anda harus menyediakan semua nilai bidang tabel untuk jenis penyisipan ini. Di Sini,the NULL nilai digunakan untuk idbidang. Dalam pernyataan INSERT kedua, semua bidang kecuali bidang kenaikan otomatis disebutkan dalam kueri penyisipan karena akan dibuat secara otomatis. Selanjutnya, pernyataan SELECT dijalankan untuk menampilkan isi daristudents meja.

CREATE TABLE students (
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
batch SMALLINT NOT NULL,
semester SMALLINT NOT NULL,
PRIMARY KEY (id)
);

INSERT INTO students VALUES
(NULL, 'Masrafi', 41, 9);

INSERT INTO students(name, batch, semester) VALUES
('Sakib', 43, 7);

SELECT * FROM students;

Anda dapat mengatur nilai bidang kenaikan otomatis secara manual tetapi Anda harus mempertahankan urutannya. Anda tidak dapat menetapkan nilai apa pun yang lebih rendah dari nilai yang dimasukkan terakhir atau sama dengan nilai yang ada. Pernyataan INSERT pertama berikut akan berfungsi dengan baik karena nilai yang dimasukkan terakhir adalah 2. Pernyataan INSERT kedua akan menghasilkan error karena nilai 2 sudah ada di tabel.

INSERT INTO students VALUES
(4, 'Robel', 41, 9);

INSERT INTO students VALUES
(2, 'Manzarul', 41, 9);

Buat tabel dengan penambahan otomatis dan UNSIGNED ZEROFILL:

Disebutkan sebelumnya bahwa, bidang kenaikan otomatis dimulai dari 1 secara default. Tetapi jika Anda menggunakan atribut ZEROFILL UNSIGNED dengan bidang kenaikan otomatis dan mengatur panjang angka, maka angka akan dihasilkan dengan nol di depan berdasarkan panjangnya. Pernyataan CREATE berikut akan
membuat tabel bernamateachers di mana atribut auto-increment dan UNSIGNED ZEROFILL ditetapkan untuk tch_id field dan panjang field diatur ke 4. Selanjutnya, beberapa data akan dimasukkan ke dalam tabel dengan pernyataan INSERT dan pernyataan SELECT akan menampilkan semua isi tabel.

CREATE TABLE teachers (
tch_id MEDIUMINT(4) UNSIGNED ZEROFILL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
department VARCHAR(10) NOT NULL,
PRIMARY KEY (tch_id)
);

INSERT INTO teachers VALUES
(NULL, 'Maria', 'CSE'),
(NULL, 'Janifer', 'BBA'),
(NULL, 'Micheal', 'ENG');
SELECT * FROM teachers;

Di sini, ditunjukkan bahwa 0001, 0002 dan 0003 dihasilkan sebagai nilai tch_id.

Sekarang, jika Anda menghapus catatan terakhir dan memasukkan catatan baru maka nomor baru lebih banyak nilai tch_id yang dihapus akan dihasilkan sebagai baru tch_id.

DELETE FROM teachers WHERE tch_id = 3;

INSERT INTO teachers VALUES
(NULL, 'Mahmuda', 'CSE');

SELECT * FROM teachers;

Menyetel ulang bidang kenaikan otomatis:

Jika semua catatan dihapus dari teachers tabel yang berisi bidang kenaikan otomatis lalu yang baru value of tch_idakan dihasilkan setelah nilai yang dimasukkan terakhir. Setelah menjalankan pernyataan SQL berikut, akan ditunjukkan bahwa yang baru dibuattch_id adalah 0005 karena nilai yang dimasukkan terakhir adalah 0004.

DELETE FROM teachers;

INSERT INTO teachers VALUES
(NULL, 'Lucy', 'EEE');

SELECT * FROM teachers;

Jika Anda ingin mereset tabel dan memulai nilai dari 1 lagi maka Anda harus menjalankan pernyataan TRUNCATE alih-alih pernyataan DELETE. Hal ini ditunjukkan dalam tiga pernyataan berikut.

TRUNCATE table teachers;

INSERT INTO teachers VALUES
(NULL, 'Lucy', 'EEE');

SELECT * FROM teachers;

Anda akan mendapatkan output berikut setelah menjalankan pernyataan.

Jika Anda ingin mengubah nilai default bidang kenaikan otomatis, maka Anda harus menjalankan pernyataan ALTER dengan memulai nilai kenaikan otomatis. Selanjutnya, masukkan catatan dan periksa nilai bidang kenaikan otomatis. Di sini, nilai awal akan diatur ke15.

TRUNCATE table teachers;

ALTER TABLE teachers AUTO_INCREMENT = 15;

INSERT INTO teachers VALUES
(NULL, 'Lucy', 'EEE');

SELECT * FROM teachers;

Output berikut akan muncul setelah menjalankan pernyataan SQL di atas.

Kesimpulan:

Tujuan dari atribut kenaikan otomatis dijelaskan dengan benar dengan menggunakan tabel contoh dalam artikel ini untuk membantu user MySQL memahami useran atribut ini.

Related Posts