MySQL / Mysql UNION İşlemi
Mysql UNION İşlemi
|
 |
Yazar: FERDIKUCUK
Eklenme:
07/03/08
Okunma:
330 |
|
|
| |
| |
|
|
İki veya daha fazla bağımsız sorgu veya tablonun sonuçlarını birleştiren bir birleşim sorgusu oluşturur.
İki veya daha fazla sorgunun, tablonun ve SELECT deyiminin sonuçlarını herhangi bir birleşimde tek bir UNION işleminde birleştirebilirsiniz. Aşağıdaki örnek, Yeni Hesaplar adlı var olan bir tablo ile bir SELECT deyimini birleştirir:
PHP Kodu:
Kod Çizelgesi Kod Dili: php
TABLE [Yeni Hesaplar] UNION ALL
SELECT *
FROM Musteriler
WHERE Siparismiktari >= .1000);
Varsayım olarak, UNION işlemini kullandığınızda yinelenen kayıt döndürülmez; ancak, tüm kayıtların döndürüldüğünden emin olmak için ALL doğrulamasını bulundurabilirsiniz.
Bu ayrıca, sorguyu daha hızlandırır.
UNION işlemindeki tüm sorgular aynı sayıda alan istemelidir; ancak, alanların aynı boyutta veya aynı veri türünde olması gerekmez.
Diğeradları yalnızca ilk SELECT deyiminde kullanın; bunlar diğer deyimlerde dikkate alınmaz. ORDER BY yan tümcesinde alanlara,
ilk SELECT deyiminde adlandırıldıkları şekilde başvurun.
WHERE Yan Tümcesi
FROM yan tümcesinde listelenen tablolardaki hangi kayıtların SELECT, UPDATE veya DELETE deyiminden etkilendiğini belirtir.
Microsoft Jet veritabanı alt yapısı, WHERE yan tümcesinde listelenen koşullara uyan kayıtları seçer. Bir WHERE yan tümcesi belirlemezseniz, sorgunuz tablodaki tüm satırları geri döndürür. Sorgunuzda birden fazla tablo belirtir ve WHERE ya da JOIN yan tümcesi bulundurmazsanız, sorgunuz tabloların bir Kartezyen çarpımını oluşturur.
WHERE isteğe bağlıdır ancak varsa FROM'un ardından gelir. Örneğin, satış bölümündeki tüm çalışanları seçebilir (WHERE Bölüm = 'Satış') veya yaşı 18 ile 30 arasındaki tüm müşterileri seçebilirsiniz (WHERE Yaş Between 18 And 30).
Çok sayıda tabloda SQL birleşim işlemini gerçekleştirmek için bir JOIN yan tümcesi kullanmazsanız, sonuç Recordset nesnesi güncelleştirilebilir durumda olmaz.
WHERE, HAVING yan tümcesine benzer. WHERE, hangi kayıtların seçileceğini belirler. Benzer biçimde, kayıtlar GROUP BY ile gruplandırıldıktan sonra HAVING de hangi kayıtların görüntüleneceğini belirtir.
GROUP BY yan tümcesi ile gruplandırmak istemediğiniz kayıtları elemek için WHERE yan tümcesini kullanın.
SQL deyiminin döndüreceği kayıtları belirlemek için değişik ifadeler kullanın. Örneğin aşağıdaki SQL deyimi, yıllık maaşları 600 Milyon TL'den yüksek olan çalışanları seçer.
PHP Kodu:
Kod Çizelgesi Kod Dili: php
SELECT Soyadi,Maas
FROM Calisanlar
WHERE Maas > 21000;
Bir WHERE yan tümcesi, And ve Or gibi mantıksal işleçlerle birbirine bağlı en çok 40 ifade içerebilir.
Bir boşluk veya noktalama işareti içeren bir alan adı girerken, adı köşeli ayraçlar ([ ]) içine alın. Örneğin bir müşteri bilgileri tablosu, belirli müşteriler hakkında bilgiler içerebilir:
PHP Kodu:
Kod Çizelgesi Kod Dili: php
SELECT [Müşterinin En Sevdiği Lokanta]
Ölçüt değişkenini belirttiğinizde, tarih rakamları, Microsoft® Jet veritabanı alt yapısının A.B.D. sürümünü kullanmıyor olsanız bile A.B.D. biçiminde olmalıdır.
Örneğin 10 Mayıs 1996, İngilizce biçiminde 10/5/96 şeklinde ve A.B.D. biçiminde 5/10/96 olarak yazılır. Tarih rakamlarını, aşağıdaki örnekte görüldüğü gibi
diyez işareti (#) içine aldığınızdan emin olun.
Bir İngiltere veritabanında 10 Mayıs 1996 tarihli kayıtları bulmak için, aşağıdaki SQL deyimini kullanmalısınız.
PHP Kodu:
Kod Çizelgesi Kod Dili: php
SELECT *
FROM Siparisler
WHERE YüklemeTarihi = #5/10/96#;
Ayrıca, Microsoft Windows® tarafından belirlenen uluslararası ayarları algılayan DateValue işlevini de kullanabilirsiniz.
Örneğin, A.B.D. için şu kodları kullanın:
PHP Kodu:
Kod Çizelgesi Kod Dili: php
SELECT *
FROM Siparişler
WHERE YüklemeTarihi = TarihDeğeri('5/10/96');
Ve İngiltere için şu kodları kullanın:
PHP Kodu:
Kod Çizelgesi Kod Dili: php
SELECT *
FROM Siparişler
WHERE YüklemeTarihi = TarihDeğeri('10/5/96');
INSERT INTO Deyimi
Bir tabloya bir veya daha çok sayıda kayıt ekler. Buna ekleme sorgusu da denir.
Sözdizimi
Çok sayıda kayıt ekleme sorgusu:
PHP Kodu:
Kod Çizelgesi Kod Dili: php
INSERT INTO hedef [(alan1[, alan2[, ...]])] [IN dışveritabanı]
SELECT [kaynak.]alan1[, alan2[, ...]
FROM tabloifadesi
Tek kayıt ekleme sorgusu:
PHP Kodu:
Kod Çizelgesi Kod Dili: php
INSERT INTO hedef [(alan1[, alan2[, ...]])]
VALUES (değer1[, değer2[, ...])
INSERT INTO deyiminin bölümleri şunlardır:
hedef: İçine kayıt eklenecek tablo veya sorgunun adıdır.
alan1, alan2 : Bir hedef değişkeninin ardından geliyorsa içine veri eklenecek alanların adı, bir kaynak değişkeninin ardından geliyorsa içinden veri alınacak alanların adıdır.
dışveritabanı: Bir dış veritabanına olan yoldur. Yolun açıklaması için IN yan tümcesine bakın.
kaynak: İçinden kayıtların kopyalanacağı tablo veya sorgunun adıdır.
tabloifadesi: İçinden kayıtların eklendiği tablo veya tabloların adıdır. Bu değişken; tek bir tablo adı , kaydedilmiş bir sorgu adı veya INNER JOIN, LEFT JOIN veya RIGHT JOIN sonucu olan bir birleşim olabilir.
değer1, değer2: Yeni kaydın belirli alanlarına eklenecek olan değerlerdir. Her değer, listede değerin konumuna göre ilgili alanın içine eklenir:
değer1: yeni kaydın alan1 alanına, değer2: yeni kaydın alan2 alanına şeklinde eklenir.
Değerleri virgül ile ayırmalı ve metin alanlarını tırnak imleri (' ') içine almalısınız.
Uyarılar
INSERT INTO deyimini, yukarıda gösterildiği gibi tek kayıt ekleme sorgusu sözdizimini
kullanarak tabloya tek bir kayıt eklemek üzere kullanabilirsiniz. Bu durumda kodlarınız,
kaydın her alanının adını ve değerini belirtir. Üzerine bir değerin atanacağı kayıt alanlarını
ve bu alanların değerlerini belirtmelisiniz. Her alanı tek tek belirtmezseniz, eksik sütunlar için
varsayılan değer veya Null değeri eklenir. Kayıtlar tablonun sonuna eklenir.
Yukarıda çok sayıda kayıt ekleme sorgusu sözdiziminde gösterildiği gibi, SELECT ... FROM yan tümcesini
kullanarak bir kayıt kümesini bir başka tablodan veya sorgudan eklemek üzere INSERT INTO'yu da kullanabilirsiniz.
Bu durumda SELECT yan tümcesi, belirtilen hedef tabloya eklenecek alanları belirtir.
Kaynak veya hedef tablo, bir tablo veya sorguyu belirtebilir. Bir sorgu belirtilirse, Microsoft Jet veritabanı alt yapısı,
sorgu tarafından belirtilen herhangi bir tabloya ve tüm tablolara kayıt ekler.
INSERT INTO isteğe bağlıdır ancak belirtilirse, SELECT deyiminden önce gelir.
Hedef tablonuzda bir birincil anahtar varsa, birincil anahtar alan veya alanlarına benzersiz, Null olmayan değerler eklediğinizden
emin olun; aksi takdirde Microsoft Jet veritabanı alt yapısı kayıtları eklemez.
İçinde OtomatikSayı alanı olan bir tabloya kayıt ekler ve eklenen kayıtların numaralarını değiştirmek isterseniz, sorgunuzda OtomatikSayı alanını bulundurmayın.
OtomatikSayı alanının özgün değerlerini korumak istiyorsanız, alanı sorgu içinde bulundurun.
Kayıtları başka bir veritabanındaki tabloya eklemek için IN yan tümcesini kullanın.
Yeni bir tablo oluşturmak üzere bir tablo oluşturma sorgusu hazırlamak yerine SELECT... INTO deyimini kullanın.
Ekleme sorgusunu çalıştırmadan önce hangi kayıtların ekleneceğini görmek için, önce, aynı seçim ölçütünü kullanan bir seçme sorgusu çalıştırın ve sonuçları görün.
Bir ekleme sorgusu, bir veya daha çok tablodaki kayıtları bir başkasına kopyalar. Eklediğiniz kayıtları içeren tablolar, ekleme sorgusundan etkilenmezler.
Bir başka tablodan var olan kayıtları eklemek yerine, VALUES yan tümcesini kullanarak, tek bir yeni kaydın tüm alanlarının değerlerini belirtebilirsiniz.
Alan listesini yazmazsanız VALUES yan tümcesi tablodaki her alanın değerini içermelidir; aksi takdirde INSERT işlemi başarısız olur. Oluşturmak istediğiniz
her ek kayıt için, VALUES yan tümcesi ile birlikte ek bir INSERT INTO deyimi kullanın.
iyi çalışmalar
Makale Sahibi : Ali Gürbüz
kalın yazdırılacak metin
|
| |
|