CREATE TABLE Komutu (CREATE TABLE Statement)


Bir veritabanı içerisinde, kullanıcıların veri girmeleri, değiştirmeleri ve sorgulamaları yapacakları bilgi dosyalarının yaratılması gereklidir. Bu yaratılan tablolara, sistemde yer alan tüm kullanıcılara veya belli kullanıcılara erişim yetkileri verilmelidir. Bu erişim yetkileri, dosyaya kayıt ekleme, silme, değiştirme ve kayıtları seçme yetkilerinden biri olabilir.

Veritabanını oluşturan tabloları yaratan komut CREATE TABLE dir. Bu komutla ; yaratılacak olan tablo ve bu tabloyu oluşturan alanlar, bu alanların tipleri, bu tabloya erişim özellikleri ve bu tablonun diğer tablolarla olan ilişkileri belirlenecektir.

CREATE TABLE tablo_adı (

Alan_adı    veritipi,

Alan_adı    veritipi,

Alan_adı    veritipi,

Alan_adı    veritipi,

CONSTRAINT adı PRIMARY KEY (alanadı,alanadi…),

CONSTRAINT adı FOREIGNKEY alanadi REFERENCES tablo_adi (alan_adi)

)

TABLESPACE tablespace_adi

STORAGE

(INITIAL          değer

NEXT             değer

MINEXTENTS       değer

MAXETTENTS       değer

PCTINCREASE      değer);

TABLO_ADI : Kullanılacak amaca uygun olarak, anlaşılabilir, türkçe karakterler ve özel karakterler içermeyen bir isim olmalıdır.

ALAN_ADI : Tablo içersinde çeşitli tipteki verilerin saklanacağı alanlara verilen isimlerdir. Burada da kullanım amacına uygun, anlaşılır ve türkçe ve özel karakterler içermeyen bir isim olmalıdır.

Kullanıcıların bu isimleri verirken daha önce dikkatini çekmeye çalıştığım özelliklere uymalarını bir kez daha hatırlatıyorum. Tablo adına bakıldığında bu tablonun ne için yaratıldığı, hangi özellikte olduğu anlaşılmalı aynı şekilde tablo içindeki alanlara verilecek olan isimlerinde barındıracağı bilgiyi açıklayıcı şekilde olmasına dikkat edilmelidir. İleri zamanlarda bu tabloya ve alan isimlerine bakıldığında hem yaratıcı hem de diğer kişilerin kolaylıkla anlamaları açısından belirli kurallara uyulması tavsiye edilmektedir. Proje bazında kullanılacak bu tablolara proje bölüm (STK, FIN, MUH vb.) takılarının eklenmesi, tablonun hangi tipte olduğunun (Parametre, Master vb.) belirtilmesi standartlarına uyulmasına dikkat ediniz.

VERİTİPİ          : Alanların hangi tipte veriyi hangi uzunlukta barındıracağının belirlenmesidir. Veritipleri içinde en çok kullanılanlar ; CHAR, VARCHAR2, NUMBER, DATE, şeklindedir.

PRIMARY KEY   : Tablo içindeki kayıtlara hızlı erişimlerde kullanılacak bir veya birden fazla alanların tanımlanması için kullanılır. En önemli özelliği bu alanlara girilecek değerlerin boş olmaması ve tekrar etmiyor olmasıdır. Bir tablo, sadece bir tek PRIMARY KEY özelliğine sahiptir. Tablolar arasındaki ilişkilendirmelerde kullanılmaktadır.

FOREIGN KEY   : Bir tablo içinde belirtilen alanların başka tablolarla bağlantısının sağlandığı ifade şeklidir. Bu özellik sayesinde belirtilen alana girilecek değer, gösterilmiş olan diğer tabloda ki alana önceden girilmiş değerler arasından olmak zorundadır. Böylece verilerin güvenilirliği, doğruluğu sağlanmış olacaktır.

PRIMARY KEY ve FOREIGN KEY ile ilgili detay bilgiler ileriki sayfalarda örnekler ve açıklamaları ile verilmektedir.

TABLESPACE     : Bu tablonun hangi tablespace üzerinde yaratılacağının belirlenmesi için kullanılır. Veritabanın kurulması sırasında kullanıcı tablolarının hangi tablespace üzerinde tutulacağı belirlenmiş olduğundan bu alan isminin kullanılması zorunludur. USER_DATA isminde bir tablespace tanımlaması yapılmışsa burada TABLESPACE user_data şeklinde kullanılmalıdır.

STOREGE bölümü altında ; bu yaratılan tablonun boyutunun, genişleme şartlarının ve bu tabloya erişim büyüklüklerinin değerleri tanımlanır.

(INITIAL          değer

NEXT             değer

MINEXTENTS       değer

MAXETTENTS       değer

PCTINCREASE      değer);

SQL ALTER TABLE KOMUTU


Bazen mevcut tablomuzda değişiklik yapmamız gerekir. Var olan tabloya bir alan eklemek, var olan alanın adını, tipi ,boyutunu vs. değiştirmek gibi. Bu tür tablo düzenleme işlemleri için SQL’in “ALTER” komutunu kullanıyoruz. Bu makalemizde,SQL Alter komutu ile yapabileceğimiz işlemleri tek tek inceleyeceğiz. Öncelikle örnek olarak kullanabileceğimiz bir tablo oluşturuyoruz.Tablomuzun adı Personel.

Create scripti:

CREATE TABLE Personel
(
Id int,
Adi vharchar(50),
Soyadi vharchar(50),
DogumTarihi DateTime
)

Tabloya yeni kolon eklemek:

Mevcut tablomuza yeni bir alan eklemek için kullanılan genel ifade:

Click here to find out more!
ALTER TABLE Tablo_adı
ADD Alan_adı Alan_türü

Örnek olarak Personel tablomuza Doğum yeri için bir alan açalım:

Alter Table Personel
Add DogumYeri vharchar(50)

Eklediğimiz alana ait özellikleri daha da özelleştirebiliriz. Mesela Cinsiyet adında, tipi bit olan bir alan ekleyelim, boş olamasın, ve default değeri False olsun

Alter Table Personel
Add Cinsiyet Bit Not Null Default ((0))

Tabloya birden çok kolon eklemek:

Mevcut tablomuza tek seferde birden çok alan eklemek için genel ifade:

ALTER TABLE Tablo_adı
ADD (Alan_adı1 Alan_türü1, Alan_adı2 Alan_türü2, …)

Örnek olarak Personel tablomuza Tc Kimlik numarası ve SSK numarası için bir alan açalım:

Alter Table Personel
Add ( TCKimlikNo int not null, SSKNo int null)

Tabloya Primary Key eklemek:

Mevcut tablomuza bulunan bir alanı primary key yapmak için kullanılan genel ifade:

ALTER TABLE Tablo_adı
ADD PRIMARY KEY (Alan_adı)

Örnek olarak Personel tablomuza bulunan Id alanını Primary key yapalım:

Alter Table Personel
Add Primary Key (Id)

Mevcut tablomuza yeni bir alan ekleyip, primary key yapmak için kullanılan genel ifade:

ALTER TABLE Tablo_adı
ADD Alan_adı Not Null PRIMARY KEY

Örnek olarak Personel tablomuza ID2 adında bir alan ekleyip, Primary key yapalım:

Alter Table Personel
Add ID2 int Not Null IDENTITY(1,1) Primary Key

Tablodaki alanın Primary Key özelliğini silmek: Mevcut tablomuza bulunan primary key alanın bu özelliğini kaldırmak için kullanılan genel ifade:

ALTER TABLE Tablo_adı DROP CONSTRAINT Alan_adı

Örnek olarak Personel tablomuza bulunan Id alanının Primary key özelliğini kaldıralım:

Alter Table Personel Drop Constraint Id

Tablodaki kolonun adını değiştirmek:

Mevcut tablomuzdaki bir alanın adını değiştirmek için kullanılan genel ifade:

Oracle için:

ALTER TABLE Tablo_adı
CHANGE alan_adı_eski to alan_adı_yeni

Örnek olarak Personel tablomuza eklediğimiz “TCKimlikNo” alanının adını TcNo yapalım:

Alter Table Personel Change TCKimlikNo to TcNo

MySql için:

ALTER TABLE Tablo_adı RENAME COLUMN alan_adı_eski to alan_adı_yeni

Örnek olarak Personel tablomuza eklediğimiz “TCKimlikNo” alanının adını TcNo yapalım:

Alter Table Personel Rename Column TCKimlikNo to TcNo

Sql server için:

EXEC sp_rename ' Tablo_adı.[alan_adı_eski]', alan_adı_yeni, 'COLUMN'

Örnek olarak Personel tablomuza eklediğimiz “TCKimlikNo” alanının adını TcNo yapalım:

EXEC sp_rename Personel.[TCKimlikNo], TcNo ,'COLUMN'

Tablodaki kolona ait bilgileri değiştirmek:

Mevcut tablomuzda var olan bir alanın bilgilerini değiştirmek için kullanılşan genel ifade:

ALTER TABLE Tablo_adı ALTER COLUMN alan_adı alan_türü

Örnek olarak Personel tablomuza yukarda eklediğimiz SSK numarasının tipini varchar olarak değiştirelim:

Click here to find out more!
Alter Table Personel Alter Column SSKNo Varchar(20)

Bu komutu kullanarak alana ait ‘Allow Null’, yani boş bırakma özelliğini de değiştirebilirz. Örnek olarak doldurulması zorunlu yaptığımız TCKimlik Numarası nullable yapalım:

Alter Table Personel Alter Column TcNo int null

Tablodaki bir kolonu silmek:

Mevcut tablomuzda var olan bir alanı silmek için kullanılan genel ifade:

ALTER TABLE Tablo_adı DROP COLUMN alan_adı

Örnek olarak Personel tablomuza yukarda eklediğimiz SSK numarası alanını silelim:

Alter Table Personel Drop Column SSKNo

Tablomuzda bulunan bir alanı sildiğimizde, o alandaki bütün datalar silinir. Eğer sildiğimiz alan composite primary key ise, hem o alan silinir hem de tabloda yinelenen kayıtlar silinir.

Tablodaki bir kolona index eklemek /indexi kaldırmak: Mevcut tablomuzda var olan bir alana index eklemek için kullanılan genel ifade:

ALTER TABLE Tablo_adı ADD INDEX Index_Adı (alan_adı)

Örnek olarak Personel tablomuzda bulunan ‘Adi’ alanını indexleyelim:

Alter Table Personel Add index Index1 (Adi)

Mevcut tablomuzda var olan bir indexi silmek için kullanılan genel ifade:

ALTER TABLE Tablo_adı DROP INDEX Index_Adı

Örnek olarak Personel tablomuzda bulunan ‘Adi’ alanının indexini silelim:

Alter Table Personel Drop index Index1

Tablodaki bir kolona Constraint eklemek / Constrainti kaldırmak:

Mevcut tablomuzda var olan bir alana Constraint eklemek için kullanılan genel ifade:

ALTER TABLE Tablo_adı ADD CONSTRAINT constraint_Adi UNIQUE (alan_adı)

Örnek olarak Personel tablomuzda bulunan ‘TCNo’ alanına Constraint ekleyelim:

Alter Table Personel Add constraint constraint1 Unique (TCNo)

Mevcut tablomuzda var olan bir Constraint i silmek için kullanılan genel ifade:

ALTER TABLE Tablo_adı DROP CONSTRAINT constraint_Adi

Örnek olarak Personel tablomuzda bulunan ‘TCNo’ alanının constraintini silelim:

Alter Table Personel Drop constraint constraint1

Tablonun adını değiştirmek:

Mevcut tablomuzun adını değiştirmek için kullanılan genel ifade:

ALTER TABLE Tablo_adı_eski RENAMA TO Tablo_adı_yeni

Örnek olarak Personel tablomuzun adını “Calisan” olarak değiştirelim :

Alter Table Personel Rename to Calisan