giriiş
İlişkisel veritabanları ve Yapılandırılmış Sorgu Dili (SQL) ile çalışırken, ilişkisel bir veritabanı yönetim sisteminden veri depolayabilir, yönetebilir ve alabilirsiniz. SQL ise, verileri veritabanında depolandığı haliyle, olduğu gibi alabilir.
SQL, fonksiyonlar kullanarak hesaplamalar yapabilir ve verileri işleyebilir. Örneğin, fonksiyonları kullanarak ürün fiyatlarını en yakın dolara yuvarlayabilir, ortalama ürün satın alma sayısını hesaplayabilir veya bir satın alma işleminin garantisinin bitmesine kalan gün sayısını belirleyebilirsiniz.
Bu eğitimde, matematiksel hesaplamalar yapmak, dizeleri ve tarihleri işlemek ve toplama işlevlerini kullanarak özetleri hesaplamak için çeşitli SQL işlevlerini kullanacaksınız.
Ön koşullar
Bu kılavuzu takip etmek için, SQL tabanlı bir ilişkisel veritabanı yönetim sistemi (RDBMS) çalıştıran bir bilgisayara ihtiyacınız var. Bu kılavuzdaki talimatlar ve örnekler, aşağıdaki ortam kullanılarak doğrulanmıştır:
- Ubuntu 20.04 için İlk Sunucu Kurulum Kılavuzu'nda açıklandığı gibi, yönetici ayrıcalıklarına sahip kök olmayan bir kullanıcı ve UFW ile yapılandırılmış bir güvenlik duvarı bulunan Ubuntu 20.04 çalıştıran bir sunucu.
- MySQL, "Ubuntu 20.04'e MySQL Kurulumu" kılavuzunda açıklandığı gibi sunucuya kurulur ve güvenli hale getirilir. Bu kılavuz, 3. Adım'da açıklanan işlemle oluşturulmuş, kök olmayan bir MySQL kullanıcısı kullandığınızı varsayar.
- "SQL'de Tablolardan Satırları SEÇME" kılavuzunda açıklandığı gibi, bir veritabanından veri seçmek için SELECT sorgularını çalıştırmaya yönelik temel bir giriş.
Not: Birçok RDBMS kendi SQL uygulamasını kullanır. Bu eğitimde açıklanan komutlar çoğu RDBMS'de çalışsa da, standart SQL sözdizimi yalnızca sınırlı sayıda işlevi belirtir. Ayrıca, standart sözdizimi desteği farklı veritabanı motorları arasında değişiklik gösterir. MySQL dışında bir sistemde test ederseniz, kesin sözdizimi veya çıktı farklılık gösterebilir.
Fonksiyonları kullanabilmeniz için örnek verilerle yüklü tablolar içeren bir veritabanına da ihtiyacınız olacak. Bir MySQL sunucusuna bağlanma ve bu kılavuzdaki örneklerde kullanılan test veritabanını oluşturma hakkında ayrıntılı bilgi için "MySQL'e Bağlanma ve Örnek Veritabanı Oluşturma" bölümünü incelemenizi öneririz.
MySQL'e bağlanma ve örnek bir veritabanı kurma
Bu bölümde bir MySQL sunucusuna bağlanacak ve bu kılavuzdaki örnekleri takip edebilmeniz için örnek bir veritabanı oluşturacaksınız.
SQL veritabanı sisteminiz uzak bir sunucuda çalışıyorsa, SSH aracılığıyla sunucunuza giriş yapın:
ssh sammy@your_server_ipDaha sonra MySQL sunucu ortamını açın, bunun yerine Sammy MySQL kullanıcı adınızı girin:
mysql -u sammy -pBookstore adında bir veritabanı oluşturun:
CREATE DATABASE bookstore;Veritabanı başarıyla oluşturulduysa aşağıdakine benzer bir çıktı alırsınız:
Output
Query OK, 1 row affected (0.01 sec)Kitapçı veritabanını seçmek için USE komutunu çalıştırın:
USE bookstore;Aşağıdaki çıktıyı göreceksiniz:
Output
Database changedBir veritabanı seçtikten sonra, içinde örnek tablolar oluşturabilirsiniz. Bu kılavuzda, farklı yazarların çeşitli kitaplarını satan kurgusal bir kütüphane kullanacağız.
Envanter tablosu, kitapçıda bulunan kitaplar hakkında bilgi içerir ve aşağıdaki sütunları içerir:
- book_id: Bu sütun, int veri türüyle temsil edilen her kitabın kimliğini içerir. Bu sütun, tablonun birincil anahtarı olur ve her değer, ilgili satır için benzersiz bir tanımlayıcı olur.
- Yazar: Bu sütun, kitabın yazarının adını, varchar veri tipi kullanılarak, en fazla 50 karakter olacak şekilde içerir.
- Başlık: Bu sütun, satın alınan kitabın, varchar veri türü kullanılarak, en fazla 200 karakter olacak şekilde ifade edilen başlığını içerir.
- introduction_date: Bu sütun, her kitabın kitapçı tarafından tanıtıldığı tarihi kaydetmek için tarih veri türünü kullanır.
- Stok: Bu sütun, kitapçının stokta bulunan kitap sayısını tam sayı veri türü kullanılarak tutar.
- Fiyat: Bu sütun, kitabın perakende fiyatını ondalık veri türü kullanılarak, noktadan önce en fazla 5 değer, noktadan sonra en fazla 2 değer olacak şekilde saklar.
Aşağıdaki komutla örnek tabloyu oluşturun:
CREATE TABLE inventory (
book_id int,
author varchar(50),
title varchar(200),
introduction_date date,
stock int,
price decimal(5, 2),
PRIMARY KEY (book_id)
);Aşağıdaki çıktıyı alırsanız tablo oluşmuş demektir:
Output
Query OK, 0 rows affected (0.00 sec)Daha sonra aşağıdaki INSERT INTO işlemini yürüterek satın almalar tablosunu bazı örnek verilerle yükleyin:
INSERT INTO inventory
VALUES
(1, 'Oscar Wilde', 'The Picture of Dorian Gray', '2022-10-01', 4, 20.83),
(2, 'Jane Austen', 'Pride and Prejudice', '2022-10-04', 12, 42.13),
(3, 'Herbert George Wells', 'The Time Machine', '2022-09-23', 7, 21.99),
(4, 'Mary Shelley', 'Frankenstein', '2022-07-23', 9, 17.43),
(5, 'Mark Twain', 'The Adventures of Huckleberry Finn', '2022-10-01', 14, 23.15);INSERT INTO işlemi, belirtilen değerlere sahip beş kitabı envanter tablosuna ekler. Aşağıdaki çıktı, beş satırın da eklendiğini gösterir:
Output
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
Artık rehberin geri kalanını takip etmeye ve SQL'de fonksiyonları kullanmaya başlamaya hazırsınız.
SQL fonksiyonlarını anlama
Fonksiyonlar, bir veya daha fazla değer alan, veriler üzerinde hesaplamalar veya dönüşümler gerçekleştiren ve sonuç olarak yeni bir değer döndüren adlandırılmış ifadelerdir. SQL fonksiyonlarını matematiksel fonksiyonlara benzer şekilde düşünebilirsiniz. Örneğin, log(x) fonksiyonu x değerini alır ve x'in logaritmasını döndürür.
Örneğin, en pahalıdan en ucuza doğru tüm kitap başlıklarını fiyatlarıyla birlikte almak istiyorsanız, aşağıdaki komutu çalıştırabilirsiniz:
SELECT title, price, introduction_date FROM inventory ORDER BY price DESC;Aşağıdakine benzer bir çıktı alacaksınız:
Output
+------------------------------------+-------+-------------------+
| title | price | introduction_date |
+------------------------------------+-------+-------------------+
| Pride and Prejudice | 42.13 | 2022-10-04 |
| The Adventures of Huckleberry Finn | 23.15 | 2022-10-01 |
| The Time Machine | 21.99 | 2022-09-23 |
| The Picture of Dorian Gray | 20.83 | 2022-10-01 |
| Frankenstein | 17.43 | 2022-07-23 |
+------------------------------------+-------+-------------------+
5 rows in set (0.000 sec)Bu komutta, başlık, fiyat Ve giriş_tarihi sütunların adlarıdır ve çıktıda, veritabanı her kitap için bu sütunlardan alınan bozulmamış değerleri gösterir: kitabın tam adı, fiyatı ve kitabın kütüphaneye ulaştığı tarih.
Ancak, bir tür işlem veya düzenlemeden sonra veritabanından değerleri almak isteyebilirsiniz. Kitap fiyatlarının en yakın dolara yuvarlanması, kitap başlıklarının büyük harfle yazılması veya ay veya gün hariç, piyasaya sürüldüğü yılın belirtilmesi ilginizi çekebilir. İşte bu noktada bir fonksiyon kullanırsınız.
SQL fonksiyonları, üzerinde çalıştıkları veri türüne bağlı olarak genel olarak birkaç gruba ayrılabilir. En sık kullanılan fonksiyonlar şunlardır:
- Matematiksel fonksiyonlar: Sayısal değerler üzerinde işlem yapan ve yuvarlama, logaritma, karekök alma, kuvvet alma gibi hesaplamalar yapan fonksiyonlar.
- Dize işleme işlevleri: Metni büyük harfe dönüştürme, kesme veya değerlerdeki kelimeleri değiştirme gibi metin dönüşümleri gerçekleştiren dizeler ve metin alanları üzerinde işlem yapan işlevler.
- Tarih ve saat işlevleri: Tarih alanları üzerinde işlem yapan işlevler. Bu işlevler, belirli bir tarihe gün sayısı eklemek veya tam bir tarihten yıl çıkarmak gibi hesaplamalar ve dönüştürmeler gerçekleştirir.
- Toplama fonksiyonları: Birden fazla satırdan elde edilen değerler üzerinde işlem yapan matematiksel fonksiyonların özel bir halidir, örneğin tüm satırlar için ortalama fiyatı hesaplar.
Not: MySQL de dahil olmak üzere çoğu ilişkisel veritabanı, SQL standardı tarafından tanımlanan standart işlev kümesini, veritabanı motoruna özgü ek işlemlerle genişletir. Standart SQL işlevleri kümesinin dışındaki birçok işlev, birçok veritabanında benzer şekilde çalışırken, diğerleri tek bir İlişkisel Veritabanı Yönetim Sistemine (RDBMS) ve onun benzersiz özelliklerine özgüdür. Veritabanının sağladığı işlevler hakkında daha fazla bilgi edinmek için seçtiğiniz veritabanının belgelerine başvurabilirsiniz. MySQL örneğinde ise, yerleşik işlevler ve operatör referansları hakkında daha fazla bilgi edinebilirsiniz.
Aşağıdaki örnek, bir kitapçı envanter veritabanındaki fiyat değerlerinin sonuçlarını SELECT sorgusu kullanarak değiştirmek için EXAMPLE adlı hayali, var olmayan bir fonksiyonun kullanılmasına ilişkin genel sözdizimini göstermektedir:
SELECT EXAMPLE(price) AS new_price FROM inventory;
(EXAMPLE) işlevi, parantez içinde sütun adını (price) argüman olarak alır. Sorgunun bu kısmı, veritabanına sütundaki fiyat değerleri üzerinde EXAMPLE işlevini çalıştırmasını ve bu işlemin sonuçlarını döndürmesini söyler. AS new_price, veritabanına sorgu sırasında hesaplanan değerlere geçici bir ad (new_price) atamasını söyler. Bu sayede, çıktıda işlevin sonuçlarını belirleyebilir ve WHERE ve ORDER BY ifadelerini kullanarak hesaplanan değerlere başvurabilirsiniz.
Aşağıdaki bölümde matematiksel fonksiyonları kullanarak yaygın hesaplamaları gerçekleştireceksiniz.
Matematiksel fonksiyonların kullanımı
Matematiksel fonksiyonlar, bir kitabın fiyatı veya örnek veritabanındaki stoktaki kitap sayısı gibi sayısal değerlerle çalışır. Bunlar, veritabanında hesaplamalar yapmak ve sonuçları ihtiyaçlarınıza göre uyarlamak için kullanılabilir.
Yuvarlama, SQL'de matematiksel fonksiyonların en yaygın kullanımlarından biridir. Diyelim ki tüm kitapların fiyatlarını almanız gerekiyor, ancak yalnızca değerlerin en yakın dolara yuvarlanmasını istiyorsunuz. Bunu yapmak için şu fonksiyonu kullanabilirsiniz: YUVARLAK Yuvarlama işlemini yapan kullanım.
Aşağıdaki komutu çalıştırın:
SELECT title, price, ROUND(price) AS rounded_price FROM inventory;
Aşağıdakine benzer bir çıktı göreceksiniz:
Output
+------------------------------------+-------+---------------+
| title | price | rounded_price |
+------------------------------------+-------+---------------+
| The Picture of Dorian Gray | 20.83 | 21 |
| Pride and Prejudice | 42.13 | 42 |
| The Time Machine | 21.99 | 22 |
| Frankenstein | 17.43 | 17 |
| The Adventures of Huckleberry Finn | 23.15 | 23 |
+------------------------------------+-------+---------------+
5 rows in set (0.000 sec)Yukarıdaki komut sütunların değerlerini döndürür. başlık Ve fiyat geçici bir sütunla yuvarlatılmış_fiyat Fonksiyonun sonucu nedir? ROUND(fiyat) Bu fonksiyon bir argüman alır, bu da sütun adıdır (burada, fiyat) ve tabloda o sütundaki değerleri en yakın tam sayıya yuvarlar.
ROUND işlevi, yuvarlamanın gerçekleştirileceği ondalık basamak sayısını belirten ek bağımsız değişkenlerin yanı sıra sütun adı yerine aritmetik işlemleri de kabul edebilir. Örneğin, aşağıdaki sorguyu çalıştırın:
SELECT title, price, ROUND(price * stock, 1) AS stock_price FROM inventory;
Aşağıdaki çıktıyı alacaksınız:
Output
+------------------------------------+-------+-------+-------------+
| title | stock | price | stock_price |
+------------------------------------+-------+-------+-------------+
| The Picture of Dorian Gray | 4 | 20.83 | 83.3 |
| Pride and Prejudice | 12 | 42.13 | 505.6 |
| The Time Machine | 7 | 21.99 | 153.9 |
| Frankenstein | 9 | 17.43 | 156.9 |
| The Adventures of Huckleberry Finn | 14 | 23.15 | 324.1 |
+------------------------------------+-------+-------+-------------+
5 rows in set (0.000 sec)Uygulamak YUVARLAK(Fiyat * Stok, 1) Önce tek bir kitabın fiyatı, mevcut kitap sayısıyla çarpılır ve ardından elde edilen fiyat ilk ondalık basamağa yuvarlanır. Sonuç, geçici "Stok_Fiyatı" sütununda gösterilir.
MySQL'e entegre edilmiş diğer matematiksel fonksiyonlar arasında trigonometrik fonksiyonlar, karekökler, kuvvetler, logaritmalar ve üsler bulunur. SQL'de matematiksel fonksiyonların kullanımı hakkında daha fazla bilgiyi "SQL'de Matematiksel İfadeler ve Toplama Fonksiyonları Nasıl Kullanılır" başlıklı eğitimde bulabilirsiniz.
Bir sonraki bölümde SQL fonksiyonlarını kullanarak veritabanındaki metinleri işleyeceksiniz.
Metin işlevlerini kullanma
SQL'deki metin fonksiyonları, dize değerlerini işlemek ve değiştirmek için kullanılabilir. Örneğin, kitap adlarını başlıklarının başındaki ve sonundaki fazladan boşlukları kaldırarak daha düzenli bir şekilde almak isteyebilirsiniz.
Bunu yapmak için şu işlevi kullanabilirsiniz: KIRPMA Bir dizenin başında ve sonunda bulunan tüm boşlukları ve fazladan karakterleri kaldırmak için bu fonksiyonu kullanın.
Aşağıdaki örneği ele alalım:
SELECT LOWER(title) AS title_lowercase FROM inventory;
Ekrana aşağıdaki çıktı yazdırılır:
Output
+------------------------------------+
| title_lowercase |
+------------------------------------+
| the picture of dorian gray |
| pride and prejudice |
| the time machine |
| frankenstein |
| the adventures of huckleberry finn |
+------------------------------------+
5 rows in set (0.001 sec)
LOWER SQL fonksiyonu tek bir argüman alır ve içeriğini küçük harfe dönüştürür. AS title_downcase takma adlı sütun aracılığıyla, elde edilen veriler title_downcase adlı geçici bir sütunda sunulur.
Şimdi tüm yazarları büyük harfe dönüştürerek alın. Aşağıdaki SQL sorgusunu çalıştırmayı deneyin:
SELECT UPPER(author) AS author_uppercase FROM inventory;
Aşağıdaki çıktıyı alacaksınız:
Output
+----------------------+
| author_uppercase |
+----------------------+
| OSCAR WILDE |
| JANE AUSTEN |
| HERBERT GEORGE WELLS |
| MARY SHELLEY |
| MARK TWAIN |
+----------------------+
5 rows in set (0.000 sec)LOWER işlevi yerine, benzer şekilde çalışan ancak metni büyük harfe dönüştüren UPPER işlevini kullandınız. Veri alırken büyük/küçük harf tutarlılığını sağlamak istiyorsanız her iki işlevi de kullanabilirsiniz.
Bir diğer kullanışlı dize işleme işlevi de, metin değerlerini tutan birden fazla argüman alıp bunları birleştiren CONCAT'tır. Yazarları ve kitap başlıklarını tek bir sütunda almayı deneyin. Bunu yapmak için aşağıdaki ifadeyi çalıştırın:
SELECT CONCAT(author, ': ', title) AS full_title FROM inventory;
Bu komut aşağıdaki çıktıyı döndürür:
Output +------------------------------------------------+ | full_title | +------------------------------------------------+ | Oscar Wilde: The Picture of Dorian Gray | | Jane Austen: Pride and Prejudice | | Herbert George Wells: The Time Machine | | Mary Shelley: Frankenstein | | Mark Twain: The Adventures of Huckleberry Finn | +------------------------------------------------+ 5 rows in set (0.001 sec)
CONCAT işlevi birden fazla dizeyi birleştirir ve üç bağımsız değişkenle yürütülür. İlk bağımsız değişken, yazarın adını içeren yazar sütununu ifade eder. İkincisi, :, yazarları ve kitap başlıklarını iki nokta üst üste işaretiyle ayırmak için kullanılan keyfi bir dize değeridir. Sonuncusu, başlık, kitap başlıklarını içeren sütunu ifade eder.
Bu sorgu sonucunda yazarlar ve başlıklar, veritabanı motoru tarafından doğrudan birleştirilen full_title adlı geçici bir sütunda döndürülür.
MySQL'e entegre diğer dize işlevleri arasında dizeleri arama ve değiştirme, alt dizeleri alma, dize değerlerini doldurma ve kırpma, düzenli ifadeler uygulama vb. işlevler bulunur. Birden fazla değeri birleştirmek için SQL işlevlerini kullanma hakkında daha fazla bilgiyi "SQL'de CAST İşlevleri ve Birleştirme İfadeleriyle Verileri İşleme" başlıklı eğitimde bulabilirsiniz. Ayrıca MySQL belgelerindeki Dize İşlevleri ve Operatörleri bölümüne de başvurabilirsiniz.
Bir sonraki bölümde, veritabanındaki tarihleri işlemek için SQL fonksiyonlarını kullanacaksınız.
Tarih ve saat işlevlerini kullanma
SQL'deki tarih ve saat işlevleri, SQL sorgularını işlerken tarih ve zaman damgalarını tutan sütunlarda depolanan değerleri işlemenize olanak tanır. Tarih bilgilerinin bir kısmını ayıklamak, tarih hesaplamaları yapmak veya tarih ve zaman damgalarını gerekli çıktı biçimlerine biçimlendirmek için kullanılabilirler.
Çıktıda tek bir tarih sütunu olması yerine, kitabın yayın tarihini yıl, ay ve güne ayrı ayrı bölmeniz gerektiğini varsayalım.
Aşağıdaki komutu çalıştırmayı deneyin:
SELECT introduction_date, YEAR(introduction_date) as year, MONTH(introduction_date) as month, DAY(introduction_date) as day FROM inventory;
Aşağıdakine benzer bir çıktı göreceksiniz:
Output
+-------------------+------+-------+------+
| introduction_date | year | month | day |
+-------------------+------+-------+------+
| 2022-10-01 | 2022 | 10 | 1 |
| 2022-10-04 | 2022 | 10 | 4 |
| 2022-09-23 | 2022 | 9 | 23 |
| 2022-07-23 | 2022 | 7 | 23 |
| 2022-10-01 | 2022 | 10 | 1 |
+-------------------+------+-------+------+
5 rows in set (0.000 sec)Bu SQL ifadesi üç ayrı işlev kullanır: YIL, AY ve GÜN. Her işlev, tarihlerin depolandığı sütunun adını bağımsız değişken olarak alır ve tam tarihin yalnızca bir kısmını (sırasıyla yıl, ay veya gün) çıkarır. Bu işlevleri kullanarak, SQL sorgularında bir tarihin ayrı ayrı parçalarına erişebilirsiniz.
Tarihleri değiştirmek için bir diğer kullanışlı işlev ise, iki tarih arasındaki gün sayısını almanızı sağlayan DATEDIFF'tir. Şimdi, her kitabın tanıtıldığı tarih ile geçerli tarih arasında kaç gün geçtiğini kontrol edin.
Aşağıdaki sorguyu çalıştırın:
SELECT introduction_date, DATEDIFF(introduction_date, CURRENT_DATE()) AS days_since FROM inventory;
Ekrana aşağıdaki çıktı yazdırılır:
Output
+-------------------+------------+
| introduction_date | days_since |
+-------------------+------------+
| 2022-10-01 | -30 |
| 2022-10-04 | -27 |
| 2022-09-23 | -38 |
| 2022-07-23 | -100 |
| 2022-10-01 | -30 |
+-------------------+------------+
5 rows in set (0.000 sec)DATEDIFF işlevi iki bağımsız değişken alır: başlangıç tarihi ve bitiş tarihi. DATEDIFF işlevi, bu iki noktayı ayıran gün sayısını hesaplar. Bitiş tarihi daha erkense, sonuç negatif bir sayı olabilir. Bu örnekte, ilk bağımsız değişken, envanter tablosundaki tarihleri tutan introduction_date sütununun adıdır. İkinci bağımsız değişken ise geçerli sistem tarihini temsil eden CURRENT_DATE adlı başka bir işlevdir. Bu sorguyu çalıştırmak, bu iki zaman noktası arasındaki gün sayısını alır ve sonuçları days_since adlı geçici bir sütuna yerleştirir.
Not: DATEDIFF, resmi SQL standart fonksiyon setinin bir parçası değildir. Birçok veritabanı bu fonksiyonu desteklese de, sözdizimi genellikle farklı veritabanı motorları arasında farklılık gösterir. Bu örnek, yerel MySQL sözdizimini takip eder.
MySQL'e entegre edilmiş diğer tarih işleme işlevleri arasında zaman aralıklarını ve tarihleri ekleyip çıkarmak, tarihleri farklı dil biçimleri için biçimlendirmek, gün ve ay adlarını almak veya yeni tarih değerleri oluşturmak yer alır. SQL'de tarihlerle çalışma hakkında daha fazla bilgiyi SQL'de Tarih ve Saatlerle Çalışma eğitiminde bulabilirsiniz. Ayrıca MySQL belgelerindeki Tarih ve Saat İşlevleri bölümüne de başvurabilirsiniz.
Bir sonraki bölümde toplama fonksiyonlarının nasıl kullanılacağını öğreneceksiniz.
Toplama işlevlerini kullanma
Önceki örneklerin hepsinde, bir kitapçıdaki bir kitabı temsil eden bir satırdaki tek tek sütun değerlerine dönüşümler veya hesaplamalar uygulamak için SQL işlevlerini kullandınız. SQL, tüm veri kümesi hakkında toplu bilgi bulmanıza yardımcı olmak için birden fazla satırda matematiksel hesaplamalar gerçekleştirmenin bir yolunu sunar.
- SQL'deki temel toplama işlevleri şunları içerir:
- Hesaplamaların yapıldığı değerlerin ortalaması için AVG.
- Hesaplamaların yapılacağı değerlerin sayısını ifade eder.
- Maksimum değer için MAX.
- MIN minimum değer için.
- Tüm değerlerin toplamı için SUM.
SELECT sorgunuza birden fazla toplama işlevi ekleyebilirsiniz. Bir kitapçıda listelenen kitap sayısını, mevcut her kitabın maksimum fiyatını ve tüm katalogdaki ortalama fiyatı kontrol etmek istediğinizi varsayalım. Bunu yapmak için aşağıdaki ifadeyi çalıştırın:
SELECT COUNT(title) AS count, MAX(price) AS max_price, AVG(price) AS avg_price FROM inventory;
Bu komut aşağıdaki çıktıyı döndürür:
Output
+-------+-----------+-----------+
| count | max_price | avg_price |
+-------+-----------+-----------+
| 5 | 42.13 | 25.106000 |
+-------+-----------+-----------+
1 row in set (0.001 sec)Yukarıdaki sorgu aynı anda üç toplama işlevi kullanır. COUNT işlevi, sorgunun aradığı satırları sayar. Bu örnekte, başlık bir argüman olarak geçirilir, ancak satır sayısı işaretli her sütun için aynı olacağından, işlev argümanı olarak başka herhangi bir sütun adı kullanabilirsiniz. MAX işlevi, fiyat sütunundaki maksimum değeri hesaplar: Burada sütun adı önemlidir, çünkü hesaplama bu sütundaki değerler üzerinden yapılır. Son işlev, fiyat sütunundaki tüm fiyatların ortalamasını hesaplayan AVG işlevidir.
Toplama işlevlerini bu şekilde kullanmak, veritabanına, toplam hesaplamaların değerlerini temsil eden geçici sütunlar içeren bir satırın döndürülmesiyle sonuçlanır. Kaynak satırlar hesaplama için dahili olarak kullanılır, ancak sorgu aracılığıyla döndürülmez. Bu örnekte, özet için tüm satırları hesaba katarak, tüm envanter tablosundan istatistiksel değerleri tek seferde hesaplamak için toplama işlevlerini kullandınız.
SQL ile bir tablonun satırlarını gruplara ayırabilir ve ardından bu grupların toplamını ayrı ayrı hesaplayabilirsiniz. Örneğin, hangi yazarın en pahalı kitapları yayınladığını bulmak için farklı yazarların kitaplarının ortalama fiyatını hesaplayabilirsiniz. Bu tür hesaplamalar için satırları gruplama hakkında daha fazla bilgiyi SQL'de GROUP BY ve ORDER BY Kullanımı eğitiminde bulabilirsiniz. Ayrıca, SQL'de Matematiksel İfadeler ve Toplama Fonksiyonları Kullanımı eğitiminde toplamaları kullanma hakkında daha fazla bilgi edinebilirsiniz.
Sonuç
Bu kılavuzda, veriler üzerinde hesaplamalar yapmak ve daha karmaşık sorgular oluşturmak için SQL'deki fonksiyonları nasıl kullanacağınızı öğrendiniz. Bu fonksiyonlar, verileri farklı şekillerde işlemenize ve daha iyi sonuçlar elde etmenize yardımcı olur. SQL'in tam sözdiziminin, ilişkisel veritabanı yönetim sisteminizin (RDBMS) türüne bağlı olarak değişebileceğini unutmayın.









