Daha Sonra Sık Kullanılanlara Eklenecek Ultimate SQL Hile Sayfası [222]
Yayınlanan: 2022-06-17SQL veya Yapılandırılmış Sorgu Dili, silme, oluşturma, güncelleme, okuma vb. gibi ilişkisel veritabanı işlemlerini yönetmeye yönelik bir dizi komuttur .
SQL, 1987'den beri ilişkisel veritabanları tarafından kullanılan uluslararası standarttır. Dört tür SQL komutu vardır:
- Veri Tanımlama Dili (DDL) – Bu komutlar, veritabanının yapısını tanımlar . Örneğin, bırakın, yeniden adlandırın, değiştirin ve oluşturun. Veritabanı yapısını etkilerler. Örneğin, bir veritabanı oluşturmak veya bir tabloyu yeniden adlandırmak.
- Veri İşleme Dili (DML) – Bu komutlar verilerle çalışmak için kullanılır. Örneğin, ekleyin, seçin, güncelleyin, silin. Bunlar tabloları veya veritabanı yapısını değil, tablolarda bulunan verileri etkiler. Örneğin, yeni bir satır eklemek veya satırdaki bir değeri güncellemek.
- İşlem Kontrol Dili (TCL) – Bu komutlar, veritabanındaki işlem işlemeyi kontrol eder. Örneğin, geri alma, kaydetme, taahhüt etme. Bu komutların veritabanı üzerinde kalıcı bir etkisi vardır. Örneğin, bir işlem başarısız olsa bile tüm işlemi önceki duruma geri almak.
- Veri Kontrol Dili (DCL) – Veri Kontrol komutları, kullanıcıları yetkilendirmek ve bir kullanıcıya veya gruba yalnızca gerekli izinleri vermek için kullanılır. Örneğin, bir kullanıcı salt okuma iznine sahip olabilirken, bir başkası okuma ve yazma iznine sahip olabilir. Erişim kontrolü, verme, reddetme ve iptal etme komutları kullanılarak yapılır.
Aşağıda en kullanışlı komutları içeren SQL Cheat sayfası bulunmaktadır. Hile sayfası, doğru sözdizimi ve bir sorgunun beklenen sonucu ile gerekli komutlara hızlı bir şekilde başvurmanıza yardımcı olacaktır. Bu hile sayfasında, diğer iki türün kullanımı oldukça basit olduğu için DDL ve DML komutlarına odaklanıyoruz.
Veri Tanımlama ve Manipülasyon Sorguları
Emretmek | Tanım | Örnek |
EKLE | Mevcut tabloya bir sütun veya kısıtlama (belirtildiği gibi) ekler. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); |
TABLOYU DEĞİŞTİR | Bir tablonun sütununu eklemek, güncellemek veya silmek için belirtilen tabloyu değiştirir. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee DROP COLUMN last_name; |
KOLON DEĞİŞTİR | Sütunun veri türünü değiştirin. Örneğin, çalışan tablosunun join_date sütununun türünü varchar2'den datetime'a değiştirmek için. | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
TÜM | SELECT, WHERE ve HAVING ile kullanılan mantıksal operatör ve tüm değerler alt sorgu koşulunu karşılıyorsa true değerini döndürür | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
VE | Yalnızca WHERE yan tümcesindeki tüm koşullar karşılandığında true değerini döndüren mantıksal işleç. | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
HİÇ | Mantıksal operatör; alt sorgu değerlerinden biri bile where yan tümcesindeki koşulu sağlıyorsa true değerini döndürür | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D'); |
OLARAK | Sorgu yürütme zamanına kadar tablo veya sütun için bir takma ad oluşturur; bu ad, özellikle tablo birleştirmeleri sırasında birden çok kez kullanıldığında yararlıdır | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
ASC | ORDER BY yan tümcesi ile kullanılan verileri artan bitiş sırasına göre döndürür. ORDER BY, sonuçları varsayılan olarak artan şekilde sıralar. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
ARASINDA | Bir aralıktaki değerleri seçmek için | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
DAVA | Bir dizi ifadeden oluşur; doğru olan ifadenin değerini döndürür, eğer koşullardan hiçbiri sağlanmazsa, ELSE kısmındaki koşul yürütülür. Başka yoksa, NULL döndürür. | SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details; |
VERİTABANI YARAT | Belirtilen ada sahip yeni bir veritabanı oluşturur | CREATE DATABASE movies_development; |
TABLO OLUŞTUR | Belirtilen tablo adı ve sütun adları ve türleri ile yeni bir tablo oluşturur | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
VARSAYILAN | CREATE veya ALTER TABLE komutlarıyla kullanılan, belirtilen sütun için varsayılan bir değer ayarlar | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE); ALTER TABLE product ALTER is_available SET DEFAULT true; |
SİLMEK | Belirtilen tablodan verileri siler | DELETE from employee where employee_id = 345; |
TANIM | ORDER BY yan tümcesiyle birlikte kullanılan verileri de sc bitiş sırasına göre döndürür. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
DROP KOLON | Belirtilen tablodan belirtilen sütunu siler. | ALTER TABLE employee DROP COLUMN employee_name; |
VERİTABANI BIRAK | Tüm veritabanını siler | DROP DATABASE movies_development; |
VARSAYILAN BIRAK | Belirtilen sütunun varsayılan değerini siler | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
BIRAKMA TABLOSU | Belirtilen tabloyu siler | DROP TABLE employee; |
VAR | Alt sorguda bir kaydın olup olmadığını kontrol eder ve bir veya daha fazla sonuç bulunursa true değerini döndürür. | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR'); |
İTİBAREN | Verilerin seçilmesi veya silinmesi gereken tabloyu belirtir | SELECT * FROM employee; DELETE FROM employee where employee_id = 345; |
GRUP TARAFINDAN | Verileri, toplama işlevleri için kullanılan belirtilen sütuna göre gruplandırır | Her ülkedeki çalışan sayısını gösterSELECT COUNT(employee_id), country from employee GROUP BY country; Her departmanın çalışanlarının ortalama puanlarını gösterir SELECT AVG(rating), department from employee GROUP BY department; |
İÇİNDE | Birden çok OR koşulu kullanmak yerine WHERE yan tümcesinde aynı anda birden çok değer seçmek için kullanılır | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia'); |
İNDEKS | Index, verileri sorgulamayı daha verimli ve daha hızlı hale getirir. Dizinler genellikle en çok aranan sütunlarda oluşturulur. | Dizin oluştur:CREATE INDEX idx_employee ON employee (first_name, last_name); Değerlerin kopyalanamayacağı benzersiz bir dizin oluşturun: CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name); Dizini silin: ALTER TABLE employee DROP INDEX idx_employee; |
TAKIN | Tabloya yeni satır ekleme | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
NULL | Boş değerleri kontrol eder | SELECT employee_id from employee where employee_name IS NULL; |
NULL DEĞİL | Null olmayan değerleri kontrol eder | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL; |
BEĞENMEK | Belirli bir desenle eşleşen tüm değerleri döndürür | SELECT employee_id, first_name, last_name where first_name LIKE '%tony'; |
GİBİ DEĞİL | Verilen modelle eşleşmeyen tüm değerleri döndürür | SELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony'; |
VEYA | Where yan tümcesindeki koşullardan biri yerine getirilirse true döndürür | SELECT * from employee where country = 'India' OR country = 'Australia'; |
TARAFINDAN SİPARİŞ | Sonuçları artan düzende (varsayılan olarak) veya sorguda belirtilen sırada ( artan bitiş veya azalan bitiş) sıralar | SELECT employee_name, salary from employee ORDER BY salary DESC; |
SIRA SAYISI | Sorgunun WHERE yan tümcesinde belirtilen belirtilen sayıda satırı döndürür | SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset. |
SEÇME | Verilen koşullara göre tablonun belirtilen sütunlarını seçer. * belirtilirse, tüm sütun değerleri döndürülür. | SELECT employee_id from employee; SELECT * from employee; |
İÇİNDE SEÇ | Kaynak tablodaki verileri başka bir hedef tabloya kopyalar. Tüm sütunları (*) veya belirli sütunları seçebilirsiniz. | SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee; |
ÜST SEÇ | Tablodan belirtilen sayıda kayıt seçer | SELECT TOP 5 employee_id from employee where employee_rating = 5; |
AYARLAMAK | GÜNCELLEME işlemi sırasında bir sütunun değerini yeni belirtilen değere ayarlar. | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
BAZI | Alt sorgudaki koşullardan biri karşılanırsa true değerini döndürür. SOME, ANY komutuna benzer. | SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR'); |
KESME TABLOSU | Tablodan verileri siler – tablonun silinmeyeceğini unutmayın. | TRUNCATE TABLE log_info; |
BİRLİK | Birleştirilmiş 2 veya daha fazla tablodan farklı değerler döndürür. Yinelenen değerleri de almak için UNION ALL kullanın. | SELECT city from employee UNION SELECT city from office_locations; |
BENZERSİZ | Belirtilen sütuna benzersiz bir kısıtlama ekler; bu, sütunun yinelenen değerlere sahip olamayacağı anlamına gelir. Tablo oluşturma veya değiştirme komutları sırasında kullanılabilir. | CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)); ALTER TABLE employee ADD UNIQUE(employee_id); |
GÜNCELLEME | Belirtilen sütunun değerini yeni bir değerle günceller | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
DEĞERLER | Tabloya yeni bir değer satırı eklemek için INSERT komutuyla birlikte kullanılır | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
NEREDE | Select ifadesinin sonuç kümesini filtrelemek için koşullar ekler | SELECT * from employee WHERE salary > 20000; |
Toplama işlevleri
Toplama işlevleri, int ve float gibi sayısal sütunlarda çalışan veri işleme komutlarıdır. Bunlar, veri tabanı düzeyinde verilerin filtrelenmesine ve sıralanmasına yardımcı olur. Yaygın olarak kullanılan bazı toplama işlevleri şunlardır:

İŞLEV | TANIM | ÖRNEK |
ortalama | Belirtilen sütunun ortalama değerini döndürür | SELECT AVG(marks) from students where subject = 'English'; |
MIN | Belirtilen sütunun en küçük değerini döndürür | SELECT MIN(price) from product WHERE product_category = 'shoes'; |
MAKS | Belirtilen sütunun en büyük değerini döndürür | SELECT MAX(quantity), product_name from inventory; |
SAYMAK | Sorguyu karşılayan satır sayısını döndürür | Çalışan tablosundaki toplam kayıt sayısını gösterir.SELECT COUNT(*) from employee; Maaşı 20000'den fazla olan çalışan sayısını göster SELECT COUNT(*) from employee where salary > 20000; |
TOPLA | Belirtilen sayısal sütunun değerlerinin toplamını döndürür | SELECT SUM(marks) from students where subject = 'English'; |
SQL Birleşimleri
SQL birleşimleri, birden çok tablodaki verileri bağlayıp filtreledikleri için çok önemlidir. Birleştirmeler biraz zor ve düzgün yürütülmezse beklenmedik sonuçlar verebilir. Aşağıdaki tablo, 4 tür SQL birleştirmesine hızlı bir şekilde başvurmanıza yardımcı olacaktır:
KATILMA TÜRÜ | TANIM | SÖZDİZİMİ | ÖRNEK |
İç birleşim | Birleştirilen tablolarda eşleşen kayıtları döndürür; kavşağa benzer. | tablo1'den sütun1, sütun2… SEÇİN tablo1.sütunN üzerinde tablo2'ye İÇ BİRLEŞTİR = tablo2.sütunN; | select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id; |
Tam (dış) birleştirme | Her iki tarafta - sol veya sağ - eşleşen tüm kayıtları döndürür. Sendikaya benzer. | tablo1'den sütun1, sütun2… SEÇİN tablo1.sütunN üzerinde FULL OUTER JOIN tablo2 = tablo2.sütunN; | select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id; |
Sol yönden katılım | Soldaki tablodaki tüm kayıtları ve sağdaki tablodaki ölçütlerle eşleşen kayıtları döndürür | tablo1'den sütun1, sütun2… SEÇİN SOL tablo2'ye tablo1.sütunN'den JOIN = tablo2.sütunN; | select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id; |
Sağ birleştirme | Sağdaki tablodaki tüm kayıtları ve soldaki tablodaki ölçütlerle eşleşen kayıtları döndürür | tablo1'den sütun1, sütun2… SEÇİN tablo1.sütunN üzerinde tablo2'ye SAĞDAN KATIL = tablo2.sütunN; | select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id; |
Ek kaynaklar
SQL, yazılım geliştiriciler, veri bilimcileri ve analistler için önemli bir araçtır. Bir hile sayfası biçimindeki SQL komutlarının kullanışlı bir referansı, size çok zaman kazandırabilir ve her bir anahtar kelimenin beklenen çıktısını anlamanıza yardımcı olabilir.
Ek bilgi için lütfen aşağıdaki kaynaklara bakın:
SQL Eğitimi: SQL Hile Sayfası
Intellipaat: SQL Komutları Hile Sayfası
WebsiteSetup: SQL Hile Sayfası
ProgrammingWithMosh: SQL Hile Sayfası
PostgreSQL Hile Sayfası