SQL
Temeller, Yapılandırılmış, Programlama, Dil, Sözdizimi, Veritabanı, Cümleler, veritabanı kavramları, SQL Sözdizimi, SELECT, INSERT, DELETE, UPDATE, DROP, TRUNCATE, DISTINCT, ORDER BY, GROUP BY, NEREDE örneklerle yeni başlayanlar ve profesyoneller için SQL eğitimi ve dahası.Veritabanı, düzenli bir veri koleksiyonudur.
VTYS:
DBMS, Veritabanı Yönetim Sistemini ifade eder. Verileri depolamanıza, değiştirmenize ve bir veritabanından almanıza olanak sağlayan bir dizi programdır.RDBMS:
RDBMS, İlişkisel Veritabanı Yönetim Sistemini ifade eder. EF Codd tarafından tanıtılan ilişkisel modele dayalı bir veritabanı yönetim sistemidir. MS SQL Server, Oracle, IBM DB2, MySQL ve Microsoft Access gibi tüm modern veritabanı sistemleri RDBMS tabanlıdır.DBMS ve RDBMS arasındaki fark:
[TABLE=full][TR][TD] VTYS[/TD][TD] RDBMS[/TD][/TR][TR][TD]- <li data-xf-list-type="ol">DBMS, ACID PROPERTY'yi sağlamak için herhangi bir kısıtlama veya güvenlik tanımlamaz. <li data-xf-list-type="ol">Normalleştirme kavramı mevcut değil. <li data-xf-list-type="ol">DBMS'de veriler dahili olarak dosyalar olarak ele alınır. <li data-xf-list-type="ol">DBMS, dağıtılmış veritabanlarını desteklemez. <li data-xf-list-type="ol">DBMS, tek kullanıcıyı destekler.
- <li data-xf-list-type="ol">RDBMS, ASİT ÖZELLİĞİNİ sağlamak için bütünlük kısıtlamasını tanımlar. <li data-xf-list-type="ol">Normalleştirme kavramı mevcuttur. <li data-xf-list-type="ol">RDBMS'de veriler dahili olarak tablolar olarak ele alınır. <li data-xf-list-type="ol">RDBMS, dağıtılmış veritabanlarını destekler. <li data-xf-list-type="ol">RDBMS birden çok kullanıcıyı destekler.
SQL Komutları:
SQL Komutları, belirli bir görevi gerçekleştirmek için veritabanıyla etkileşime geçmek için kullanılan talimatlardır.SQL Komutları kategorileri:
1. DDL (Veri Tanımlama Dili):DDL komutları, veritabanı nesnelerinin yapısını tanımlamak için kullanılır.
1. CREATE – Tablo, görünüm vb. veritabanı nesneleri oluşturmak için kullanılır.
2. ALTER – Mevcut veritabanı nesnesinin yapısını değiştirmek için kullanılır.
3. DROP – Varolan nesneleri veri tabanından silmek için kullanılır.
4. KESME – Bir tablodan tüm kayıtları kaldırır, kayıtlar için ayrılan tüm boşluklar kaldırılacaktır.
5. RENAME – Mevcut bir veritabanı nesnesini yeniden adlandırmak için kullanılır.
2. DML (Data Manipulation Language):
1. SELECT – Veri tabanından kayıt almak için kullanılır.
2. INSERT – Kayıt oluşturmak için kullanılır.
3. GÜNCELLEME – Mevcut bir kaydı değiştirmek için kullanılır.
4. SİL – Bir tablodaki tüm kayıtları silmek için kullanılır, kayıtlar için boşluk kalır.
5. MERGE- Kayıt eklemek veya güncellemek için kullanılır.
6. ÇAĞRI – bir PL/SQL veya Java alt programını çağırın.
7. KİLİT TABLOSU – Eşzamanlılığı kontrol etmek için kullanılır.
3. DCL (Veri Kontrol Dili):
1. GRANT – Kullanıcıya ayrıcalıklar verir.
2. REVOKE – GRANT komutu ile verilen kullanıcı yetkilerini geri alır.
4. TCL (Transaction Control):
1. COMMIT – Yapılan işleri kaydetmek için kullanılır.
2. SAVEPOINT – Bir işlemde daha sonra geri alabileceğiniz bir noktayı belirtmek için kullanılır.
3. GERİ DÖNÜŞ – Veritabanını son COMMIT'ten bu yana orijinaline geri yüklemek için kullanılır.
SQL (Structured Query Language), veritabanı yönetim sistemlerinde veri manipülasyonu ve sorgulama işlemleri için kullanılan standart bir dildir. Özellikle Metin2 gibi大型多人在线角色扮演游戏 (MMORPG) sunucularında, oyuncu verileri, eşyalar, görevler, sunucu ayarları gibi pek çok şey veritabanı üzerinde saklanır. Bu nedenle Metin2 sunucuları için SQL bilgisi kritik öneme sahiptir.
Metin2 sunucularında genellikle MySQL veya MariaDB gibi ilişkisel veritabanı sistemleri kullanılır. Bu sistemler sayesinde sunucular, milyonlarca oyuncu verisini düzenli, hızlı ve güvenli bir şekilde yönetebilir. Metin2 veritabanında bulunan temel tablolar arasında 'player', 'item', 'mob', 'guild', 'account', 'shop', 'quest', 'log' gibi tablolar yer alır. Her bir tablo, farklı amaçlara hizmet eder ve sunucunun işleyişinde önemli roller üstlenir.
Player Tablosu ve Oyuncu Verileri: Bu tablo, oyuncuların temel bilgilerini, seviye, can, mana, konum, envanter gibi verileri içerir. 'player' tablosu, oyuncu karakterlerinin durumlarını yansıtır ve sunucu üzerindeki çoğu olay bu tabloya yazılır ya da bu tablodan okunur. Örneğin, bir oyuncunun seviyesi arttığında, bu tabloya yazılır. Aynı zamanda, 'inventory' tablosu ile bağlantılıdır ve oyuncunun sahip olduğu eşyalar burada tutulur.
Item ve Item_proto Tabloları: Bu tablolar, oyundaki tüm eşyalarla ilgili bilgileri içerir. 'item' tablosu, sunucuda aktif olan eşyaların verilerini (kimde olduğu, hangi slot'ta olduğu vs.) içerirken, 'item_proto' tablosu ise eşyaların sabit özelliklerini (vnum, ad, fiyat, sınıf, level gerekliği) barındırır. 'vnum' yani virtual number, her eşyanın benzersiz tanımlayıcısıdır ve geliştiriciler tarafından eşya eklemek veya değiştirmek için kullanılır.
Mob ve Mob_proto Tabloları: NPC'ler, canavarlar ve boss'lar gibi oyun içindeki karakterler bu tablolarda tanımlanır. 'mob' tablosu sunucudaki aktif NPC'lerin konumlarını ve durumlarını içerirken, 'mob_proto' ise NPC'lerin sabit verilerini (isim, level, can, hasar vs.) içerir. Bu tabloların doğru yapılandırılması, oyun dengesinin sağlanması açısından kritiktir.
Güvenlik ve Performans: Metin2 veritabanları, SQL injection gibi saldırılar için hedef alınabilir. Bu nedenle, sunucu yöneticileri veritabanı sorgularında filtreleme ve doğrulama mekanizmalarını mutlaka kullanmalıdır. Ayrıca, zamanla büyüyen veritabanlarının performansı düşebilir. Bu yüzden periyodik olarak 'db optimizasyon' işlemleri yapılmalı, gereksiz loglar silinmeli ve veritabanı yedeklemeleri alınmalıdır. Yedek alma işlemi, veri kaybı durumunda sistemin kolayca eski haline getirilmesini sağlar.
Stored Procedure ve Trigger Kullanımı: Gelişmiş Metin2 sunucularında, veritabanı işlemlerini otomatikleştirmek için 'stored procedure' ve 'trigger' yapıları kullanılabilir. Örneğin, bir oyuncu seviye atladığında otomatik olarak bir log kaydı oluşturmak için bir trigger yazılabilir. Bu yapılar, veri bütünlüğünü korumada ve tekrarlayan işlemleri azaltmada faydalıdır.
Metin2 geliştiricileri için veritabanı bilgisi, hem mevcut sistemleri anlayabilmek hem de yeni özellikler geliştirebilmek açısından hayati önem taşır. Doğru yapılandırılmış bir veritabanı, sunucu stabilitesi ve oyuncu deneyimi açısından büyük avantaj sağlar.
SQL (Structured Query Language) is a standard language used for data manipulation and querying operations in database management systems. In MMORPG servers like Metin2, many elements such as player data, items, quests, and server settings are stored within databases. Therefore, knowledge of SQL is critically important for Metin2 servers.
In Metin2 servers, relational database systems such as MySQL or MariaDB are commonly used. These systems allow servers to manage millions of player records in a structured, fast, and secure manner. Key tables in a Metin2 database include 'player', 'item', 'mob', 'guild', 'account', 'shop', 'quest', and 'log'. Each table serves different purposes and plays crucial roles in the operation of the server.
Player Table and Player Data: This table contains basic information about players, including their level, health, mana, location, inventory, and more. The 'player' table reflects the status of player characters and most in-game events are either written to or read from this table. For example, when a player levels up, this information is recorded in this table. It also connects with the 'inventory' table, which holds the items owned by the player.
Item and Item_proto Tables: These tables contain information about all in-game items. The 'item' table holds active items on the server (who owns them, which slot they occupy, etc.), while the 'item_proto' table stores fixed attributes of items such as name, price, class, required level, and vnum. Vnum (virtual number) is the unique identifier of each item and is used by developers to add or modify items.
Mob and Mob_proto Tables: NPCs, monsters, and bosses in the game are defined in these tables. While the 'mob' table holds active NPCs' locations and statuses, 'mob_proto' stores fixed data such as name, level, health, and damage values. Correct configuration of these tables is critical for maintaining game balance.
Security and Performance: Metin2 databases can be targeted by attacks such as SQL injection. Therefore, server administrators must use filtering and validation mechanisms in database queries. Additionally, as databases grow over time, their performance may degrade. Periodic database optimization should be performed, unnecessary logs deleted, and backups taken. Backups ensure that the system can be restored easily in case of data loss.
Using Stored Procedures and Triggers: In advanced Metin2 servers, structures like 'stored procedures' and 'triggers' can be used to automate database operations. For example, a trigger can be written to automatically create a log entry when a player gains a level. Such structures are useful in maintaining data integrity and reducing repetitive tasks.
For Metin2 developers, database knowledge is vital for both understanding existing systems and developing new features. A well-configured database provides significant advantages in terms of server stability and player experience.
