SAP HANA - SQL Dizileri

Bir dizi, talep üzerine sırayla üretilen 1, 2, 3 tamsayıları kümesidir. Diziler sıklıkla veritabanlarında 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.

AUTO_INCREMENT sütunu kullanılıyor

MySQL'de dizileri kullanmanın en basit yolu, bir sütunu AUTO_INCREMENT olarak tanımlamak ve geri kalan şeyleri ilgilenmesi için MySQL'e bırakmaktır.

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 onu 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 artan değerini almak için özel işlevler sağlar.

PERL Örneği

Bir sorgu tarafından oluşturulan AUTO_INCREMENT değerini elde etmek için mysql_insertid özniteliğini kullanın. Bu özniteliğe, sorguyu nasıl yayınladığınıza bağlı olarak bir veritabanı tanıtıcısı veya bir ifade tutamacıyla erişilir. Aşağıdaki örnek, buna veritabanı tanıtıcısı aracılığıyla 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 oluşturan bir sorgu gönderdikten sonra, mysql_insert_id () 'i çağırarak değeri alın -

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. Bu, basit bir numara kullanılarak yapılabilir, ancak masanız diğer masayla birleştiriliyorsa bunu yapmak için çok dikkatli olmalısınız.

Bir AUTO_INCREMENT sütununun yeniden dizilmesinin kaçınılmaz olduğunu belirlerseniz, bunu yapmanın yolu sütunu tablodan bırakıp ardından tekrar eklemektir. Aşağıdaki örnek, bu tekniği kullanarak böcek tablosundaki id değerlerinin nasıl yeniden numaralandırılacağını gösterir -

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ğıda MySQL'in diziyi 100'den başlayacağı örnek verilmiştir.

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 ALTER TABLE ile ilk sıra değerini ayarlayabilirsiniz.