{"id":36444,"date":"2025-12-17T14:40:53","date_gmt":"2025-12-17T11:40:53","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36444"},"modified":"2025-12-17T14:40:53","modified_gmt":"2025-12-17T11:40:53","slug":"sqlde-tablolar-nasil-olusturulur-ve-yonetilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/","title":{"rendered":"SQL&#8217;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?"},"content":{"rendered":"<p><body><\/p>\n<h2>SQL&#8217;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?<\/h2>\n<p>\u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinin (RDBMS) temel yap\u0131 ta\u015f\u0131 olan tablolar, verilerin d\u00fczenli ve yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u015fekilde sakland\u0131\u011f\u0131 yerlerdir. Bir veritaban\u0131n\u0131n kalbi olan tablolar\u0131n do\u011fru bir \u015fekilde olu\u015fturulmas\u0131, tasarlanmas\u0131 ve y\u00f6netilmesi, veritaban\u0131n\u0131n performans\u0131, g\u00fcvenli\u011fi ve uzun vadeli s\u00fcrd\u00fcr\u00fclebilirli\u011fi i\u00e7in hayati \u00f6neme sahiptir. Bu teknik makalede, SQL kullanarak tablolar\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131, de\u011fi\u015ftirilece\u011fini, y\u00f6netilece\u011fini ve iyi tablo tasar\u0131m ilkelerinin neler oldu\u011funu detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Tablolar\u0131n Temel Amac\u0131 ve Yap\u0131s\u0131<\/h3>\n<p>Bir tablo, sat\u0131r (kay\u0131t) ve s\u00fctunlardan (alanlar veya \u00f6zellikler) olu\u015fan iki boyutlu bir yap\u0131d\u0131r. Her s\u00fctun belirli bir veri tipini temsil eder (\u00f6rne\u011fin, metin, say\u0131, tarih), her sat\u0131r ise ilgili varl\u0131\u011f\u0131n tek bir \u00f6rne\u011fini (\u00f6rne\u011fin, bir m\u00fc\u015fteri, bir \u00fcr\u00fcn) i\u00e7erir. Tablolar aras\u0131ndaki ili\u015fkiler, veritaban\u0131n\u0131n ili\u015fkisel yap\u0131s\u0131n\u0131 olu\u015fturur ve bu ili\u015fkiler genellikle anahtar kavramlar (Primary Key ve Foreign Key) arac\u0131l\u0131\u011f\u0131yla tan\u0131mlan\u0131r.<\/p>\n<h3>Temel Kavramlar: Veri Tipleri ve K\u0131s\u0131tlamalar<\/h3>\n<p>Tablo olu\u015fturmadan \u00f6nce, her s\u00fctunun hangi t\u00fcrde veri tutaca\u011f\u0131n\u0131 belirlemek i\u00e7in do\u011fru veri tiplerini se\u00e7mek ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak i\u00e7in k\u0131s\u0131tlamalar\u0131 anlamak kritik \u00f6neme sahiptir.<\/p>\n<h4>Veri Tipleri<\/h4>\n<p>Veri tipleri, bir s\u00fctunda saklanabilecek veri t\u00fcr\u00fcn\u00fc ve bu verilerin kaplayaca\u011f\u0131 alan\u0131 belirler. Do\u011fru veri tipi se\u00e7imi, depolama alan\u0131n\u0131 optimize etmenin yan\u0131 s\u0131ra veri tutarl\u0131l\u0131\u011f\u0131n\u0131 ve performans\u0131 da etkiler. En yayg\u0131n kullan\u0131lan veri tipleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Say\u0131sal Veri Tipleri:<\/strong>\n<ul>\n<li><code>INT<\/code> (Integer): Tam say\u0131lar i\u00e7in kullan\u0131l\u0131r. Genellikle -2 milyar ile +2 milyar aras\u0131nda de\u011fer al\u0131r.<\/li>\n<li><code>BIGINT<\/code>: \u00c7ok daha b\u00fcy\u00fck tam say\u0131lar i\u00e7in kullan\u0131l\u0131r (yakla\u015f\u0131k -9 kentilyon ile +9 kentilyon).<\/li>\n<li><code>SMALLINT<\/code>, <code>TINYINT<\/code>: Daha k\u00fc\u00e7\u00fck tam say\u0131lar i\u00e7in kullan\u0131l\u0131r, daha az yer kaplar.<\/li>\n<li><code>DECIMAL(p, s)<\/code> veya <code>NUMERIC(p, s)<\/code>: Hassas ondal\u0131k say\u0131lar i\u00e7in kullan\u0131l\u0131r. <code>p<\/code> toplam basamak say\u0131s\u0131n\u0131, <code>s<\/code> ise ondal\u0131k k\u0131sm\u0131n basamak say\u0131s\u0131n\u0131 belirtir (\u00f6rn. DECIMAL(5, 2) -> 123.45).<\/li>\n<li><code>FLOAT<\/code>, <code>REAL<\/code>, <code>DOUBLE PRECISION<\/code>: Yakla\u015f\u0131k ondal\u0131k say\u0131lar i\u00e7in kullan\u0131l\u0131r. Genellikle bilimsel hesaplamalarda tercih edilir, ancak hassasiyet sorunlar\u0131 olabilir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Metin Veri Tipleri:<\/strong>\n<ul>\n<li><code>VARCHAR(n)<\/code>: De\u011fi\u015fken uzunlukta karakter dizileri i\u00e7in kullan\u0131l\u0131r. <code>n<\/code> maksimum karakter say\u0131s\u0131n\u0131 belirtir. Yaln\u0131zca girilen metin kadar yer kaplar.<\/li>\n<li><code>CHAR(n)<\/code>: Sabit uzunlukta karakter dizileri i\u00e7in kullan\u0131l\u0131r. Belirtilen <code>n<\/code> karakter say\u0131s\u0131 kadar yer ay\u0131r\u0131r, daha k\u0131sa metinlerde bo\u015fluklarla doldurur.<\/li>\n<li><code>TEXT<\/code> veya <code>LONGTEXT<\/code> (MySQL): \u00c7ok uzun metinler i\u00e7in kullan\u0131l\u0131r. Maksimum uzunluk veritaban\u0131 sistemine g\u00f6re de\u011fi\u015fir.<\/li>\n<li><code>NVARCHAR(n)<\/code>, <code>NCHAR(n)<\/code> (SQL Server): Unicode karakterleri destekleyen metin tipleri.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Tarih ve Saat Veri Tipleri:<\/strong>\n<ul>\n<li><code>DATE<\/code>: Yaln\u0131zca tarih (YYYY-MM-DD) bilgisi i\u00e7in.<\/li>\n<li><code>TIME<\/code>: Yaln\u0131zca saat (HH:MI:SS) bilgisi i\u00e7in.<\/li>\n<li><code>DATETIME<\/code> veya <code>TIMESTAMP<\/code>: Tarih ve saat bilgisini birlikte saklar. <code>TIMESTAMP<\/code> genellikle zaman dilimi bilgisi i\u00e7erir ve otomatik g\u00fcncellenebilir \u00f6zelliklere sahip olabilir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u0130kili Veri Tipleri:<\/strong>\n<ul>\n<li><code>BLOB<\/code> (Binary Large Object), <code>VARBINARY(n)<\/code>: Resimler, ses dosyalar\u0131 gibi ikili verileri depolamak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Mant\u0131ksal Veri Tipleri:<\/strong>\n<ul>\n<li><code>BOOLEAN<\/code> (PostgreSQL), <code>BIT<\/code> (SQL Server\/MySQL): Do\u011fru\/Yanl\u0131\u015f (True\/False) veya 0\/1 de\u011ferlerini saklar.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>K\u0131s\u0131tlamalar (Constraints)<\/h4>\n<p>K\u0131s\u0131tlamalar, bir tablodaki verilerin do\u011frulu\u011funu, tutarl\u0131l\u0131\u011f\u0131n\u0131 ve b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak i\u00e7in kullan\u0131lan kurallard\u0131r. K\u0131s\u0131tlamalar, istenmeyen veya hatal\u0131 verilerin tabloya girilmesini engeller.<\/p>\n<ul>\n<li><strong>PRIMARY KEY (Birincil Anahtar):<\/strong> Bir tablodaki her sat\u0131r\u0131 benzersiz bir \u015fekilde tan\u0131mlayan bir s\u00fctun veya s\u00fctun k\u00fcmesidir.\n<ul>\n<li>Her tabloda yaln\u0131zca bir PRIMARY KEY olabilir.<\/li>\n<li>PRIMARY KEY s\u00fctunlar\u0131 NULL de\u011fer alamaz (NOT NULL olmal\u0131d\u0131r).<\/li>\n<li>Veritaban\u0131 taraf\u0131ndan otomatik olarak indekslenir, bu da arama performans\u0131n\u0131 art\u0131r\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><strong>FOREIGN KEY (Yabanc\u0131 Anahtar):<\/strong> Bir tablodaki bir s\u00fctunun veya s\u00fctun k\u00fcmesinin, ba\u015fka bir tablodaki PRIMARY KEY s\u00fctununa referans vermesini sa\u011flar.\n<ul>\n<li>\u0130ki tablo aras\u0131nda ili\u015fki kurar.<\/li>\n<li>Referans b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc (referential integrity) sa\u011flar; yani, yabanc\u0131 anahtar\u0131n referans verdi\u011fi birincil anahtar de\u011feri, referans verilen tabloda mevcut olmal\u0131d\u0131r.<\/li>\n<li>\u00d6rnek: Sipari\u015fler tablosundaki MusteriID s\u00fctunu, Musteriler tablosundaki MusteriID (PRIMARY KEY) s\u00fctununa referans verir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>UNIQUE (Benzersiz):<\/strong> Bir s\u00fctundaki t\u00fcm de\u011ferlerin benzersiz olmas\u0131n\u0131 sa\u011flar.\n<ul>\n<li>PRIMARY KEY&#8217;den farkl\u0131 olarak, bir tabloda birden fazla UNIQUE k\u0131s\u0131tlama olabilir.<\/li>\n<li>NULL de\u011fer alabilir (\u00e7o\u011fu veritaban\u0131nda, birden fazla NULL de\u011fer benzersiz kabul edilir).<\/li>\n<li>\u00d6rnek: E-posta adresleri veya TC kimlik numaralar\u0131 gibi alanlar i\u00e7in kullan\u0131labilir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>NOT NULL:<\/strong> Bir s\u00fctunun NULL de\u011fer almas\u0131n\u0131 engeller.\n<ul>\n<li>Bu k\u0131s\u0131tlamaya sahip bir s\u00fctuna her zaman bir de\u011fer girilmesi zorunludur.<\/li>\n<\/ul>\n<\/li>\n<li><strong>DEFAULT:<\/strong> Bir s\u00fctuna de\u011fer girilmedi\u011finde otomatik olarak atanacak varsay\u0131lan bir de\u011fer belirler.\n<ul>\n<li>\u00d6rnek: Bir \u00fcr\u00fcn\u00fcn stok adedi girilmezse varsay\u0131lan olarak 0 atanabilir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>CHECK:<\/strong> Bir s\u00fctundaki de\u011ferlerin belirli bir ko\u015fulu kar\u015f\u0131lamas\u0131n\u0131 sa\u011flar.\n<ul>\n<li>\u00d6rnek: Bir \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131n 0&#8217;dan b\u00fcy\u00fck olmas\u0131n\u0131 veya bir ya\u015f de\u011ferinin 18 ile 65 aras\u0131nda olmas\u0131n\u0131 zorunlu k\u0131labilir.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Tablo Olu\u015fturma: CREATE TABLE Komutu<\/h3>\n<p>Tablolar, SQL&#8217;deki <code>CREATE TABLE<\/code> komutu kullan\u0131larak olu\u015fturulur. Bu komut, tablo ad\u0131n\u0131, her s\u00fctunun ad\u0131n\u0131, veri tipini ve k\u0131s\u0131tlamalar\u0131n\u0131 belirtmeyi gerektirir.<\/p>\n<h4>CREATE TABLE S\u00f6zdizimi<\/h4>\n<pre><code>\nCREATE TABLE tablo_adi (\n    sutun1_adi VERI_TIPI [KISITLAMA_1] [KISITLAMA_2],\n    sutun2_adi VERI_TIPI [KISITLAMA_3],\n    ...\n    [CONSTRAINT kisitlama_adi] PRIMARY KEY (sutun_adi),\n    [CONSTRAINT kisitlama_adi] FOREIGN KEY (sutun_adi) REFERENCES referans_tablo(referans_sutun),\n    [CONSTRAINT kisitlama_adi] UNIQUE (sutun_adi),\n    [CONSTRAINT kisitlama_adi] CHECK (kosul)\n);\n<\/code><\/pre>\n<h4>Basit Tablo Olu\u015fturma \u00d6rnekleri<\/h4>\n<h5>\u00d6rnek 1: Musteriler Tablosu<\/h5>\n<p>Bir m\u00fc\u015fteri tablosu olu\u015ftural\u0131m. Her m\u00fc\u015fterinin benzersiz bir ID&#8217;si, ad\u0131, soyad\u0131, e-posta adresi ve kay\u0131t tarihi olsun. E-posta adresi benzersiz olmal\u0131 ve ID ile Ad-Soyad NULL olmamal\u0131d\u0131r.<\/p>\n<pre><code>\nCREATE TABLE Musteriler (\n    MusteriID INT PRIMARY KEY AUTO_INCREMENT, -- MySQL i\u00e7in AUTO_INCREMENT, SQL Server i\u00e7in IDENTITY(1,1), PostgreSQL i\u00e7in SERIAL\n    Ad VARCHAR(50) NOT NULL,\n    Soyad VARCHAR(50) NOT NULL,\n    Eposta VARCHAR(100) UNIQUE NOT NULL,\n    Telefon VARCHAR(15),\n    KayitTarihi DATE DEFAULT CURRENT_DATE -- Veya GETDATE() SQL Server, NOW() PostgreSQL\n);\n<\/code><\/pre>\n<h5>\u00d6rnek 2: Urunler Tablosu<\/h5>\n<p>\u00dcr\u00fcnleri saklamak i\u00e7in bir tablo olu\u015ftural\u0131m. \u00dcr\u00fcnlerin benzersiz bir ID&#8217;si, ad\u0131, fiyat\u0131, stok adedi ve a\u00e7\u0131klamas\u0131 olsun. Fiyat 0&#8217;dan b\u00fcy\u00fck olmal\u0131 ve stok adedi varsay\u0131lan olarak 0 olmal\u0131d\u0131r.<\/p>\n<pre><code>\nCREATE TABLE Urunler (\n    UrunID INT PRIMARY KEY AUTO_INCREMENT,\n    UrunAdi VARCHAR(100) NOT NULL,\n    Fiyat DECIMAL(10, 2) NOT NULL CHECK (Fiyat > 0),\n    StokAdedi INT DEFAULT 0,\n    Aciklama TEXT\n);\n<\/code><\/pre>\n<h5>\u00d6rnek 3: Siparisler Tablosu (FOREIGN KEY ile)<\/h5>\n<p>M\u00fc\u015fterilerin verdi\u011fi sipari\u015fleri tutacak bir tablo olu\u015ftural\u0131m. Bu tablo, Musteriler tablosuna bir yabanc\u0131 anahtar ile ba\u011flanacakt\u0131r.<\/p>\n<pre><code>\nCREATE TABLE Siparisler (\n    SiparisID INT PRIMARY KEY AUTO_INCREMENT,\n    MusteriID INT NOT NULL,\n    SiparisTarihi DATETIME DEFAULT CURRENT_TIMESTAMP, -- Veya GETDATE() SQL Server, NOW() PostgreSQL\n    ToplamTutar DECIMAL(10, 2) NOT NULL CHECK (ToplamTutar >= 0),\n    FOREIGN KEY (MusteriID) REFERENCES Musteriler(MusteriID)\n);\n<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rneklerde <code>AUTO_INCREMENT<\/code>, <code>IDENTITY(1,1)<\/code> ve <code>SERIAL<\/code> gibi ifadeler veritaban\u0131 sistemine g\u00f6re otomatik artan ID s\u00fctunlar\u0131 olu\u015fturmak i\u00e7in kullan\u0131l\u0131r. L\u00fctfen kulland\u0131\u011f\u0131n\u0131z veritaban\u0131 sistemine uygun olan\u0131 se\u00e7iniz.<\/p>\n<h3>Tablo Yap\u0131s\u0131n\u0131 De\u011fi\u015ftirme: ALTER TABLE Komutu<\/h3>\n<p>Bir tablo olu\u015fturulduktan sonra, ihtiya\u00e7lar de\u011fi\u015ftik\u00e7e yap\u0131s\u0131n\u0131 de\u011fi\u015ftirmek gerekebilir. <code>ALTER TABLE<\/code> komutu, s\u00fctun ekleme, silme, de\u011fi\u015ftirme ve k\u0131s\u0131tlama ekleme\/silme gibi i\u015flemleri ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>S\u00fctun Ekleme (ADD COLUMN)<\/h4>\n<p>Mevcut bir tabloya yeni bir s\u00fctun eklemek i\u00e7in:<\/p>\n<pre><code>\nALTER TABLE tablo_adi\nADD COLUMN yeni_sutun_adi VERI_TIPI [KISITLAMA];\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Musteriler tablosuna Cinsiyet s\u00fctunu ekleyelim.<\/p>\n<pre><code>\nALTER TABLE Musteriler\nADD COLUMN Cinsiyet CHAR(1); -- 'E' (Erkek) veya 'K' (Kad\u0131n)\n<\/code><\/pre>\n<h4>S\u00fctun Silme (DROP COLUMN)<\/h4>\n<p>Mevcut bir tablodan bir s\u00fctunu silmek i\u00e7in:<\/p>\n<pre><code>\nALTER TABLE tablo_adi\nDROP COLUMN silinecek_sutun_adi;\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Musteriler tablosundan Telefon s\u00fctununu silelim.<\/p>\n<pre><code>\nALTER TABLE Musteriler\nDROP COLUMN Telefon;\n<\/code><\/pre>\n<h4>S\u00fctun Tipi veya K\u0131s\u0131tlamas\u0131n\u0131 De\u011fi\u015ftirme (MODIFY COLUMN \/ ALTER COLUMN)<\/h4>\n<p>Bir s\u00fctunun veri tipini veya k\u0131s\u0131tlamalar\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in s\u00f6zdizimi veritaban\u0131 sistemine g\u00f6re farkl\u0131l\u0131k g\u00f6sterebilir.<\/p>\n<ul>\n<li><strong>MySQL:<\/strong> <code>MODIFY COLUMN<\/code><\/li>\n<li><strong>SQL Server:<\/strong> <code>ALTER COLUMN<\/code><\/li>\n<li><strong>PostgreSQL:<\/strong> <code>ALTER COLUMN ... SET DATA TYPE<\/code> veya <code>ALTER COLUMN ... SET\/DROP NOT NULL<\/code><\/li>\n<\/ul>\n<p><strong>\u00d6rnek (MySQL):<\/strong> Urunler tablosundaki Aciklama s\u00fctununun veri tipini VARCHAR(255) olarak de\u011fi\u015ftirelim.<\/p>\n<pre><code>\nALTER TABLE Urunler\nMODIFY COLUMN Aciklama VARCHAR(255);\n<\/code><\/pre>\n<p><strong>\u00d6rnek (SQL Server):<\/strong> Musteriler tablosundaki Eposta s\u00fctununu NULL de\u011fer alabilir hale getirelim.<\/p>\n<pre><code>\nALTER TABLE Musteriler\nALTER COLUMN Eposta VARCHAR(100) NULL;\n<\/code><\/pre>\n<h4>K\u0131s\u0131tlama Ekleme\/Silme (ADD CONSTRAINT \/ DROP CONSTRAINT)<\/h4>\n<p>Mevcut bir tabloya k\u0131s\u0131tlama eklemek veya var olan bir k\u0131s\u0131tlamay\u0131 silmek i\u00e7in:<\/p>\n<pre><code>\n-- K\u0131s\u0131tlama Ekleme\nALTER TABLE tablo_adi\nADD CONSTRAINT kisitlama_adi KISITLAMA_TIPI (sutun_adi);\n\n-- K\u0131s\u0131tlama Silme\nALTER TABLE tablo_adi\nDROP CONSTRAINT kisitlama_adi;\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Musteriler tablosuna Eposta i\u00e7in UNIQUE k\u0131s\u0131tlamas\u0131 ekleyelim (e\u011fer tablo olu\u015fturulurken eklenmediyse).<\/p>\n<pre><code>\nALTER TABLE Musteriler\nADD CONSTRAINT UQ_Musteri_Eposta UNIQUE (Eposta);\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Siparisler tablosundaki FOREIGN KEY k\u0131s\u0131tlamas\u0131n\u0131 silelim.<\/p>\n<pre><code>\nALTER TABLE Siparisler\nDROP CONSTRAINT siparisler_ibfk_1; -- K\u0131s\u0131tlama ad\u0131 veritaban\u0131 taraf\u0131ndan otomatik atanm\u0131\u015f olabilir, kontrol etmek gerekir.\n<\/code><\/pre>\n<h4>Tablo Ad\u0131 De\u011fi\u015ftirme (RENAME TABLE)<\/h4>\n<p>Bir tablonun ad\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in s\u00f6zdizimi veritaban\u0131 sistemine g\u00f6re de\u011fi\u015febilir.<\/p>\n<ul>\n<li><strong>MySQL:<\/strong> <code>RENAME TABLE eski_ad TO yeni_ad;<\/code><\/li>\n<li><strong>SQL Server:<\/strong> <code>EXEC sp_rename 'eski_ad', 'yeni_ad';<\/code><\/li>\n<li><strong>PostgreSQL:<\/strong> <code>ALTER TABLE eski_ad RENAME TO yeni_ad;<\/code><\/li>\n<\/ul>\n<p><strong>\u00d6rnek (MySQL):<\/strong> Urunler tablosunun ad\u0131n\u0131 StokUrunleri olarak de\u011fi\u015ftirelim.<\/p>\n<pre><code>\nRENAME TABLE Urunler TO StokUrunleri;\n<\/code><\/pre>\n<h3>Tabloya Veri Ekleme, G\u00fcncelleme ve Silme (DML \u0130\u015flemleri)<\/h3>\n<p>Tablo yap\u0131s\u0131 haz\u0131rland\u0131ktan sonra, i\u00e7ine veri eklemek, mevcut verileri g\u00fcncellemek ve silmek i\u00e7in DML (Data Manipulation Language) komutlar\u0131 kullan\u0131l\u0131r.<\/p>\n<h4>Veri Ekleme (INSERT INTO)<\/h4>\n<pre><code>\nINSERT INTO tablo_adi (sutun1, sutun2, ...)\nVALUES (deger1, deger2, ...);\n\n-- T\u00fcm s\u00fctunlara de\u011fer giriliyorsa s\u00fctun adlar\u0131 atlanabilir:\nINSERT INTO tablo_adi\nVALUES (deger1, deger2, ...);\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Musteriler tablosuna yeni bir m\u00fc\u015fteri ekleyelim.<\/p>\n<pre><code>\nINSERT INTO Musteriler (Ad, Soyad, Eposta, Telefon, KayitTarihi)\nVALUES ('Ay\u015fe', 'Y\u0131lmaz', 'ayse.yilmaz@example.com', '5551234567', '2023-01-15');\n<\/code><\/pre>\n<h4>Veri G\u00fcncelleme (UPDATE)<\/h4>\n<pre><code>\nUPDATE tablo_adi\nSET sutun1 = yeni_deger1, sutun2 = yeni_deger2, ...\nWHERE kosul; -- WHERE ko\u015fulu belirtilmezse t\u00fcm sat\u0131rlar g\u00fcncellenir!\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Ay\u015fe Y\u0131lmaz&#8217;\u0131n e-posta adresini g\u00fcncelleyelim.<\/p>\n<pre><code>\nUPDATE Musteriler\nSET Eposta = 'ayse.yilmaz.yeni@example.com'\nWHERE MusteriID = 1; -- Varsay\u0131msal olarak MusteriID 1\n<\/code><\/pre>\n<h4>Veri Silme (DELETE FROM)<\/h4>\n<pre><code>\nDELETE FROM tablo_adi\nWHERE kosul; -- WHERE ko\u015fulu belirtilmezse t\u00fcm sat\u0131rlar silinir!\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> MusteriID&#8217;si 1 olan m\u00fc\u015fteriyi silelim.<\/p>\n<pre><code>\nDELETE FROM Musteriler\nWHERE MusteriID = 1;\n<\/code><\/pre>\n<h3>Tablo Silme: DROP TABLE ve TRUNCATE TABLE<\/h3>\n<h4>DROP TABLE<\/h4>\n<p><code>DROP TABLE<\/code> komutu, bir tablonun tamam\u0131n\u0131 (yap\u0131s\u0131 ve i\u00e7erdi\u011fi t\u00fcm verilerle birlikte) veritaban\u0131ndan kal\u0131c\u0131 olarak siler.<\/p>\n<pre><code>\nDROP TABLE tablo_adi;\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Siparisler tablosunu silelim.<\/p>\n<pre><code>\nDROP TABLE Siparisler;\n<\/code><\/pre>\n<p><strong>Dikkat:<\/strong> E\u011fer silmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z tabloya ba\u015fka bir tablo FOREIGN KEY ile referans veriyorsa, bu i\u015flem ba\u015far\u0131s\u0131z olabilir veya veritaban\u0131 sistemine ba\u011fl\u0131 olarak <code>CASCADE<\/code> se\u00e7ene\u011fi ile birlikte kullan\u0131lmas\u0131 gerekebilir (bu durumda referans veren tablodaki ilgili sat\u0131rlar da silinebilir).<\/p>\n<pre><code>\n-- PostgreSQL \u00f6rne\u011fi: Referans veren k\u0131s\u0131tlamalar\u0131 da siler\nDROP TABLE Siparisler CASCADE;\n<\/code><\/pre>\n<h4>TRUNCATE TABLE<\/h4>\n<p><code>TRUNCATE TABLE<\/code> komutu, bir tablodaki t\u00fcm verileri h\u0131zl\u0131 bir \u015fekilde siler, ancak tablonun yap\u0131s\u0131n\u0131 korur. Genellikle <code>DELETE FROM tablo_adi;<\/code> komutundan daha h\u0131zl\u0131d\u0131r \u00e7\u00fcnk\u00fc her sat\u0131r\u0131 tek tek silmek yerine t\u00fcm veri sayfalar\u0131n\u0131 serbest b\u0131rak\u0131r ve genellikle i\u015flem g\u00fcnl\u00fc\u011f\u00fcne daha az kay\u0131t yazar.<\/p>\n<pre><code>\nTRUNCATE TABLE tablo_adi;\n<\/code><\/pre>\n<p><strong>Farklar:<\/strong><\/p>\n<ul>\n<li><code>DROP TABLE<\/code>: Tablo yap\u0131s\u0131n\u0131 ve verilerini siler.<\/li>\n<li><code>TRUNCATE TABLE<\/code>: Yaln\u0131zca verileri siler, tablo yap\u0131s\u0131n\u0131 korur. Genellikle <code>AUTO_INCREMENT<\/code> saya\u00e7lar\u0131n\u0131 s\u0131f\u0131rlar.<\/li>\n<li><code>DELETE FROM<\/code>: Yaln\u0131zca verileri siler, tablo yap\u0131s\u0131n\u0131 korur ve <code>AUTO_INCREMENT<\/code> saya\u00e7lar\u0131n\u0131 s\u0131f\u0131rlamaz. Her sat\u0131r\u0131 tek tek siler ve i\u015flem g\u00fcnl\u00fc\u011f\u00fcne kaydeder, bu y\u00fczden daha yava\u015f olabilir.<\/li>\n<\/ul>\n<h3>\u0130leri D\u00fczey Tablo \u00d6zellikleri ve Y\u00f6netimi<\/h3>\n<h4>\u0130ndeksler (Indexes)<\/h4>\n<p>\u0130ndeksler, veritaban\u0131 tablolar\u0131ndaki verilere daha h\u0131zl\u0131 eri\u015fim sa\u011flamak i\u00e7in kullan\u0131lan \u00f6zel arama tablolar\u0131d\u0131r. Bir kitab\u0131n indeksine benzer \u015fekilde \u00e7al\u0131\u015f\u0131rlar; belirli bir s\u00fctundaki de\u011ferleri ve bu de\u011ferlerin bulundu\u011fu sat\u0131rlar\u0131n fiziksel konumlar\u0131n\u0131 saklarlar. Bu, veritaban\u0131n\u0131n b\u00fcy\u00fck veri k\u00fcmelerinde bile belirli sat\u0131rlar\u0131 h\u0131zla bulmas\u0131na olanak tan\u0131r.<\/p>\n<ul>\n<li><strong>Neden Kullan\u0131l\u0131r?<\/strong> <code>SELECT<\/code> sorgular\u0131n\u0131n performans\u0131n\u0131 art\u0131rmak i\u00e7in. \u00d6zellikle <code>WHERE<\/code>, <code>JOIN<\/code> ve <code>ORDER BY<\/code> yan t\u00fcmcelerinde kullan\u0131lan s\u00fctunlar i\u00e7in indeksler faydal\u0131d\u0131r.<\/li>\n<li><strong>Dezavantajlar\u0131:<\/strong> \u0130ndeksler disk alan\u0131 kaplar ve <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code> i\u015flemleri s\u0131ras\u0131nda g\u00fcncellenmeleri gerekti\u011fi i\u00e7in bu i\u015flemlerin performans\u0131n\u0131 bir miktar d\u00fc\u015f\u00fcrebilir.<\/li>\n<li><strong>T\u00fcrleri:<\/strong>\n<ul>\n<li><strong>PRIMARY KEY \u0130ndeksi:<\/strong> Her PRIMARY KEY otomatik olarak indekslenir.<\/li>\n<li><strong>UNIQUE \u0130ndeksi:<\/strong> Her UNIQUE k\u0131s\u0131tlama otomatik olarak indekslenir.<\/li>\n<li><strong>Non-Unique \u0130ndeks:<\/strong> Benzersiz olmayan de\u011ferler i\u00e7in olu\u015fturulur.<\/li>\n<li><strong>Clustered \u0130ndeks (K\u00fcmelenmi\u015f \u0130ndeks):<\/strong> Verilerin diskte fiziksel olarak indeksin s\u0131ras\u0131na g\u00f6re depolanmas\u0131n\u0131 sa\u011flar. Bir tabloda yaln\u0131zca bir tane olabilir. (SQL Server&#8217;a \u00f6zg\u00fc bir kavramd\u0131r, MySQL&#8217;de InnoDB motorunda PRIMARY KEY k\u00fcmelenmi\u015f indekstir.)<\/li>\n<li><strong>Non-Clustered \u0130ndeks (K\u00fcmelenmemi\u015f \u0130ndeks):<\/strong> Verilerin fiziksel depolama s\u0131ras\u0131ndan ba\u011f\u0131ms\u0131zd\u0131r. Bir tabloda birden fazla olabilir.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>\u0130ndeks Olu\u015fturma:<\/strong><\/p>\n<pre><code>\nCREATE INDEX indeks_adi\nON tablo_adi (sutun1, sutun2, ...);\n\n-- Benzersiz indeks\nCREATE UNIQUE INDEX indeks_adi\nON tablo_adi (sutun_adi);\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Musteriler tablosundaki Soyad s\u00fctununa bir indeks ekleyelim.<\/p>\n<pre><code>\nCREATE INDEX IX_Musteriler_Soyad\nON Musteriler (Soyad);\n<\/code><\/pre>\n<h4>G\u00f6r\u00fcn\u00fcmler (Views)<\/h4>\n<p>Bir g\u00f6r\u00fcn\u00fcm, bir veya daha fazla tablodan t\u00fcretilen sanal bir tablodur. G\u00f6r\u00fcn\u00fcmlerin kendisi veri depolamaz; bunun yerine, bir sorgunun sonucunu temsil ederler. G\u00f6r\u00fcn\u00fcmler, karma\u015f\u0131k sorgular\u0131 basitle\u015ftirmek, g\u00fcvenlik sa\u011flamak (kullan\u0131c\u0131lara yaln\u0131zca belirli s\u00fctunlar\u0131 veya sat\u0131rlar\u0131 g\u00f6stermek) ve veri soyutlama sa\u011flamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>G\u00f6r\u00fcn\u00fcm Olu\u015fturma:<\/strong><\/p>\n<pre><code>\nCREATE VIEW gorunum_adi AS\nSELECT sutun1, sutun2, ...\nFROM tablo_adi\nWHERE kosul;\n<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong> Yaln\u0131zca belirli bilgileri i\u00e7eren aktif m\u00fc\u015fterilerin bir g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc olu\u015ftural\u0131m.<\/p>\n<pre><code>\nCREATE VIEW AktifMusteriler AS\nSELECT MusteriID, Ad, Soyad, Eposta\nFROM Musteriler\nWHERE KayitTarihi >= '2023-01-01';\n<\/code><\/pre>\n<h4>Otomatik Artan S\u00fctunlar (Auto-Increment Columns)<\/h4>\n<p>Birincil anahtar olarak kullan\u0131lan ID s\u00fctunlar\u0131n\u0131n her yeni kay\u0131t eklendi\u011finde otomatik olarak artan benzersiz bir de\u011fer almas\u0131n\u0131 sa\u011flayan bir \u00f6zelliktir. Bu, manuel ID atama hatalar\u0131n\u0131 \u00f6nler ve benzersizli\u011fi garanti eder. Her veritaban\u0131 sisteminde farkl\u0131 anahtar kelimelerle ifade edilir:<\/p>\n<ul>\n<li><strong>MySQL:<\/strong> <code>AUTO_INCREMENT<\/code><\/li>\n<li><strong>SQL Server:<\/strong> <code>IDENTITY(ba\u015flang\u0131\u00e7_de\u011feri, art\u0131\u015f_miktar\u0131)<\/code><\/li>\n<li><strong>PostgreSQL:<\/strong> <code>SERIAL<\/code> veya <code>BIGSERIAL<\/code><\/li>\n<\/ul>\n<h3>\u0130yi Tablo Tasar\u0131m\u0131 \u0130lkeleri<\/h3>\n<p>Etkili bir veritaban\u0131, iyi tasarlanm\u0131\u015f tablolara dayan\u0131r. \u0130yi tablo tasar\u0131m\u0131, veri tekrar\u0131n\u0131 azalt\u0131r, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc art\u0131r\u0131r ve sorgu performans\u0131n\u0131 optimize eder.<\/p>\n<h4>Normalizasyon (Normalization)<\/h4>\n<p>Normalizasyon, veritaban\u0131 tasar\u0131m\u0131nda veri tekrar\u0131n\u0131 (redundancy) azaltmak ve veri anormalliklerini (anomalies) \u00f6nlemek i\u00e7in kullan\u0131lan bir dizi kurald\u0131r. Farkl\u0131 normal formlar (1NF, 2NF, 3NF, BCNF vb.) bulunur, ancak \u00e7o\u011fu uygulama i\u00e7in 3NF yeterlidir.<\/p>\n<ul>\n<li><strong>1. Normal Form (1NF):<\/strong>\n<ul>\n<li>Her h\u00fccrede tek bir de\u011fer olmal\u0131d\u0131r (atomik de\u011ferler).<\/li>\n<li>Her s\u00fctun benzersiz bir isme sahip olmal\u0131d\u0131r.<\/li>\n<li>Her sat\u0131r benzersiz olmal\u0131d\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><strong>2. Normal Form (2NF):<\/strong>\n<ul>\n<li>1NF&#8217;de olmal\u0131d\u0131r.<\/li>\n<li>T\u00fcm anahtar olmayan s\u00fctunlar, birincil anahtar\u0131n tamam\u0131na ba\u011fl\u0131 olmal\u0131d\u0131r (bile\u015fik anahtarlar i\u00e7in ge\u00e7erlidir).<\/li>\n<\/ul>\n<\/li>\n<li><strong>3. Normal Form (3NF):<\/strong>\n<ul>\n<li>2NF&#8217;de olmal\u0131d\u0131r.<\/li>\n<li>Anahtar olmayan hi\u00e7bir s\u00fctun, ba\u015fka bir anahtar olmayan s\u00fctuna ba\u011f\u0131ml\u0131 olmamal\u0131d\u0131r (ge\u00e7i\u015fli ba\u011f\u0131ml\u0131l\u0131k olmamal\u0131d\u0131r).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Ama\u00e7:<\/strong> Veri tekrar\u0131n\u0131 en aza indirmek, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak ve ekleme, g\u00fcncelleme, silme anormalliklerini ortadan kald\u0131rmakt\u0131r.<\/p>\n<h4>Denormalizasyon (Denormalization)<\/h4>\n<p>Normalizasyonun tam tersidir. Bazen, okuma performans\u0131n\u0131 art\u0131rmak i\u00e7in kas\u0131tl\u0131 olarak veri tekrar\u0131na izin verilir. \u00d6zellikle \u00e7ok yo\u011fun okuma i\u015flemleri olan ve karma\u015f\u0131k JOIN&#8217;ler gerektiren durumlarda denormalizasyon d\u00fc\u015f\u00fcn\u00fclebilir. Ancak, bu, veri tekrar\u0131 ve tutars\u0131zl\u0131k riskini art\u0131r\u0131r, bu y\u00fczden dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h4>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc (Data Integrity)<\/h4>\n<p>Veri b\u00fct\u00fcnl\u00fc\u011f\u00fc, veritaban\u0131ndaki verilerin do\u011frulu\u011funu ve tutarl\u0131l\u0131\u011f\u0131n\u0131 ifade eder. SQL k\u0131s\u0131tlamalar\u0131, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak i\u00e7in temel ara\u00e7lard\u0131r.<\/p>\n<ul>\n<li><strong>Varl\u0131k B\u00fct\u00fcnl\u00fc\u011f\u00fc (Entity Integrity):<\/strong> PRIMARY KEY k\u0131s\u0131tlamas\u0131 ile sa\u011flan\u0131r. Her varl\u0131\u011f\u0131n (sat\u0131r\u0131n) benzersiz ve tan\u0131mlanabilir olmas\u0131n\u0131 garanti eder.<\/li>\n<li><strong>Referans B\u00fct\u00fcnl\u00fc\u011f\u00fc (Referential Integrity):<\/strong> FOREIGN KEY k\u0131s\u0131tlamas\u0131 ile sa\u011flan\u0131r. \u0130li\u015fkili tablolar aras\u0131ndaki verilerin tutarl\u0131 olmas\u0131n\u0131 garanti eder.<\/li>\n<li><strong>Alan B\u00fct\u00fcnl\u00fc\u011f\u00fc (Domain Integrity):<\/strong> Veri tipleri, NOT NULL, DEFAULT ve CHECK k\u0131s\u0131tlamalar\u0131 ile sa\u011flan\u0131r. Bir s\u00fctundaki de\u011ferlerin belirli bir etki alan\u0131 (domain) i\u00e7indeki kurallara uymas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h4>\u0130simlendirme Kurallar\u0131 (Naming Conventions)<\/h4>\n<p>Tutarl\u0131 ve a\u00e7\u0131klay\u0131c\u0131 isimlendirme kurallar\u0131 kullanmak, veritaban\u0131n\u0131n anla\u015f\u0131lmas\u0131n\u0131 ve bak\u0131m\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. \u00d6neriler:<\/p>\n<ul>\n<li>Tablo adlar\u0131 \u00e7o\u011ful (<code>Musteriler<\/code>, <code>Urunler<\/code>) veya tekil (<code>Musteri<\/code>, <code>Urun<\/code>) olabilir, ancak tutarl\u0131 olun.<\/li>\n<li>S\u00fctun adlar\u0131 a\u00e7\u0131klay\u0131c\u0131 olmal\u0131 (<code>MusteriID<\/code> yerine <code>ID<\/code> kullanmaktan ka\u00e7\u0131n\u0131n).<\/li>\n<li>B\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131l\u0131\u011f\u0131na dikkat edin (veritaban\u0131 sistemine g\u00f6re de\u011fi\u015fir).<\/li>\n<li>Bo\u015fluk ve \u00f6zel karakterlerden ka\u00e7\u0131n\u0131n, alt \u00e7izgi (<code>_<\/code>) kullan\u0131n (<code>Musteri_ID<\/code>).<\/li>\n<li>K\u0131s\u0131tlamalar i\u00e7in standart \u00f6nekler kullan\u0131n (\u00f6rn. <code>PK_<\/code>, <code>FK_<\/code>, <code>UQ_<\/code>, <code>CK_<\/code>).<\/li>\n<\/ul>\n<h3>G\u00fcvenlik ve \u0130zinler<\/h3>\n<p>Tablolar, hassas veriler i\u00e7erebilece\u011fi i\u00e7in g\u00fcvenlik b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Kullan\u0131c\u0131lara yaln\u0131zca ihtiya\u00e7 duyduklar\u0131 verilere eri\u015fim ve i\u015flem yapma yetkisi verilmelidir.<\/p>\n<ul>\n<li><code>GRANT<\/code> komutu, belirli kullan\u0131c\u0131lara veya rollere tablolar \u00fczerinde <code>SELECT<\/code>, <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code> gibi yetkiler verir.<\/li>\n<li><code>REVOKE<\/code> komutu, daha \u00f6nce verilmi\u015f yetkileri geri almak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p><strong>\u00d6rnek:<\/strong> &#8216;rapor_kullanici&#8217; adl\u0131 kullan\u0131c\u0131ya Musteriler tablosundan sadece veri okuma yetkisi verelim.<\/p>\n<pre><code>\nGRANT SELECT ON Musteriler TO rapor_kullanici;\n<\/code><\/pre>\n<h3>Sonu\u00e7<\/h3>\n<p>SQL&#8217;de tablo olu\u015fturma ve y\u00f6netimi, bir veritaban\u0131 y\u00f6neticisinin veya geli\u015ftiricisinin en temel ve kritik becerilerinden biridir. Do\u011fru veri tiplerini se\u00e7mek, uygun k\u0131s\u0131tlamalar\u0131 uygulamak ve iyi tasar\u0131m ilkelerini takip etmek, g\u00fc\u00e7l\u00fc, g\u00fcvenilir ve y\u00fcksek performansl\u0131 bir veritaban\u0131 sistemi olu\u015fturman\u0131n temelini olu\u015fturur.<\/p>\n<p>Bu makalede ele al\u0131nan <code>CREATE TABLE<\/code>, <code>ALTER TABLE<\/code>, <code>DROP TABLE<\/code> gibi komutlar, tablo yap\u0131s\u0131n\u0131 tan\u0131mlaman\u0131za ve de\u011fi\u015ftirmenize olanak tan\u0131r. <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code> gibi DML komutlar\u0131 ise tablolardaki verileri manip\u00fcle etmek i\u00e7in kullan\u0131l\u0131r. \u0130ndeksler ve g\u00f6r\u00fcn\u00fcmler gibi ileri d\u00fczey \u00f6zellikler, performans\u0131 ve g\u00fcvenli\u011fi art\u0131rmak i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r. Son olarak, normalizasyon, veri b\u00fct\u00fcnl\u00fc\u011f\u00fc ve isimlendirme kurallar\u0131 gibi iyi tasar\u0131m ilkeleri, veritaban\u0131n\u0131z\u0131n uzun vadeli sa\u011fl\u0131\u011f\u0131 ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<p>Veritaban\u0131 tasar\u0131m\u0131 ve y\u00f6netimi, s\u00fcrekli \u00f6\u011frenme ve pratik gerektiren dinamik bir aland\u0131r. Farkl\u0131 veritaban\u0131 sistemlerinin (MySQL, PostgreSQL, SQL Server, Oracle vb.) kendine \u00f6zg\u00fc n\u00fcanslar\u0131 ve ek \u00f6zellikleri oldu\u011funu unutmamak \u00f6nemlidir. Bu temel bilgileri sa\u011flam bir \u015fekilde kavrayarak, karma\u015f\u0131k veritaban\u0131 projelerinde ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015fmak i\u00e7in sa\u011flam bir temel olu\u015fturabilirsiniz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"SQL&#8217;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?\n\u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinin (RDBMS) temel yap\u0131 ta\u015f\u0131 olan tablolar, verileri","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1505],"tags":[],"class_list":{"0":"post-36444","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-sql-2","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQL&#039;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL&#039;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?\" \/>\n<meta property=\"og:description\" content=\"SQL&#039;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir? \u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinin (RDBMS) temel yap\u0131 ta\u015f\u0131 olan tablolar, verileri\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-17T11:40:53+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SQL&#8217;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?\",\"datePublished\":\"2025-12-17T11:40:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/\"},\"wordCount\":2762,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"SQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/\",\"name\":\"SQL'de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-17T11:40:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL&#8217;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL'de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/","og_locale":"tr_TR","og_type":"article","og_title":"SQL'de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?","og_description":"SQL'de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir? \u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinin (RDBMS) temel yap\u0131 ta\u015f\u0131 olan tablolar, verileri","og_url":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-17T11:40:53+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SQL&#8217;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?","datePublished":"2025-12-17T11:40:53+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/"},"wordCount":2762,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["SQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/","url":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/","name":"SQL'de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-17T11:40:53+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-tablolar-nasil-olusturulur-ve-yonetilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL&#8217;de Tablolar Nas\u0131l Olu\u015fturulur ve Y\u00f6netilir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36444"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36444\/revisions"}],"predecessor-version":[{"id":36445,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36444\/revisions\/36445"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}