MySQL Dizilerini Kullanma

Bir dizi, belirli bir talep üzerine sırayla üretilen 1, 2, 3, ... tam sayıları kümesidir. Diziler, veritabanlarında sıklıkla kullanılır, çünkü birçok uygulama bir tablodaki her satırın benzersiz bir değer içermesini gerektirir ve diziler bunları oluşturmak için kolay bir yol sağlar.

Bu bölüm, MySQL'de dizilerin nasıl kullanılacağını açıklar.

AUTO_INCREMENT Sütunu Kullanılıyor

MySQL'de Sıraları kullanmanın en basit yolu bir sütunu şu şekilde tanımlamaktır: AUTO_INCREMENT ve kalan şeyleri ilgilenmesi için MySQL'e bırakın.

Misal

Aşağıdaki örneği deneyin. Bu, tablo oluşturacak ve bundan sonra bu tabloya, MySQL tarafından otomatik olarak artırıldığı için kayıt kimliği vermenin gerekli olmadığı birkaç satır ekleyecektir.

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)

AUTO_INCREMENT Değerlerini Alın

LAST_INSERT_ID( )bir SQL işlevidir, bu nedenle SQL ifadelerinin nasıl yayınlanacağını anlayan herhangi bir istemcinin içinden kullanabilirsiniz. Aksi takdirde, PERL ve PHP betikleri, son kaydın otomatik olarak artırılmış değerini almak için özel işlevler sağlar.

PERL Örneği

Kullan mysql_insertid elde etme özelliği AUTO_INCREMENTbir sorgu tarafından oluşturulan değer. Bu özniteliğe, sorguyu nasıl yayınladığınıza bağlı olarak bir veritabanı tanıtıcısı veya bir ifade tutamacı aracılığıyla erişilir.

Aşağıdaki örnek, veritabanı tanıtıcısı aracılığıyla buna başvurur.

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

PHP Örneği

AUTO_INCREMENT değeri üreten bir sorgu gönderdikten sonra, değeri çağırarak alın mysql_insert_id( ) komut.

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

Mevcut Bir Sırayı Yeniden Numaralandırma

Bir tablodan çok sayıda kayıt sildiğiniz ve tüm kayıtları yeniden sıralamak istediğiniz bir durum olabilir. Bunu basit bir numara kullanarak yapabilirsiniz, ancak masanız diğer masayla birleşiyorsa bunu yapmak için çok dikkatli olmalısınız.

AUTO_INCREMENT sütununun yeniden dizilmesinin kaçınılmaz olduğunu belirlerseniz, bunu yapmanın yolu sütunu tablodan bırakıp tekrar eklemektir.

Aşağıdaki örnek, nasıl yeniden numaralandırılacağını gösterir. id values Bu tekniği kullanarak tabloda.

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

Sıraya Belirli Bir Değerden Başlama

MySQL varsayılan olarak 1'den başlayacaktır, ancak tablo oluşturma sırasında başka bir sayı da belirtebilirsiniz.

Aşağıdaki program, MySQL'in diziyi 100'den nasıl başlatacağını gösteren bir örnektir.

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
);

Alternatif olarak, tabloyu oluşturabilir ve ardından ilk sıra değerini ALTER TABLE komut.

mysql> ALTER TABLE t AUTO_INCREMENT = 100;