MySQL Örneklerle AUTO_INCREMENT
Otomatik artış nedir?
Otomatik Artış, sayısal veri türleri üzerinde çalışan bir işlevdir. Otomatik artış olarak tanımlanan bir alan için tabloya her kayıt eklendiğinde otomatik olarak sıralı sayısal değerler üretir.
Otomatik artış ne zaman kullanılır?
Veritabanı normalleştirme dersinde, birincil ve yabancı anahtarlar kullanılarak birbiriyle ilişkili çok sayıda küçük tabloya veri depolanarak verilerin minimum artıklıkla nasıl depolanabileceğine baktık.
Birincil anahtar, bir veritabanındaki satırı benzersiz bir şekilde tanımladığı için benzersiz olmalıdır. Ancak, birincil anahtarın her zaman benzersiz olduğundan nasıl emin olabiliriz? Olası çözümlerden biri, veri eklemeden önce tabloda anahtarın varlığını kontrol eden birincil anahtarı oluşturmak için bir formül kullanmaktır. Bu işe yarayabilir ancak görebileceğiniz gibi yaklaşım karmaşıktır ve kusursuz değildir. Bu tür karmaşıklıktan kaçınmak ve birincil anahtarın her zaman benzersiz olduğundan emin olmak için şunu kullanabiliriz: MySQL'nin birincil anahtarları oluşturmak için Otomatik artırma özelliği. Otomatik artırma, INT veri türüyle kullanılır. INT veri türü hem imzalı hem de imzasız değerleri destekler. İmzasız veri türleri yalnızca pozitif sayılar içerebilir. En iyi uygulama olarak, otomatik artırma birincil anahtarında imzasız kısıtlamanın tanımlanması önerilir.
Otomatik artış sözdizimi
Şimdi film kategorileri tablosunu oluşturmak için kullanılan komut dosyasına bakalım.
CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) );
Category_id alanındaki “AUTO_INCREMENT”e dikkat edin. Bu, tabloya her yeni satır eklendiğinde kategori kimliğinin otomatik olarak oluşturulmasına neden olur. Tabloya veri eklenirken sağlanmaz, MySQL onu üretir.
Varsayılan olarak AUTO_INCREMENT'in başlangıç değeri 1'dir ve her yeni kayıt için 1 artacaktır.
Şimdi kategoriler tablosunun güncel içeriklerini inceleyelim.
SELECT * FROM `categories`;
Yukarıdaki betiğin çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırdığımızda aşağıdaki sonuçlar ortaya çıkıyor.
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 |
Şimdi kategoriler tablosuna yeni bir kategori ekleyelim.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
Yukarıdaki betiği myflixdb'de çalıştırmak MySQL tezgâh bize aşağıda gösterilen sonuçları verir.
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 |
Kategori kimliğini sağlamadığımızı unutmayın. MySQL kategori kimliği otomatik artış olarak tanımlandığından bizim için otomatik olarak oluşturdu.
Tarafından oluşturulan son ekleme kimliğini almak istiyorsanız MySQLBunu yapmak için LAST_INSERT_ID işlevini kullanabilirsiniz. Aşağıda gösterilen komut dosyası, oluşturulan son kimliği alır.
SELECT LAST_INSERT_ID();
Yukarıdaki betiğin çalıştırılması, INSERT sorgusu tarafından oluşturulan son Otomatik artış numarasını verir. Sonuçlar aşağıda gösterilmiştir.
ÖZET
- Otomatik artış özelliği, sayısal veri türlerine sahip bir sütunda belirtildiğinde, veritabanına yeni bir satır eklendiğinde sıralı olarak sayılar üretir.
- Otomatik artış, birincil anahtarlar oluşturmak için yaygın olarak kullanılır.
- Otomatik artışta tanımlanan veri türü, birçok kaydı barındırabilecek kadar büyük olmalıdır. TINYINT'i otomatik artış alanı için veri türü olarak tanımlamak, tabloya eklenebilecek kayıt sayısını yalnızca 255 ile sınırlar çünkü bunun ötesindeki değerler TINYINT veri türü tarafından kabul edilmez.
- Negatif sayıları önlemek için otomatik artışlı birincil anahtarlarda imzasız kısıtlamanın belirtilmesi iyi bir uygulama olarak kabul edilir.
- Bir tablodan bir satır silindiğinde otomatik olarak artan kimliği yeniden kullanılmaz. MySQL ardışık olarak yeni sayılar üretmeye devam ediyor.
- Varsayılan olarak AUTO_INCREMENT'in başlangıç değeri 1'dir ve her yeni kayıt için 1 artacaktır.
- AUTO_INCREMENT dizisinin başka bir değerle başlamasına izin vermek için AUTO_INCREMENT = 10'u kullanın.