Sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Java JDBC ile Elasticsearch'de SQL sorgusu yazabilir miyim?

Evet, Java JDBC kullanarak Elasticsearch'de SQL sorguları yazabilirsiniz.



Bunun için iki temel yöntem vardır:


1. Elasticsearch SQL Plugin:


Elasticsearch'e yüklenebilen bir plugindir.

SQL'e benzer bir dil kullanarak Elasticsearch sorguları oluşturmanıza imkan verir.

Plugin'in sunduğu özel fonksiyonlar ile Elasticsearch'e özgü işlemleri de gerçekleştirebilirsiniz.

Kurulum ve kullanım detayları için: https://www.elastic.co/elasticsearch/sql

2. JDBC Driver:


Elasticsearch'e JDBC ile bağlanmanızı sağlayan bir sürücü yazılımıdır.

SQL sorgularınızı JDBC API'si aracılığıyla çalıştırabilirsiniz.

Çeşitli JDBC driver seçenekleri mevcuttur:

JDBC for Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-jdbc.html

Logstash JDBC Input Plugin: https://github.com/logstash-plugins/logstash-input-jdbc

Her iki yöntemin de kendine özgü avantajları ve dezavantajları vardır:


Elasticsearch SQL Plugin:


Avantajları:


Kullanımı daha kolay, SQL'e daha yakın bir dil sunar.

Elasticsearch'e özgü fonksiyonlara erişim sağlar.

Dezavantajları:


Daha az esneklik sunar.

Karmaşık sorgularda performans sorunları yaşayabilir.

JDBC Driver:


Avantajları:


Daha fazla esneklik sunar.

Karmaşık sorguları daha verimli çalıştırabilir.

Dezavantajları:


Kullanımı daha karmaşıktır.

Elasticsearch'e özgü fonksiyonlara erişim için ek kodlamaya ihtiyaç duyulabilir.

Hangi yöntemi seçmeniz gerektiği:


Basit sorgular ve hızlı başlangıç için: Elasticsearch SQL Plugin

Karmaşık sorgular ve daha fazla esneklik için: JDBC Driver

Örnek:


Aşağıdaki kod, JDBC for Elasticsearch kullanarak Elasticsearch'e bir SQL sorgusu gönderir:


Java

import com.amazon.elasticsearch.driver.client.JestClient;

import com.amazon.elasticsearch.driver.geo.GeoPoint;

import com.amazon.elasticsearch.driver.indices.Index;

import com.amazon.elasticsearch.driver.indices.Mapping;

import com.amazon.elasticsearch.driver.query.MatchAllQuery;

import com.amazon.elasticsearch.driver.query.Query;

import com.amazon.elasticsearch.driver.search.SearchRequest;

import com.amazon.elasticsearch.driver.search.SearchResponse;


public class Example {


    public static void main(String[] args) {

        JestClient client = new JestClient("localhost", 9200);


        // Döküman ekleme

        Index index = new Index("my-index");

        Mapping mapping = new Mapping("my-type");

        mapping.addField("name", "text");

        mapping.addField("location", "geo_point");


        client.createIndex(index, mapping);


        // SQL sorgusu oluşturma

        String sql = "SELECT * FROM my-index WHERE location NEAR '41.999999,28.999999'";


        // JDBC ile sorguyu çalıştırma

        SearchRequest request = new SearchRequest(index);

        Query query = new MatchAllQuery();

        request.setQuery(query);


        SearchResponse response = client.executeSearch(request);


        // Sonuçları işleme

        for (SearchResult hit : response.getHits()) {

            System.out.println(hit.getSource().get("name"));

        }

    }

}

Kodu dikkatli kullanın.

Bu örnekte, "my-index" adlı bir indekse "name" ve "location" alanlarına sahip bir döküman eklenir. Daha sonra, "location" alanı belirli bir koordinata yakın olan tüm dökümanları bulmak için bir SQL sorgusu çalıştırılır.


Not: Yukarıdaki kod sadece basit bir örnektir. Daha karmaşık sorgular için JDBC driver'ın dokümantasyonuna bakabilirsiniz.

Advanced SQL işlemleri ve örnek sorgularla senaryolar



Elbette, SQL (Structured Query Language) veritabanı yönetiminde kullanılan bir dildir ve karmaşık veri setleriyle çalışırken oldukça güçlüdür. İşte bazı ileri düzey SQL işlemleri ve bunlara ait örnek sorgular:


1. JOIN İşlemleri

Senaryo: İki farklı tablodaki verileri birleştirme

Örnek Sorgu:


sql

Copy code

SELECT employees.name, departments.name

FROM employees

JOIN departments ON employees.department_id = departments.id;

2. Alt Sorgular (Subqueries)

Senaryo: Bir sorgu içinde başka bir sorgu çalıştırma

Örnek Sorgu:


sql

Copy code

SELECT name

FROM employees

WHERE department_id IN (SELECT id FROM departments WHERE name = 'IT');

3. Pencere Fonksiyonları (Window Functions)

Senaryo: Veri üzerinde gruplama yapmadan istatistiksel işlemler gerçekleştirme

Örnek Sorgu:


sql

Copy code

SELECT name, salary, AVG(salary) OVER (PARTITION BY department_id) as avg_department_salary

FROM employees;

4. Common Table Expressions (CTE)

Senaryo: Karmaşık sorguları daha anlaşılır hale getirme

Örnek Sorgu:


sql

Copy code

WITH regional_sales AS (

  SELECT region, SUM(amount) AS total_sales

  FROM orders

  GROUP BY region

)

SELECT region

FROM regional_sales

WHERE total_sales > (SELECT AVG(total_sales) FROM regional_sales);

5. İndeksleme ve Performans Optimizasyonu

Senaryo: Sorgu hızını artırmak için veritabanında indeks oluşturma

Örnek Sorgu:


sql

Copy code

CREATE INDEX idx_employee_name ON employees(name);

6. Trigger Kullanımı

Senaryo: Belirli bir veritabanı işlemi gerçekleştiğinde otomatik olarak başka işlemlerin tetiklenmesi

Örnek Sorgu:


sql

Copy code

CREATE TRIGGER log_salary_change

AFTER UPDATE OF salary ON employees

FOR EACH ROW

BEGIN

  INSERT INTO salary_audit(employee_id, old_salary, new_salary, change_date)

  VALUES(:OLD.id, :OLD.salary, :NEW.salary, CURRENT_TIMESTAMP);

END;

7. Recursive CTEs

Senaryo: Kendini tekrar eden sorgular yazma, özellikle hiyerarşik veri yapıları için

Örnek Sorgu:


sql

Copy code

WITH RECURSIVE subordinates AS (

  SELECT id, name, manager_id

  FROM employees

  WHERE name = 'John Doe'

  UNION ALL

  SELECT e.id, e.name, e.manager_id

  FROM employees e

  INNER JOIN subordinates s ON s.id = e.manager_id

)

SELECT * FROM subordinates;

Bu örnekler SQL'in güçlü ve esnek yapısını göstermektedir. Gerçek dünya uygulamalarında, bu sorguların veritabanınızın yapısına ve ihtiyaçlarınıza göre uyarlanması gerekebilir.


Elbette, SQL'in ileri düzey özelliklerine dair daha fazla senaryo ve örnek sorguları aşağıda bulabilirsiniz:


8. GROUP BY ve HAVING ile Karmaşık Gruplama

Senaryo: Belirli kriterlere göre gruplanmış veriler üzerinde koşullu sorgular yapmak

Örnek Sorgu:


sql

Copy code

SELECT department_id, AVG(salary)

FROM employees

GROUP BY department_id

HAVING AVG(salary) > 50000;

9. EXISTS ve NOT EXISTS Kullanımı

Senaryo: Bir alt sorgunun sonucuna göre koşullu filtreleme yapmak

Örnek Sorgu:


sql

Copy code

SELECT name

FROM employees

WHERE EXISTS (SELECT 1 FROM department WHERE id = employees.department_id AND name = 'HR');

10. CASE WHEN Kullanımı

Senaryo: Sorgu içinde koşullu mantık uygulamak

Örnek Sorgu:


sql

Copy code

SELECT name, salary,

       CASE 

           WHEN salary > 60000 THEN 'High'

           WHEN salary BETWEEN 40000 AND 60000 THEN 'Medium'

           ELSE 'Low'

       END AS salary_range

FROM employees;

11. Pivot Tablolar

Senaryo: Verileri yeniden şekillendirerek farklı bir bakış açısı kazandırmak

Örnek Sorgu:


sql

Copy code

SELECT * 

FROM (

  SELECT department, salary

  FROM employees

) AS source_table

PIVOT (

  AVG(salary)

  FOR department IN ('Sales', 'HR', 'IT', 'Finance')

) AS pivot_table;

12. Veritabanı İşlemleri (Transaction Management)

Senaryo: Birden fazla işlemi bir işlem bloğu olarak gruplandırmak

Örnek Sorgu:


sql

Copy code

BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;

UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;

13. Veri Tiplerini ve Fonksiyonlarını Kullanma

Senaryo: Özel veri tipleri ve fonksiyonlarla çalışmak

Örnek Sorgu:


sql

Copy code

SELECT name, CAST(salary AS DECIMAL(10,2))

FROM employees;

14. FULL OUTER JOIN Kullanımı

Senaryo: İki tabloyu birleştirirken, her iki tablodaki tüm kayıtları dahil etmek

Örnek Sorgu:


sql

Copy code

SELECT employees.name, departments.name

FROM employees

FULL OUTER JOIN departments ON employees.department_id = departments.id;

15. Özel Fonksiyonlar Oluşturma

Senaryo: Özel durumlar için kullanıcı tanımlı fonksiyonlar yazmak

Örnek Sorgu:


sql

Copy code

CREATE FUNCTION calculate_bonus(salary DECIMAL)

RETURNS DECIMAL

BEGIN

  RETURN salary * 0.1;

END;

Bu örnekler, SQL'in çeşitliliğini ve veritabanı sorgulama ve yönetimindeki gücünü ortaya koymaktadır. Veritabanınızın yapısına ve iş ihtiyaçlarınıza göre bu sorguları uyarlamak önemlidir.

SQL Konu anlatımı, SSS ve Cevapları, Interview Soruları ve Cevapları (Örnek Sorgular İle)



SQL (Structured Query Language), veritabanı yönetimi ve işlemleri için kullanılan bir programlama dilidir. SQL, ilişkisel veritabanlarından veri çekmek, eklemek, güncellemek veya silmek için kullanılır. Bu nedenle, SQL'yi bilen biri, ilişkisel veritabanı yönetim sistemleri (RDBMS) üzerinde tam kontrol sahibi olabilir. SQL'in bir diğer önemli yönü ise tüm modern veritabanı sistemleri (MySQL, Oracle, PostgreSQL, SQLite, Microsoft SQL Server vb.) tarafından desteklenmesidir.


SQL dilinde dört ana işlem türü bulunmaktadır:


SELECT - veritabanından veri çeker

INSERT - veritabanına yeni veri ekler

UPDATE - veritabanındaki mevcut veriyi günceller

DELETE - veritabanından veriyi siler

Bunlar SQL'in temel işlemleri olmasına rağmen, daha karmaşık sorgular ve işlemler için birçok ekstra özellik ve fonksiyon sunar. İşte bazıları:


WHERE ve HAVING: belirli koşullara uyan verileri filtrelemek için kullanılır.

JOIN: İki veya daha fazla tabloyu belirli bir kriter etrafında birleştirmek için kullanılır.

GROUP BY: Verileri belirli bir kritere göre gruplamak için kullanılır.

ORDER BY: Verileri belirli bir kritere göre sıralamak için kullanılır.

SQL, veri analitiği, veritabanı yönetimi, veritabanı tasarımı ve daha birçok alanda kullanılır. Bu nedenle, veri ile çalışmak isteyen hemen hemen herkes için önemli bir beceridir. Bu, veri analistlerinden yazılım mühendislerine, veri bilimcilerine ve daha fazlasına kadar bir dizi rol içerir. SQL'yi öğrenmek, bu rollerdeki profesyonellerin veritabanlarından en iyi şekilde yararlanmalarını sağlar.


SQL'in sunduğu bir diğer önemli özellik de veritabanı oluşturma ve düzenlemektir. Bu, şu anahtar kelimelerle gerçekleştirilir:


CREATE: Yeni bir tablo oluşturur veya yeni bir veritabanı oluşturur.

ALTER: Mevcut bir tabloyu değiştirmek veya değişiklik yapmak için kullanılır.

DROP: Mevcut bir tabloyu veya veritabanını siler.

Veritabanı ilişkilerini ve kısıtlamalarını yönetmek için de SQL kullanılır. Örneğin, bir FOREIGN KEY kısıtlaması, bir tablodaki bir sütunun başka bir tabloda birincil anahtar (PRIMARY KEY) olarak tanımlanmış bir sütuna bağlanmasını sağlar. Bu, veri bütünlüğünü korumak ve tablolar arasındaki ilişkileri tanımlamak için önemlidir.


Bunun yanı sıra, SQL ayrıca bir dizi veri manipülasyon fonksiyonu ve operatörü sunar. Bunlar arasında metin işleme fonksiyonları, tarih ve saat işleme fonksiyonları ve matematiksel işlemler bulunur. SQL'ye özgü olan bir özellik de NULL değerlerini yönetmek için kullanılan IS NULL ve IS NOT NULL operatörleridir.


Son olarak, SQL, kullanıcıların belirli bir veritabanında ne yapabileceğini belirlemek için kullanılan bir dizi izin ve rol yönetimi özelliği sunar. GRANT ve REVOKE anahtar kelimeleri, belirli bir kullanıcının bir veritabanında veya tabloda ne yapabileceğini belirlemek için kullanılır.


SQL, veritabanı teknolojisi konusunda temel bir bileşendir ve günümüzdeki çok sayıda uygulamanın ve hizmetin çalışmasını sağlar. Bir veritabanı oluşturma, yönetme ve ondan veri çekme becerisi, bilgi çağında önemli bir beceri olarak kabul edilir.

SQL ile veritabanı yönetimine daha derinlemesine bakalım:


Veritabanı Yönetimi: SQL, veritabanı oluşturma (CREATE DATABASE), silme (DROP DATABASE) ve seçme (USE DATABASE) gibi veritabanı düzeyinde işlemler yapabilme yeteneği sağlar.


Tablo Yönetimi: SQL, tabloları oluşturmak (CREATE TABLE), düzenlemek (ALTER TABLE) ve silmek (DROP TABLE) için kullanılır. CREATE TABLE ifadesi, tablo oluştururken veritabanı şemasını (sütunların adları, veri türleri ve diğer kısıtlamalar) tanımlamanızı sağlar.


İndeks Yönetimi: SQL, veritabanındaki verilere daha hızlı erişim sağlamak için indeksler oluşturabilir (CREATE INDEX). Indeksler, genellikle WHERE ifadesi ile sorgularda kullanılan sütunlarda belirlenir.


Görünümler (Views): SQL, çeşitli tablolardan alınan sonuçları birleştirerek tek bir tablo gibi görünen görünümleri (views) oluşturabilir (CREATE VIEW). Bu, karmaşık sorguları basitleştirebilir ve veri güvenliğini sağlamaya yardımcı olabilir.


Yedekleme ve Geri Yükleme: SQL, veritabanını yedeklemek (BACKUP DATABASE) ve geri yüklemek (RESTORE DATABASE) için komutlar sunar. Bu, veri kaybını önlemek için kritik bir işlevdir.


Stored Procedures ve Functions: SQL, Stored Procedures ve Functions oluşturabilme yeteneği sunar. Bunlar, SQL ifadelerinin ön tanımlı kümeleridir ve tekrar tekrar kullanılmaları gereken karmaşık işlemleri basitleştirebilir.


Triggers: SQL, belirli bir olayın (INSERT, UPDATE, DELETE) gerçekleşmesi sonucunda otomatik olarak çalışacak bir dizi SQL ifadesi tanımlamanıza olanak sağlar.


Bu, SQL'nin birçok özelliği ve kabiliyetiyle veritabanı yönetiminde nasıl kullanılabileceğine dair genel bir bakıştır. Bu özellikler ve yetenekler, SQL'nin hem veri analitiği hem de veritabanı yönetimi alanlarında güçlü ve esnek bir dil olmasını sağlar. Bu, SQL'yi öğrenmek için önemli nedenlerden biridir.


Tabii ki, SQL'in daha spesifik özelliklerine bakalım:


Veri Tipi:

SQL, metin, sayı, tarih/zaman ve daha birçok veri tipini destekler. Bu, veritabanında hangi tür verinin saklanacağını belirlemenizi sağlar. Farklı veri türlerinin yanı sıra, SQL ayrıca NULL değerlerini de destekler, bu sayede bir alanın değerinin bilinmediğini veya mevcut olmadığını belirtebilirsiniz.


Aggregate Functions:

SQL, COUNT, SUM, AVG, MAX ve MIN gibi toplama fonksiyonları sunar. Bu fonksiyonlar, belirli bir grup veri üzerinde genel hesaplamalar yapmanızı sağlar. Örneğin, COUNT(*) ifadesi bir tablodaki satır sayısını döndürür.


Subqueries:

SQL, bir sorgu içinde başka bir sorgu çalıştırma yeteneği sunar, buna subquery (alt sorgu) denir. Alt sorgular genellikle WHERE veya HAVING ifadelerinde kullanılır.


Transactions:

SQL, işlemleri destekler, bu sayede bir grup ifadenin tümünün başarılı bir şekilde çalışmasını veya hiçbirinin çalışmamasını garanti eder. Bu, COMMIT ve ROLLBACK ifadeleri ile kontrol edilir ve genellikle bir işlemin tamamlanmaması durumunda veritabanı bütünlüğünü korumak için kullanılır.


Security:

SQL, veritabanı güvenliğini yönetmek için bir dizi araç ve komut sağlar. Kullanıcı izinlerini belirlemek için GRANT ve REVOKE ifadeleri kullanılır. Ayrıca, kullanıcılara ve rollerine özgü izinler ayarlayabilirsiniz.


Error Handling:

SQL, hataları ele almak için TRY...CATCH blokları gibi kontrol yapılarını destekler. Bu, bir hata durumunda uygulamanın nasıl tepki vereceğini belirlemenizi sağlar.


Bu özellikler, SQL'nin veritabanı işlemlerinde ne kadar güçlü ve esnek olduğunu gösterir. Veritabanı yönetimi ve veri manipülasyonu için bir dizi araç ve yetenek sunar. Bu yüzden SQL, veri analitiği, veritabanı yönetimi, veri bilimi ve daha birçok alanda bir temel beceri olarak görülür.


SQL'in daha gelişmiş özelliklerinden bazılarına bakalım:


Pencere Fonksiyonları:

Pencere fonksiyonları, veri kümesinin belirli "pencereler" veya alt kümeleri üzerinde hesaplamalar yapmanıza olanak sağlar. Bu tür fonksiyonlar, örneğin, çalışanların maaşlarından en yüksek olanı bulma veya her bir çalışanın maaşının bölüm genelindeki ortalama maaşa göre konumunu belirleme gibi işlemlerde kullanılabilir.


Common Table Expressions (CTE):

CTE'ler geçici sonuç setleri oluşturmanıza olanak sağlar. Bu sonuç setleri, bir sorgu içerisinde bir veya birden fazla kez kullanılabilir ve genellikle karmaşık sorguları daha okunabilir ve anlaşılır hale getirmek için kullanılır.


Prepared Statements:

Hazırlanmış ifadeler, SQL sorgularını daha güvenli ve daha hızlı hale getirir. Bu ifadeler, önceden derlenir ve çalıştırıldığında belirli değerlerle doldurulur. Bu, SQL Injection gibi güvenlik tehditlerini önlemeye yardımcı olabilir.


Full-Text Search:

Tam metin arama, metin tabanlı alanlarda karmaşık aramalar yapmanızı sağlar. Bu, bir blog gönderisinde veya bir kitapta belirli bir kelime veya ifadeyi bulmak gibi kullanım durumları için kullanılabilir.


Recursive Queries:

Özyinelemeli sorgular, bir sorgunun kendini tekrar çağırmasına olanak sağlar. Bu genellikle hiyerarşik veya ağaç tabanlı veri yapılarında kullanılır, örneğin bir çalışanın yönetim hiyerarşisini belirlemek için.


Veri Tipi Dönüşümü:

SQL, veri tipi dönüşümlerini destekler. Bu, bir veri tipini başka bir veri tipine dönüştürmenize olanak sağlar, örneğin bir metin alanını bir tarih veya sayıya dönüştürme.


Veri Düzleştirmesi ve Normalizasyonu:

SQL, veri düzleştirmesi (flattening) ve normalizasyonu için araçlar sunar. Bu, veri bütünlüğünü korumak ve veritabanı performansını optimize etmek için kullanılır.


Partisyonlama:

SQL, büyük veritabanı tablolarını daha küçük, daha yönetilebilir parçalara (partition) bölmek için kullanılır. Bu, veri yönetimini ve sorgu performansını iyileştirebilir.


Bu özellikler, SQL'nin veri analitiği ve veritabanı yönetimi alanlarında çok sayıda çeşitli ve karmaşık görevi yerine getirebilecek güçlü ve esnek bir dil olduğunu gösterir. Bu, veritabanı profesyonellerinin, veri analistlerinin, yazılım geliştiricilerin ve diğer teknoloji profesyonellerinin SQL'yi öğrenmeleri için pek çok neden sunar.


SQL, hem kullanımı hem de anlaması kolay olması ve verileri güvenli bir şekilde saklama, işleme ve analiz etme yeteneği nedeniyle sektör genelinde yaygın olarak kullanılır. SQL'in gelişmiş konularına daha da derinlemesine girelim:


İşlem İzolasyonu ve Kilitleme: SQL, çok kullanıcılı veritabanı sistemlerinde veri bütünlüğünü korumak için işlem izolasyonu ve kilitleme mekanizmaları sunar. İşlem izolasyonu, bir işlem sırasında yapılan değişikliklerin diğer işlemler tarafından görülmemesini sağlar. Kilitleme ise, aynı veri üzerinde eşzamanlı değişiklikleri önlemek için kullanılır.


Optimizasyon: SQL, sorgu optimizasyonu için bir dizi araç ve teknik sunar. Sorgu optimizasyonu, bir sorgunun daha hızlı çalışması için kullanılır. SQL sorgularınızı nasıl yazdığınıza ve hangi indeksleri kullandığınıza bağlı olarak, sorgu performansı önemli ölçüde değişebilir.


Veri Entegrasyonu: SQL, farklı veri kaynaklarından veri çekme ve bu verileri birleştirme yeteneğine sahiptir. Bu, veritabanları, dosyalar veya API'ler gibi farklı veri kaynaklarından gelen verileri birleştirmek ve analiz etmek için kullanılır.


Yönetim Araçları: SQL, veritabanı yönetimine yardımcı olmak için bir dizi yönetim aracı ve yardımcı program sağlar. Bu araçlar, veritabanı yedekleme, geri yükleme, denetim, izleme ve performans ayarlaması gibi görevleri gerçekleştirmenize yardımcı olur.


Metadata Yönetimi: SQL, veritabanınızın şeması hakkında bilgi edinmek için METADATA komutlarını destekler. Bu, veritabanınızın tablolarını, sütunlarını, indekslerini ve diğer özelliklerini anlamanıza yardımcı olabilir.


SQL, güçlü ve esnek bir dil olmanın yanı sıra, büyük ölçekli, dağıtılmış ve çok kullanıcılı veritabanı sistemlerinde çalışmak için de uygundur. Bu, hem küçük ölçekli projelerde hem de büyük, karmaşık veritabanı uygulamalarında SQL'yi ideal bir seçenek yapar.


SQL Advanced konular detaylı anlatım


Elbette! İşte SQL'nin ileri düzey konularından bazılarının detaylı açıklamaları:


Pencere Fonksiyonları (Window Functions):

Pencere fonksiyonları, bir sorgu sonucu üzerinde çalışırken, sonuç kümesinin belirli bir penceresine uygulanabilen özel fonksiyonlardır. Bu fonksiyonlar, her bir satır için hesaplamalar yaparken, sorgu sonucunu segmentlere ayırır. Pencere fonksiyonları, ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, SUM, AVG, MIN, MAX, COUNT gibi işlemleri yapmak için kullanılabilir.

sql

Copy code

SELECT ProductName, UnitPrice,

       SUM(UnitPrice) OVER (PARTITION BY CategoryID) AS CategoryTotal,

       RANK() OVER (ORDER BY UnitPrice DESC) AS PriceRank

FROM Products;

Karmaşık Sorgular ve İlişkili Alt Sorgular:

Karmaşık sorgular, birden fazla tablo veya sorgu içeren ve daha karmaşık veri çekme veya işlemleri gerçekleştiren sorgulardır. İlişkili alt sorgular, dış sorgudan değer alabilen ve her bir dış sorgu satırı için çalışabilen alt sorgulardır. İlişkili alt sorgular, genellikle JOIN ifadelerinin yerine geçer ve daha karmaşık sorguların oluşturulmasına olanak tanır.

sql

Copy code

SELECT CustomerName 

FROM Customers

WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE Quantity > 10);

sql

Copy code

SELECT e1.EmployeeName

FROM Employees e1

WHERE 5 > (SELECT COUNT(*) FROM Employees e2 WHERE e2.Salary > e1.Salary);

CTE (Common Table Expressions):

CTE'ler, bir sorgu içinde geçici olarak tanımlanan ve bu sorguda kullanılan bir tabloya benzer bir yapıdır. CTE'ler, daha karmaşık sorguları basitleştirmek, okunabilirliği artırmak ve tekrar kullanılabilirliği sağlamak için kullanılır. CTE'ler, WITH ifadesiyle başlar ve ardından sorgu tanımı gelir.

sql

Copy code

WITH SalesCTE AS (

    SELECT ProductID, SUM(Quantity) AS TotalSales

    FROM Sales

    GROUP BY ProductID

)

SELECT ProductID, TotalSales

FROM SalesCTE

WHERE TotalSales > 1000;

Geçici Tablolar (Temporary Tables):

Geçici tablolar, bir SQL oturumu boyunca var olan ve oturum sona erdiğinde otomatik olarak silinen tablolardır. Geçici tablolar, genellikle bir veri kümesi üzerinde karmaşık hesaplamalar yapmak, ara sonuçları tutmak veya geçici veri depolamak için kullanılır. Geçici tablolar, CREATE TABLE ifadesiyle oluşturulur ve veriler kullanıldıktan sonra DROP TABLE ifadesiyle silinir.

sql

Copy code

CREATE TEMPORARY TABLE temp_Orders AS

SELECT * FROM Orders

WHERE OrderDate > '2023-01-01';

JSON Veri İşleme (JSON Functions):

JSON verileri, modern uygulamalarda yaygın olarak kullanılan bir veri formatıdır. SQL'de JSON verileri üzerinde işlemler yapmak için özel JSON fonksiyonları bulunur. JSON_VALUE, JSON_QUERY, JSON_MODIFY gibi fonksiyonlar, JSON verilerini sorgulamak, dönüştürmek ve işlemek için kullanılır.

sql

Copy code

SELECT JSON_VALUE(CustomerInfo, '$.Name') AS CustomerName

FROM Customers;


Dinamik Sorgular (Dynamic Queries):

Dinamik sorgular, çalışma zamanında oluşturulan ve değişkenlik gösteren sorgulardır. Bu sorgular, kullanıcı girişine veya çalışma zamanı koşullarına göre sorgu mantığını dinamik olarak ayarlamak için kullanılır. Dinamik sorgular, CONCAT veya + operatörleriyle metin birleştirme, EXECUTE veya sp_executesql ile sorgu çalıştırma gibi yöntemlerle oluşturulabilir.


sql

Copy code

DECLARE @City NVARCHAR(50);

SET @City = 'New York';

DECLARE @SQL NVARCHAR(MAX);

SET @SQL = 'SELECT * FROM Customers WHERE City = ''' + @City + '''';

EXECUTE sp_executesql @SQL;

Dış Veritabanlarına Bağlanma (Connecting to External Databases):

SQL, farklı veritabanı sistemleriyle etkileşim kurma yeteneğine sahiptir. Bu, farklı veritabanları arasında veri aktarımı, veri senkronizasyonu veya uzak veritabanı kaynaklarına erişim gibi senaryolarda kullanılabilir. Bağlantı dizesi ve bağlantı nesneleri aracılığıyla farklı veritabanlarına bağlanmak ve sorgularınızı gerçekleştirmek mümkündür.


sql

Copy code

SELECT *

FROM ExternalDB.dbo.Customers;

Dinamik Tablo Oluşturma (Dynamic Table Creation):

SQL'de dinamik olarak tablo oluşturmak, sorgu çalışma zamanında tabloları oluşturmak için kullanılır. Bu, geçici veya geçici olmayan tabloları oluşturarak, veri geçici olarak depolama veya geçici tablolar aracılığıyla kompleks hesaplamalar yapma gibi senaryolarda kullanılabilir.


sql

Copy code

DECLARE @TableName NVARCHAR(50);

SET @TableName = 'NewTable';

DECLARE @SQL NVARCHAR(MAX);

SET @SQL = 'CREATE TABLE ' + @TableName + ' (ID INT, Name NVARCHAR(50))';

EXECUTE sp_executesql @SQL;

İç İçe Sorgular (Nested Queries):

İç içe sorgular, bir sorgunun içinde başka bir sorgunun kullanıldığı sorgulardır. Bu, daha karmaşık veri sorgulamaları yapmak, alt sorgunun sonuçlarını kullanarak ana sorguyu filtrelemek veya veri bütünlüğünü sağlamak için kullanılabilir.


sql

Copy code

SELECT *

FROM Orders

WHERE CustomerID IN (SELECT CustomerID FROM Customers WHERE Country = 'USA');

Veri Ekleme, Güncelleme ve Silme (Data Insertion, Update, and Deletion):

SQL, veri tabanında yeni veri eklemek, mevcut veriyi güncellemek veya veriyi silmek için kullanılabilir. INSERT, UPDATE ve DELETE ifadeleriyle bu işlemler gerçekleştirilebilir.


sql

Copy code

INSERT INTO Customers (CustomerName, City, Country)

VALUES ('John Doe', 'New York', 'USA');

sql

Copy code

UPDATE Customers

SET City = 'Los Angeles'

WHERE CustomerID = 1;

sql

Copy code

DELETE FROM Customers

WHERE CustomerID = 1;

Bu ileri düzey konular, SQL'nin farklı senaryolarda nasıl kullanılabileceğini göstermektedir. Her biri belirli ihtiyaçlarınıza ve projelerinize bağlı olarak kullanılabilir. SQL hakkında daha fazla bilgi edinmek için bu konuları daha da araştırabilir ve pratik yapabilirsiniz.


SSS ve Cevapları


Elbette, işte SQL hakkında sıkça sorulan bazı sorular ve cevapları:


SQL nedir?

SQL (Structured Query Language), veritabanı sistemlerinde veri oluşturma, işleme ve yönetme işlemlerini gerçekleştirmek için kullanılan bir dildir. SQL, genellikle ilişkisel veritabanı yönetim sistemlerinde (RDBMS) kullanılır, ancak bazı NoSQL sistemlerinde de kullanılabilir.


SQL ve NoSQL arasındaki fark nedir?

SQL ve NoSQL, iki farklı veritabanı yönetim sistem tipidir. SQL, verileri tablolar halinde organize eden ilişkisel bir sistemdir. NoSQL, genellikle büyük veri ve gerçek zamanlı uygulamalar için daha uygun olan ve genellikle verileri belge, geniş sütun, çift veya grafik şeklinde saklayan bir sistemdir.


SQL ne tür işlemler için kullanılır?

SQL, veri sorgulama, veri manipülasyonu (ekleme, güncelleme, silme), veritabanı oluşturma ve değiştirme, kullanıcı yönetimi, veritabanı güvenliği ve veri bütünlüğü gibi çeşitli işlemler için kullanılır.


SQL neden önemlidir?

SQL, verilerin saklanması, düzenlenmesi ve analiz edilmesi için bir araç olan veritabanı yönetim sistemlerinde en yaygın kullanılan dil olduğu için önemlidir. Veri analisti, veri bilimci, yazılım mühendisi veya veritabanı yöneticisi gibi rol almayı düşünen herkes için SQL bilgisi genellikle bir gerekliliktir.


SQL'yi öğrenmek ne kadar sürer?

SQL'nin temelini öğrenmek genellikle birkaç hafta sürer. Ancak, SQL'nin daha gelişmiş özelliklerini anlamak ve etkin bir şekilde kullanabilmek daha fazla zaman ve pratik gerektirir.


SQL'nin anahtar özellikleri nelerdir?

SQL'nin anahtar özellikleri arasında veri sorgulama, veri manipülasyonu, veritabanı oluşturma ve değiştirme, kullanıcı yönetimi ve izinler, veritabanı güvenliği ve bütünlüğü, işlem izolasyonu ve kilitleme, veri tipi dönüşümü, veri düzleştirmesi ve normalizasyon, indeksleme ve optimizasyon bulunur.


SQL hangi sektörlerde kullanılır?

SQL, birçok sektörde ve rolde kullanılır. Veri analitiği, veri bilimi, yazılım geliştirme, veritabanı yönetimi, sağlık hizmetleri, finans, perakende ve hükümet dahil olmak üzere çeşitli sektörlerde SQL bilgisi genellikle gereklidir.


SQL kodu nasıl çalışır?

SQL kodu, bir SQL istemcisi aracılığıyla bir veritabanı sunucusuna gönderilir. Veritabanı sunucusu, bu kodu yorumlar ve istenen işlemi gerçekleştirir. Sonuçlar daha sonra istemciye geri döndürülür.


SQL nerede çalışır?

SQL, bir veritabanı yönetim sistemi (DBMS) içinde çalışır. Bu, veritabanınızı oluşturan ve sorgularınızı işleyen yazılımdır. DBMS, Microsoft SQL Server, Oracle, MySQL, PostgreSQL ve SQLite gibi çeşitli türlerde ve markalarda mevcuttur.


SQL enjeksiyonu nedir?

SQL enjeksiyonu, bir saldırganın zararlı SQL kodunu bir uygulamanın veritabanı sorgusuna eklemesi ve bu şekilde veritabanını manipüle etmesi veya hassas bilgilere erişmesi anlamına gelen bir güvenlik açığıdır. Bu, veritabanı yöneticilerinin ve yazılım geliştiricilerin dikkat etmesi gereken önemli bir güvenlik konusudur.


Bir SQL sorgusu nasıl optimize edilir?

SQL sorgularını optimize etmenin birkaç yolu vardır. Sorgu yürütme planınızı anlamak, gereksiz sorgu parçalarını kaldırmak, gerektiğinde indeks kullanmak ve JOIN operasyonlarını dikkatli bir şekilde kullanmak, SQL sorgu performansını iyileştirebilir.


'Primary Key' ve 'Foreign Key' nedir?

Primary Key (Birincil Anahtar), bir veritabanı tablosundaki her satırı benzersiz olarak tanımlayan bir alandır. Foreign Key (Yabancı Anahtar), bir tabloda başka bir tabloya referans veren bir alandır. Bu anahtarlar, verilerin tutarlı ve doğru kalmasını sağlar ve SQL'deki ilişkisel veritabanı modelinin temelini oluşturur.


'INNER JOIN', 'LEFT JOIN' ve 'RIGHT JOIN' arasındaki fark nedir?

Bu terimler, SQL'deki tablolar arasındaki ilişkileri tanımlar. 'INNER JOIN', iki tablonun kesişimini alır, yani her iki tabloda da bulunan kayıtları döndürür. 'LEFT JOIN', ilk tablodaki tüm kayıtları ve ikinci tablodaki eşleşen kayıtları döndürür. 'RIGHT JOIN' ise ikinci tablodaki tüm kayıtları ve ilk tablodaki eşleşen kayıtları döndürür.





SQL'de 'NULL' değeri ne anlama gelir?

SQL'de 'NULL', bir alanın değerinin bilinmediğini veya mevcut olmadığını belirtir. 'NULL', "sıfır" veya "boş" anlamına gelmez; bu, bir değerin basitçe mevcut olmadığını belirtir.


SQL ve PL/SQL arasındaki fark nedir?

SQL, veri sorgulama ve manipülasyonu için bir dildir. PL/SQL (Procedural Language/SQL), Oracle tarafından geliştirilen ve SQL'i prosedürel programlama özellikleriyle genişleten bir dil ise, öncelikle Oracle veritabanı sistemlerinde kullanılır.


'Index' (İndeks) nedir ve ne zaman kullanılmalıdır?

Bir indeks, veritabanı tablosundaki verilere daha hızlı erişim sağlayan bir veri yapısıdır. Sorgu performansını önemli ölçüde artırabilir. Ancak, indeksler disk alanı kullanır ve veri eklendiğinde, güncellendiğinde veya silindiğinde bakım gerektirir. Bu yüzden hangi sütunlarda indeks oluşturacağınıza dikkatli bir şekilde karar vermelisiniz.


SQL'de 'View' (Görünüm) nedir?

Bir görünüm, bir veya daha fazla tabloda bulunan verileri temsil eden sanal bir tablodur. Görünümler, karmaşık sorguları basitleştirebilir ve belirli kullanıcılara belirli veri alt kümesine erişim sağlayabilir.


SQL'de 'Trigger' (Tetikleyici) nedir?

Bir tetikleyici, belirli bir olay (bir satırın eklenmesi, güncellenmesi veya silinmesi gibi) gerçekleştiğinde otomatik olarak çalışan bir SQL ifadesidir. Tetikleyiciler, veri bütünlüğünü korumak, iş kurallarını uygulamak veya hataları otomatik olarak düzeltmek için kullanılabilir.


SQL'de 'Stored Procedure' (Depolanmış Prosedür) nedir?

Depolanmış prosedürler, bir veritabanı sunucusunda saklanan ve gerektiğinde çalıştırılan bir dizi SQL ifadesidir. Depolanmış prosedürler, tekrar tekrar kullanılabilen ve karmaşık işlemleri basitleştiren kod parçalarıdır.


'LIKE' operatörü SQL'de nasıl kullanılır?

'LIKE' operatörü, bir sütunun belirli bir deseni takip edip etmediğini kontrol etmek için SQL'de kullanılır. Yüzde (%) ve alt çizgi (_) joker karakterlerini kullanabilirsiniz. % herhangi bir dizi karakteri (boş dahil) temsil ederken, _ tek bir karakteri temsil eder.


'GROUP BY' ve 'ORDER BY' SQL'de ne işe yarar?

'GROUP BY' ifadesi, belirli bir sütuna veya sütunlar grubuna göre sonuçları gruplamak için kullanılır. 'ORDER BY' ifadesi ise sonuçları belirli bir sütuna veya sütunlar grubuna göre sıralamak için kullanılır.


"DROP", "DELETE" ve "TRUNCATE" komutları arasındaki farklar nelerdir?

"DROP", bir tablonun tamamını veritabanından kaldırır. "DELETE" komutu, belirli kayıtları bir tablodan siler ve "WHERE" ifadesi ile birlikte kullanıldığında spesifik kayıtları silmek için kullanılır. "TRUNCATE", bir tablodaki tüm kayıtları siler ancak tablonun yapısını korur.

DROP TABLE orders;

DELETE FROM orders WHERE order_id = 101;

TRUNCATE TABLE orders;

UNION ve UNION ALL arasındaki fark nedir?

"UNION" ve "UNION ALL" arasındaki fark nedir?

Her ikisi de iki veya daha fazla SELECT ifadesinin sonuçlarını birleştirmek için kullanılır. Fakat "UNION", yalnızca benzersiz sonuçları döndürürken, "UNION ALL" tüm sonuçları, yinelenenleri de içererek döndürür.


SQL'de bir alt sorgu (subquery) nedir?

Bir alt sorgu, başka bir SQL ifadesi içinde kullanılan bir sorgudur. Alt sorgular genellikle "WHERE" ya da "HAVING" ifadeleri içinde kullanılır ve genellikle bir değer döndürürler.


"HAVING" ve "WHERE" arasındaki fark nedir?

Hem "HAVING" hem de "WHERE", belirli koşulların karşılanması durumunda veri döndürmek için kullanılır. Ancak, "WHERE", gruplama yapılmadan önce bir veri setini filtrelerken, "HAVING" gruplama yapıldıktan sonra veri setini filtreler.


"DISTINCT" anahtar kelimesi ne işe yarar?

"DISTINCT" anahtar kelimesi, bir sorgunun döndürdüğü sonuç setindeki yinelenen satırları kaldırmak için kullanılır.


SQL'de bir "alias" nedir ve ne için kullanılır?

Bir "alias" (takma ad), SQL sorgularında geçici bir ad olarak kullanılır. Sorguları daha okunabilir hale getirebilirler ve genellikle karmaşık sorgular veya "JOIN" operasyonları yapılırken kullanılırlar.


SQL'de "commit" işlemi ne anlama gelir?

"Commit" işlemi, işlemlerin kalıcı hale gelmesini sağlar. Yani, bir "commit" işlemi yapıldıktan sonra, yapılan tüm değişiklikler kalıcı olur ve geri alınamaz.


Elbette, aşağıda SQL hakkında daha fazla sıkça sorulan soru ve onların cevapları bulunmaktadır:


SQL'de 'Scalar functions' (Skalar fonksiyonlar) ne demektir?

Skalar fonksiyonlar, bir girdi değeri alır ve tek bir çıktı değeri döndürür. Örnekler arasında LENGTH(), UCASE(), LCASE(), ROUND(), NOW() gibi fonksiyonlar bulunmaktadır.


SQL'de 'Aggregate functions' (Toplulaştırma fonksiyonları) ne demektir?

Toplulaştırma fonksiyonları, bir dizi değeri alır ve tek bir değer döndürür. Bu, bir grup kaydın özet bilgisini almak için kullanılır. Örnekler arasında SUM(), AVG(), MAX(), MIN(), COUNT() gibi fonksiyonlar bulunmaktadır.


SQL'de bir 'Constraint' (Kısıtlama) nedir?

Kısıtlamalar, bir tabloda hangi verinin saklanabileceğini belirlemek için kullanılır. Kısıtlamalar, bir tablo oluşturulurken veya daha sonra tabloya eklenir. 'Primary Key', 'Foreign Key', 'NOT NULL', 'UNIQUE' ve 'CHECK' kısıtlamaları SQL'deki yaygın kısıtlama tipleridir.


'Normalization' (Normalizasyon) nedir?

Normalizasyon, bir veritabanını tasarlamanın bir yoludur. Veri tekrarını azaltmayı ve veri bütünlüğünü sağlamayı amaçlar. Normalizasyon süreci genellikle birkaç 'normal form'a (ör. Birinci Normal Form, İkinci Normal Form) tabloyu dönüştürmeyi içerir.


SQL'de 'Denormalization' (Denormalizasyon) nedir ve neden yapılır?

Denormalizasyon, normalizasyonun aksine, performansı artırmak için verinin bilinçli bir şekilde tekrarlanmasıdır. Denormalizasyon, okuma işlemlerini hızlandırabilir ancak yazma işlemlerini yavaşlatabilir çünkü aynı veri birden fazla yerde güncellenmelidir.


SQL'de 'Cursor' (İmleç) nedir?

İmleç, bir SQL veritabanında sonuç setini tek bir satırı işleyerek yürütmek için kullanılan bir veri yapısıdır. İmleçler genellikle büyük sonuç setleriyle çalışırken ve her satırı ayrı ayrı işlemek gerektiğinde kullanılır.


'Primary Key' (Birincil Anahtar) nedir?

Birincil anahtar, bir tablodaki her satırı benzersiz olarak tanımlayan bir veya daha fazla sütundur. Her tablonun yalnızca bir birincil anahtarı olabilir. Birincil anahtarlar, veritabanı içindeki diğer tablolarla ilişkiler kurmak için de kullanılır.


'Foreign Key' (Yabancı Anahtar) nedir?

Yabancı anahtar, bir tabloda, başka bir tablonun birincil anahtarına referans veren bir veya daha fazla sütundur. Yabancı anahtarlar, veri bütünlüğünü korumak ve tablolar arasında ilişkiler kurmak için kullanılır.


'Auto Increment' özelliği ne işe yarar?

'Auto Increment' özelliği, bir tablodaki bir sütuna otomatik olarak artan bir sayı değeri atamak için kullanılır. Genellikle birincil anahtar sütunu için kullanılır.


'Date' ve 'Time' fonksiyonları nelerdir?

'Date' ve 'Time' fonksiyonları, tarih ve saat değerleriyle çalışmayı kolaylaştırır. Örneğin, NOW() fonksiyonu mevcut tarih ve saat değerini döndürür, DATE() fonksiyonu bir tarih değerinden tarih bilgisini alır, DAY(), MONTH(), YEAR() fonksiyonları sırasıyla gün, ay, yıl bilgisi alır.


'NULL' değerleri nasıl işlenir?

'NULL' bir değerin var olmadığını veya bilinmediğini gösterir. 'NULL' değerler 'IS NULL' veya 'IS NOT NULL' ile kontrol edilebilir ve 'COALESCE()' gibi fonksiyonlarla işlenebilir.


SQL'de bir 'Schema' (Şema) nedir?

Bir şema, veritabanındaki tablolar, görünümler ve diğer nesnelerin bir koleksiyonudur. Şemalar, veritabanını düzenlemeye ve farklı kullanıcılar ve uygulamalar için veriyi bölme ve yönetmeye yardımcı olur.


SQL interview soruları ve cevapları


Elbette, aşağıda SQL hakkında olası mülakat soruları ve cevapları bulunmaktadır. Her cevapta ayrıca SQL sorgu örnekleri de mevcuttur.


Veritabanında normalizasyon nedir?

Normalizasyon, veritabanının tasarlanmasının bir yoludur ve veri tekrarını azaltmayı ve veri bütünlüğünü sağlamayı amaçlar. Normalizasyon süreci genellikle birkaç 'normal form'a (ör. Birinci Normal Form, İkinci Normal Form) tabloyu dönüştürmeyi içerir.


Bir 'INNER JOIN' ne zaman kullanılır?

'INNER JOIN' anahtar kelimesi, iki tablo arasında belirli bir koşulu karşılayan satırları seçer. Aşağıdaki örnekte, 'orders' tablosundan ve 'customers' tablosundan 'customer_id' eşleşen satırlar seçilir:


sql

Copy code

SELECT orders.order_id, customers.customer_name 

FROM orders 

INNER JOIN customers ON orders.customer_id = customers.customer_id;

'LEFT JOIN' ve 'RIGHT JOIN' arasındaki fark nedir?

'LEFT JOIN' anahtar kelimesi, sol tablodaki tüm kayıtları ve sağ tablodan eşleşen kayıtları döndürür. Eşleşme olmayan durumda, sonuç NULL değerler içerir.

'RIGHT JOIN' ise sağ tablodaki tüm kayıtları ve sol tablodan eşleşen kayıtları döndürür. Eşleşme olmayan durumda, sonuç NULL değerler içerir.


sql

Copy code

SELECT orders.order_id, customers.customer_name 

FROM orders 

LEFT JOIN customers ON orders.customer_id = customers.customer_id;


SELECT orders.order_id, customers.customer_name 

FROM orders 

RIGHT JOIN customers ON orders.customer_id = customers.customer_id;

Veritabanı indekslerinin avantajları ve dezavantajları nelerdir?

İndekslerin avantajları genellikle veri sorgularının hızını artırmaktır. Ancak, dezavantajları da vardır: İndeksler disk alanı tüketir ve her veri değişikliği (ekleme, güncelleme, silme) sırasında indekslerin güncellenmesi gerektiği için yazma işlemlerini yavaşlatabilir.


'GROUP BY' ve 'ORDER BY' arasındaki fark nedir?

'GROUP BY' sorgunun sonucunu belirli bir veya daha fazla sütuna göre gruplar. 'ORDER BY' ise sonuç setini belirli bir veya daha fazla sütuna göre sıralar. İki anahtar kelime genellikle birlikte kullanılır.


sql

Copy code

SELECT customer_id, COUNT(*) 

FROM orders 

GROUP BY customer_id 

ORDER BY COUNT(*) DESC;

'HAVING' anahtar kelimesi ne işe yarar?

'HAVING' anahtar kelimesi, 'GROUP BY' ifadesi ile kullanıldığında, grupların koşullara göre filtrelenmesini sağlar. Genellikle toplulaştırma fonksiyonlarıyla birlikte kullanılır.


sql

Copy code

SELECT customer_id, COUNT(*)

FROM orders

GROUP BY customer_id

HAVING COUNT(*) > 5;


SQL'de bir 'View' (Görünüm) nedir ve ne zaman kullanılır?

Bir 'View', saklanmış bir sorgu sonucu setidir. Veri tabanında gerçek bir tablo gibi çalışır, ancak verileri saklamaz, sadece belirli bir sorgu sonucunu temsil eder. Kullanıcıların karmaşık sorguları daha basit bir şekilde yönetmelerine, verinin güvenli bir şekilde paylaşılmasına ve verinin daha anlaşılır bir şekilde sunulmasına yardımcı olur.


sql

Copy code

CREATE VIEW HighValueOrders AS

SELECT order_id, customer_id, order_value 

FROM orders 

WHERE order_value > 1000;

SQL'de 'Stored Procedure' (Saklı Yordam) nedir?

Bir 'Stored Procedure', veritabanında saklanan ve bir dizi SQL ifadesini içeren önceden derlenmiş bir kod bloğudur. Parametre alabilir ve çıktı verebilir. Veritabanı işlemlerini daha verimli hale getirir ve aynı işlemlerin tekrar tekrar yazılmasını önler.


sql

Copy code

CREATE PROCEDURE UpdateOrderValue

@OrderId INT,

@NewValue DECIMAL

AS

UPDATE orders

SET order_value = @NewValue

WHERE order_id = @OrderId;

SQL'de 'Index' (İndeks) nedir ve ne zaman kullanılır?

Bir indeks, veritabanı tablosundaki belirli bir sütundaki değerlerin hızlı bir şekilde bulunmasını sağlar. Indeksler genellikle büyük tablolarda sorgu performansını artırmak için kullanılır.


sql

Copy code

CREATE INDEX idx_orders_customer_id 

ON orders (customer_id);

SQL'de bir 'Trigger' (Tetikleyici) nedir?

Bir 'Trigger', belirli bir olay gerçekleştiğinde (INSERT, UPDATE, DELETE) otomatik olarak çalışan saklı bir yordamdır. Veritabanındaki işlemleri otomatikleştirmek için kullanılır.


sql

Copy code

CREATE TRIGGER OrderValueCheck 

BEFORE INSERT ON orders 

FOR EACH ROW 

BEGIN 

   IF NEW.order_value <= 0 THEN 

      SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Order value must be positive';

   END IF; 

END;

SQL'de 'Transaction' (İşlem) nedir?

Bir 'Transaction', bir veya daha fazla ilgili işlemi gruplandıran ve bu işlemlerin tümünün başarılı bir şekilde gerçekleştiğinden emin olan bir birimdir. Eğer işlemlerden herhangi biri başarısız olursa, tüm işlem geri alınır (ROLLBACK). Bu, veritabanı bütünlüğünü korumak için önemlidir.


sql

Copy code

BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;

UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

IF @@ERROR = 0 

    COMMIT;

ELSE 

    ROLLBACK;


SQL'de bir 'Primary Key' (Birincil Anahtar) nedir?

Bir 'Primary Key', bir veritabanı tablosundaki her satırı benzersiz ve özgün bir şekilde tanımlayan bir veya daha fazla sütundur. 'NULL' değerlere izin vermez ve her bir satırda biricik olmalıdır.


sql

Copy code

CREATE TABLE Customers (

    CustomerID int NOT NULL PRIMARY KEY,

    LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    ...

);

'Foreign Key' (Yabancı Anahtar) nedir ve ne zaman kullanılır?

Bir 'Foreign Key', başka bir tablonun 'Primary Key'ine referans veren bir veya daha fazla sütundur. Bir 'Foreign Key', tablolar arasında ilişkileri kurar ve veri bütünlüğünü sağlar.


sql

Copy code

CREATE TABLE Orders (

    OrderID int NOT NULL,

    CustomerID int FOREIGN KEY REFERENCES Customers(CustomerID),

    ...

);

'NULL' değerleri nasıl yönetiriz?

'NULL' bir değeri temsil etmez; bir değerin bilinmediğini veya mevcut olmadığını temsil eder. 'IS NULL' veya 'IS NOT NULL' operatörleri 'NULL' değerlerle çalışmak için kullanılır.


sql

Copy code

SELECT * FROM Customers

WHERE Address IS NULL;

'UNION' ve 'JOIN' arasındaki fark nedir?

'UNION' ve 'JOIN', iki tabloyu birleştirmek için kullanılan iki farklı yöntemdir. 'UNION', iki tablonun satırını birleştirir ve benzersiz sonuçları döndürür. 'JOIN' ise, iki tablo arasındaki ortak özellikleri (genellikle bir 'Foreign Key') kullanarak tabloları birleştirir.


sql

Copy code

SELECT City FROM Customers

UNION

SELECT City FROM Suppliers;


SELECT Orders.OrderID, Customers.CustomerName

FROM Orders

INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

'ALTER' komutu ne işe yarar?

'ALTER' komutu, mevcut bir veritabanı tablosunun yapısını değiştirmek için kullanılır. Sütunlar eklemek, değiştirmek veya silmek için kullanılabilir.


sql

Copy code

ALTER TABLE Customers

ADD Email varchar(255);


SQL'de 'Subquery' (Alt sorgu) nedir ve ne zaman kullanılır?

'Subquery' veya iç sorgu, bir başka SQL sorgusu içinde yer alan bir sorgudur. 'Subquery', bir sorgunun bir parçası olarak bir tabloya veya bir sütuna dayalı değerler döndürebilir. Genellikle, bir sorguda iki aşamalı bir hesaplama yapılması gerektiğinde kullanılır.


sql

Copy code

SELECT CustomerName 

FROM Customers

WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE OrderValue > 1000);

SQL'de 'Distinct' anahtar kelimesi ne işe yarar?

'Distinct' anahtar kelimesi, bir sorgu sonucunda belirli bir sütunda yinelenen değerlerin çıkarılmasını sağlar. Yani, her bir değerin yalnızca bir kez döndürülmesini garanti eder.


sql

Copy code

SELECT DISTINCT Country FROM Customers;

SQL'de bir 'Alias' (Takma ad) nedir ve ne zaman kullanılır?

Bir 'Alias', bir sütun veya tablo için kullanılan geçici bir adıdır. 'Alias'lar, genellikle sorguları daha okunabilir hale getirmek veya karmaşık sorgularda sütun veya tablo adlarını kısaltmak için kullanılır.


sql

Copy code

SELECT c.CustomerName, o.OrderValue

FROM Customers AS c

INNER JOIN Orders AS o ON c.CustomerID = o.CustomerID;

SQL'de 'Like' operatörü ne işe yarar?

'Like' operatörü, bir sütundaki değerlerin belirli bir desene uyup uymadığını kontrol etmek için kullanılır. Yüzde (%) ve alt çizgi (_) gibi joker karakterlerle birlikte kullanılır: % herhangi bir dizeyi, _ ise herhangi bir tek karakteri temsil eder.


sql

Copy code

SELECT * FROM Customers

WHERE City LIKE 'L%';


SQL'de 'Group By' ve 'Having' anahtar kelimeleri ne işe yarar?

'Group By' anahtar kelimesi, belirli bir sütuna göre sonuçları gruplamak için kullanılır. Genellikle 'Count', 'Max', 'Min', 'Sum' veya 'Avg' gibi toplu işlevlerle birlikte kullanılır. 'Having' anahtar kelimesi ise, gruplandırılmış sonuçlarda bir koşul belirlemek için kullanılır. 'Having', 'Group By' ile birlikte kullanıldığında 'Where' anahtar kelimesinin bir benzeri olarak çalışır.


sql

Copy code

SELECT Country, COUNT(CustomerID)

FROM Customers

GROUP BY Country

HAVING COUNT(CustomerID) > 5;

'Limit' anahtar kelimesi ne zaman ve nasıl kullanılır?

'Limit' anahtar kelimesi, döndürülen satır sayısını sınırlamak için kullanılır. Genellikle test amaçlı sorgular yaparken veya performansı artırmak için büyük veritabanlarında kullanılır.


sql

Copy code

SELECT * FROM Customers

LIMIT 10;

SQL'de bir 'Self-Join' nedir?

'Self-Join', bir tablonun kendisiyle birleştirildiği bir 'Join' türüdür. Bu genellikle, aynı tablo içinde ilişkili olan satırları karşılaştırmak için kullanılır.


sql

Copy code

SELECT A.CustomerName AS Customer1, B.CustomerName AS Customer2, A.City

FROM Customers A, Customers B

WHERE A.CustomerID <> B.CustomerID

AND A.City = B.City ;

SQL'de 'Normalization' (Normalizasyon) nedir?

'Normalization', bir veritabanının tasarımını optimize etmek ve veri tekrarını en aza indirmek için bir dizi tekniktir. Bu genellikle, veri bütünlüğünü korumak ve depolama alanını daha verimli bir şekilde kullanmak için yapılır.


SQL'de 'Index' (İndeks) nedir ve ne zaman kullanılır?

'Index', bir tablo üzerinde hızlı veri alımı sağlayan bir veritabanı yapısıdır. 'Index'ler, veri tabanında sorgu performansını artırmak için kullanılır, çünkü verinin daha hızlı bulunmasına yardımcı olurlar. Ancak, 'Index'lerin dikkatli bir şekilde kullanılması gerekir çünkü çok fazla 'Index', veritabanının yazma işlemlerini yavaşlatabilir.


sql

Copy code

CREATE INDEX idx_CustomerName

ON Customers (CustomerName);

SQL'de 'View' (Görünüm) nedir ve ne zaman kullanılır?

Bir 'View', bir veya daha fazla tablo üzerindeki bir sorgunun sonucudur. 'View'lar, sık sık kullanılan sorguları kaydetmek, karmaşık sorguları basitleştirmek veya kullanıcının belirli verilere erişimini sınırlamak için kullanılabilir.


sql

Copy code

CREATE VIEW [Top Customers] AS

SELECT CustomerName, Count(OrderID)

FROM Orders

GROUP BY CustomerName

HAVING Count(OrderID) > 5;

SQL'de 'Stored Procedure' (Depolanmış Yordam) nedir ve ne zaman kullanılır?

'Stored Procedure', bir veya daha fazla SQL ifadesini içeren ve genellikle karmaşık veya tekrarlayan veritabanı işlemlerini gerçekleştiren bir kod bloğudur. 'Stored Procedure'lar, kod tekrarını azaltmak, veri tabanı performansını artırmak ve SQL enjeksiyonu gibi güvenlik risklerini azaltmak için kullanılır.


sql

Copy code

CREATE PROCEDURE UpdateInventory

@ProductID int, @SoldAmount int

AS

UPDATE Products

SET Inventory = Inventory - @SoldAmount

WHERE ID = @ProductID;

'Cursor' (İmleç) SQL'de ne anlama gelir ve ne zaman kullanılır?

'Cursor'lar, bir sorgu sonucundaki satırlar üzerinde işlem yapmak için kullanılan bir veritabanı yapısıdır. Bir 'Cursor', bir sonuç setini satır satır işlemek için kullanılır. Ancak, 'Cursor'ların dikkatli kullanılması gerekir çünkü genellikle daha yavaştır ve daha fazla kaynak tüketir.


sql

Copy code

DECLARE @ProductID int, @ProductName nvarchar(100), @Price decimal(10,2);

DECLARE product_cursor CURSOR FOR

SELECT ID, Name, Price FROM Products

WHERE Discontinued = 0;

OPEN product_cursor;

FETCH NEXT FROM product_cursor INTO @ProductID, @ProductName, @Price;

WHILE @@FETCH_STATUS = 0

BEGIN

   PRINT @ProductName + ' (' + CAST(@Price AS nvarchar(10)) + ')';

   FETCH NEXT FROM product_cursor INTO @ProductID, @ProductName, @Price;

END;

CLOSE product_cursor;

DEALLOCATE product_cursor;


SQL'de bir 'Trigger' (Tetikleyici) nedir?

'Trigger', belirli bir olayın (INSERT, UPDATE, DELETE gibi) gerçekleşmesi üzerine otomatik olarak çalışan bir SQL prosedürüdür. Tetikleyiciler, veri bütünlüğünü korumak, veritabanındaki değişikliklere otomatik olarak yanıt vermek veya veritabanında belirli işlemler gerçekleştirebilmek için kullanılır.


sql

Copy code

CREATE TRIGGER SalesLT.INCREASE_SALES

ON SalesLT.SalesOrderHeader

AFTER INSERT

AS 

UPDATE SalesLT.SalesSummary

SET SalesLT.SalesSummary.TotalSales += SalesLT.SalesOrderHeader.SubTotal

FROM inserted;

SQL'de 'Primary Key' (Birincil Anahtar) ve 'Foreign Key' (Yabancı Anahtar) nedir?

Bir 'Primary Key', bir tablodaki her satırı benzersiz olarak tanımlayan bir veya daha fazla sütundur. Her tablonun sadece bir 'Primary Key'i olabilir ve NULL değerlerini kabul etmez.


Bir 'Foreign Key', bir tablodaki bir sütunun veya sütun setinin, başka bir tablonun 'Primary Key'ine referans vermesidir. 'Foreign Key'ler, veritabanı tabloları arasında ilişkileri kurmak ve veri bütünlüğünü korumak için kullanılır.


SQL'de bir 'Schema' (Şema) nedir?

Bir 'Schema', bir veritabanının yapısını ve organizasyonunu tanımlayan bir çerçevedir. 'Schema', tablolar, sütunlar, veri türleri, indeksler, anahtarlar, prosedürler, görünümler ve diğer veritabanı nesnelerini içerir.


SQL'de 'ACID' prensipleri nelerdir?

'ACID' (Atomicity, Consistency, Isolation, Durability - Atomiklik, Tutarlılık, İzolasyon, Dayanıklılık), veritabanı işlemlerinin güvenli ve güvenilir olmasını sağlayan dört temel prensiptir. 'ACID' prensipleri, veritabanının beklenmedik hatalar, sistem çökmeleri veya güç kesintileri gibi durumlar karşısında bile veri bütünlüğünü korumasını sağlar.


SQL'de 'Distinct' anahtar kelimesi ne işe yarar?

'Distinct' anahtar kelimesi, belirli bir sütundan yinelenen değerleri kaldırmak için kullanılır. Bu genellikle bir sütunda belirli bir değerin kaç kez göründüğünü belirlemek veya bir sütundaki benzersiz değerlerin listesini almak için kullanılır.


sql

Copy code

SELECT DISTINCT Country

FROM Customers;

SQL'de 'Union' ve 'Union All' arasındaki fark nedir?

'Union' ve 'Union All', iki veya daha fazla sorgunun sonuçlarını birleştirmek için kullanılır. Ancak, 'Union' yinelenen satırları kaldırırken, 'Union All' yinelenen satırları korur.


SELECT City FROM Customers

UNION

SELECT City FROM Suppliers

ORDER BY City;

sql

Copy code

SELECT City FROM Customers

UNION ALL

SELECT City FROM Suppliers

ORDER BY City;

SQL'de 'Case' ifadesi ne işe yarar?

'Case' ifadesi, bir sorgu içinde koşullu mantığı uygulamak için kullanılır. Bu genellikle bir sütundaki değerlere dayalı olarak yeni bir sütun oluşturmak veya bir sütundaki değerleri dönüştürmek için kullanılır.


sql

Copy code

SELECT OrderID, Quantity,

CASE

    WHEN Quantity > 30 THEN 'The quantity is high'

    WHEN Quantity = 30 THEN 'The quantity is medium'

    ELSE 'The quantity is low'

END AS QuantityText

FROM OrderDetails;

'Subquery' (Alt sorgu) SQL'de ne anlama gelir ve ne zaman kullanılır?

Bir 'Subquery', başka bir sorgu içinde yer alan bir sorgudur. 'Subquery'ler, bir sorgunun nerede kullanılacağına karar vermek, bir sorgunun sonuçlarını filtrelemek veya bir sorgunun sonuçları üzerinde hesaplamalar yapmak için kullanılır.


sql

Copy code

SELECT CustomerName 

FROM Customers

WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE Quantity > 10);


SQL'de 'Join' nedir ve farklı 'Join' türleri nelerdir?

'Join' SQL'de iki veya daha fazla tabloya ait verileri birleştirmek için kullanılır. 'Join' türleri arasında 'Inner Join', 'Left Join', 'Right Join', 'Full Outer Join' ve 'Self Join' bulunur.


sql

Copy code

SELECT Orders.OrderID, Customers.CustomerName

FROM Orders

INNER JOIN Customers

ON Orders.CustomerID = Customers.CustomerID;

SQL'de 'Normalization' (Normalizasyon) nedir ve niçin önemlidir?

'Normalization', bir veritabanının tasarımını optimize etmek için kullanılan bir tekniktir. Normalizasyonun amacı, verinin tekrarını azaltmak, verinin bütünlüğünü korumak ve veritabanının verimli bir şekilde ölçeklenmesini sağlamaktır.


SQL'de 'Denormalization' (Denormalizasyon) nedir ve ne zaman kullanılır?

'Denormalization', normalizasyonun aksine, veritabanında veri tekrarını artırır. Bu genellikle veri almak için gereken sorgu karmaşıklığını azaltmak ve veri okuma hızını artırmak için yapılır. Denormalizasyon, veritabanı performansını artırmak için dikkatlice kullanılmalıdır.


'Group By' ve 'Order By' SQL'de ne anlama gelir ve ne zaman kullanılır?

'Group By', belirli bir veya daha fazla sütuna göre sonuçları gruplamak için kullanılır. Genellikle agregat fonksiyonları (COUNT, MAX, MIN, SUM, AVG) ile birlikte kullanılır.


'Order By', sonuçları belirli bir veya daha fazla sütuna göre sıralamak için kullanılır. ASC (artan) veya DESC (azalan) anahtar kelimeleri ile birlikte kullanılabilir.


sql

Copy code

SELECT Country, COUNT(CustomerID)

FROM Customers

GROUP BY Country

ORDER BY COUNT(CustomerID) DESC;


'Window Functions' (Pencere Fonksiyonları) SQL'de ne işe yarar?

Pencere fonksiyonları, bir sonuç kümesi üzerinde karmaşık hesaplamalar yapmayı sağlar. Bir pencere fonksiyonu, bir dizi 'Partition By', 'Order By' ve 'Rows' veya 'Range' ile tanımlanan bir pencere üzerinde işlem yapar.


sql

Copy code

SELECT SalesPerson, FiscalYear, TotalSales,

RANK() OVER (PARTITION BY FiscalYear ORDER BY TotalSales DESC) AS SalesRank

FROM SalesData;

Veri türleri arasında dönüşüm yapmayı ne zaman ve nasıl kullanırsınız?

Veri türleri arasında dönüşüm, bir veri türünün başka bir veri türüne dönüştürülmesini sağlar. Bu genellikle matematiksel hesaplamalar yapmak, veri düzenlemek veya veriyi belirli bir biçimde sunmak için gereklidir. SQL'de CAST veya CONVERT fonksiyonları bu amaçla kullanılır.


sql

Copy code

SELECT OrderID, CAST(OrderDate AS VARCHAR(10))

FROM Orders;

SQL'de 'Cursors' (İmleçler) nedir ve nasıl kullanılır?

İmleçler, bir sonuç kümesi üzerinde satır satır işlem yapmayı sağlar. İmleçler genellikle büyük veri kümeleri üzerinde karmaşık işlemler yapmak için kullanılır.


sql

Copy code

DECLARE @OrderID INT;

DECLARE OrderCursor CURSOR FOR SELECT OrderID FROM Orders WHERE OrderDate < GETDATE();

OPEN OrderCursor;

FETCH NEXT FROM OrderCursor INTO @OrderID;

WHILE @@FETCH_STATUS = 0

BEGIN

    -- Do something with @OrderID

    FETCH NEXT FROM OrderCursor INTO @OrderID;

END;

CLOSE OrderCursor;

DEALLOCATE OrderCursor;

'Indexes' (İndeksler) SQL'de ne işe yarar ve ne zaman kullanılır?

İndeksler, veritabanında veriye hızlı bir şekilde erişim sağlar. İndeksler, sorgu performansını önemli ölçüde artırabilir, ancak aşırı kullanımı veritabanına ek yük bindirir ve veri ekleme veya güncelleme işlemlerini yavaşlatır. İndeksler genellikle büyük veri kümelerinde ve sık sorgulanan sütunlarda kullanılır.


sql

Copy code

CREATE INDEX idx_Customers_Country

ON Customers (Country);


SQL'de 'Triggers' (Tetikleyiciler) nedir ve ne zaman kullanılır?

Tetikleyiciler, belirli bir olay (INSERT, UPDATE veya DELETE) gerçekleştiğinde otomatik olarak çalışan stored procedures'lardır. Genellikle veri bütünlüğünü sağlamak veya belirli iş kurallarını uygulamak için kullanılırlar.


sql

Copy code

CREATE TRIGGER trg_AfterInsert

AFTER INSERT ON Employees

FOR EACH ROW

BEGIN

   INSERT INTO AuditTable (EmpID, AuditMessage) 

   VALUES (NEW.ID, CONCAT('New employee with ID ', NEW.ID, ' has been added.'));

END;

SQL'de 'Stored Procedures' (Depolanmış Prosedürler) nedir ve ne zaman kullanılır?

Depolanmış prosedürler, bir dizi SQL ifadesini içeren ve bir isimle kaydedilen ve gerektiğinde çalıştırılan prosedürlerdir. Genellikle karmaşık işlemleri otomatikleştirmek, veri bütünlüğünü sağlamak ve veri erişimini kontrol etmek için kullanılırlar.


sql

Copy code

CREATE PROCEDURE InsertEmployee

@Name NVARCHAR(50),

@Position NVARCHAR(50),

@Salary DECIMAL(10, 2)

AS

BEGIN

   INSERT INTO Employees (Name, Position, Salary)

   VALUES (@Name, @Position, @Salary);

END;

SQL'de 'Views' (Görünümler) nedir ve ne zaman kullanılır?

Görünümler, bir veya daha fazla tabloya dayalı bir sanal tablo oluşturmak için kullanılır. Veri erişimini sınırlamak, karmaşık sorguları basitleştirmek veya veriyi daha anlaşılır bir biçimde sunmak için kullanılırlar.


sql

Copy code

CREATE VIEW EmployeeView AS

SELECT EmployeeID, EmployeeName, Department

FROM Employees

WHERE IsActive = 1;

SQL'de 'Transactions' (İşlemler) nedir ve nasıl kullanılır?

İşlemler, bir veya daha fazla SQL ifadesinin bir grup olarak çalışmasını sağlar. İşlemler, veri bütünlüğünü korumak ve veri tabanında yapılan değişikliklerin tutarlılığını sağlamak için kullanılır.


sql

Copy code

BEGIN TRANSACTION;

BEGIN TRY

   INSERT INTO Employees (Name, Position) VALUES ('John Doe', 'Manager');

   INSERT INTO Salaries (EmployeeID, Salary) VALUES (SCOPE_IDENTITY(), 50000);

END TRY

BEGIN CATCH

   ROLLBACK TRANSACTION;

   THROW;

END CATCH

COMMIT TRANSACTION;


'Subqueries' (Alt sorgular) ve 'Correlated Subqueries' (İlişkili alt sorgular) nedir?

Alt sorgu, bir başka SQL ifadesinin içinde yer alan bir sorgudur. İlişkili alt sorgular ise dış sorgudan değer alabilen ve her dış sorgu satırı için çalışabilen alt sorgulardır.


sql

Copy code

SELECT CustomerName 

FROM Customers

WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE Quantity > 10);

sql

Copy code

SELECT e1.EmployeeName

FROM Employees e1

WHERE 5 > (SELECT COUNT(*) FROM Employees e2 WHERE e2.Salary > e1.Salary);

SQL'de 'Temporary Tables' (Geçici Tablolar) nedir ve ne zaman kullanılır?

Geçici tablolar, bir SQL oturumu boyunca var olan ve oturum sona erdiğinde otomatik olarak silinen tablolardır. Geçici tablolar genellikle büyük veri kümeleri üzerinde karmaşık işlemler yapmak için kullanılır.


sql

Copy code

CREATE TEMPORARY TABLE temp_Orders AS

SELECT * FROM Orders

WHERE OrderDate > '2023-01-01';

'Pivot' ve 'Unpivot' işlemleri nedir ve nasıl kullanılır?

'Pivot', satır verilerini sütun verilerine dönüştürmek için kullanılır. 'Unpivot' ise sütun verilerini satır verilerine dönüştürür.


sql

Copy code

SELECT *

FROM (SELECT Year, Quarter, Sales FROM SalesData)

PIVOT (SUM(Sales) FOR Quarter IN ([Q1], [Q2], [Q3], [Q4]));

'Locks' (Kilitler) ve 'Deadlocks' (Kilitlenmeler) nedir?

Kilitler, aynı veri üzerinde aynı anda birden fazla işlemi engellemek için kullanılır. Kilitlenmeler ise iki veya daha fazla işlem birbirini bekler hale geldiğinde ve hiçbirinin ilerlememesi durumunda oluşur. Bu genellikle her işlemin, diğer işlem tarafından tutulan bir kaynağı beklediği durumlarda oluşur.

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo