Kenan k?l??aslan

  • Baca Hesabı
  • Sürtünme Kaybı
  • Diferansiyel Denklem
  • Denklem Çözümü
SQL Server

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ıMiktarBirim FiyatBirimiİşlem Tarihi
1001Kalem151KUTU20.09.2009
1007Silgi2500,9ADET15.08.2009
2175Kalem Traş100,97PAKET14.08.2009
4197Sulu Boya1011,7ADET15.08.2009
2510Kareli Defter71,3ADETNULL
2722Çizgili Defter191,3ADETNULL

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.

beyaz_sayfa_en_alt_oval