SQL - Menggunakan Urutan

Urutan adalah himpunan bilangan bulat 1, 2, 3, ... yang dibuat sesuai permintaan. Urutan sering digunakan dalam database karena banyak aplikasi mengharuskan setiap baris dalam tabel berisi nilai unik dan urutan menyediakan cara mudah untuk membuatnya.

Bab ini menjelaskan cara menggunakan urutan di MySQL.

Menggunakan kolom AUTO_INCREMENT

Cara termudah di MySQL untuk menggunakan urutan adalah dengan menentukan kolom sebagai AUTO_INCREMENT dan menyerahkan sisanya ke MySQL untuk mengurusnya.

Contoh

Coba contoh berikut. Ini akan membuat tabel dan setelah itu akan memasukkan beberapa baris ke dalam tabel ini di mana tidak perlu memberikan ID catatan karena ini bertambah otomatis oleh MySQL.

mysql> CREATE TABLE INSECT
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, # type of insect
   -> date DATE NOT NULL, # date collected
   -> origin VARCHAR(30) NOT NULL # where collected
);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO INSECT (id,name,date,origin) VALUES
   -> (NULL,'housefly','2001-09-10','kitchen'),
   -> (NULL,'millipede','2001-09-10','driveway'),
   -> (NULL,'grasshopper','2001-09-10','front yard');
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> SELECT * FROM INSECT ORDER BY id;
+----+-------------+------------+------------+
| id | name        | date       | origin     |
+----+-------------+------------+------------+
|  1 | housefly    | 2001-09-10 | kitchen    |
|  2 | millipede   | 2001-09-10 | driveway   |
|  3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)

Dapatkan Nilai AUTO_INCREMENT

LAST_INSERT_ID () adalah fungsi SQL, sehingga Anda dapat menggunakannya dari dalam klien mana pun yang memahami cara mengeluarkan pernyataan SQL. Jika tidak, skrip PERL dan PHP menyediakan fungsi eksklusif untuk mengambil nilai yang bertambah otomatis dari rekaman terakhir.

Contoh PERL

Menggunakan mysql_insertidatribut untuk mendapatkan nilai AUTO_INCREMENT yang dihasilkan oleh kueri. Atribut ini diakses melalui pegangan database atau pegangan pernyataan, tergantung pada bagaimana Anda mengeluarkan kueri. Contoh berikut mereferensikannya melalui pegangan database.

$dbh->do ("INSERT INTO INSECT (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};

Contoh PHP

Setelah mengeluarkan kueri yang menghasilkan nilai AUTO_INCREMENT, ambil nilai dengan memanggil mysql_insert_id( ) fungsi.

mysql_query ("INSERT INTO INSECT (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);

Penomoran Ulang Urutan yang Ada

Mungkin ada kasus ketika Anda telah menghapus banyak rekaman dari tabel dan Anda ingin mengurutkan ulang semua rekaman. Ini dapat dilakukan dengan menggunakan trik sederhana, tetapi Anda harus sangat berhati-hati dalam melakukannya dan memeriksa apakah tabel Anda telah digabungkan dengan tabel lain atau tidak.

Jika Anda menentukan bahwa urutan ulang kolom AUTO_INCREMENT tidak dapat dihindari, cara untuk melakukannya adalah dengan melepaskan kolom dari tabel, lalu menambahkannya lagi.

Contoh berikut menunjukkan bagaimana menomori ulang nilai id dalam tabel serangga menggunakan teknik ini.

mysql> ALTER TABLE INSECT DROP id;
mysql> ALTER TABLE insect
   -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
   -> ADD PRIMARY KEY (id);

Memulai Urutan pada Nilai Tertentu

Secara default, MySQL akan memulai urutan dari 1, tetapi Anda juga dapat menentukan nomor lain pada saat pembuatan tabel.

Blok kode berikut memiliki contoh di mana MySQL akan memulai urutan dari 100.

mysql> CREATE TABLE INSECT
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, # type of insect
   -> date DATE NOT NULL, # date collected
   -> origin VARCHAR(30) NOT NULL # where collected
);

Alternatifnya, Anda dapat membuat tabel dan kemudian mengatur nilai urutan awal dengan ALTER TABLE.

mysql> ALTER TABLE t AUTO_INCREMENT = 100;