MariaDB'de geçici tabloların nasıl çalıştığını keşfedelim. Öncelikle sunucuya bağlanmamız gerekiyor. Örneğin (kendi bağlantı ayrıntılarınızı kullanın):
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
Şimdi bir şeye dikkat çekmek için standart (kalıcı) bir tablo oluşturalım. İşte nasıl:
CREATE TABLE t ( c INT );
Bu tablo, t
, istemciden çıktıktan sonra bile veritabanında kalmaya devam edecek:
exit
SHOW TABLES;
t
tablosu hala listelenecektir:
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
SHOW TABLES;
+----------------+ | Tables_in_demo | +----------------+ | t | +----------------+
Bütün bunlar oldukça açık, ama şimdi bu tabloyu yeniden oluşturalım ve farklı bir şey deneyelim:
CREATE OR REPLACE TEMPORARY TABLE t ( c INT );
TEMPORARY
anahtar kelimesine dikkat edin. Bu tabloyu oluşturduktan sonra SHOW TABLES;
, listede görünür. İçine veri ekleyebilir, sorgulayabilir ve diğer tablolarla birleştirebiliriz. Geçerli oturum sırasında normal bir tablo gibi davranır. Ancak istemciden çıkarsak, yeniden bağlanırsak ve SHOW TABLES;
yine geçici tablo t
listelenmeyecektir.
Geçici bir tablo yalnızca oluşturulduğu oturum süresince mevcuttur ve diğer oturumlar onu göremez.
Geçici tablolar, geçici veri işlemleri için oldukça kullanışlıdır. Örneğin, veritabanımızdaki products
adlı bir tabloyu düşünün:
CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) )
products
yapısını taklit eden geçici bir tablo oluşturabiliriz:
CREATE TEMPORARY TABLE t LIKE products;
Bunu aşağıdakileri çalıştırarak doğrulayabiliriz:
DESCRIBE t;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+
Başlangıçta t
boş olacaktır. Ancak products
bazı verileri t
aktarmak istediğimizi varsayalım. Koduna yalnızca 0 rakamını içeren ürünleri dahil etmek istediğimizi varsayalım:
INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%';
Bu komutu çalıştırdıktan sonra geçici tabloyu sorgularsak t
:
SELECT * FROM t;
+----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+
Filtrelenmiş verileri görüyoruz.
Geçici tablolar, kalıcı veri deposunu etkilemeden geçici işleme için verileri işlemenin güçlü bir yolunu sunar. Verilerin geçici olarak değiştirilmesi veya dönüştürülmesi gereken senaryolarda özellikle kullanışlıdırlar. Bu tür veri işleme için kalıcı tabloları kullanabilirsiniz ancak geçici tablolar, otomatik temizlemeye, daha az adlandırma çakışması riskine, izolasyona ve güvenliğe ve sorgu performansı için kaynak yönetimine ihtiyaç duyduğunuzda kullanışlıdır.