4.1 SINIR
SQL sorgunuzun çok fazla veri döndürmesini bekliyorsanız, maksimum sayıyı önceden sınırlayabilirsiniz. Sonuçta, tablolar binlerce hatta milyonlarca satır içerebilir.
SQL, kullanarak bir sorgunun sonucundaki satır sayısını sınırlamayı çok kolaylaştırır LIMIT
. Bu anahtar kelime, SQL sorgusunun en sonunda kullanılır ve şöyle görünür:
LIMIT quantity
Mağazamızın ürünlerinin listesini içeren ürün tablosuna karşı bir sorgu yazalım. Ama çok başarılı bir mağazamız olduğu ve çok ürün sattığımız için sadece cevabın ilk 10 satırını almak istiyoruz. İşte bu isteğin nasıl görüneceği:
SELECT * FROM product
LIMIT 10
Ve aşağıdaki sorgu sonucunu alıyoruz:
İD | isim | marka | fiyat | saymak |
---|---|---|---|---|
1 | Masa | IKEA | 20.00 | 15 |
2 | Sandalye | IKEA | 5.00 | 45 |
3 | Divan | IKEA | 80.00 | 10 |
4 | Yatak | IKEA | 75.00 | 10 |
5 | dolap | bosch | 125.00 | 15 |
6 | Raf | Raf | 25.00 | 114 |
7 | televizyon | LG | 350.00 | 4 |
8 | Lamba | LG | 15.00 | 100 |
9 | Şifonyer | IKEA | 99.00 | 10 |
10 | Plaka | bosch | 199.00 | 10 |
Şimdi sadece ilk 5 satırı talep edeceğiz. İşte bu isteğin nasıl görüneceği:
SELECT * FROM product
LIMIT 5
Aşağıdaki sorgu sonucunu alıyoruz:
İD | isim | marka | fiyat | saymak |
---|---|---|---|---|
1 | Masa | IKEA | 20.00 | 15 |
2 | Sandalye | IKEA | 5.00 | 45 |
3 | Divan | IKEA | 80.00 | 10 |
4 | Yatak | IKEA | 75.00 | 10 |
5 | dolap | bosch | 125.00 | 15 |
4.2 OFSET
Geçen sefer sunucu yanıtındaki satır sayısını nasıl sınırlayacağımızı öğrenmiştik. Ve artık ürün tablosundan binlerce satır yerine ilk 10 satırı alıp kullanıcıya gösterebiliyoruz. Mükemmel. Peki ikinci 10 satırı nasıl göstereceğiz? Ve üçüncü?
LIMIT 20
, veya yazarsak LIMIT 30
, sunucu sırasıyla 20 ve 30 satır döndürmez mi?
Bu durum için SQL'in, OFFSET
sunucudan yanıtında N satırı atlamasını isteyebileceğiniz özel bir anahtar sözcüğü vardır. Bu anahtar kelime, SQL sorgusunun en sonunda ( 'dan sonra LIMIT
) kullanılır ve şöyle görünür:
OFFSET quantity
Ürün tablosuna bir sorgu yazıp 11'den 15'e kadar olan kayıtları almaya çalışalım. Yani sunucudan 5 satırı bize döndürmesini istiyoruz ama önce yanıtın ilk 10 satırını atlıyoruz. İşte bu isteğin nasıl görüneceği:
SELECT * FROM product
LIMIT 5
OFFSET 10
Aşağıdaki sorgu sonucunu alıyoruz:
İD | isim | marka | fiyat | saymak |
---|---|---|---|---|
on bir | Koltuk | bosch | 44.00 | 8 |
12 | saksı | akıllı çiçek | 99.00 | 9 |
13 | Durmak | IKEA | 100.00 | 10 |
Sunucu yalnızca 3 satır döndürdü, yani tablomuzda toplam 13 satır vardı. Sunucu ilk 10'u atladı ve sonraki 5'i döndürdü.
4.3 FARKLI SEÇ
Başka bir yararlı anahtar kelime ise DISTINCT
. Tabloda yinelenen kayıtlar olduğunda ve yinelenenleri kaldırmak istediğimizde kullanılır.
Tablomuzdaki kopyalar nereden geliyor? Tabloda tekrarlar olmayabilir ama sorgulama sonucunda kolay oluyor. Sattığımız tüm ürünlerin markalarını döndürecek bir sorgu yazalım. İşte bu isteğin nasıl görüneceği:
SELECT brand FROM product
Aşağıdaki sorgu sonucunu alıyoruz:
marka |
---|
IKEA |
IKEA |
IKEA |
IKEA |
bosch |
bosch |
LG |
LG |
IKEA |
bosch |
bosch |
akıllı çiçek |
IKEA |
Bu tabloda yinelenen satırlar olduğunu görmek kolaydır. Tekrar olmamasını sağlamak içindir ve anahtar kelimeyi kullanmanız gerekir DISTINCT
. Düzeltilen istek şu şekilde görünecektir:
SELECT DISTINCT brand
FROM product
Aşağıdaki sorgu sonucunu alıyoruz:
marka |
---|
IKEA |
bosch |
LG |
akıllı çiçek |
Çok daha iyi. Değil mi? ;)
4.4 SİPARİŞ TARAFINDAN
Ve sonunda sıralamaya geçtik . Bir sorgunun sonuçlarını sıralamak için anahtar kelimeyi kullanmanız gerekir ORDER BY
. Teknik olarak bunlar iki kelime ama özü önemli değil. İki kelime, bir operatör.
WHERE
Anahtar kelimeden sonra , ancak LIMIT
ve ' den önce yazılmalıdır OFFSET
. ORDER BY
sonra yazarsanız LIMIT
, SQL sunucusu size bir hata döndürür.
Genel olarak, bu operatör şöyle görünür:
ORDER BY column order
Burada sütun tablodaki sütunun adıdır / sıralama sonucu. Ve düzen, sıralama düzenidir.
Sıralama düzeni üç tür olabilir:
ASC
(Artan'dan) - artan;DESC
(Azalan) - azalan;- Belirtilmemiş - kullanılacak
ASC
Ürünlerin fiyata göre artan düzende sıralanmış bir listesini döndürecek bir sorgu yazalım. İşte bu isteğin nasıl görüneceği:
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
Aşağıdaki sorgu sonucunu alıyoruz:
İD | isim | marka | fiyat | saymak |
---|---|---|---|---|
2 | Sandalye | IKEA | 5.00 | 45 |
8 | Lamba | LG | 15.00 | 100 |
1 | Masa | IKEA | 20.00 | 15 |
6 | Raf | bosch | 25.00 | 114 |
on bir | Koltuk | bosch | 44.00 | 8 |
4 | Yatak | IKEA | 75.00 | 10 |
3 | Divan | IKEA | 80.00 | 10 |
12 | saksı | akıllı çiçek | 99.00 | 9 |
9 | Şifonyer | IKEA | 99.00 | 10 |
13 | Durmak | IKEA | 100.00 | 10 |
Sıralama düzenini belirtmezsek aynı sonucu alırız - kelimeyi atlarız ASC
.
4.5 ORDER BY birden çok sütunda
Operatör, ORDER BY
sonucu birkaç sütuna göre sıralamanıza izin verir. Bu, ilk sütunda çok sayıda yinelenen öğe olduğunda çok yararlı olabilir. Bu operatörün genel formu aşağıdaki gibidir:
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
Başka bir deyişle, ilk sütuna göre sıraladıktan sonra yakınlarda birkaç aynı değere sahipseniz, bunlar ikinci sütuna göre sıralanır vb.
Ürünlerimizi markaya göre ve aynı markaya sahip ürünler için - azalan sayı sırasına göre sıralayacak bir sorgu yazalım. İşte bu isteğin nasıl görüneceği:
SELECT * FROM product
ORDER BY brand ASC, count
DESC
Aşağıdaki sorgu sonucunu alıyoruz:
İD | isim | marka | fiyat | saymak |
---|---|---|---|---|
6 | Raf | bosch | 25.00 | 114 |
5 | dolap | bosch | 125.00 | 15 |
10 | Plaka | bosch | 199.00 | 10 |
on bir | Koltuk | bosch | 44.00 | 8 |
2 | Sandalye | IKEA | 5.00 | 45 |
1 | Masa | IKEA | 20.00 | 15 |
9 | Şifonyer | IKEA | 99.00 | 10 |
13 | Durmak | IKEA | 100.00 | 10 |
4 | Yatak | IKEA | 75.00 | 10 |
3 | Divan | IKEA | 80.00 | 10 |
8 | Lamba | LG | 15.00 | 100 |
7 | televizyon | LG | 350.00 | 4 |
12 | saksı | akıllı çiçek | 99.00 | 9 |
Tabloya yakından bakın - satırları marka adına göre sıralanır (alfabetik sıra) ve aynı marka adına sahip satırlar ürün numarasına göre azalan sırada (son sütun) sıralanır.
GO TO FULL VERSION