Tablolar
Tabloları aşağıdaki örnek liste ile açıklayalım. Aşağıda ürün listesi vardır.
Ürün No | Ürün Adı | Miktar | Birim Fiyat | Birimi | İşlem Tarihi |
1001 | Kalem | 15 | 1 | KUTU | 20.09.2009 |
1007 | Silgi | 250 | 0,9 | ADET | 15.08.2009 |
2175 | Kalem Traş | 10 | 0,97 | PAKET | 14.08.2009 |
4197 | Sulu Boya | 10 | 11,7 | ADET | 15.08.2009 |
2510 | Kareli Defter | 7 | 1,3 | ADET | NULL |
2722 | Çizgili Defter | 19 | 1,3 | ADET | NULL |
Yukarıdaki listeye baktığımızda her satırda benzer bilgi vardır. Bu listeyi inceleyelim.
1. sütun Ürün No var. Bu sütunla matematik işlem yapma olasılığı yok, 4 karakterlik metin
2. sütun Ürün Adı ve uzunluğu değişken metin var.
3. sütun Miktar bilgileri vardır. Miktar bilgisi ile matematiksel işlem yapabileceği düşünerek, sayı (tamsayı)
4. sütun Birim fiyat, fiyat ile de matematiksel işlem yapabilirim. Sayı (Ondalıklı sayı)
5. sütun Birimi. Metin. (bir iki karakter sayısı farkını dikkate almadan sabit uzunluklu metin)
6. sütun İşlem tarihi. Tipi tarih tipidir.
NULL değeri belli değil. Henüz bir değer atanmamış.
ÖNEMLİ NOT : Tablolar satır satır işlenir. Tablolarda sütunlara "kolon", herbir satıra "kayıt" yada "row" adı verilir.
Bazı veritipleri
Char, sabit uzunluklu metin. 1-8000 arası uzunlukta olabilir. TCKimlik, Okulno, stokno gibi uzunluğu sabit veya sabite yakın yerlerde char tipi seçilir.
Varchar, değişken uzunluklu metin. İsim, adres gibi uzunlu çok değişken yerlerde tercih edilir
Tinyint, 1 byte'a karşılık gelen tam sayı tipidir. Alabileceği değer 0-255 arası.
Smallint, 2 byte’karşılık gelen tam sayı tipidir. Alabileceği değer -32767 ile +32768 arası.
int, 4 byte lık sayıdır. Alabileceği değer -2^31 ile +2^31
bigint, 8 byte lık sayıdır. labileceği değer -2^63 ile +2^63 arası sayı
datetime, 8 byte'lık tarih zaman veritipidir.
Örnek
Yukarıdaki listeyi tablo olarak kaydedelim.
-- Kenan veritabanı içinde tabloyu
-- oluşturuyorum
-- Açıklama
Use Kenan
Go
CREATE TABLE tbl_Urunler (
urun_no char(4) ,
urun_adi varchar(30),
miktar int,
birim_fiyat float,
birimi char(5),
islem_tarihi datetime
)
Go
Yukarıdaki örnekten gördüğümüz gibi, tablolar satır ve sütunlardan oluşmaktadır. Tablo oluştururken sütunlar tanımlanır.
Tablo Oluşturma
Tablo oluşturmak için CREATE TABLE deyimi kullanılır. Genel ifade aşağıdaki gibidir.
CREATE TABLE veritabanı_adi.şema_adi.tablo_adi
(kolon_tanımlamaları, ...)
veya
CREATE TABLE şema_adi.tablo_adi
(kolon_tanımlamaları, ...)
veya
CREATE TABLE tablo_adi
(kolon_tanımlamaları, ...)
Kolon tanımlamaları aşağıdaki gibidir.
kolon_adi veritipi kısıtlamalar
Kısıtlamalar
Tablolarda, kısıtlama bulunmaması bazı problemlere neden olabilir. Örneğin, Ürünü tanımlayan, urun_kodu, urun_no gibi bilgiler tekrar etmemesi gereken bilgilerdir.
Bazı kolonlara mutlaka veri girilmesi gerekebilir. Bu durumda bu kolonlar tanımlanırken NOT NULL şeklinde tanımlanmalıdır.
Kolon tanımında eğer NULL içeriyorsa, bu kolon NULL değer alabilir,
Eğer NOT NULL içeriyorsa, bu kolon NULL değer alamaz.
NOT NULL ve Tekillik ihtiyacı bir kısıtlamadır.
Birimi kolonunda ADET çok sayıda tekrar etmiş, biz buraya kolon tanımında varsayılan değer olarak ADET atayabiliriz.
Yukarıdaki tabloda urun_no kolonu temel bir kolondur. Çünkü bu numaradan o ürüne ait bütün bilgilere erişebiliriz.
Bu tip kolonları birincil anahtar olarak tanımlamalıyız. (primary key) Bir tabloda sadece bir tane birincil anahtar bulunabilir.
urun_no kolonunu primary key olarak tanımlayalım.
urun_no char(4) primary key not null
genel ifadesi
kolonAdı veriTipi kısıtlamalar
CREATE TABLE tbl_urunler1 (
urun_no char(4) primary key not null,
urun_adi varchar(30),
miktar int,
birim_fiyat float,
birimi char(5),
islem_tarihi datetime
)
Not null kısıtlaması
NULL : eğer biz kolona değer girmezsek kolon null değer alır. NULL değer belirsiz bir değerdir.
NOT NULL ise null değer alamaz anlamındadır. Bu şekilde veri girmeye zorlarız.
Örnek
urun_adi varchar(30) not null
yukarıdaki tabloda urun_adi’nı not null olarak yeniden tanımlayalım. Tablo adı da tbl_urunler2 olsun.
CREATE TABLE tbl_urunler2 (
urun_no char(4) primary key not null,
urun_adi varchar(30) not null,
miktar int,
birim_fiyat float,
birimi char(5),
islem_tarihi datetime)
Varsayılan değer atama (default)
Genel ifade
kolonAdı veritipi DEFAULT değer
miktar kolonuna varsayılan olarak sıfır atayalım.
miktar int default 0
birimi kolonuna varsayılan olarak ADET atayalım.
birimi char(5) default 'ADET'
islem_tarihi kolonuna bugünün tarihini varsayılan olarak atayalım.
getdate() : bugünün tarihi ve saatini verir.
islem_tarihi datetime default getdate()
yukarıdaki tabloda yerine koyalım ve tbl_urunler3 olarak kaydedelim.
CREATE TABLE tbl_urunler3 (
urun_no char(4) primary key not null,
urun_adi varchar(30) not null,
miktar int default 0,
birim_fiyat float,
birimi char(5) default 'ADET',
islem_tarihi datetime default getdate()
)
identity; otomatik sayı atama
Bu tip kolonlara veri girilemez.
Otomatik sayı tanımı :
identity (başlangıç, artım)
1 den başla 5 şer say. : identity(1,5)
2 den başla 2 şer say : identity(2,2)
1 den başla 1’er say : identity(1,1)
CREATE TABLE tbl_musteri (
musteri_no int primary key not null identity(1,1),
musteri_adi varchar(30) not null,
adresi varchar(100),
telefon varchar(20) )
go
Not : Hatalı kayıtlar da veri yazılmasa dahi otomatik numara alır.