SQL (Yapısal Sorgu Dili), ilişkisel bir veritabanındaki verileri tanımlamak ve değiştirmek için standartlaştırılmış bir dildir. İlişkisel veri modeline göre, veritabanı bir dizi tablo olarak algılanır, ilişkiler tablolardaki değerlerle temsil edilir ve veriler bir veya daha fazladan türetilebilecek bir sonuç tablosu belirtilerek alınır taban tabloları. Sorgular, size izin veren bir komut dili biçimindedir seç, ekle, güncelle, bul verinin yerini vb.
Delphi'de: TQuery
Uygulamalarınızda SQL kullanacaksanız, TQuery bileşen. Delphi, uygulamalarınızın Paradox ve dBase tablolarından verilere erişmek için TQuery bileşeni aracılığıyla SQL sözdizimini doğrudan kullanmasını sağlar (yerel SQL - ANSI standart SQL alt kümesi kullanılarak), Yerel InterBase Sunucusundaki Veritabanları ve uzak veritabanındaki Veritabanları Sunucular.
Delphi ayrıca birden fazla sunucuya veya tablo türüne karşı heterojen sorguları da destekler (örneğin, bir Oracle tablosundan ve Paradox tablosundan veriler). SQLSQL deyimini depolamak için kullanılır.
TQuery, bir veya daha fazla SQL ifadesini kapsül içine alır, bunları yürütür ve sonuçları değiştirebileceğimiz yöntemler sağlar. Sorgular iki kategoriye ayrılabilir: sonuç kümeleri üreten sorgular ( SEÇ ifadesi) ve olmayanlar ( GÜNCELLEMEveya INSERT Beyan). TQuery kullanın. Sonuç kümesi üreten bir sorguyu yürütmek için açın; TQuery kullanın. Sonuç kümeleri oluşturmayan sorguları yürütmek için ExecSQL.
SQL ifadeleri ya statik veya dinamik, yani tasarım zamanında ayarlanabilir veya parametreleri içerebilir (TQuery. parametreler) çalışır. Parametreli sorguları kullanmak çok esnektir, çünkü bir kullanıcının çalışma sırasındaki görünümünü ve verilere erişimini anında değiştirebilirsiniz.
Yürütülebilir tüm SQL deyimleri yürütülmeden önce hazırlanmalıdır. Hazırlık sonucu ifadenin yürütülebilir veya operasyonel şeklidir. Bir SQL deyimi hazırlama yöntemi ve çalışma biçiminin kalıcılığı, statik SQL'i dinamik SQL'den ayırır. Tasarım zamanında, bir sorgu, sorgu bileşeninin Active özelliği True olarak ayarlanır. Çalışma zamanında, bir uygulama çağrısı ile bir sorgu hazırlanır ve uygulama bileşenin Open veya ExecSQL yöntemlerini çağırdığında çalıştırılır.
Bir TQuery iki tür sonuç kümesi döndürebilir: "canlı"TTable bileşeninde olduğu gibi (kullanıcılar veri denetimleriyle verileri düzenleyebilir ve bir Gönderme çağrısı gerçekleştiğinde değişiklikler veritabanına gönderilir),"Sadece oku"yalnızca görüntüleme amaçlıdır. Canlı bir sonuç kümesi istemek için bir sorgu bileşeninin RequestLive özelliğini True olarak ayarlayın ve SQL ifadesinin bazı belirli gereksinimleri karşılaması gerektiğini unutmayın (ORDER BY, SUM, AVG vb. Yok).
Bir sorgu, bir tablo filtresi gibi birçok yönden davranır ve bazı şekillerde, bir sorgu filtreden daha güçlüdür, çünkü erişmenize izin verir:
- tek seferde birden fazla tablo (SQL'de "birleştirme")
- her zaman tümünü döndürmek yerine, temel tablolarından belirli bir satır ve sütun alt kümesi
Basit Örnek
Şimdi bazı SQL'leri çalışırken görelim. Bu örnek için bazı SQL örnekleri oluşturmak için Veritabanı Formu Sihirbazı'nı kullanabilmemize rağmen, bunu adım adım el ile yapacağız:
1. TQuery, TDataSource, TDBGrid, TEdit ve bir TButton bileşeni ana forma yerleştirin.
2. TDataSource bileşeninin DataSet özelliğini Sorgu1 olarak ayarlayın.
3. TDBGrid bileşeninin DataSource özelliğini DataSource1 olarak ayarlayın.
4. TQuery bileşeninin DatabaseName özelliğini DBDEMOS olarak ayarlayın.
5. SQL ifadesini kendisine atamak için bir TQuery'nin SQL özelliğine çift tıklayın.
6. Kılavuzun tasarım zamanında veri göstermesini sağlamak için TQuery bileşeninin Active özelliğini True olarak değiştirin.
Izgara, Employee.db tablosundaki verileri üç sütunda (FirstName, LastName, Malary) görüntüler. Employee.db dosyasının 7 alanı vardır ve sonuç kümesi FirstName'in başladığı kayıtlarla sınırlıdır 'R' ile.
7. Şimdi Button1 OnClick olayına aşağıdaki kodu atayın.
prosedür TForm1.Button1Click (Gönderen: TObject); başla Query1.Close;{sorguyu kapat}// yeni SQL ifadesi ata Query1.SQL.Clear; Query1.SQL.Add ('EmpNo, FirstName, LastName' seçin); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Maaş>' + Edit1.Text); Sorgu1.RequestLive: = true; Query1.Open; {açık sorgu + görüntüleme verileri}son;
8. Uygulamanızı çalıştırın. Düğmeye tıkladığınızda (Düzen 1'de geçerli bir para birimi değeri olduğu sürece), ızgara Maaşın belirtilen para biriminden büyük olduğu tüm kayıtlar için EmpNo, FirstName ve LastName alanları değer.
Bu örnekte, yalnızca görüntüleme amacıyla canlı sonuç kümesiyle (görüntülenen kayıtlardan hiçbirini değiştirmedik) basit bir statik SQL ifadesi oluşturduk.