SQL Notları: Tablo Oluşturma ve Yönetimi

MySQL’de tablo oluşturma, veritabanı yönetiminin temel taşlarından biridir. Bu yazıda, MySQL’de tablo oluşturma, birincil anahtar (Primary Key) ve yabancı anahtar (Foreign Key) kullanımı, tablo yapısını görüntüleme ve mevcut tabloları klonlama gibi konuları ele alacağız.

#### 1. Tablo Oluşturma ve Birincil Anahtar (Primary Key)

Birincil anahtar, bir tablodaki her satırı benzersiz şekilde tanımlayan bir sütun veya sütun grubudur. Birincil anahtar, `NOT NULL` olmalıdır ve her tabloda yalnızca bir tane bulunabilir.

##### Örnek 1: Birincil Anahtar ile Tablo Oluşturma

Aşağıdaki örnekte, `PersonID` sütunu birincil anahtar olarak tanımlanmıştır:

“`sql
CREATE TABLE Person (
   PersonID INT UNSIGNED NOT NULL,
   LastName VARCHAR(66) NOT NULL,
   FirstName VARCHAR(66),
   Address VARCHAR(255),
   City VARCHAR(66),
   PRIMARY KEY (PersonID)
);
“`

Bu örnekte, `PersonID` sütunu, `Person` tablosundaki her satırı benzersiz şekilde tanımlar.

##### Örnek 2: Tek Sütunlu Birincil Anahtar (Inline Tanım)

Eğer birincil anahtar tek bir sütundan oluşuyorsa, `PRIMARY KEY` tanımını sütun tanımıyla birlikte yapabilirsiniz:

“`sql
CREATE TABLE Person (
   PersonID INT UNSIGNED NOT NULL PRIMARY KEY,
   LastName VARCHAR(66) NOT NULL,
   FirstName VARCHAR(66),
   Address VARCHAR(255),
   City VARCHAR(66)
);
“`

Bu yöntem, kodu daha kısa ve okunabilir hale getirir.

##### Örnek 3: Çok Sütunlu Birincil Anahtar

Birincil anahtar, birden fazla sütundan oluşabilir. Bu durumda, `PRIMARY KEY` tanımı ayrı bir satırda yapılmalıdır:

“`sql
CREATE TABLE invoice_line_items (
   LineNum SMALLINT UNSIGNED NOT NULL,
   InvoiceNum INT UNSIGNED NOT NULL,
   PRIMARY KEY (LineNum, InvoiceNum)
);
“`

Bu örnekte, `LineNum` ve `InvoiceNum` sütunları birlikte birincil anahtar olarak tanımlanmıştır.

#### 2. Yabancı Anahtar (Foreign Key) ile Tablo Oluşturma

Yabancı anahtar, bir tablodaki sütunun başka bir tablodaki birincil anahtara referans vermesini sağlar. Bu, tablolar arasında ilişki kurmak için kullanılır.

##### Örnek: Yabancı Anahtar ile Tablo Oluşturma

Aşağıdaki örnekte, `Account` tablosundaki `PersonID` sütunu, `Person` tablosundaki `PersonID` sütununa referans verir:

“`sql
CREATE TABLE Account (
   AccountID INT UNSIGNED NOT NULL,
   AccountNo INT UNSIGNED NOT NULL,
   PersonID INT UNSIGNED NOT NULL,
   PRIMARY KEY (AccountID),
   FOREIGN KEY (PersonID) REFERENCES Person(PersonID)
) ENGINE=InnoDB;
“`

Bu örnekte, `Account` tablosundaki her hesap, `Person` tablosundaki bir kişiye bağlıdır.

#### 3. Tablo Yapısını Görüntüleme

Oluşturduğunuz bir tablonun yapısını görüntülemek için `SHOW CREATE TABLE` veya `DESCRIBE` komutlarını kullanabilirsiniz.

##### Örnek: Tablo Yapısını Görüntüleme

“`sql
SHOW CREATE TABLE child;
“`

Bu komut, `child` tablosunun yapısını ve oluşturulma detaylarını gösterir.

Daha basit bir yöntem olarak `DESCRIBE` komutunu da kullanabilirsiniz:

“`sql
DESCRIBE Tab1;
“`

Bu komut, `Tab1` tablosunun sütunlarını, veri tiplerini ve diğer özelliklerini listeler.

#### 4. Mevcut Bir Tabloyu Klonlama

Mevcut bir tablonun yapısını veya verilerini kopyalayarak yeni bir tablo oluşturabilirsiniz.

##### Örnek 1: Tablo Yapısını Klonlama

“`sql
CREATE TABLE ClonedPersons LIKE Persons;
“`

Bu komut, `Persons` tablosunun yapısını (sütunlar, indeksler vb.) kopyalayarak `ClonedPersons` adında yeni bir tablo oluşturur.

##### Örnek 2: Tablo Verilerini Klonlama

“`sql
CREATE TABLE ClonedPersons SELECT * FROM Persons;
“`

Bu komut, `Persons` tablosundaki tüm verileri kopyalayarak `ClonedPersons` adında yeni bir tablo oluşturur.

#### 5. Tablo Oluşturma ve Zaman Damgası (Timestamp)

Zaman damgası sütunu, bir satırın en son ne zaman güncellendiğini takip etmek için kullanılabilir.

##### Örnek: Zaman Damgası ile Tablo Oluşturma

“`sql
CREATE TABLE TestLastUpdate (
   ID INT NULL,
   Name VARCHAR(50) NULL,
   Address VARCHAR(50) NULL,
   LastUpdate TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) COMMENT=’Last Update’;
“`

Bu örnekte, `LastUpdate` sütunu, satır her güncellendiğinde otomatik olarak güncel zamanı kaydeder.

#### Sonuç

MySQL’de tablo oluşturma, birincil anahtar ve yabancı anahtar kullanımı, tablo yapısını görüntüleme ve tablo klonlama gibi işlemler, veritabanı yönetiminde oldukça önemlidir. Bu araçları etkili bir şekilde kullanarak, veritabanı tasarımınızı daha verimli hale getirebilirsiniz. Bir sonraki yazıda görüşmek üzere!