Menu

SQL Komutları: Örnekli Temel SQL Komutları Listesi

Her gün kullandığınız SQL komutları, yaptıkları işe göre gruplanmış hâlde (DDL, DML, DQL ve TCL); her biri SQLite'ta çalıştırabileceğiniz bir örnekle.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

SQL Komutlarına Genel Bakış

SQL komutları, yaptıkları işe göre birkaç gruba ayrılır. Tablo en sık kullanacağınız komutları listeler; aşağıdaki her bölüm de bunlardan birini çalıştırır.

KomutGrupNe yapar
CREATE TABLEDDLYeni bir tablo ve sütunlarını tanımlar
ALTER TABLEDDLSütun ekler, bir sütunu ya da tabloyu yeniden adlandırır
DROP TABLEDDLBir tabloyu bütün satırlarıyla birlikte siler
INSERTDMLYeni satırlar ekler
UPDATEDMLVar olan satırlardaki değerleri değiştirir
DELETEDMLSatırları siler
SELECTDQLSatırları okur; WHERE ile filtreler, ORDER BY ile sıralar
BEGIN, COMMIT, ROLLBACKTCLDeğişiklikleri birlikte başarılı ya da birlikte başarısız olacak şekilde gruplar

DDL veri tanımlama dili (data definition language), DML veri işleme dili (data manipulation language), DQL veri sorgulama dili (data query language), TCL ise transaction kontrol dilidir (transaction control language). Adlardan çok bu ayrım önemlidir: DDL veritabanının şeklini, DML ise içindekileri değiştirir.

CREATE TABLE: Tablo Tanımlama

CREATE TABLE tabloya bir ad verir ve sütunlarını türleri ve kurallarıyla birlikte listeler. Bu sayfadaki diğer bütün komutların üzerinde çalışacağı bir tabloya ihtiyacı vardır.

CREATE TABLE sayfası NOT NULL, UNIQUE ve DEFAULT gibi kuralları anlatır.

INSERT: Satır Ekleme

INSERT INTO bir ya da birden fazla satır ekler. Önce sütunları, sonra aynı sırayla değerleri yazın.

id sütunu kendiliğinden doldu: bir INTEGER PRIMARY KEY sütununu boş bıraktığınızda sıradaki numarayı alır. Ayrıntılar INSERT sayfasında.

SELECT: Satırları Okuma

SELECT en çok yazacağınız komuttur. Sütunları seçin, satırları WHERE ile filtreleyin ve ORDER BY ile sıralayın.

Yalnızca WHERE testini geçen satırlar döner, en yüksek not en başta. Ayrıntılar için SELECT temelleri ve WHERE sayfalarına bakın.

UPDATE: Satırları Değiştirme

UPDATE zaten var olan satırlara yeni değerler atar. Hangi satırların değişeceğine WHERE koşulu karar verir; onu yazmazsanız bütün satırlar değişir.

Bir WHERE koşulunun hangi satırları yakaladığından emin değilseniz, önce onu bir SELECT olarak çalıştırın. UPDATE sayfası başka kalıplar da gösterir.

DELETE: Satırları Silme

DELETE FROM, WHERE koşuluna uyan satırları siler. UPDATE gibi, koşul yoksa bütün satırları etkiler.

Chen'in satırı silindi, diğerlerine dokunulmadı. Ayrıntılar için DELETE sayfasına bakın.

ALTER TABLE ve DROP TABLE: Tabloyu Değiştirme veya Silme

ALTER TABLE var olan bir tabloyu satırlarını kaybetmeden değiştirir. DROP TABLE ise tabloyu tamamen siler.

Yeni bir sütun, siz doldurana kadar mevcut satırlarda NULL olarak başlar. ALTER ve DROP TABLE sayfası SQLite'ın nelere izin verdiğini listeler.

JOIN: Tabloları Birleştirme

Bir JOIN, ortak bir sütun üzerinden eşleştirerek iki tablodan aynı anda satır okur.

Boris'in hiç ders kaydı olmadığı için INNER JOIN onu dışarıda bırakır. Bir LEFT JOIN onu boş bir ders alanıyla birlikte tutardı.

GROUP BY: Satırları Özetleme

GROUP BY aynı değeri paylaşan satırları tek bir satırda toplar; COUNT ya da AVG gibi bir aggregate fonksiyon da her grubu özetler.

Aggregate fonksiyonlar ve GROUP BY ve HAVING sayfaları konuyu daha ileri taşır.

BEGIN, COMMIT ve ROLLBACK: Değişiklikleri Gruplama

Bir transaction, birkaç değişikliğin tek bir değişiklik gibi sayılmasını sağlar. COMMIT hepsini kalıcı yapar; ROLLBACK hepsini geri alır.

Para transferi commit edildi, ikinci değişiklik ise geri alındı; bu yüzden Ada 70, Boris 80 ile kalır. Transaction'lar sayfası bunları ne zaman kullanmanız gerektiğini anlatır.

SQLite'ın Farklı Olduğu Yerler

Bu sayfadaki komutlar standart SQL'dir ve burada öğrendikleriniz MySQL ile PostgreSQL'de de işe yarar. Ancak çalıştırılabilir örnekler SQLite için yazılmıştır ve daha büyük veritabanlarında üç ayrıntı değişir:

  • Tabloları listelemek. Örnekler SQLite'ın kendi şema tablosu olan sqlite_master'ı okur. MySQL SHOW TABLES kullanır, PostgreSQL ise information_schema.tables görünümünü (veya psql içinde \dt) kullanır.
  • Otomatik kimlikler. SQLite'ta INTEGER PRIMARY KEY olarak tanımlanan bir sütun yeni satırları kendiliğinden numaralandırır; INSERT örneklerinin id sütununu atlamasının nedeni budur. MySQL'de sütuna AUTO_INCREMENT, PostgreSQL'de ise bir kimlik sütunu (GENERATED BY DEFAULT AS IDENTITY) veya SERIAL gerekir.
  • İzinler ve şema değişiklikleri. SQLite'ta GRANT ve REVOKE yoktur, çünkü bir SQLite veritabanı kullanıcı hesabı olmayan tek bir dosyadır. ALTER TABLE komutu da bir sütunun türünü değiştiremez.

Sıkça Sorulan Sorular

Temel SQL komutları nelerdir?

Günlük işlerin çoğunu beş komut karşılar: tablo tanımlamak için CREATE TABLE, satır eklemek için INSERT, satırları okumak için SELECT, değiştirmek için UPDATE ve silmek için DELETE. Ardından ALTER TABLE, DROP TABLE, JOIN, GROUP BY ve transaction komutları BEGIN, COMMIT ve ROLLBACK gelir.

DDL ile DML arasındaki fark nedir?

DDL (veri tanımlama dili) veritabanının yapısını değiştirir: CREATE, ALTER ve DROP. DML (veri işleme dili) tabloların içindeki satırları değiştirir: INSERT, UPDATE ve DELETE. SELECT yalnızca okuduğu için çoğu zaman ayrı olarak DQL diye listelenir.

SQL komutları büyük/küçük harfe duyarlı mı?

Hayır. SELECT, select ve Select hepsi çalışır. Anahtar sözcükleri büyük harfle yazmak, onları tablo ve sütun adlarından ayırmaya yarayan bir alışkanlıktır. Ancak tırnak içindeki metin birebir karşılaştırılır; bu yüzden büyük/küçük harfe duyarsız bir karşılaştırma istemediğiniz sürece 'Ada' ve 'ada' SQLite'ta farklı string'lerdir.

Bu komutlar MySQL ve PostgreSQL'de de aynı şekilde çalışır mı?

Komutlar standart SQL'dir ve üçünde de aynı anlama gelir, yani burada öğrendikleriniz diğerlerinde de işe yarar. Ancak çalıştırılabilir örnekler SQLite için yazılmıştır: tabloları listelemek için burada sqlite_master okunur, otomatik kimlikler MySQL'de AUTO_INCREMENT, PostgreSQL'de bir kimlik (identity) sütunu gerektirir ve SQLite'ta GRANT ile REVOKE yoktur.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA