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 bir tabloya bir kayıt her 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 kullanarak birbiriyle ilişkili birçok küçük tabloya veri depolayarak, verilerin minimum fazlalıkla nasıl depolanabileceğine baktık.
Bir birincil anahtar, veritabanındaki bir satırı benzersiz şekilde tanımladığı için benzersiz olmalıdır. Ancak, birincil anahtarın her zaman benzersiz olmasını nasıl sağlayabiliriz? Olası çözümlerden biri, verileri eklemeden önce tablodaki anahtarın varlığını kontrol eden birincil anahtarı oluşturmak için bir formül kullanmak olabilir. Bu işe yarayabilir, ancak gördüğünüz gibi yaklaşım karmaşıktır ve kusursuz değildir. Bu tür karmaşıklığı önlemek ve birincil anahtarın her zaman benzersiz olmasını sağlamak için, birincil anahtarlar oluşturmak için MySQL'in Otomatik artış özelliğini kullanabiliriz. INT veri türü ile otomatik artış kullanılır. INT veri türü hem işaretli hem de işaretsiz değerleri destekler. İmzasız veri türleri yalnızca pozitif sayılar içerebilir. En iyi uygulama olarak, otomatik artış birincil anahtarında işaretsiz 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ında "AUTO_INCREMENT" olduğuna dikkat edin. Bu, tabloya her yeni satır eklendiğinde kategori kimliğinin otomatik olarak oluşturulmasına neden olur. Tabloya veri eklerken sağlanmaz, MySQL onu üretir.
Varsayılan olarak, AUTO_INCREMENT için başlangıç değeri 1'dir ve her yeni kayıt için 1 artar
Kategoriler tablosunun güncel içeriğini inceleyelim.
SELECT * FROM `categories`;
Yukarıdaki betiği MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıdaki 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 |
Şimdi kategoriler tablosuna yeni bir kategori ekleyelim.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
Yukarıdaki betiği MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki 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. Kategori kimliği otomatik artış olarak tanımlandığı için MySQL bunu bizim için otomatik olarak oluşturdu.
MySQL tarafından oluşturulan son ekleme kimliğini almak istiyorsanız, bunu 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 komut dosyasını çalıştırmak, INSERT sorgusu tarafından oluşturulan son Otomatik artış numarasını verir. Sonuçlar aşağıda gösterilmiştir.
Özet
- Sayısal veri türlerine sahip bir sütunda belirtildiğinde otomatik artış özniteliği, veritabanına her yeni satır eklendiğinde sırayla sayılar üretir.
- Otomatik artış, genellikle birincil anahtarları oluşturmak için kullanılır.
- Otomatik artışta tanımlanan veri türü, birçok kaydı barındıracak kadar büyük olmalıdır. TINYINT'in otomatik artış alanı için veri türü olarak tanımlanması, tabloya eklenebilecek kayıt sayısını yalnızca 255 ile sınırlar çünkü bunun dışındaki değerler TINYINT veri türü tarafından kabul edilmez.
- Negatif sayılardan kaçınmak için otomatik artış birincil anahtarlarında işaretsiz kısıtlamayı belirtmek iyi bir uygulama olarak kabul edilir.
- Bir tablodan bir satır silindiğinde, otomatik olarak artırılan kimliği yeniden kullanılmaz. MySQL, sırayla yeni sayılar üretmeye devam ediyor.
- Varsayılan olarak, AUTO_INCREMENT için başlangıç değeri 1'dir ve her yeni kayıt için 1 artar
- AUTO_INCREMENT dizisinin başka bir değerle başlamasına izin vermek için AUTO_INCREMENT = 10 kullanın