SQL Hile Sayfası
Son güncelleme
Veri sorgulama (SELECT)
SQL'in temeli: bir veya daha fazla tablodan satır okuma.
| İşlem | Söz dizimi |
|---|---|
| Tüm sütunları seç | SELECT * FROM users; |
| Belirli sütunları seç | SELECT id, name FROM users; |
| Bir sütunu yeniden adlandır (alias) | SELECT name AS full_name FROM users; |
| Benzersiz değerler | SELECT DISTINCT country FROM users; |
| Satır sayısını sınırla | SELECT * FROM users LIMIT 10; |
| Atla ve sonra sınırla (sayfalama) | SELECT * FROM users LIMIT 10 OFFSET 20; |
| Satırları say | SELECT COUNT(*) FROM users; |
Satırları filtreleme (WHERE)
Bir sorgunun hangi satırları döndüreceğini daraltın.
| İşlem | Söz dizimi |
|---|---|
| Eşitlik / karşılaştırma | WHERE age >= 18 |
| Birden fazla koşul | WHERE age >= 18 AND country = 'US' |
| Koşullardan biri | WHERE role = 'admin' OR role = 'owner' |
| Bir kümede | WHERE country IN ('US', 'CA', 'MX') |
| Bir aralıkta | WHERE price BETWEEN 10 AND 50 |
| Desen eşleştirme | WHERE email LIKE '%@gmail.com' |
| Null mı / değil mi | WHERE deleted_at IS NULL |
| Olumsuzlama | WHERE status NOT IN ('archived') |
Sıralama ve gruplama
| İşlem | Söz dizimi |
|---|---|
| Artan sıralama (varsayılan) | ORDER BY created_at |
| Azalan sıralama | ORDER BY created_at DESC |
| Birden fazla sütuna göre sırala | ORDER BY country, name DESC |
| Satırları grupla | SELECT country, COUNT(*) FROM users GROUP BY country; |
| Grupları filtrele | GROUP BY country HAVING COUNT(*) > 100 |
Join'ler
İki tablonun satırlarını eşleşen bir sütun üzerinden birleştirin.
| Join türü | Döndürdüğü | Söz dizimi |
|---|---|---|
| INNER JOIN | Yalnızca her iki tabloda da eşleşen satırlar | FROM orders o INNER JOIN users u ON o.user_id = u.id |
| LEFT JOIN | Tüm sol satırlar + eşleşmeler (yoksa null) | FROM users u LEFT JOIN orders o ON o.user_id = u.id |
| RIGHT JOIN | Tüm sağ satırlar + eşleşmeler | FROM orders o RIGHT JOIN users u ON o.user_id = u.id |
| FULL OUTER JOIN | Her iki taraftaki tüm satırlar | FROM a FULL OUTER JOIN b ON a.id = b.a_id |
| CROSS JOIN | Her kombinasyon (kartezyen) | FROM sizes CROSS JOIN colors |
| Self join | Bir tablonun kendisiyle join'lenmesi | FROM employees e JOIN employees m ON e.manager_id = m.id |
Toplama fonksiyonları
Bir satır grubu üzerinden tek bir değer hesaplayın.
| Fonksiyon | Ne yapar |
|---|---|
COUNT(*) | Satır sayısı |
COUNT(col) | Null olmayan değerlerin sayısı |
SUM(col) | Sayısal bir sütunun toplamı |
AVG(col) | Ortalama değer |
MIN(col) / MAX(col) | En küçük / en büyük değer |
STRING_AGG(col, ',') | Değerleri birleştirir (Postgres; MySQL'de GROUP_CONCAT) |
Pencere fonksiyonları
Bir satır kümesi üzerinde, onları tek satıra indirgemeden hesaplama yapın.
| Fonksiyon | Söz dizimi |
|---|---|
| Satır numarası | ROW_NUMBER() OVER (ORDER BY score DESC) |
| Sıralama (boşluklu) | RANK() OVER (PARTITION BY country ORDER BY score DESC) |
| Yoğun sıralama | DENSE_RANK() OVER (ORDER BY score DESC) |
| Yürüyen toplam | SUM(amount) OVER (ORDER BY created_at) |
| Önceki / sonraki satır | LAG(score) OVER (ORDER BY date), LEAD(score) OVER (...) |
Veri değiştirme (INSERT, UPDATE, DELETE)
| İşlem | Söz dizimi |
|---|---|
| Bir satır ekle | INSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com'); |
| Birden fazla satır ekle | INSERT INTO users (name) VALUES ('Ada'), ('Alan'); |
| Satırları güncelle | UPDATE users SET active = true WHERE id = 1; |
| Satırları sil | DELETE FROM users WHERE active = false; |
| Upsert (Postgres/SQLite) | INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name; |
Tablo tanımlama (DDL)
| İşlem | Söz dizimi |
|---|---|
| Tablo oluştur | CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL); |
| Sütun ekle | ALTER TABLE users ADD COLUMN age INTEGER; |
| Sütun sil | ALTER TABLE users DROP COLUMN age; |
| Tablo sil | DROP TABLE users; |
| İndeks oluştur | CREATE INDEX idx_users_email ON users (email); |
| Yabancı anahtar | FOREIGN KEY (user_id) REFERENCES users (id) |
Başvurduğunuz her SQL ifadesi, yan tümcesi ve join'i tek sayfada. Bu SQL hile sayfası, ilişkisel veriyi sorgulamak ve değiştirmek için hızlı bir başvurudur - SELECT yan tümceleri, dört JOIN türü, toplama (aggregation) ve tablo oluşturup güncellemekte kullandığınız DDL ve DML.
Buradaki söz dizimi standart ANSI SQL'dir ve aksi belirtilmedikçe PostgreSQL, MySQL, SQLite ve SQL Server'da çalışır. İhtiyacınız olanı kopyalayın ya da her sorguyu SQL playground'da canlı deneyin - kurmanız gereken bir veritabanı yok.
SQL hile sayfası SSS
Bu SQL hile sayfası ücretsiz mi?
Bu, MySQL, PostgreSQL ve SQLite için çalışır mı?
SELECT, WHERE, JOIN, GROUP BY ve DDL söz dizimi standart ANSI SQL'dir ve MySQL, PostgreSQL, SQLite ile SQL Server'da aynı şekilde çalışır. Birkaç gelişmiş özellik lehçeye göre farklılık gösterir - upsert ve dize toplama en yaygın olanlardır - ve ilgili satırlar bu farkı not eder.INNER JOIN ile LEFT JOIN arasındaki fark nedir?
INNER JOIN yalnızca her iki tabloda da eşleşen satırları döndürür. Bir LEFT JOIN ise sol (ilk) tablodaki her satırı döndürür ve eşleşme olmadığında sağ tablodaki sütunları NULL ile doldurur - bazı kullanıcıların hiç siparişi olmasa bile tüm kullanıcıları istediğinizde işe yarar.Bu SQL komutlarını çevrimiçi olarak deneyebilir miyim?
SELECT'ten join'lere ve pencere fonksiyonlarına götürür.