Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
SQL (Structured Query Language), veritabanlarına sorgular yapmak için kullanılan bir dilidir. SQL syntax, bu dilin kurallarını ifade eder. SQL syntax, doğru ve anlamak kolay sorgular oluşturmanıza yardımcı olan belirli kurallardan oluşur. Aşağıda, SQL syntax’inin temel unsurlarını derinlemesine anlatan bazı önemli konular bulunmaktadır:
SELECT
, FROM
, ve WHERE
ifadeleri ile başlar. Örneğin:SELECT column1, column2 FROM table WHERE condition;
SELECT
: Hangi sütunların alınacağını belirler.FROM
: Hangi tablodan verilerin alınacağını belirler.WHERE
: Koşulları belirleyerek verilerin nasıl filtrelenmesi gerektiğini ifade eder.SELECT
ifadesi, veritabanından belirli sütunları seçmek için kullanılır. Tüm sütunları seçmek için “ karakteri de kullanılabilir.SELECT column1, column2 FROM table;
FROM
ifadesi, verilerin hangi tablodan çekileceğini belirtir.SELECT column1, column2 FROM employees;
WHERE
ifadesi, belirli bir koşulu karşılayan satırları seçmek için kullanılır.SELECT column1, column2 FROM table WHERE condition;
ORDER BY
ifadesi, sonuçları belirli bir sırayla getirmek için kullanılır. Artan sıralama için ASC
, azalan sıralama için DESC
kullanılabilir.SELECT column1, column2 FROM table ORDER BY column1 ASC;
GROUP BY
ifadesi, bir veya daha fazla sütuna göre gruplandırma yapmak için kullanılır.SELECT column1, COUNT(*) FROM table GROUP BY column1;
JOIN
ifadeleri, birden fazla tabloyu birleştirmek için kullanılır. INNER JOIN
, LEFT JOIN
, RIGHT JOIN
gibi çeşitli türleri bulunur.SELECT column1, column2 FROM table1 INNER JOIN table2 ON table1.id = table2.id;
SUM
, AVG
, COUNT
, MIN
, MAX
gibi), sorgu sonuçlarını özetlemek için kullanılır.SELECT AVG(salary) FROM employees WHERE department = 'IT';
SELECT column1 FROM table WHERE column2 IN (SELECT column2 FROM another_table);
Bu temel konular, SQL sorgularını anlamanız ve oluşturmanız için gerekli olan önemli bileşenleri içermektedir. SQL syntax’ini daha derinlemesine anlamak ve uygulamak için örnek sorguları çalıştırarak pratik yapmanız önemlidir.
SQL’de SELECT
ifadesi, veritabanından veri çekmek için kullanılır. Bu ifade, bir veya birden fazla sütunu belirli koşullar altında seçmek, filtrelemek ve sıralamak için kullanılır.
SELECT column1, column2, ...
FROM table
WHERE condition
ORDER BY column1 [ASC|DESC];
column1, column2, ...
: Çekilmek istenen sütunların adları. Eğer tüm sütunları seçmek istiyorsanız “ karakterini kullanabilirsiniz.table
: Verilerin çekileceği tablonun adı.WHERE condition
: (Opsiyonel) Belirli bir koşula uyan satırları filtrelemek için kullanılır.ORDER BY column1 [ASC|DESC]
: (Opsiyonel) Sonuçları belirli bir sırayla getirmek için kullanılır. Artan sıralama için ASC
, azalan sıralama için DESC
kullanılır.Belirli Sütunları Seçme:
SELECT first_name, last_name
FROM employees;
Tüm Sütunları Seçme:
SELECT * FROM employees;
Filtreleme (WHERE Kullanımı):
SELECT product_name, unit_price
FROM products
WHERE unit_price > 50;
Sıralama (ORDER BY Kullanımı):
SELECT product_name, unit_price
FROM products
ORDER BY unit_price DESC;
Toplama (Aggregat Fonksiyonlar):
SELECT AVG(salary) AS average_salary
FROM employees
WHERE department_id = 1;
Duplicaet Satırları Kaldırma (DISTINCT):
SELECT DISTINCT department_id
FROM employees;
Sınırlama (LIMIT Kullanımı):
SELECT *
FROM orders
LIMIT 10;
Toplu İşlem (CASE WHEN Kullanımı):
SELECT product_name,
CASE
WHEN unit_price > 100 THEN 'Expensive'
WHEN unit_price > 50 THEN 'Moderate'
ELSE 'Inexpensive'
END AS price_category
FROM products;
JOIN İfadeleri ile Çoklu Tablolar:
SELECT customers.customer_id, customers.customer_name, orders.order_id
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
Alt Sorgular:
SELECT product_name
FROM products
WHERE category_id IN (SELECT category_id FROM categories WHERE category_name = 'Electronics');
Bu örnekler, SELECT ifadesinin temel kullanımlarını kapsamaktadır. SQL sorguları, veritabanındaki verileri çekmek, analiz etmek ve raporlamak için güçlü bir araçtır. Her bir örneği çalıştırarak, SQL syntax’ini daha iyi anlayabilir ve kullanabilirsiniz.
SELECT DISTINCT ifadesi, bir SQL sorgusu ile belirtilen sütunlardan yinelenen değerleri (duplicates) filtrelemek için kullanılır. Bu ifade, bir sütundaki benzersiz (unique) değerleri getirmek için kullanışlıdır.
Temel SELECT DISTINCT Yapısı:
SELECT DISTINCT column1, column2, ...
FROM table
WHERE condition;
column1, column2, ...
: Benzersiz değerleri getirmek istediğiniz sütunların adları.table
: Verilerin çekileceği tablonun adı.WHERE condition
: (Opsiyonel) Belirli bir koşula uyan satırları filtrelemek için kullanılır.Bir Sütundaki Benzersiz Değerleri Getirme:
SELECT DISTINCT department_id
FROM employees;
Bu sorgu, “employees” tablosundaki “department_id” sütunundaki benzersiz değerleri getirir.
Birden Fazla Sütundaki Benzersiz Değerleri Getirme:
SELECT DISTINCT first_name, last_name
FROM employees;
Bu sorgu, “employees” tablosundaki “first_name” ve “last_name” sütunlarındaki birleşik benzersiz değerleri getirir.
WHERE İfadesi ile Kullanım:
SELECT DISTINCT department_id
FROM employees
WHERE salary > 50000;
Bu sorgu, “employees” tablosundaki “department_id” sütunundaki benzersiz değerleri, belirli bir koşulu sağlayan satırlar üzerinde filtreleyerek getirir.
JOIN İfadeleri ile Kullanım:
SELECT DISTINCT customers.customer_id, customers.customer_name
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
Bu sorgu, “customers” ve “orders” tablolarını birleştirerek müşteri adlarını ve ID’lerini getirir.
ORDER BY ve LIMIT ile Kullanım:
SELECT DISTINCT product_name
FROM products
ORDER BY product_name
LIMIT 10;
Bu sorgu, “products” tablosundaki “product_name” sütunundaki benzersiz değerleri alfabetik sırayla getirir ve bunlardan sadece ilk 10’unu alır.
SELECT DISTINCT
ifadesi, sorgularınızda yinelenen değerleri ortadan kaldırmak ve yalnızca benzersiz değerlere odaklanmak için güçlü bir araçtır. Ancak, büyük veri setlerinde kullanıldığında performans konusunda dikkatli olunmalıdır, çünkü birçok benzersiz değeri seçmek, işlem süresini artırabilir.
SQL’de WHERE
ifadesi, bir sorgunun belirli bir koşulu karşılayan satırları seçmesi için kullanılır. WHERE
ifadesi, sorgularınızı daha spesifik ve hedefli hale getirmenizi sağlar. İşte WHERE
ifadesini derinlemesine anlatan bazı önemli konular:
WHERE
Yapısı:SELECT column1, column2, ...
FROM table
WHERE condition;
column1, column2, ...
: Seçilmek istenen sütunların adları.table
: Verilerin çekileceği tablonun adı.condition
: Koşulun belirtildiği yer. Belirli bir koşulu sağlayan satırlar seçilir.Eşittir (=
):
WHERE column1 = value;
Belirli bir sütunun belirli bir değere eşit olduğu durumu kontrol eder.
Büyüktür (>), Küçüktür (<):
WHERE column1 > value;
Belirli bir sütunun belirli bir değerden büyük veya küçük olduğu durumu kontrol eder.
Büyük Eşittir (>=), Küçük Eşittir (<=):
WHERE column1 >= value;
Belirli bir sütunun belirli bir değerden büyük veya eşit olduğu durumu kontrol eder.
Değildir (<> veya !=):
WHERE column1 <> value;
Belirli bir sütunun belirli bir değere eşit olmadığı durumu kontrol eder.
BETWEEN ve NOT BETWEEN:
WHERE column1 BETWEEN value1 AND value2;
Belirli bir aralıktaki değerleri seçer. NOT BETWEEN ise belirtilen aralık dışındaki değerleri seçer.
IN ve NOT IN:
WHERE column1 IN (value1, value2, ...);
Belirli değerlere sahip olanları seçer. NOT IN ise belirtilen değerlere sahip olmayanları seçer.
LIKE ve NOT LIKE:
WHERE column1 LIKE 'pattern';
Belirli bir desene (pattern) uyan değerleri seçer. % karakteri genişletme için kullanılır. NOT LIKE ise belirtilen desene uymayan değerleri seçer.
IS NULL ve IS NOT NULL:
WHERE column1 IS NULL;
Belirli bir sütunun NULL değerine sahip olduğunu kontrol eder. IS NOT NULL
ise NULL olmayan değerleri seçer.
AND:
WHERE condition1 AND condition2;
Her iki koşulun da sağlanması durumunu kontrol eder.
OR:
WHERE condition1 OR condition2;
Her iki koşuldan en az birinin sağlanması durumunu kontrol eder.
NOT:
WHERE NOT condition1;
Belirli bir koşulun karşıtını kontrol eder.
Belirli Bir Değerden Büyük Satırları Seçme:
SELECT * FROM employees WHERE salary > 50000;
Belirli Bir Aralıkta Olan Satırları Seçme:
SELECT * FROM products WHERE price BETWEEN 10 AND 50;
Belirli Değerlere Sahip veya Olmayan Satırları Seçme:
SELECT * FROM customers WHERE country IN ('USA', 'Canada');
SELECT * FROM customers WHERE country NOT IN ('USA', 'Canada');
Belirli Desene Uyan Satırları Seçme:
SELECT * FROM products WHERE product_name LIKE 'A%';
AND ve OR Kullanımı:
SELECT * FROM orders WHERE order_date >= '2023-01-01' AND total_amount > 1000;
SELECT * FROM products WHERE category = 'Electronics' OR price < 50;
WHERE ifadesi, SQL sorgularınızı daha spesifik hale getirerek ihtiyacınıza uygun verileri seçmenizi sağlar. İstenen sonuçları elde etmek için doğru koşulları ve mantıksal operatörleri seçmek önemlidir.
RDER BY
ifadesi, SQL sorgularının sonuçlarını belirli bir sırayla düzenlemek için kullanılır. Bu ifade, sorgu sonuçlarını artan (ascending) veya azalan (descending) sırayla sıralamak için kullanılır. ORDER BY
ifadesi, tek bir sütuna veya birden fazla sütuna göre sıralama yapma yeteneği sağlar. İşte ORDER BY
ifadesini derinlemesine anlatan temel konular:
ORDER BY
Yapısı:SELECT column1, column2, ...
FROM table
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
column1, column2, ...
: Sıralama için kullanılacak sütunların adları.table
: Verilerin çekileceği tablonun adı.[ASC|DESC]
: (Opsiyonel) Sıralama tipini belirtir. ASC
(Varsayılan) artan sıralama, DESC
azalan sıralama anlamına gelir.Tek Bir Sütuna Göre Sıralama:
SELECT product_name, price
FROM products
ORDER BY price ASC;
Bu sorgu, “products” tablosundaki “price” sütununa göre artan sıralama yapar.
Azalan Sıralama (Descending):
SELECT product_name, price
FROM products
ORDER BY price DESC;
Bu sorgu, “products” tablosundaki “price” sütununa göre azalan sıralama yapar.
Birden Fazla Sütuna Göre Sıralama:
SELECT customer_name, city, country
FROM customers
ORDER BY country ASC, city DESC;
Bu sorgu, “customers” tablosundaki “country” sütununa göre artan ve aynı ülke içinde “city” sütununa göre azalan sıralama yapar.
NULL Değerleri Yönetme:
SELECT product_name, price
FROM products
ORDER BY price DESC NULLS LAST;
Bu sorgu, “products” tablosundaki “price” sütununa göre azalan sıralama yaparken, NULL değerlere sahip satırları en sonda gösterir.
Sıralama İçin Sütun Adını Değiştirme:
SELECT product_name AS product, price AS unit_price
FROM products
ORDER BY unit_price ASC;
Bu sorgu, sıralama için “price” sütununun adını “unit_price” olarak değiştirir.
Toplamı veya Ortalamayı Kullanma:
SELECT category_name, AVG(price) AS avg_price
FROM products
GROUP BY category_name
ORDER BY avg_price DESC;
Bu sorgu, kategori adına göre gruplandırılmış ürünlerin ortalama fiyatlarına göre azalan sıralama yapar.
LIMIT ile Sınırlama ve Sıralama:
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 10;
Bu sorgu, “products” tablosundaki “price” sütununa göre azalan sıralama yapar ve en yüksek 10 fiyatlı ürünü getirir.
ORDER BY
ifadesi, SQL sorgularınızın sonuçlarını belirli bir düzende göstermek için önemlidir. Sıralama yapılırken dikkate alınması gereken özel durumlar (NULL değerleri, çoklu sütunlar) olduğundan, kullanım sırasında dikkatli olmak önemlidir.
SQL’deki AND
ifadesi, WHERE
ifadesi içinde birden fazla koşulu birleştirmek için kullanılır. AND
operatörü, belirli bir sorgunun iki veya daha fazla koşulu sağlaması gerektiğinde kullanılır. İki koşulun da doğru olması durumunda bir satır seçilir.
SELECT column1, column2, ...
FROM table
WHERE condition1 AND condition2 AND ...;
column1, column2, ...
: Seçilmek istenen sütunların adları.table
: Verilerin çekileceği tablonun adı.condition1 AND condition2 AND ...
: Birden fazla koşulun birleştirilmiş hali. Tüm koşulların sağlanması durumunda bir satır seçilir.İki Koşulu Birleştirme:
SELECT product_name, price
FROM products
WHERE category = 'Electronics' AND price > 50;
Bu sorgu, “products” tablosundaki “Electronics” kategorisine ait ve fiyatı 50’den yüksek olan ürünleri getirir.
Üç Koşulu Birleştirme:
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 1 AND salary > 50000 AND hire_date >= '2023-01-01';
Bu sorgu, “employees” tablosundaki belirli bir bölüme ait, maaşı 50,000’den yüksek ve belirli bir tarihten sonra işe alınan çalışanları getirir.
Daha Karmaşık Koşullar:
SELECT product_name, quantity_in_stock
FROM products
WHERE (category = 'Electronics' OR category = 'Appliances') AND quantity_in_stock > 100;
Bu sorgu, “Electronics” veya “Appliances” kategorisine ait ve stokta 100’den fazla ürün bulunan ürünleri getirir.
NULL Değerleri ile Kullanım:
SELECT product_name, price
FROM products
WHERE price IS NOT NULL AND quantity_in_stock IS NULL;
Bu sorgu, fiyatı belirlenmiş ancak stokta olmayan ürünleri getirir.
AND ile İki Tarih Arasında Sorgu:
SELECT order_id, order_date
FROM orders
WHERE order_date >= '2023-01-01' AND order_date < '2023-02-01';
Bu sorgu, belirli bir tarih aralığındaki siparişleri getirir.
SELECT product_name, price
FROM products
WHERE (category = 'Electronics' AND price > 50) OR (category = 'Clothing' AND price > 30);
Bu sorgu, “Electronics” kategorisinde fiyatı 50’den yüksek veya “Clothing” kategorisinde fiyatı 30’dan yüksek olan ürünleri getirir.
AND
ifadesi, SQL sorgularında koşulların birleştirilmesi için önemli bir araçtır. Birden fazla koşulu birleştirerek, sorgularınızı daha spesifik hale getirebilir ve istediğiniz sonuçları elde edebilirsiniz.
SQL’deki OR ifadesi, WHERE ifadesi içinde birden fazla koşulu birleştirmek için kullanılır. OR operatörü, belirli bir sorgunun en az bir koşulu sağlaması gerektiğinde kullanılır. İki veya daha fazla koşuldan en az biri doğru olduğunda bir satır seçilir.
SELECT column1, column2, ...
FROM table
WHERE condition1 OR condition2 OR ...;
column1, column2, ...
: Seçilmek istenen sütunların adları.table
: Verilerin çekileceği tablonun adı.condition1 OR condition2 OR ...
: Birden fazla koşulun birleştirilmiş hali. Herhangi bir koşulun sağlanması durumunda bir satır seçilir.İki Koşulu Birleştirme:
SELECT product_name, price
FROM products
WHERE category = 'Electronics' OR price > 50;
Bu sorgu, “products” tablosundaki “Electronics” kategorisine ait veya fiyatı 50’den yüksek olan ürünleri getirir.
Üç Koşulu Birleştirme:
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 1 OR salary > 50000 OR hire_date >= '2023-01-01';
Bu sorgu, “employees” tablosundaki belirli bir bölüme ait veya maaşı 50,000’den yüksek veya belirli bir tarihten sonra işe alınan çalışanları getirir.
Daha Karmaşık Koşullar:
SELECT product_name, quantity_in_stock
FROM products
WHERE (category = 'Electronics' AND quantity_in_stock > 100) OR (category = 'Appliances' AND quantity_in_stock > 50);
Bu sorgu, “Electronics” kategorisine ait ve stokta 100’den fazla veya “Appliances” kategorisine ait ve stokta 50’den fazla ürünü getirir.
NULL Değerleri ile Kullanım:
SELECT product_name, price
FROM products
WHERE price IS NULL OR quantity_in_stock IS NULL;
Bu sorgu, fiyatı belirlenmemiş veya stokta olmayan ürünleri getirir.
OR ile İki Tarih Arasında Sorgu:
SELECT order_id, order_date
FROM orders
WHERE order_date < '2023-01-01' OR order_date >= '2023-02-01';
Bu sorgu, belirli bir tarih aralığının dışındaki siparişleri getirir.
AND ve OR Kombinasyonu:
SELECT product_name, price
FROM products
WHERE (category = 'Electronics' AND price > 50) OR (category = 'Clothing' AND price > 30);
Bu sorgu, “Electronics” kategorisinde fiyatı 50’den yüksek veya “Clothing” kategorisinde fiyatı 30’dan yüksek olan ürünleri getirir.
OR
ifadesi, SQL sorgularında koşulları birleştirmek ve daha esnek sorgular oluşturmak için önemli bir araçtır. Birden fazla koşulu birleştirerek, sorgularınızı daha spesifik hale getirebilir ve çeşitli durumları kapsayacak şekilde sonuçlar elde edebilirsiniz.
SQL Not
SQL’deki NOT
ifadesi, WHERE
ifadesi içinde kullanılarak bir koşulu karşılamayan satırları seçmek için kullanılır. NOT
operatörü, bir koşulu karşılamayan veya belirli bir değere eşit olmayan satırları seçme amacı taşır. İşte NOT
ifadesini derinlemesine anlatan bazı önemli konular:
SELECT column1, column2, ...
FROM table
WHERE NOT condition;
column1, column2, ...
: Seçilmek istenen sütunların adları.table
: Verilerin çekileceği tablonun adı.NOT condition
: Bir koşulu karşılamayan satırları seçmek için kullanılır.Belirli Bir Koşulu Karşılamayan Satırları Seçme:
SELECT product_name, price
FROM products
WHERE NOT category = 'Electronics';
Bu sorgu, “Electronics” kategorisine ait olmayan ürünleri getirir.
NULL Olmayan Değerleri Seçme:
SELECT product_name, price
FROM products
WHERE NOT price IS NULL;
Bu sorgu, fiyatı belirlenmemiş ürünleri getirmez. Yani, fiyatı belirlenmiş ürünleri getirir.
Belirli Bir Değere Eşit Olmayan Satırları Seçme:
SELECT product_name, price
FROM products
WHERE NOT price = 100;
Bu sorgu, fiyatı 100 birim olan ürünleri getirmez. Yani, fiyatı 100 birim olmayan ürünleri getirir.
Belirli Bir Desene Uymayan Satırları Seçme:
SELECT product_name
FROM products
WHERE NOT product_name LIKE 'A%';
Bu sorgu, ürün adı “A” harfi ile başlamayan ürünleri getirir.
Belirli Bir Aralıkta Olmayan Satırları Seçme:
SELECT product_name, quantity_in_stock
FROM products
WHERE NOT quantity_in_stock BETWEEN 10 AND 50;
Bu sorgu, stokta 10 ile 50 arasında olmayan ürünleri getirir.
NOT
ifadesi, SQL sorgularında belirli bir koşulu karşılamayan veya belirli bir değere eşit olmayan satırları seçmek için kullanılır. NOT
kullanımı, sorgularınızı daha esnek ve özelleştirilebilir hale getirerek, belirli durumları dışlamak için kullanışlıdır.
SQL’de INSERT INTO ifadesi, bir tabloya yeni bir satır eklemek için kullanılır. Bu ifade, belirli bir tabloya belirli değerleri içeren yeni bir kayıt eklemek amacıyla kullanılır.
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
table_name
: Yeni satırın ekleneceği tablonun adı.(column1, column2, column3, ...)
: Eklenecek değerlerin hangi sütunlara atanacağını belirten sütun listesi.VALUES (value1, value2, value3, ...)
: Yeni satırda yer alacak değerlerin listesi.Tek Bir Satır Ekleme:
INSERT INTO customers (customer_name, contact_name, address, city, country)
VALUES ('ABC Company', 'John Doe', '123 Main St', 'New York', 'USA');
Bu örnek, “customers” tablosuna yeni bir müşteri ekler.
Tüm Sütunlara Değer Eklemek:
INSERT INTO employees
VALUES (1001, 'Alice', 'Johnson', '2023-01-15', 'HR', 60000);
Bu örnek, “employees” tablosuna yeni bir çalışan ekler ve tüm sütunlara değerler ekler.
Belirli Sütunlara Değer Eklemek (Sütunları Belirtmeden):
INSERT INTO orders (customer_id, order_date, total_amount)
VALUES (102, '2023-02-01', 500);
Bu örnek, “orders” tablosuna yeni bir sipariş ekler, ancak sadece belirli sütunlara değer ekler.
Alt Sorgu ile Değer Eklemek:
INSERT INTO order_details (order_id, product_id, quantity, unit_price)
SELECT order_id, product_id, 10, unit_price
FROM orders
WHERE customer_id = 102;
Bu örnek, “order_details” tablosuna, belirli bir müşteriye ait olan siparişlerin detaylarını ekler.
Multiple Rows (Çoklu Satırlar) Eklemek:
INSERT INTO products (product_name, category, price)
VALUES ('Laptop', 'Electronics', 1200),
('Refrigerator', 'Appliances', 800),
('T-shirt', 'Clothing', 25);
Bu örnek, “products” tablosuna birden fazla ürün ekler.
Diğer Tablodan Veri Kopyalama:
INSERT INTO new_employees (employee_id, first_name, last_name, hire_date, department, salary)
SELECT employee_id, first_name, last_name, hire_date, department, salary
FROM old_employees
WHERE hire_date >= '2022-01-01';
Bu örnek, “old_employees” tablosundan belirli bir tarihten sonra işe alınan çalışanları “new_employees” tablosuna ekler.
DEFAULT Değerler Kullanma:
INSERT INTO customers (customer_name, contact_name, city)
VALUES ('XYZ Company', 'Jane Smith', DEFAULT);
Bu örnek, “customers” tablosuna yeni bir müşteri eklerken, “city” sütununa varsayılan değeri ekler.
INSERT INTO
ifadesi, veritabanına yeni veri eklemek için temel bir araçtır. Bu ifadeyi kullanırken, eklenen değerlerin ve sütunların tablonun yapısal düzenine uygun olduğundan emin olmalısınız.
SQL’de NULL
değerleri, bir sütunun içinde bir değerin bilinmediğini veya mevcut olmadığını belirtmek için kullanılır. NULL
, bir değerin varlığını veya yokluğunu temsil eden bir durumdur ve sıklıkla veri eksikliğini veya bilinmeyen durumları ifade etmek için kullanılır.
NULL
Kullanımı:NULL Değeri Atama:
INSERT INTO employees (employee_id, first_name, last_name, salary)
VALUES (1, 'John', 'Doe', NULL);
Bu örnekte, “employees” tablosuna yeni bir çalışan ekleniyor ve “salary” sütununa NULL değeri atanıyor.
NULL Kontrolü:
SELECT product_name, price
FROM products
WHERE price IS NULL;
Bu sorgu, “products” tablosundaki “price” sütununda NULL değerine sahip olan ürünleri getirir.
NULL Değeriyle Toplama İşlemi:
SELECT product_name, quantity_in_stock, (quantity_in_stock + NULL) AS total_stock
FROM products;
Bu örnekte, NULL ile toplama işlemi yapılır. Herhangi bir değeri NULL ile toplamak sonucu NULL yapar.
IFNULL veya COALESCE Kullanımı:
SELECT product_name, IFNULL(price, 0) AS adjusted_price
FROM products;
Bu sorgu, “price” sütunundaki NULL değerlerini 0 ile değiştirir.
Dikkat Edilmesi Gereken Durumlar:
NULL
değerleri, sütunların bir değeri olmadığını belirtir ve ''
(boş karakter dizisi) veya 0
gibi değerlerden farklıdır.NULL
değerleri, sütunların bir değeri olmadığını belirtir ve sütunun veri tipi ile uyumlu olmalıdır.NULL ile Karşılaştırma:
SELECT product_name, price
FROM products
WHERE price = NULL;
Bu sorgu, hiçbir zaman NULL = NULL ifadesi doğru olmadığı için hiçbir satır döndürmez. NULL değerlerini karşılaştırmak için IS NULL veya IS NOT NULL kullanılmalıdır.
INNER JOIN ve NULL:
SELECT customers.customer_id, customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
Bu sorgu, müşterileri ve onların siparişlerini getirir. LEFT JOIN
kullanıldığı için müşterilere ait sipariş olmayan durumlarda sipariş bilgileri NULL
olacaktır.
NULL
değerleri, veritabanlarında bilgi eksikliğini veya belirsizliği ifade etmek için kullanılır. NULL
ile çalışırken, karşılaştırmalar ve işlemler üzerinde dikkatli olunmalı ve veri türü uyumuna özen gösterilmelidir. Ayrıca, COALESCE
veya IFNULL
gibi işlevler kullanılarak NULL
değerleri ile ilgili özel durumlar ele alınabilir.
SQL’de UPDATE
ifadesi, mevcut kayıtların değerlerini değiştirmek için kullanılır. Bu ifade, belirli bir tablodaki mevcut satırların değerlerini güncellemek amacıyla kullanılır.
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
table_name
: Güncellenen kayıtların bulunduğu tablonun adı.column1 = value1, column2 = value2, ...
: Güncellenen sütunların ve yeni değerlerin listesi.WHERE condition
: Hangi kayıtların güncelleneceğini belirten koşul. Eğer bu kısmı belirtmezseniz, tüm satırlar güncellenir.Tek Bir Sütunu Güncelleme:
UPDATE employees
SET salary = 70000
WHERE employee_id = 101;
Bu örnek, “employees” tablosundaki bir çalışanın maaşını günceller.
Birden Fazla Sütunu Güncelleme:
UPDATE products
SET price = 1200, stock_status = 'In Stock'
WHERE product_id = 202;
Bu örnek, “products” tablosundaki bir ürünün fiyatını ve stok durumunu günceller.
Sütunları Diğer Sütun Değerleriyle Güncelleme:
UPDATE orders
SET total_amount = quantity * unit_price
WHERE order_id = 301;
Bu örnek, “orders” tablosundaki bir siparişin toplam miktarını, sipariş miktarı ile birim fiyatın çarpımıyla günceller.
NULL Değerleri Güncelleme:
UPDATE customers
SET phone_number = NULL
WHERE customer_id = 501;
Bu örnek, “customers” tablosundaki bir müşterinin telefon numarasını NULL değeri ile günceller.
Diğer Tablodan Veri Kopyalama:
UPDATE employees
SET department_id = (SELECT department_id FROM departments WHERE department_name = 'IT')
WHERE employee_id = 102;
Bu örnek, “employees” tablosundaki bir çalışanın bölümünü, “departments” tablosundan alınan bir değerle günceller.
Toplu Güncelleme:
UPDATE products
SET price = price * 1.1
WHERE category = 'Electronics';
Bu örnek, “Electronics” kategorisine ait tüm ürünlerin fiyatını %10 artırır.
CASE WHEN Kullanımı:
UPDATE employees
SET salary =
CASE
WHEN experience_years > 5 THEN salary * 1.1
ELSE salary * 1.05
END
WHERE department_id = 2;
Bu örnek, belirli bir departmanda çalışanların maaşlarını deneyim yıllarına bağlı olarak günceller.
UPDATE
ifadesi, mevcut verileri güncellemek ve tablodaki kayıtları değiştirmek için kullanılır. Ancak, bu işlemi dikkatlice kullanmak önemlidir, çünkü yanlışlıkla tüm kayıtları veya istenmeyen kayıtları güncellemek mümkündür. Bu nedenle, WHERE
koşulunu dikkatlice kullanarak yalnızca güncellenmesi gereken kayıtları belirtmek önemlidir.
SQL’de DELETE
ifadesi, bir tablodaki mevcut kayıtları silmek için kullanılır. Bu ifade, belirli bir tablodan belirli koşullara uyan satırları kaldırmak amacıyla kullanılır.
DELETE FROM table_name
WHERE condition;
table_name
: Kayıtların silineceği tablonun adı.WHERE condition
: Hangi kayıtların silineceğini belirten koşul. Eğer bu kısmı belirtmezseniz, tüm tablonun içeriği silinir.Belirli Bir Koşula Uyan Satırları Silme:
DELETE FROM employees
WHERE department_id = 3;
Bu örnek, “employees” tablosundaki belirli bir bölüme ait çalışanları siler.
Tüm Tabloyu Silme:
DELETE FROM products;
Bu örnek, “products” tablosundaki tüm ürünleri siler. Ancak, tablonun kendisi silinmez.
Diğer Tablodan Veri Kopyalama:
DELETE FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE department_name = 'IT');
Bu örnek, “departments” tablosundan alınan bir değere göre belirli bir bölüme ait çalışanları siler.
Toplu Silme:
DELETE FROM orders
WHERE order_date < '2023-01-01';
Bu örnek, belirli bir tarihten önceki tüm siparişleri siler.
Belirli Bir Koşula Uymayan Satırları Silme:
DELETE FROM customers
WHERE phone_number IS NULL;
Bu örnek, telefon numarası olmayan müşteri kayıtlarını siler.
LIMIT ile Sınırlı Silme:
DELETE FROM products
WHERE category = 'Electronics'
LIMIT 5;
Bu örnek, “Electronics” kategorisine ait ilk 5 ürünü siler.
Bağlı Tablolardaki Kayıtları Silme (CASCADE DELETE):
DELETE FROM departments
WHERE department_id = 5;
Eğer “departments” tablosu ile “employees” tablosu arasında bir ilişki (foreign key) varsa ve bu ilişki “CASCADE DELETE” özelliğine sahipse, bu sorgu “department_id” değeri 5 olan bölümü sildiğinde, bu bölüme ait olan tüm çalışan kayıtları da otomatik olarak silinir.
DELETE
ifadesi, tablodaki kayıtları silmek için kullanılır. Ancak, dikkatlice kullanılmalıdır, çünkü belirli bir koşula uyan tüm kayıtları silme potansiyeli taşır. Bu nedenle, silme işleminden önce WHERE
koşulunu dikkatlice kontrol etmek önemlidir. Ayrıca, bağlı tablolarda (foreign key relationships) cascade delete özelliğini kullanırken dikkatli olunmalıdır, çünkü bu durumda bir tablodaki bir kaydın silinmesi, bağlı tablodaki ilgili kayıtların otomatik olarak silinmesine neden olabilir.
SQL’de “SELECT TOP” ifadesi, bir sorgu sonucunda dönen sonuç kümesinin başından belirli bir sayıda kaydı seçmek için kullanılır. TOP
ifadesi, genellikle sorguların yalnızca ilk birkaç sonucunu görüntülemek veya işlemek amacıyla kullanılır.
SELECT TOP (n) column1, column2, ...
FROM table
WHERE condition;
n
: Seçilecek ilk n kayıt sayısı.column1, column2, ...
: Seçilmek istenen sütunların adları.table
: Verilerin çekileceği tablonun adı.WHERE condition
: İsteğe bağlı bir koşul, belirli kayıtları filtrelemek için kullanılır.Belirli Sayıda Kayıt Seçme:
SELECT TOP 5 product_name, price
FROM products
ORDER BY price DESC;
Bu örnekte, “products” tablosundan fiyatına göre büyükten küçüğe sıralanmış ilk 5 ürünü seçer.
WHERE Koşulu İle Top Kullanma:
SELECT TOP 3 customer_id, order_date, total_amount
FROM orders
WHERE customer_id = 102
ORDER BY order_date DESC;
Bu örnekte, müşteri ID’si 102 olan siparişler arasından en son eklenen 3 siparişi seçer.
Bağlı Tablolardan Toplu Kayıt Alma:
SELECT TOP 5 customers.customer_id, customers.customer_name, COUNT(orders.order_id) AS order_count
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
GROUP BY customers.customer_id, customers.customer_name
ORDER BY order_count DESC;
Bu örnekte, müşterileri ve onların sipariş sayılarını içeren sonuç kümesinden en çok sipariş veren ilk 5 müşteriyi seçer.
Alt Sorgu ile Top Kullanma:
SELECT customer_id, customer_name
FROM customers
WHERE customer_id IN (SELECT TOP 3 customer_id FROM orders ORDER BY order_date DESC);
Bu örnekte, en son sipariş veren 3 müşteriyi seçer.
Fonksiyonları Kullanarak Top Belirleme:
SELECT TOP (10 + 5) product_name, price
FROM products
ORDER BY price ASC;
Bu örnekte, TOP ifadesine bir aritmetik ifade ile dinamik bir değer atanır.
OFFSET
ve FETCH
Kullanımı (SQL:2012 ve Sonrası):SQL:2012 standartlarından itibaren OFFSET
ve FETCH
ifadeleri, belirli bir konumdan itibaren kayıtları almak için kullanılabilir. Örneğin:
SELECT column1, column2, ...
FROM table
ORDER BY some_column
OFFSET 5 ROWS
FETCH NEXT 10 ROWS ONLY;
Bu sorgu, some_column
sütununa göre sıralanan kayıtlardan 6. sıradan başlayarak toplamda 10 kaydı getirir.
SELECT TOP
ifadesi, veritabanı sistemine bağlı olarak farklı şekillerde desteklenebilir. Özellikle LIMIT
(MySQL ve PostgreSQL), FETCH FIRST
(Oracle) veya ROWNUM
(Oracle) gibi alternatif ifadeler de kullanılabilir. Bu nedenle, kullanılan veritabanı sistemine özgü belgelere başvurmak önemlidir.
SQL’de MIN
ve MAX
fonksiyonları, bir sütundaki en küçük (minimum) veya en büyük (maximum) değeri bulmak için kullanılır. Bu fonksiyonlar, genellikle bir tablodaki veriler üzerinde istatistiksel hesaplamalar yaparken veya belirli bir kritere uyan değerleri bulurken kullanılır.
MIN
Fonksiyonu:MIN
fonksiyonu, bir sütundaki en küçük değeri bulur.
SELECT MIN(column_name)
FROM table_name
WHERE condition;
column_name
: En küçük değeri bulmak istediğiniz sütunun adı.table_name
: Verilerin çekileceği tablonun adı.WHERE condition
: İsteğe bağlı bir koşul, belirli kayıtları filtrelemek için kullanılır.SELECT MIN(price)
FROM products;
Bu örnekte, “products” tablosundaki “price” sütunundaki en küçük değeri bulur.
MAX
Fonksiyonu:MAX
fonksiyonu, bir sütundaki en büyük değeri bulur.
SELECT MAX(column_name)
FROM table_name
WHERE condition;
column_name
: En büyük değeri bulmak istediğiniz sütunun adı.table_name
: Verilerin çekileceği tablonun adı.WHERE condition
: İsteğe bağlı bir koşul, belirli kayıtları filtrelemek için kullanılır.Örnek:
SELECT MAX(quantity_in_stock)
FROM products;
Bu örnekte, “products” tablosundaki “quantity_in_stock” sütunundaki en büyük değeri bulur.
MIN
ve MAX
Fonksiyonlarının Kullanımı:Belirli Bir Koşula Uyan Minimum ve Maximum Değerleri Bulma:
SELECT MIN(price) AS min_price, MAX(price) AS max_price
FROM products
WHERE category = 'Electronics';
Bu örnekte, “Electronics” kategorisine ait ürünlerin fiyatları arasındaki en küçük ve en büyük değeri bulur.
Toplam Satış Miktarındaki En Düşük ve En Yüksek Ayı Bulma:
SELECT MIN(total_amount) AS min_amount, MAX(total_amount) AS max_amount
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
Bu örnekte, belirli bir tarih aralığındaki siparişlerin toplam miktarları arasındaki en küçük ve en büyük değeri bulur.
Toplam Çalışan Sayısındaki En Küçük ve En Büyük Departmanı Bulma:
SELECT department_id, COUNT(employee_id) AS employee_count
FROM employees
GROUP BY department_id
ORDER BY employee_count ASC;
-- En küçük ve en büyük departmanı bulma
SELECT department_id, MIN(employee_count) AS min_employees, MAX(employee_count) AS max_employees
FROM (
SELECT department_id, COUNT(employee_id) AS employee_count
FROM employees
GROUP BY department_id
) AS department_counts;
Bu örnekte, her departmandaki çalışan sayısının en küçük ve en büyük değerini bulur.
Bu örneklerde olduğu gibi, MIN
ve MAX
fonksiyonları sıklıkla bir veri setindeki istatistikleri anlamak veya belirli bir koşulu sağlayan değerleri bulmak için kullanılır.
SQL’de COUNT
fonksiyonu, belirli bir sorgunun sonucunda dönen satır sayısını veya belirli bir sütundaki değerlerin sayısını hesaplamak için kullanılır. Bu fonksiyon, veritabanında belirli bir durumu veya gruplamayı anlamak için yaygın olarak kullanılır.
COUNT
Yapısı:SELECT COUNT(column_name) AS count_alias
FROM table_name
WHERE condition;
column_name
: Sayılacak sütunun adı veya genel bir asterisk (“) kullanarak tüm satırları sayabilirsiniz.table_name
: Verilerin çekileceği tablonun adı.WHERE condition
: İsteğe bağlı bir koşul, belirli kayıtları filtrelemek için kullanılır.count_alias
: İsteğe bağlı bir takma ad (alias), sayılan değerin sonucunu daha anlamlı bir şekilde ifade etmek için kullanılır.Tüm Satırları Sayma:
SELECT COUNT(*) AS total_rows
FROM orders;
Bu örnekte, “orders” tablosundaki tüm siparişlerin sayısını bulur.
Belirli Bir Koşula Uyan Satırları Sayma:
SELECT COUNT(*) AS high_price_products
FROM products
WHERE price > 1000;
Bu örnekte, fiyatı 1000 birimden yüksek olan ürünlerin sayısını bulur.
Belirli Bir Sütundaki Değerleri Sayma:
SELECT COUNT(customer_id) AS total_customers
FROM customers;
Bu örnekte, “customers” tablosundaki müşteri ID’lerinin sayısını bulur.
Bir Grup İçindeki Değerleri Sayma:
SELECT department_id, COUNT(employee_id) AS employee_count
FROM employees
GROUP BY department_id;
Bu örnekte, her departmandaki çalışan sayısını bulur.
Belirli Bir Koşula Uyan Grup İçindeki Değerleri Sayma:
SELECT order_status, COUNT(order_id) AS order_count
FROM orders
WHERE order_date >= '2023-01-01'
GROUP BY order_status;
Bu örnekte, belirli bir tarihten sonraki siparişlerin durumlarına göre sipariş sayısını bulur.
NULL Olmayan Değerleri Sayma:
SELECT COUNT(email) AS total_emails
FROM customers
WHERE email IS NOT NULL;
Bu örnekte, “customers” tablosundaki NULL olmayan e-posta adreslerinin sayısını bulur.
COUNT
fonksiyonu, bir sorgunun sonucundaki satır veya sütun sayısını bulmak için oldukça kullanışlıdır. Gruplama ile birleştirilerek belirli bir kategorideki veya durumdaki değerleri sayma, istatistikleri anlama ve raporlama gibi birçok senaryoda kullanılabilir.
SQL’de “SUM” fonksiyonu, belirli bir sütundaki sayısal değerlerin toplamını hesaplamak için kullanılır. Bu fonksiyon, genellikle bir sütundaki sayısal değerlerin toplamını almak istediğiniz zamanlarda kullanılır.
Temel Kullanım:
SQL’de “SUM” fonksiyonu, belirli bir sütundaki sayısal değerlerin toplamını hesaplamak için kullanılır. Temel kullanım şu şekildedir:
SELECT SUM(sutun_adi) FROM tablo_adi;
Burada “sutun_adi” toplanacak sütunun adını temsil eder ve “tablo_adi” ise sütunun bulunduğu tablonun adını temsil eder.
Gruplama ile Kullanım:
“SUM” fonksiyonu genellikle “GROUP BY” ifadesi ile birlikte kullanılır. Bu durumda, toplama işlemi gruplara ayrılarak yapılır. Örneğin, bir tabloda her bir kategori için toplam satış miktarını bulmak istiyorsanız:
SELECT kategori, SUM(satis_miktari)
FROM satislar
GROUP BY kategori;
Bu sorgu, “satislar” tablosundaki her bir kategori için satış miktarlarını toplar.
Filtreleme ile Kullanım:
“SUM” fonksiyonu, diğer SQL ifadeleri ile birleştirilerek kullanılabilir. Örneğin, belirli bir tarih aralığındaki satış miktarını bulmak için “WHERE” ifadesini kullanabilirsiniz:
SELECT SUM(satis_miktari)
FROM satislar
WHERE tarih BETWEEN '2023-01-01' AND '2023-01-31';
Bu sorgu, belirtilen tarih aralığındaki satış miktarını toplar.
İç İçe Sorgular ile Kullanım:
“SUM” fonksiyonu iç içe sorgularla birlikte kullanılabilir. Örneğin, belirli bir değeri aşan toplam satış miktarını bulmak için:
SELECT *
FROM (
SELECT urun_id, SUM(satis_miktari) as toplam_satis
FROM satislar
GROUP BY urun_id
) as gecici_tablo
WHERE toplam_satis > 1000;
Bu sorgu, her bir ürün için yapılan toplam satış miktarını hesaplar ve ardından belirli bir değeri aşan satışları filtreler.
SQL’de “SUM” fonksiyonu, veritabanı sorgularında sayısal değerlerin toplamını bulmak için güçlü bir araçtır. Kullanımı, ihtiyacınıza ve sorunuzun gereksinimlerine bağlı olarak değişebilir.
SQL Avg
SQL’de “AVG” fonksiyonu, belirli bir sütundaki sayısal değerlerin ortalamasını hesaplamak için kullanılır. Bu fonksiyon, genellikle bir sütundaki sayısal değerlerin ortalama değerini bulmak istediğiniz zamanlarda kullanılır.
Temel Kullanım:
SQL’de “AVG” fonksiyonunun temel kullanımı şu şekildedir:
SELECT AVG(sutun_adi) FROM tablo_adi;
Burada “sutun_adi” ortalama alınacak sütunun adını temsil eder ve “tablo_adi” ise sütunun bulunduğu tablonun adını temsil eder.
Gruplama ile Kullanım:
“AVG” fonksiyonu genellikle “GROUP BY” ifadesi ile birlikte kullanılır. Bu durumda, ortalama işlemi gruplara ayrılarak yapılır. Örneğin, bir tabloda her bir kategori için ortalama satış miktarını bulmak istiyorsanız:
SELECT kategori, AVG(satis_miktari)
FROM satislar
GROUP BY kategori;
Bu sorgu, “satislar” tablosundaki her bir kategori için satış miktarlarının ortalamasını hesaplar.
Filtreleme ile Kullanım:
“AVG” fonksiyonu, diğer SQL ifadeleri ile birleştirilerek kullanılabilir. Örneğin, belirli bir tarih aralığındaki ortalama satış miktarını bulmak için “WHERE” ifadesini kullanabilirsiniz:
SELECT AVG(satis_miktari)
FROM satislar
WHERE tarih BETWEEN '2023-01-01' AND '2023-01-31';
Bu sorgu, belirtilen tarih aralığındaki satış miktarlarının ortalamasını hesaplar.
İç İçe Sorgular ile Kullanım:
“AVG” fonksiyonu iç içe sorgularla birlikte kullanılabilir. Örneğin, belirli bir değerin altındaki ortalama satış miktarını bulmak için:
SELECT *
FROM (
SELECT urun_id, AVG(satis_miktari) as ortalama_satis
FROM satislar
GROUP BY urun_id
) as gecici_tablo
WHERE ortalama_satis < 50;
Bu sorgu, her bir ürün için yapılan satış miktarının ortalamasını hesaplar ve ardından belirli bir değerin altındaki ortalama satışları filtreler.
SQL’de “AVG” fonksiyonu, veritabanı sorgularında sayısal değerlerin ortalamasını bulmak için kullanışlı bir araçtır. Kullanımı, ihtiyacınıza ve sorunuzun gereksinimlerine bağlı olarak değişebilir.
SQL’de “LIKE” operatörü, bir sütunun değerinin belirli bir desene uyan bir dize içerip içermediğini kontrol etmek için kullanılır. Bu operatör, genellikle metin alanlarında belirli bir desene sahip verileri filtrelemek veya sorgulamak için kullanılır.
Temel Kullanım:
“LIKE” operatörünün temel kullanımı, bir sütundaki değerlerin belirli bir deseni içerip içermediğini kontrol etmek içindir. Temel sözdizimi şu şekildedir:
SELECT * FROM tablo_adi WHERE sutun_adi LIKE 'desen';
Burada “sutun_adi” kontrol edilecek sütunun adını ve ‘desen’ kontrol edilecek deseni temsil eder. Desen içerisinde % ve _ gibi özel karakterler kullanılabilir.
% ve _ Karakterleri:
%
: Herhangi bir karakter veya karakter dizisini temsil eder. Örneğin, 'a%'
, ‘a’ ile başlayan herhangi bir değeri seçer._
: Tam olarak bir karakteri temsil eder. Örneğin, 'a_'
, ‘a’ ile başlayan iki karakterlik herhangi bir değeri seçer.SELECT * FROM ogrenciler WHERE ad LIKE 'A%';
SELECT * FROM ogrenciler WHERE soyad LIKE '_on%';
Bağlantılı Kullanım:
“LIKE” operatörü, diğer SQL ifadeleri ile birleştirilerek kullanılabilir. Örneğin, belirli bir deseni içeren ve belirli bir şartı sağlayan değerleri seçmek için:
SELECT * FROM musteriler WHERE ad LIKE 'A%' AND sehir = 'Istanbul';
NOT LIKE Kullanımı:
“LIKE” operatörünün tersi olan “NOT LIKE” kullanılarak belirli bir deseni içermeyen değerler seçilebilir.
SELECT * FROM urunler WHERE urun_adi NOT LIKE '%indirim%';
CASE-INSENSITIVE Arama:
SQL’de “LIKE” operatörü varsayılan olarak büyük/küçük harf duyarlıdır. Ancak, bazı veritabanları özel işlevlerle case-insensitive arama sağlayabilir. Örneğin, PostgreSQL’de “ILIKE” operatörü case-insensitive arama yapar.
SELECT * FROM musteriler WHERE ad ILIKE 'a%';
Bu örnekler, “LIKE” operatörünün temel kullanımlarını kapsamaktadır. Farklı SQL veritabanları, bu operatörü kullanma ve destekleme konusunda bazı farklılıklar gösterebilir, bu nedenle kullanılan veritabanının belgelerine başvurmak önemlidir.
SQL’de “Wildcards” veya joker karakterler, “LIKE” operatörü ile birlikte kullanılarak belirli bir desene uyan verileri seçmek için kullanılır. Bu karakterler, desenlerde yerine geçen veya belirli kurallara uyan karakterleri temsil eder.
% (Yüzde İşareti):
%
karakteri, herhangi bir karakter dizisinin yerine geçer. Bu joker karakter, sıfır, bir veya daha fazla karakteri temsil eder.-- 'a' ile başlayan herhangi bir değeri seçer
SELECT * FROM tablo_adi WHERE sutun_adi LIKE 'a%';
_ (Alt Çizgi):
_
karakteri, tam olarak bir karakterin yerine geçer. Bu joker karakter, yalnızca tek bir karakteri temsil eder.-- 'ab' ile başlayan iki karakterlik herhangi bir değeri seçer
SELECT * FROM tablo_adi WHERE sutun_adi LIKE 'ab_';
[ ] (Köşeli Parantez):
[ ]
içinde belirtilen karakterlerden herhangi birinin yerine geçer. Örneğin, [aeiou]
ifadesi, ‘a’, ‘e’, ‘i’, ‘o’ veya ‘u’ karakterlerinden herhangi birini temsil eder.-- 'cat', 'cot', 'cut' gibi değerleri seçer
SELECT * FROM tablo_adi WHERE sutun_adi LIKE 'c[aeiou]t';
[^ ] (Üst Çizgi ve Köşeli Parantez):
[^ ]
içinde belirtilen karakterlerin dışındaki herhangi bir karakterin yerine geçer. Örneğin, [^0-9]
ifadesi, rakam olmayan herhangi bir karakteri temsil eder.-- Rakam olmayan herhangi bir değeri seçer
SELECT * FROM tablo_adi WHERE sutun_adi LIKE '%[^0-9]%';
Bu joker karakterler, “LIKE” operatörü ile birlikte kullanıldığında çeşitli arama desenleri oluşturmanıza olanak tanır. Kullanıcı, bu karakterleri kombinleyerek istediği karmaşık desenleri tanımlayabilir. Ancak, wildcards kullanımında dikkatli olunmalıdır çünkü yanlış veya aşırı genel desenler kullanmak, beklenmeyen sonuçlara yol açabilir.
SQL’de “IN” operatörü, bir sütundaki değerleri belirli bir liste veya alt sorgu içindeki değerlerle karşılaştırmak için kullanılır. Bu operatör, çoklu eşleştirmeler yapmanıza ve bir sütundaki değerleri bir dizi değerle karşılaştırmanıza olanak tanır.
Temel Kullanım:
“IN” operatörünün temel kullanımı, bir sütundaki değerleri belirli bir liste içinde kontrol etmek içindir. Temel sözdizimi şu şekildedir:
SELECT * FROM tablo_adi WHERE sutun_adi IN (deger1, deger2, ...);
Örneğin:
SELECT * FROM ogrenciler WHERE bolum IN ('Bilgisayar Mühendisliği', 'Elektrik Mühendisliği');
Alt Sorgu ile Kullanım: “IN” operatörü, bir alt sorgu içinde kullanılarak dinamik bir şekilde değerler elde etmenizi sağlar. Alt sorgu, bir başka tablodan veya sorgudan değerler döndürebilir. Örneğin:
SELECT * FROM siparisler WHERE urun_id IN (SELECT urun_id FROM stok WHERE miktar > 0);
NULL Değerleri ile Kullanım: “IN” operatörü, NULL değerleri içeren bir sütunu kontrol etmek için kullanılabilir. Ancak, “IN” operatörü kullanılırken dikkat edilmesi gereken önemli bir nokta, NULL değerleri ile ilgili olarak beklenmeyen sonuçlar elde edebilirsiniz. Örneğin:
SELECT * FROM musteriler WHERE sehir IN ('Istanbul', 'Ankara', NULL);
Yukarıdaki sorgu, “Istanbul” veya “Ankara” şehrinde yaşayan müşterileri getirecektir, ancak NULL şehir değerine sahip müşterileri döndürmeyecektir.
NOT IN Kullanımı: “IN” operatörünün tersi olan “NOT IN” kullanılarak belirli bir liste içinde olmayan değerleri seçebilirsiniz. Örneğin:
SELECT * FROM ogrenciler WHERE bolum NOT IN ('Bilgisayar Mühendisliği', 'Elektrik Mühendisliği');
Yukarıdaki sorgu, “Bilgisayar Mühendisliği” veya “Elektrik Mühendisliği” bölümlerinden olmayan öğrencileri getirecektir.
“IN” operatörü, belirli değerlerle karşılaştırmalar yapmak ve sorgularınızı daha esnek ve okunabilir hale getirmek için kullanışlı bir araçtır. Ancak, büyük veri setlerinde performansı etkileyebileceği için dikkatlice kullanılmalıdır.
SQL’de “BETWEEN” operatörü, bir sütunun belirli bir aralık içindeki değerleri seçmek için kullanılır. Bu operatör, bir değerin belirli bir alt ve üst sınır arasında olup olmadığını kontrol etmek için kullanılır.
Temel Kullanım:
“BETWEEN” operatörünün temel kullanımı şu şekildedir:
SELECT * FROM tablo_adi WHERE sutun_adi BETWEEN alt_sayi AND ust_sayi;
Örneğin:
SELECT * FROM urunler WHERE fiyat BETWEEN 50 AND 100;
Bu sorgu, fiyatı 50 ile 100 arasında olan ürünleri seçer.
Alt ve Üst Sınırın Dahil Edilmesi veya Dahil Edilmemesi:
“BETWEEN” operatörü ile belirtilen aralık, varsayılan olarak dahil edilir, yani alt ve üst sınırlar da sonuca dahil edilir. Ancak, ihtiyaca bağlı olarak “NOT BETWEEN” kullanarak alt ve üst sınırları dahil etmemeyi seçebilirsiniz.
Örneğin:
-- 50 ile 100 arasındaki (dahil) fiyatları seçer
SELECT * FROM urunler WHERE fiyat BETWEEN 50 AND 100;
-- 50 ile 100 arasındaki fiyatları seçmez
SELECT * FROM urunler WHERE fiyat NOT BETWEEN 50 AND 100;
Tarih Aralıkları ile Kullanım: “BETWEEN” operatörü, tarih sütunları üzerinde de kullanılabilir. Tarihler genellikle ‘YYYY-MM-DD’ formatında depolanır.
Örneğin:
SELECT * FROM siparisler WHERE tarih BETWEEN '2023-01-01' AND '2023-12-31';
Bu sorgu, 2023 yılında yapılmış siparişleri seçer.
Alt Sınırın Üst Sınırdan Büyük Olması Durumu: “BETWEEN” operatörünü kullanırken dikkat edilmesi gereken bir durum, alt sınırın üst sınırdan büyük olmamasıdır. Aksi takdirde, beklenmeyen sonuçlar alabilirsiniz.
Örneğin:
-- Hatalı kullanım, alt sınır üst sınırdan büyük
SELECT * FROM tablo_adi WHERE sutun_adi BETWEEN 100 AND 50;
SQL’de “ALIAS” (takma ad) veya “AS” kelimesi, sütunlar veya tablolar için alternatif adlar oluşturmak için kullanılır. Bu, sorgunuzun çıktısını daha anlamlı hale getirmenize ve sütun veya tablo adları üzerinde daha okunabilir isimler kullanmanıza olanak tanır.
Sütun Aliases:
Sütun adlarına takma ad vermek için “AS” kelimesi kullanılır. Bu, sütun adlarını daha anlamlı ve kısa bir şekilde temsil etmek için kullanışlıdır.
SELECT satis_miktari AS miktar, urun_adi AS urun
FROM satislar;
Yukarıdaki örnekte, “satis_miktari” sütunu için “miktar” takma adı ve “urun_adi” sütunu için “urun” takma adı kullanılmıştır.
Tablo Aliases:
Tabloların adlarına takma ad vermek de mümkündür. Bu özellikle sorgular içinde birden çok tablo kullanılıyorsa veya tablo adları uzunsa kullanışlı olabilir.
SELECT o.id, o.musteri_id, m.ad
FROM siparisler AS o
JOIN musteriler AS m ON o.musteri_id = m.id;
Yukarıdaki örnekte, “siparisler” tablosu için “o” ve “musteriler” tablosu için “m” takma adları kullanılmıştır.
Sütunlar ve Tablolarla İlişkilendirme:
Takma adlar, sütun veya tabloların kullanıldığı yerlerde kullanılabilir. Bu, özellikle sorguların daha okunabilir ve anlamlı olmasına yardımcı olabilir.
SELECT s.musteri_id AS musteri, m.ad AS musteri_adi
FROM satislar AS s
JOIN musteriler AS m ON s.musteri_id = m.id;
Bu sorguda, “satislar” tablosu için “s” ve “musteriler” tablosu için “m” takma adları kullanılmıştır.
Derleme Sırası:
“AS” kelimesi kullanılarak takma adlar verildiğinde, genellikle sorgunun derlenme sırasına etkisi olmaz. Bu nedenle, sorgunuzun mantığına ve okunabilirliğine bağlı olarak takma adları sütun veya tablo adlarına ekleyebilirsiniz.
SELECT ad AS isim, soyad AS soyisim FROM kullanicilar;
Yukarıdaki örnekte, “kullanicilar” tablosundan “ad” sütunu için “isim” takma adı ve “soyad” sütunu için “soyisim” takma adı kullanılmıştır.
Takma adlar, SQL sorgularını daha anlamlı ve okunabilir hale getirmek için kullanışlıdır. Ancak, takma adların mantıklı, tutarlı ve karmaşıklığı azaltacak şekilde seçilmesine dikkat edilmelidir.
SQL’de “JOIN” ifadesi, iki veya daha fazla tabloyu birleştirmek ve bu tablolardan veri çekmek için kullanılır. İki tablo arasında birleştirme işlemi, genellikle belirli bir koşula dayanır. SQL’de çeşitli türlerde JOIN ifadeleri bulunmaktadır.
INNER JOIN:
INNER JOIN, birleştirilen tablolardaki eşleşen satırları getirir. INNER JOIN ifadesi, bir tablonun sütunlarındaki değerlerin, diğer tablonun sütunlarındaki değerlerle eşleştiği durumları seçer.
SELECT * FROM musteriler
INNER JOIN siparisler ON musteriler.musteri_id = siparisler.musteri_id;
Yukarıdaki örnekte, “musteriler” ve “siparisler” tablolarını müşteri ID’si üzerinden birleştiriyoruz.
LEFT JOIN (veya LEFT OUTER JOIN):
LEFT JOIN, sol tablonun tüm satırlarını ve sağ tablo ile eşleşen satırları getirir. Eşleşmeyen sağ tablo satırları NULL değerleri içerir.
SELECT * FROM calisanlar
LEFT JOIN projeler ON calisanlar.calisan_id = projeler.calisan_id;
Bu sorgu, “calisanlar” tablosundaki tüm çalışanları ve bu çalışanlara ait projeleri getirir.
RIGHT JOIN (veya RIGHT OUTER JOIN):
RIGHT JOIN, sağ tablonun tüm satırlarını ve sol tablo ile eşleşen satırları getirir. Eşleşmeyen sol tablo satırları NULL değerleri içerir.
SELECT * FROM musteriler
RIGHT JOIN siparisler ON musteriler.musteri_id = siparisler.musteri_id;
Bu sorgu, “siparisler” tablosundaki tüm siparişleri ve bu siparişlere ait müşterileri getirir.
FULL JOIN (veya FULL OUTER JOIN):
FULL JOIN, her iki tablonun tüm satırlarını getirir. Eşleşen satırlar normal birleştirme gibi gösterilirken, eşleşmeyen satırlar NULL değerleri içerir.
SELECT * FROM calisanlar
FULL JOIN projeler ON calisanlar.calisan_id = projeler.calisan_id;
Bu sorgu, hem “calisanlar” hem de “projeler” tablolarındaki tüm satırları getirir.
CROSS JOIN:
CROSS JOIN, iki tablonun her bir satırını diğer tablonun her bir satırıyla birleştirir. CROSS JOIN ifadesinde herhangi bir koşul belirtilmez.
SELECT * FROM kullanicilar
CROSS JOIN roller;
Bu sorgu, “kullanicilar” ve “roller” tablolarındaki tüm satırların birleştirilmiş halini getirir.
“JOIN” ifadesi, veritabanlarındaki ilişkisel veri modelini kullanarak farklı tablolar arasında veri bağlantılarını sağlamak için güçlü bir araçtır. Hangi JOIN türünün kullanılacağı, veri ihtiyaçlarına ve bağlamına bağlı olarak değişir.
SQL’de “INNER JOIN” ifadesi, iki veya daha fazla tabloyu birleştirmek ve bu tablolardan eşleşen verileri getirmek için kullanılır. INNER JOIN, bir tablonun sütunlarındaki değerlerin, diğer tablonun sütunlarındaki değerlerle eşleştiği durumları seçer.
Temel Kullanım:
Temel kullanım, iki tabloyu belirli bir koşul üzerinden birleştirmek ve eşleşen satırları getirmek içindir. INNER JOIN ifadesi, birleştirme koşulu olarak “ON” anahtar kelimesini kullanır.
SELECT *
FROM musteriler
INNER JOIN siparisler ON musteriler.musteri_id = siparisler.musteri_id;
Yukarıdaki örnekte, “musteriler” ve “siparisler” tablolarını müşteri ID’si üzerinden birleştiriyoruz ve eşleşen satırları getiriyoruz.
Birden Fazla Koşul ile INNER JOIN:
INNER JOIN ifadesi birden fazla koşul içerebilir. Örneğin, iki sütunun eşleşmesi durumunda:
SELECT *
FROM calisanlar
INNER JOIN projeler ON calisanlar.calisan_id = projeler.calisan_id
AND projeler.birim = 'Bilgi Teknolojileri';
Bu örnekte, “calisanlar” ve “projeler” tablolarını hem çalışan ID’si hem de proje birimi üzerinden birleştiriyoruz.
Tablo Takma Adları ile INNER JOIN:
INNER JOIN ifadesi, tabloları takma adlar (aliases) kullanarak birleştirmenizi sağlar. Bu, sorguların daha okunabilir ve yönetilebilir olmasına yardımcı olabilir.
SELECT *
FROM musteriler AS m
INNER JOIN siparisler AS s ON m.musteri_id = s.musteri_id;
Yukarıdaki örnekte, “musteriler” tablosuna “m” ve “siparisler” tablosuna “s” takma adları verilmiştir.
INNER JOIN ifadesi, iki tablo arasındaki eşleşen verileri getirir ve bu nedenle sıklıkla kullanılır. Bu, ilişkisel veritabanlarında verileri bağlamak için önemli bir araçtır. Ancak, INNER JOIN kullanırken dikkat edilmesi gereken, eşleşen olmayan satırların sonuçlara dahil edilmediğidir. Eğer eşleşmeyen satırları da görmek istiyorsanız, LEFT JOIN gibi diğer JOIN türlerini kullanmalısınız.
SQL’de “LEFT JOIN” ifadesi, sol tablonun tüm satırlarını ve sağ tablo ile eşleşen satırları getirir. Eğer eşleşme olmazsa, sağ tablonun ilgili sütunları NULL değerleri içerir. Bu, özellikle bir tablodaki tüm verileri almak ve diğer tablo ile eşleşen verileri getirmek istediğiniz durumlarda kullanışlıdır.
Temel Kullanım:
Temel kullanım, sol tablo ile sağ tablo arasında belirli bir koşul üzerinden birleştirme yapmak içindir. LEFT JOIN ifadesi, birleştirme koşulu olarak “ON” anahtar kelimesini kullanır.
SELECT *
FROM calisanlar
LEFT JOIN projeler ON calisanlar.calisan_id = projeler.calisan_id;
Yukarıdaki örnekte, “calisanlar” tablosunun tüm satırlarını getiriyoruz ve bu satırları “calisan_id” sütunu üzerinden “projeler” tablosu ile birleştiriyoruz.
Birden Fazla Koşul ile LEFT JOIN:
LEFT JOIN ifadesi birden fazla koşulu içerebilir. Örneğin, iki sütunun eşleşmesi durumunda:
SELECT *
FROM calisanlar
LEFT JOIN projeler ON calisanlar.calisan_id = projeler.calisan_id
AND projeler.birim = 'Bilgi Teknolojileri';
Bu örnekte, “calisanlar” tablosunun tüm satırlarını ve “Bilgi Teknolojileri” birimine ait olan projeleri getiriyoruz.
Sol Tablo Takma Adları ile LEFT JOIN:
LEFT JOIN ifadesi, sol tabloyu takma ad kullanarak birleştirmenizi sağlar. Bu, sorguların daha okunabilir ve yönetilebilir olmasına yardımcı olabilir.
SELECT *
FROM musteriler AS m
LEFT JOIN siparisler AS s ON m.musteri_id = s.musteri_id;
Yukarıdaki örnekte, “musteriler” tablosuna “m” ve “siparisler” tablosuna “s” takma adları verilmiştir.
Eşleşmeyen Satırların Kontrolü:
LEFT JOIN, eşleşmeyen satırların sonuçlara dahil edilmesini sağlar. Eğer eşleşme olmazsa, sağ tablonun ilgili sütunları NULL değerleri içerir.
SELECT *
FROM musteriler
LEFT JOIN siparisler ON musteriler.musteri_id = siparisler.musteri_id;
Yukarıdaki örnekte, “musteriler” tablosunun tüm müşterilerini ve bu müşterilere ait siparişleri getiriyoruz.
LEFT JOIN ifadesi, bir tablonun tüm verilerini almak ve diğer tablo ile eşleşen verileri getirmek istediğiniz durumlarda kullanışlıdır. Bu sayede eşleşmeyen satırlar da sonuç kümesine dahil edilir.
SQL’de “RIGHT JOIN” (veya “RIGHT OUTER JOIN”) ifadesi, sağ tablonun tüm satırlarını ve sol tablo ile eşleşen satırları getirir. Eğer eşleşme olmazsa, sol tablonun ilgili sütunları NULL değerleri içerir. RIGHT JOIN, LEFT JOIN’un zıttıdır.
Temel Kullanım:
Temel kullanım, sağ tablo ile sol tablo arasında belirli bir koşul üzerinden birleştirme yapmak içindir. RIGHT JOIN ifadesi, birleştirme koşulu olarak “ON” anahtar kelimesini kullanır.
SELECT *
FROM projeler
RIGHT JOIN calisanlar ON projeler.calisan_id = calisanlar.calisan_id;
Yukarıdaki örnekte, “projeler” tablosunun tüm satırlarını getiriyoruz ve bu satırları “calisan_id” sütunu üzerinden “calisanlar” tablosu ile birleştiriyoruz.
Birden Fazla Koşul ile RIGHT JOIN:
RIGHT JOIN ifadesi birden fazla koşulu içerebilir. Örneğin, iki sütunun eşleşmesi durumunda:
SELECT *
FROM projeler
RIGHT JOIN calisanlar ON projeler.calisan_id = calisanlar.calisan_id
AND calisanlar.departman = 'Bilgi Teknolojileri';
Bu örnekte, “projeler” tablosunun tüm satırlarını ve “Bilgi Teknolojileri” departmanındaki çalışanları getiriyoruz.
Sağ Tablo Takma Adları ile RIGHT JOIN: RIGHT JOIN ifadesi, sağ tabloyu takma ad kullanarak birleştirmenizi sağlar. Bu, sorguların daha okunabilir ve yönetilebilir olmasına yardımcı olabilir.
SELECT *
FROM siparisler AS s
RIGHT JOIN musteriler AS m ON s.musteri_id = m.musteri_id;
Yukarıdaki örnekte, “siparisler” tablosuna “s” ve “musteriler” tablosuna “m” takma adları verilmiştir.
Eşleşmeyen Satırların Kontrolü:
RIGHT JOIN, eşleşmeyen satırların sonuçlara dahil edilmesini sağlar. Eğer eşleşme olmazsa, sol tablonun ilgili sütunları NULL değerleri içerir.
SELECT *
FROM siparisler
RIGHT JOIN musteriler ON siparisler.musteri_id = musteriler.musteri_id;
Yukarıdaki örnekte, “siparisler” tablosunun tüm siparişlerini ve bu siparişlere ait müşterileri getiriyoruz.
RIGHT JOIN ifadesi, sağ tablonun tüm verilerini almak ve diğer tablo ile eşleşen verileri getirmek istediğiniz durumlarda kullanışlıdır. Bu sayede eşleşmeyen satırlar da sonuç kümesine dahil edilir.
SQL’de “FULL JOIN” (veya “FULL OUTER JOIN”) ifadesi, her iki tablonun tüm satırlarını getirir. Eşleşen satırlar normal birleştirme gibi gösterilirken, eşleşmeyen satırlar NULL değerleri içerir. “FULL JOIN”, LEFT JOIN ve RIGHT JOIN’ın birleşimini sağlar. Bu, her iki tablodaki tüm veriyi almak ve eşleşmeyen satırları da görmek istediğiniz durumlarda kullanılır.
Temel Kullanım:
Temel kullanım, her iki tabloyu belirli bir koşul üzerinden birleştirmek ve eşleşen satırları ve eşleşmeyen satırları getirmek içindir. “FULL JOIN” ifadesi, birleştirme koşulu olarak “ON” anahtar kelimesini kullanır.
SELECT *
FROM musteriler
FULL JOIN siparisler ON musteriler.musteri_id = siparisler.musteri_id;
Yukarıdaki örnekte, “musteriler” ve “siparisler” tablolarını müşteri ID’si üzerinden birleştiriyoruz ve her iki tablodaki tüm satırları getiriyoruz.
Birden Fazla Koşul ile FULL JOIN: FULL JOIN ifadesi birden fazla koşulu içerebilir. Örneğin, iki sütunun eşleşmesi durumunda:
SELECT *
FROM calisanlar
FULL JOIN projeler ON calisanlar.calisan_id = projeler.calisan_id
AND projeler.birim = 'Bilgi Teknolojileri';
Bu örnekte, “calisanlar” ve “projeler” tablolarını hem çalışan ID’si hem de proje birimi üzerinden birleştiriyoruz.
Tablo Takma Adları ile FULL JOIN: “FULL JOIN” ifadesi, tabloları takma adlar (aliases) kullanarak birleştirmenizi sağlar. Bu, sorguların daha okunabilir ve yönetilebilir olmasına yardımcı olabilir.
SELECT *
FROM musteriler AS m
FULL JOIN siparisler AS s ON m.musteri_id = s.musteri_id;
Yukarıdaki örnekte, “musteriler” tablosuna “m” ve “siparisler” tablosuna “s” takma adları verilmiştir.
Eşleşmeyen Satırların Kontrolü: “FULL JOIN”, eşleşmeyen satırların sonuçlara dahil edilmesini sağlar. Eğer eşleşme olmazsa, ilgili tablonun ilgili sütunları NULL değerleri içerir.
SELECT *
FROM musteriler
FULL JOIN siparisler ON musteriler.musteri_id = siparisler.musteri_id;
Yukarıdaki örnekte, “musteriler” ve “siparisler” tablolarındaki tüm müşteri ve siparişleri getiriyoruz.
“FULL JOIN”, iki tablonun tüm verilerini almak ve eşleşmeyen satırları da görmek istediğiniz durumlarda kullanılır. Bu sayede her iki tablodaki tüm veriyi kapsayan bir sonuç kümesi elde edilir.
SQL’de “SELF JOIN”, bir tabloyu kendi içinde birleştirmek için kullanılan bir tür JOIN işlemidir. Bu, genellikle aynı tablo içindeki ilişkisel verileri analiz etmek veya ağaç yapıları gibi hiyerarşik verilerle çalışmak için kullanılır. İşte SQL’de “SELF JOIN” ifadesini derinlemesine anlatan birkaç önemli konu:
Temel Kullanım: Temel kullanım, aynı tabloyu belirli bir koşul üzerinden birleştirme yapmak içindir. Bu koşul genellikle aynı satırın bir sütunundaki değerlerin, başka bir satırın aynı sütunundaki değerlerle eşleşmesini kontrol eder.
SELECT e1.employeename, e2.employeename
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.employee_id;
Yukarıdaki örnekte, “employees” tablosunu kendisiyle birleştirerek, her çalışanın yöneticisini buluyoruz.
Tablo Takma Adları ile SELF JOIN:
SELF JOIN ifadesi, tabloyu takma adlar (aliases) kullanarak birleştirmenizi sağlar. Bu, sorguların daha okunabilir ve yönetilebilir olmasına yardımcı olabilir.
SELECT e1.employeename, e2.employeename
FROM employees AS e1
JOIN employees AS e2 ON e1.manager_id = e2.employee_id;
Yukarıdaki örnekte, “employees” tablosuna “e1” ve “e2” takma adları verilmiştir.
Hierarchical Data ile Kullanım: SELF JOIN, ağaç yapıları gibi hiyerarşik veri yapılarıyla çalışmak için sıkça kullanılır. Örneğin, çalışanlar ve yöneticiler arasındaki hiyerarşiyi bulmak için:
SELECT e1.employeename AS employee, e2.employeename AS manager
FROM employees AS e1
LEFT JOIN employees AS e2 ON e1.manager_id = e2.employee_id;
Yukarıdaki örnekte, her çalışanın yöneticisini buluyoruz ve bu bilgileri görüntülüyoruz.
Eşleşmeyen Satırların Kontrolü: SELF JOIN ile eşleşmeyen satırların kontrolü, genellikle LEFT JOIN veya RIGHT JOIN ile benzerdir. Ancak, bu durumda, bir satırın kendisi ile eşleşmesi dışında eşleşmeyen satırlar da gözlemlenebilir.
SELECT e1.employeename, e2.employeename
FROM employees AS e1
LEFT JOIN employees AS e2 ON e1.manager_id = e2.employee_id;
Yukarıdaki örnekte, her çalışanın yöneticisini buluyoruz ve bu bilgileri görüntülüyoruz. Her çalışanın kendisiyle eşleşmesi dışında eşleşmeyen satırlar da sonuç kümesine dahil edilir.
SELF JOIN, aynı tabloyu kendi içinde birleştirerek, ilişkisel verilerle çalışma ve hierarşik yapıları analiz etme konularında oldukça güçlü bir araçtır. Ancak, bu tür sorguları oluştururken dikkatli olunmalı ve sorguların doğru çalıştığından emin olunmalıdır.
SQL’de “UNION” operatörü, iki veya daha fazla SELECT ifadesinin sonuç kümesini birleştirmek için kullanılır. Bu operatör, tekrarlı satırları otomatik olarak çıkarır ve yalnızca benzersiz satırları içeren bir sonuç kümesi oluşturur.
Temel Kullanım:
Temel kullanım, iki veya daha fazla SELECT ifadesini UNION operatörü ile birleştirmek içindir. SELECT ifadeleri arasındaki sütun sayıları ve veri tipleri aynı olmalıdır.
SELECT satis_miktari, tarih FROM gunluk_satislar
UNION
SELECT iade_miktari, tarih FROM gunluk_iadeler;
Yukarıdaki örnekte, “gunluk_satislar” ve “gunluk_iadeler” tablolarındaki satış ve iade miktarlarını birleştiriyoruz.
UNION ALL: “UNION ALL” operatörü, “UNION” operatörüne benzer, ancak tekrarlı satırları otomatik olarak çıkarmaz. Bu nedenle, “UNION ALL” daha hızlı çalışabilir ancak sonuç kümesinde tekrarlı satırlar olabilir.
SELECT satis_miktari, tarih FROM gunluk_satislar
UNION ALL
SELECT iade_miktari, tarih FROM gunluk_iadeler;
Yukarıdaki örnekte, “gunluk_satislar” ve “gunluk_iadeler” tablolarındaki satış ve iade miktarlarını birleştirirken tekrarlı satırları koruyoruz.
Sütun İsimleri ve Veri Tipleri: UNION operatörü ile birleştirilen SELECT ifadeleri arasındaki sütun isimleri ve veri tipleri aynı olmalıdır. Aksi takdirde, bir hata alabilirsiniz.
SELECT ad, soyad FROM calisanlar
UNION
SELECT isim, NULL FROM musteriler;
Yukarıdaki örnekte, “calisanlar” ve “musteriler” tablolarından farklı sütun isimleri kullanıldığı için bir hata alabilirsiniz.
Sıralama: UNION operatörü sonuç kümesini otomatik olarak sıralar. Ancak, sıralama kriterini belirlemek istiyorsanız, her SELECT ifadesini ayrı ayrı sıralamalısınız.
SELECT ad, soyad FROM calisanlar
UNION
SELECT ad, soyad FROM musteriler
ORDER BY ad, soyad;
Yukarıdaki örnekte, sonuç kümesini “ad” ve “soyad” sütunlarına göre sıralıyoruz.
Sorgu İçinde UNION Kullanımı:
UNION operatörünü sorgu içinde de kullanabilirsiniz. Bu, birden fazla alt sorgudan gelen sonuçları birleştirmek için kullanışlıdır.
SELECT ad, soyad FROM calisanlar WHERE departman = 'IT'
UNION
SELECT ad, soyad FROM calisanlar WHERE departman = 'Muhasebe';
Yukarıdaki örnekte, “IT” ve “Muhasebe” departmanlarındaki çalışanları birleştiriyoruz.
UNION operatörü, tablolar arasında birleştirme yapmak yerine SELECT ifadeleri arasında birleştirme yapmak için kullanılır. Bu, farklı tablolardan veya sorgulardan gelen verileri tek bir sonuç kümesi olarak birleştirmek için kullanışlıdır.
SQL’de “GROUP BY” ifadesi, bir sorgudaki sonuç kümesini belirli bir sütuna göre gruplamak için kullanılır. Gruplandırma işlemi genellikle toplama işlemleriyle birlikte kullanılır, bu nedenle genellikle “GROUP BY” ile birlikte “SUM”, “COUNT”, “AVG” gibi toplama fonksiyonları kullanılır.
Temel Kullanım:
Temel kullanım, sorgudaki sonuçları belirli bir sütuna göre gruplamak içindir. Bu, özellikle bir sütundaki benzersiz değerlere göre toplama işlemleri yapmak için kullanışlıdır.
SELECT departman, COUNT(*) AS calisan_sayisi
FROM calisanlar
GROUP BY departman;
Yukarıdaki örnekte, “calisanlar” tablosundaki çalışanları “departman” sütununa göre gruplayarak, her departmandaki çalışan sayısını buluyoruz.
Birden Fazla Sütuna Göre Gruplama: “GROUP BY” ifadesi birden fazla sütuna göre gruplamayı destekler. Bu, sonuçları birincil gruplama sütunu içinde alt gruplara bölmek için kullanışlıdır.
SELECT departman, pozisyon, AVG(maas) AS ortalama_maas
FROM calisanlar
GROUP BY departman, pozisyon;
Yukarıdaki örnekte, “calisanlar” tablosundaki çalışanları hem “departman” hem de “pozisyon” sütunlarına göre gruplayarak, her departman ve pozisyondaki ortalama maaşı buluyoruz.
HAVING İle Kullanım: “HAVING” ifadesi, “GROUP BY” ifadesi ile birlikte kullanılır ve gruplama sonuçlarını filtrelemek için kullanılır. “HAVING” ifadesi, “WHERE” ifadesi gibi çalışır, ancak gruplama sonuçları üzerinde filtreleme yapar.
SELECT departman, COUNT(*) AS calisan_sayisi
FROM calisanlar
GROUP BY departman
HAVING COUNT(*) > 5;
Yukarıdaki örnekte, “calisanlar” tablosundaki departmanları gruplayarak, çalışan sayısı 5’ten fazla olan departmanları filtreliyoruz.
Gruplama Fonksiyonları: “GROUP BY” ifadesi genellikle toplama fonksiyonları ile birlikte kullanılır. Bu fonksiyonlar arasında “SUM”, “COUNT”, “AVG”, “MIN”, “MAX” gibi fonksiyonlar bulunur.
SELECT departman, AVG(maas) AS ortalama_maas, COUNT(*) AS calisan_sayisi
FROM calisanlar
GROUP BY departman;
Yukarıdaki örnekte, her departmandaki çalışan sayısını ve ortalama maaşı buluyoruz.
“GROUP BY” ifadesi, veritabanındaki büyük veri setlerinde belirli sütunlara göre gruplama ve toplama işlemleri gerçekleştirmek için önemlidir. Gruplama, veriyi daha anlamlı ve anlamaya daha uygun bir şekilde düzenlemek için kullanılır ve çeşitli raporlama ve analiz senaryolarında yaygın olarak kullanılır.
SQL’de “HAVING” ifadesi, “GROUP BY” ifadesi ile birlikte kullanılarak gruplama sonuçlarını filtrelemek için kullanılır. “HAVING” ifadesi, gruplama sonuçları üzerinde koşullar belirleyerek, belirli bir gruplama kriterini karşılamayan grupları filtreleme olanağı sağlar. İ
Temel Kullanım:
Temel kullanım, “GROUP BY” ifadesi ile birlikte “HAVING” ifadesini kullanarak belirli bir koşula uyan grupları seçmek içindir.
SELECT departman, COUNT(*) AS calisan_sayisi
FROM calisanlar
GROUP BY departman
HAVING COUNT(*) > 5;
Yukarıdaki örnekte, “calisanlar” tablosundaki departmanları gruplayarak, çalışan sayısı 5’ten fazla olan departmanları seçiyoruz.
Birden Fazla Koşul ile Kullanım: “HAVING” ifadesi birden fazla koşulu destekler. Bu, gruplama sonuçlarını daha spesifik bir şekilde filtrelemek için kullanışlıdır.
SELECT departman, AVG(maas) AS ortalama_maas, COUNT(*) AS calisan_sayisi
FROM calisanlar
GROUP BY departman
HAVING COUNT(*) > 5 AND AVG(maas) > 50000;
Yukarıdaki örnekte, çalışan sayısı 5’ten fazla olan departmanları ve ortalama maaşı 50,000’den fazla olan departmanları seçiyoruz.
Toplama Fonksiyonları ile Kullanım: “HAVING” ifadesi genellikle toplama fonksiyonları (örneğin, “SUM”, “AVG”, “COUNT”) ile birlikte kullanılır. Bu, gruplama sonuçları üzerinde toplama işlemleri yaparak belirli bir koşulu kontrol etmek için kullanışlıdır.
SELECT departman, AVG(maas) AS ortalama_maas
FROM calisanlar
GROUP BY departman
HAVING AVG(maas) > 50000;
Yukarıdaki örnekte, her departmandaki ortalama maaşı 50,000’den fazla olan departmanları seçiyoruz.
HAVING ile Agregat Olmayan Sütunlar: “HAVING” ifadesi genellikle “GROUP BY” ifadesi içindeki sütunlar üzerinde kullanılır. Ancak, “HAVING” ifadesi, gruplama sonuçları üzerinde bir koşul belirlemek için kullanıldığı için, agregat fonksiyonlara ihtiyaç duymaz. Bu nedenle, “HAVING” ifadesi içinde kullanılan sütunlar agregat fonksiyonlara tabi olmak zorunda değildir.
SELECT departman, pozisyon, AVG(maas) AS ortalama_maas
FROM calisanlar
GROUP BY departman, pozisyon
HAVING AVG(maas) > 50000;
Yukarıdaki örnekte, departman ve pozisyon bazında ortalama maaşı 50,000’den fazla olan grupları seçiyoruz.
“HAVING” ifadesi, “GROUP BY” ifadesi ile birlikte kullanılarak gruplama sonuçlarını filtreleme olanağı sağlar. Bu, özellikle toplama fonksiyonları kullanılarak yapılan gruplama işlemlerinden sonra belirli bir koşulu kontrol etmek istediğinizde kullanışlıdır.
“EXISTS” ifadesi, SQL’de bir alt sorgu içinde belirli bir koşulu kontrol etmek ve bu koşulun doğru olup olmadığına bağlı olarak bir dış sorgunun sonuçlarını filtrelemek için kullanılır. Bu ifade, genellikle bir alt sorgunun dönüş kümesinde en az bir satırın bulunup bulunmadığını kontrol etmek için kullanılır.
Temel Kullanım:
Temel kullanım, bir alt sorgu içinde belirli bir koşulu kontrol etmek ve bu koşulun doğru olması durumunda bir dış sorgunun sonuçlarını filtrelemek içindir.
SELECT *
FROM musteriler
WHERE EXISTS (
SELECT 1
FROM siparisler
WHERE siparisler.musteri_id = musteriler.musteri_id
);
Yukarıdaki örnekte, “musteriler” tablosundan müşterileri seçiyoruz, ancak sadece “siparisler” tablosunda bir siparişi olan müşterileri alıyoruz.
NOT EXISTS Kullanımı: “NOT EXISTS” ifadesi, bir alt sorgunun dönüş kümesinde hiçbir satırın bulunmamasını kontrol eder. Yani, alt sorgu belirtilen koşulu sağlamayan hiçbir satır döndürmezse, “NOT EXISTS” ifadesi doğru olur.
SELECT *
FROM musteriler
WHERE NOT EXISTS (
SELECT 1
FROM iadeler
WHERE iadeler.musteri_id = musteriler.musteri_id
);
Yukarıdaki örnekte, “musteriler” tablosundan müşterileri seçiyoruz, ancak “iadeler” tablosunda hiçbir iadesi olmayan müşterileri alıyoruz.
EXISTS ile Bağlantılı Kullanım: “EXISTS” ifadesi genellikle bir alt sorguda kullanılan bağlantı koşulları ile birleştirilir. Bu, alt sorgunun ana sorgu ile ilişkilendirilmiş belirli bir koşulu kontrol etmesine olanak tanır.
SELECT *
FROM calisanlar
WHERE EXISTS (
SELECT 1
FROM projeler
WHERE projeler.calisan_id = calisanlar.calisan_id
AND projeler.birim = 'Bilgi Teknolojileri'
);
Yukarıdaki örnekte, “calisanlar” tablosundan çalışanları seçiyoruz, ancak “projeler” tablosunda “Bilgi Teknolojileri” biriminde çalışanları alıyoruz.
EXISTS ile İlişkili Agregat Fonksiyonlar: “EXISTS” ifadesi genellikle alt sorguda kullanılan agregat fonksiyonlar ile birleştirilir. Bu, belirli bir koşulu sağlayan toplam satır sayısını kontrol etmek için kullanışlıdır.
SELECT departman, COUNT(*) AS calisan_sayisi
FROM calisanlar c
WHERE EXISTS (
SELECT 1
FROM projeler p
WHERE p.calisan_id = c.calisan_id
)
GROUP BY departman;
Yukarıdaki örnekte, her departmandaki çalışan sayısını sadece projede yer alan çalışanları içerecek şekilde filtreliyoruz.
“EXISTS” ifadesi, bir alt sorgunun sonuç kümesinde en az bir satırın bulunup bulunmadığını kontrol etmek için kullanılır. Bu, özellikle bir sorgunun belirli bir koşulu sağlaması durumunda diğer sorgunun çalışmasını kontrol etmek istediğinizde kullanışlıdır.
SQL’de “ANY” ve “ALL” ifadeleri, bir alt sorgunun dönüş kümesindeki değerleri karşılaştırmak için kullanılır. Bu ifadeler genellikle bir dış sorgunun bir alt sorgunun sonuçlarına bağlı olarak davranışını kontrol etmek için kullanılır.
Temel Kullanım:
“ANY” ifadesi, bir alt sorgunun dönüş kümesinde en az bir değerin belirli bir koşulu sağlayıp sağlamadığını kontrol etmek için kullanılır.
SELECT *
FROM calisanlar
WHERE maas > ANY (
SELECT maas
FROM calisanlar
WHERE departman = 'IT'
);
Yukarıdaki örnekte, “IT” departmanındaki çalışanlardan herhangi birinin maaşı, “calisanlar” tablosundaki diğer çalışanlardan büyükse, o çalışanları seçiyoruz.
NOT ANY Kullanımı: “NOT ANY” ifadesi, bir alt sorgunun dönüş kümesinde hiçbir değerin belirli bir koşulu sağlamamasını kontrol eder.
SELECT *
FROM musteriler
WHERE yas > NOT ANY (
SELECT yas
FROM musteriler
WHERE sehir = 'Ankara'
);
Yukarıdaki örnekte, “Ankara” şehrinde yaşayan müşterilerden hiçbirinin yaşının, diğer müşterilerden büyük olmaması durumunda, bu müşterileri seçiyoruz.
Temel Kullanım:
“ALL” ifadesi, bir alt sorgunun dönüş kümesindeki tüm değerlerin belirli bir koşulu sağlayıp sağlamadığını kontrol etmek için kullanılır.
SELECT *
FROM calisanlar
WHERE maas > ALL (
SELECT maas
FROM calisanlar
WHERE departman = 'Muhasebe'
);
Yukarıdaki örnekte, “Muhasebe” departmanındaki çalışanların maaşından daha yüksek bir maaşa sahip olan tüm çalışanları seçiyoruz.
NOT ALL Kullanımı: “NOT ALL” ifadesi, bir alt sorgunun dönüş kümesindeki tüm değerlerin belirli bir koşulu sağlamamasını kontrol eder.
SELECT *
FROM musteriler
WHERE yas > NOT ALL (
SELECT yas
FROM musteriler
WHERE sehir = 'Istanbul'
);
Yukarıdaki örnekte, “Istanbul” şehrinde yaşayan müşterilerin yaşından daha küçük bir yaşa sahip olmayan tüm müşterileri seçiyoruz.
Bu ifadeler, bir sorgunun sonuç kümesini belirli bir koşula bağlı olarak filtrelemek için güçlü bir araç sağlar. Ancak, kullanıldıkları yerde dikkatli bir şekilde anlaşılmalı ve mantıklı bir şekilde kullanılmalıdır.
“SELECT INTO” ifadesi, SQL’de bir sorgunun sonuç kümesini kullanarak yeni bir tablo oluşturmak için kullanılır. Bu ifade, belirli bir koşulu sağlayan veya belirli bir sorgu sonucunda elde edilen verilerle yeni bir tablo oluşturmak için kullanışlıdır.
Temel Kullanım:
Temel kullanım, bir sorgunun sonuç kümesini kullanarak yeni bir tablo oluşturmak içindir.
SELECT *
INTO yeni_tablo
FROM eski_tablo
WHERE belirli_kosul;
Yukarıdaki örnekte, “eski_tablo” tablosundan belirli bir koşulu sağlayan satırları seçerek ve bu satırları “yeni_tablo” adında yeni bir tablo oluşturarak kullanıyoruz.
Tablonun Yapısını Belirtme: “SELECT INTO” ifadesi, hedef tablonun yapısını otomatik olarak belirler. Ancak, isterseniz hedef tablonun yapısını manuel olarak belirleyebilirsiniz.
SELECT column1, column2
INTO yeni_tablo
FROM eski_tablo
WHERE belirli_kosul;
Yukarıdaki örnekte, “yeni_tablo” adında bir tablo oluşturuyoruz ve bu tablonun yapısını “column1” ve “column2” sütunları ile belirliyoruz.
Tablonun Varlığını Kontrol Etme: “SELECT INTO” ifadesini kullanmadan önce, hedef tablonun var olup olmadığını kontrol etmek iyi bir uygulama yöntemidir. Tablo zaten varsa, bir hata alabilirsiniz.
IF OBJECT_ID('yeni_tablo', 'U') IS NULL
BEGIN
SELECT *
INTO yeni_tablo
FROM eski_tablo
WHERE belirli_kosul;
END
Yukarıdaki örnekte, “yeni_tablo” adında bir tablonun var olup olmadığını kontrol ediyoruz ve eğer tablo yoksa, sorguyu gerçekleştiriyoruz.
SELECT INTO ve JOIN Kullanımı: “SELECT INTO” ifadesi, JOIN operatörleri ile birlikte kullanılabilir. Bu, birden fazla tablodan veri çekip, bu verilerle yeni bir tablo oluşturmak için kullanışlıdır.
SELECT a.column1, b.column2
INTO yeni_tablo
FROM tablo_a a
INNER JOIN tablo_b b ON a.id = b.id;
Yukarıdaki örnekte, “tablo_a” ve “tablo_b” tablolarını birleştirerek, belirli bir koşulu sağlayan satırları “yeni_tablo” adında yeni bir tablo oluşturuyoruz.
“SELECT INTO” ifadesi, bir sorgunun sonuç kümesini kullanarak yeni bir tablo oluşturmak için kullanışlı bir araçtır. Ancak, bu ifadeyi dikkatli bir şekilde kullanmalısınız çünkü mevcut verileri değiştirebilir veya silerek yeni bir tablo oluşturabilir. Bu nedenle, bu ifadeyi kullanmadan önce dikkatli bir şekilde düşünmelisiniz.
“INSERT INTO SELECT” ifadesi, SQL’de bir tabloya, bir başka tablodan veya sorgudan elde edilen verileri eklemek için kullanılır. Bu ifade, bir tablonun içeriğini başka bir tablodan veya sorgudan gelen verilerle doldurmak için kullanışlıdır.
Temel Kullanım:
Temel kullanım, bir tabloya başka bir tablodan veya sorgudan gelen verileri eklemek içindir.
INSERT INTO hedef_tablo (sutun1, sutun2, sutun3)
SELECT s1, s2, s3
FROM kaynak_tablo
WHERE belirli_kosul;
Yukarıdaki örnekte, “hedef_tablo” adlı tabloya, “kaynak_tablo” tablosundan belirli bir koşulu sağlayan satırları ekliyoruz.
Tüm Sütunları Seçme: Tüm sütunları seçmek için “SELECT *” ifadesini kullanabilirsiniz. Ancak, sütun sırası ve veri tipleri hedef ve kaynak tablolar arasında aynı olmalıdır.
INSERT INTO hedef_tablo
SELECT *
FROM kaynak_tablo
WHERE belirli_kosul;
Yukarıdaki örnekte, “hedef_tablo” tablosuna, “kaynak_tablo” tablosundan belirli bir koşulu sağlayan satırları ekliyoruz.
Dikkat Edilmesi Gerekenler:
Tablonun Varlığını Kontrol Etme: Hedef tablonun var olup olmadığını kontrol etmek iyi bir uygulama yöntemidir.
IF OBJECT_ID('hedef_tablo', 'U') IS NOT NULL
BEGIN
INSERT INTO hedef_tablo (sutun1, sutun2)
SELECT s1, s2
FROM kaynak_tablo
WHERE belirli_kosul;
END
Yukarıdaki örnekte, “hedef_tablo” adında bir tablonun var olup olmadığını kontrol ediyoruz ve eğer tablo varsa, veri eklemeyi gerçekleştiriyoruz.
INSERT INTO SELECT ile JOIN Kullanımı: “INSERT INTO SELECT” ifadesi, JOIN operatörleri ile birleştirilerek kullanılabilir.
INSERT INTO hedef_tablo (sutun1, sutun2)
SELECT k.s1, t.s2
FROM kaynak_tablo k
INNER JOIN diger_tablo t ON k.id = t.id;
Yukarıdaki örnekte, “kaynak_tablo” ve “diger_tablo” tablolarını birleştirerek, belirli bir koşulu sağlayan satırları “hedef_tablo” tablosuna ekliyoruz.
“INSERT INTO SELECT” ifadesi, tablolara veri eklemek için yaygın olarak kullanılan bir yöntemdir. Ancak, dikkatlice kullanılmalıdır çünkü bu ifade ile mevcut verileri değiştirebilir veya silerek yeni veri ekleyebilirsiniz. Veri yapınıza zarar vermemek için önce dikkatli bir şekilde düşünmelisiniz.
SQL’de “CASE” ifadesi, koşullu ifadeleri gerçekleştirmek için kullanılır. Bu ifade, belirli bir koşulu kontrol eder ve koşulun doğru veya yanlış olmasına bağlı olarak farklı değerlerin veya ifadelerin dönmesini sağlar. “CASE” ifadesi, SELECT, WHERE, ORDER BY ve diğer SQL ifadelerinde kullanılabilir.
Temel Kullanım:
Temel kullanım, bir koşulu kontrol ederek farklı değerlerin dönmesini sağlamak içindir.
SELECT
column1,
column2,
CASE
WHEN column3 > 0 THEN 'Pozitif'
WHEN column3 < 0 THEN 'Negatif'
ELSE 'Sıfır'
END AS durum
FROM
tablo_adı;
Yukarıdaki örnekte, “column3” değerine bağlı olarak “durum” sütununu belirliyoruz.
CASE İfadeleri ile Koşul İfadeleri: “CASE” ifadesi, koşullu ifadeleri destekler. Birden çok koşulu kontrol edebilir ve ilgili duruma bağlı olarak farklı değerleri döndürebilirsiniz.
SELECT
column1,
column2,
CASE
WHEN column3 > 0 AND column4 = 'Aktif' THEN 'Pozitif ve Aktif'
WHEN column3 < 0 AND column4 = 'Pasif' THEN 'Negatif ve Pasif'
ELSE 'Diğer Durumlar'
END AS durum
FROM
tablo_adı;
Yukarıdaki örnekte, “column3” ve “column4” değerlerine bağlı olarak “durum” sütununu belirliyoruz.
Sabit İfadeler veya Değerler: “CASE” ifadesi ile sabit ifadeler veya değerler de kullanabilirsiniz.
SELECT
column1,
column2,
CASE column3
WHEN 1 THEN 'Bir'
WHEN 2 THEN 'İki'
ELSE 'Diğer'
END AS sayi_durumu
FROM
tablo_adı;
Yukarıdaki örnekte, “column3” değerine bağlı olarak “sayi_durumu” sütununu belirliyoruz.
CASE İfadesi içinde Agregat Fonksiyonlar: “CASE” ifadesi, içinde agregat fonksiyonları da içerebilir. Bu, koşullara bağlı olarak toplu işlemleri gerçekleştirmek için kullanışlıdır.
SELECT
department,
AVG(CASE WHEN salary > 50000 THEN salary ELSE NULL END) AS avg_high_salary,
AVG(CASE WHEN salary <= 50000 THEN salary ELSE NULL END) AS avg_low_salary
FROM
employees
GROUP BY
department;
Yukarıdaki örnekte, her departmandaki çalışan maaşlarını 50,000’den büyük ve küçük olanlar için ayrı ayrı hesaplıyoruz.
“CASE” ifadesi, SQL sorgularında koşullu durumları ele almak ve çeşitli durumlar için farklı değerleri döndürmek için güçlü bir araçtır. Bu ifade, verilerinizi işlerken ve raporlar oluştururken dinamik ve esnek bir yaklaşım sağlar.
SQL’de NULL değerleri ile çalışmak için bir dizi özel fonksiyon ve operatör bulunmaktadır. Bu fonksiyonlar ve operatörler, NULL değerleri ile ilgili durumları kontrol etmek ve işlemek için kullanılır.
IS NULL ve IS NOT NULL Operatörleri:
Bu operatörler, bir alanın NULL olup olmadığını kontrol etmek için kullanılır.
SELECT * FROM tablo_adı WHERE sütun_adı IS NULL;
SELECT * FROM tablo_adı WHERE sütun_adı IS NOT NULL;
Yukarıdaki örneklerde, belirli bir sütunun NULL veya NULL olmayan değerlere sahip olduğu satırları seçiyoruz.
COALESCE Fonksiyonu: Bu fonksiyon, bir dizi ifadeyi değerlendirir ve ilk NULL olmayan ifadeyi döndürür.
SELECT COALESCE(sütun1, sütun2, 'Varsayılan Değer') AS yeni_sütun
FROM tablo_adı;
Yukarıdaki örnekte, sütun1 NULL ise sütun2’yi, sütun2 de NULL ise ‘Varsayılan Değer’i döndürüyoruz.
NULLIF Fonksiyonu: Bu fonksiyon, iki ifadeyi karşılaştırır ve eğer ifadeler eşitse NULL, değilse ilk ifadeyi döndürür.
SELECT NULLIF(sütun1, sütun2) AS yeni_sütun
FROM tablo_adı;
Yukarıdaki örnekte, sütun1 ve sütun2 eşitse NULL, değilse sütun1’i döndürüyoruz.
IFNULL ve NVL Fonksiyonları: IFNULL (MySQL’de) ve NVL (Oracle’da) fonksiyonları, bir değerin NULL olup olmadığını kontrol eder ve NULL ise belirtilen bir yedek değeri döndürür.
-- MySQL
SELECT IFNULL(sütun_adı, 'Yedek Değer') FROM tablo_adı;
-- Oracle
SELECT NVL(sütun_adı, 'Yedek Değer') FROM tablo_adı;
Yukarıdaki örneklerde, sütun_adı NULL ise ‘Yedek Değer’i döndürüyoruz.
CASE İfadesi ile NULL İşlemleri: “CASE” ifadesi, NULL değerleri ile çalışmak için kullanışlı bir araçtır. Belirli koşullara bağlı olarak NULL değerleriyle ilgili farklı işlemler gerçekleştirebilirsiniz.
SELECT
sütun1,
CASE
WHEN sütun2 IS NULL THEN 'NULL'
ELSE 'NULL Değil'
END AS durum
FROM tablo_adı;
Yukarıdaki örnekte, sütun2’nin NULL olup olmadığını kontrol ediyoruz ve duruma bağlı olarak farklı değerler döndürüyoruz.
Bu fonksiyonlar ve operatörler, SQL sorgularında NULL değerleri ile çalışırken kullanışlıdır ve veritabanı sorgularınızı daha esnek ve güvenilir hale getirmenize yardımcı olabilir.
SQL’de “Stored Procedure” (Saklanmış Prosedür), bir veya daha fazla SQL ifadesini içeren ve genellikle bir ad altında adlandırılan, ön tanımlanmış ve tekrar kullanılabilir bir veritabanı nesnesidir. Stored Procedure’lar, veritabanı yönetimi ve uygulama geliştirmesi açısından bir dizi avantaj sağlar.
Temel Tanımlama ve Çağrı:
Stored Procedure tanımlamak için genellikle CREATE PROCEDURE ifadesi kullanılır. Bu prosedürler daha sonra EXECUTE veya EXEC komutu ile çağrılabilir.
-- Stored Procedure tanımlama
CREATE PROCEDURE sp_GetCustomer
AS
BEGIN
SELECT * FROM Customers;
END;
-- Stored Procedure çağrısı
EXEC sp_GetCustomer;
Parametreler:
Stored Procedure’lara parametreler ekleyerek, prosedürlerin farklı değer setleri üzerinde çalışmasını sağlayabilirsiniz.
-- Parametreli Stored Procedure tanımlama
CREATE PROCEDURE sp_GetCustomerByID
@CustomerID INT
AS
BEGIN
SELECT * FROM Customers WHERE CustomerID = @CustomerID;
END;
-- Parametreli Stored Procedure çağrısı
EXEC sp_GetCustomerByID @CustomerID = 1;
Çıkış Parametreleri ve ReturnValue:
Stored Procedure’lardan değer döndürmek için çıkış parametreleri veya RETURN ifadesi kullanılabilir.
-- Çıkış parametresi kullanımı
CREATE PROCEDURE sp_GetCustomerCount
@Count INT OUTPUT
AS
BEGIN
SELECT @Count = COUNT(*) FROM Customers;
END;
-- Çıkış parametresi kullanımı
DECLARE @ResultCount INT;
EXEC sp_GetCustomerCount @Count = @ResultCount OUTPUT;
PRINT 'Customer Count: ' + CAST(@ResultCount AS VARCHAR);
IF, WHILE ve Diğer Kontrol Yapıları:
Stored Procedure içinde kontrol yapıları (IF, WHILE, vb.) kullanarak koşullar ve döngüler oluşturabilirsiniz.
CREATE PROCEDURE sp_GetCustomerByCity
@City NVARCHAR(50)
AS
BEGIN
IF @City IS NOT NULL
BEGIN
SELECT * FROM Customers WHERE City = @City;
END
ELSE
BEGIN
PRINT 'City parameter is required.';
END
END;
TRY-CATCH Blokları:
Hata yönetimi için TRY ve CATCH blokları kullanılabilir. Bu bloklar, bir hata oluştuğunda prosedürün nasıl davranması gerektiğini belirler.
CREATE PROCEDURE sp_InsertCustomer
@CustomerName NVARCHAR(100)
AS
BEGIN
BEGIN TRY
INSERT INTO Customers (CustomerName) VALUES (@CustomerName);
END TRY
BEGIN CATCH
PRINT 'An error occurred: ' + ERROR_MESSAGE();
END CATCH
END;
Temp Tables ve Table Variables:
Stored Procedure içinde geçici tablolar (#temp_table) veya tablo değişkenleri (@table_variable) oluşturarak geçici sonuç setleri depolayabilirsiniz.
CREATE PROCEDURE sp_GetCustomerByAge
@Age INT
AS
BEGIN
DECLARE @TempTable TABLE (
CustomerID INT,
CustomerName NVARCHAR(100)
);
INSERT INTO @TempTable (CustomerID, CustomerName)
SELECT CustomerID, CustomerName FROM Customers WHERE Age = @Age;
SELECT * FROM @TempTable;
END;
Stored Procedure’lar, veritabanı yönetimi, güvenlik ve uygulama performansını artırmak için kullanışlıdır. Ayrıca, kod tekrarını önler ve karmaşık sorguları daha modüler hale getirerek bakımı kolaylaştırır. Stored Procedure’lar, genellikle büyük ve karmaşık veritabanı uygulamalarında çok sayıda sorgu ve işlemi koordine etmek için kullanılır.
Bir sonraki yazıda görüşmek dileğiyle!”