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, OFFSETsunucudan 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.

WHEREAnahtar kelimeden sonra , ancak LIMITve ' den önce yazılmalıdır OFFSET. ORDER BYsonra 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ılacakASC

Ü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 BYsonucu 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.