Tablo Oluşturma (Create Table)

 

Veritabanı oluşturmada bir sonraki adım, tablo oluşturmaktır. Bunu, create table MySQL komutunu kullanarak yapabiliriz. Tablo oluşturma işlemi yapılmadan önce mutlaka veritabanı seçilmelidir (use komutuyla). Bir create table ifadesinin genel formu şöyledir.

              

  Kullanımı;

Create Table <tablo adı>                                                       

alan_adı veri_türü [Default ifade][alan_kısıtlaması],[tablo kısıtlaması]);       

Tablo Adı : Tabloya verilecek isim (örnek: mezunkayit),
Alan Adı : Tabloda yer alacak bilgi alanlarının adı (örnek: ogr_no, adi, soyadi),
Alan Veri Türü : O alana girilecek bilginin türü (sayı, metin, tarih),
Default İfade : O alan belirtilmezse başlangıçta atanacak değer,
Alan Kısıtlaması : O alanla ilgili kısıtlama (boş olmaması, o alana sadece E veya K girilmesi gibi kısıtlamalar),
Tablo Kısıtlaması : Her kaydın belirli alanlara göre kısıtlanması (kayıtların tek olmasını sağlamak, başka bir tabloyla ilişkilendirmek)

 

MySQL’de üç temel veri tipi vardır. Bunlar; sayısal (numeric), tarih ve saat (date and time) ve karakter katarıdır (string). Bu kategorilerin her birinin içinde de pek çok tip bulunur. Her bir tipin hafızada çeşitli depolama boyutları vardır. Veri türleri ve özelliklerini aşağıdaki tabloda görülmektedir.

 

    

Alan Veri TürleriSayısal (Numeric) Veri Türleri
Veri Türü Aralık Kapladığı Yer

TINYINT

[(m)][UNSIGNED] [ZEROFILL]

-128 ile 127 arasında

1 byte

SMALLINT [(m)][UNSIGNED] [ZEROFILL]

-32768 ile 32767 arasında

2 byte

MEDIUM (m)][UNSIGNED][ZEROFILL]

-8388608 ile 8388607 arasında

3 byte

INT[(m)][UNSIGNED][ZEROFILL]

-2147483648 ile 2147483647 arasında

4 byte

BIGINT

[(m)][UNSIGNED][ZEROFILL]

-9223372036854775808 ile 9223372036854775807 arasında

8 byte

FLOAT

Virgülden sonra 4 yada 8 haneli

4 byte

FLOAT (m,n)

İşaretli Küçük Reel Sayı

4 byte

DOUBLE PRECISION [(m,n)]

İşaretli Normal Reel Sayı

8 byte

REAL [(m,n)]

Double ile aynıdır

8 byte

DECIMAL [(m,n)]

Double ile aynıdır

(m+n) byte

NUMERIC [(m,n)]

Decimal ile aynıdır

(m+n) byte

Tarih ve Saat (Date and Time) Veri Türleri
Veri Türü Aralık Kapladığı Yer

TIMESTAMP [(m)]

O andaki sistem zamanını tutar (tarih ve saat)

4 byte

DATE

YYYY-MM-DD,YY-MM-DD,YYMMDD formatında 0000-0-00 ile 9999-12-31 arasında

4 byte

TIME

HH:MM:SS,HHMMSS,HHMM,HH

3 byte

DATETIME

YYYY-MM-DD HH:MM:SS

8 byte

Alfasayısal (Karakter-String) Veri Türleri
Veri Türü Aralık Kapladığı Yer

CHAR (m)[BNIARY]

M:1 ile 255 arası BINARY kullanılırsa aramalarda büyük/küçük harf arımıdır.

m byte

VARCHAR

 (m) [BINRY] Char ile aynıdır, fakat kapladığı alan açısından farklıdır.

(Girilen uznlk+1) byte

TINYTEXT(m),[BINARY]

Char ile aynıdır, fakat kapladığı yer açısından farklıdır.

(Girilen uznlk+1) byte

TINYTEXT ve TINYBLOB

Varchar ile aynıdır. Küçük/büyük harf ayrımı vardır. Uzunluk belirtilmez.

(Girilen uznlk+1) byte

TEXT ve BLOB

Küçük/Büyük harf ayrımı vardır. Uzunluk belirtilmez. Max. 65535 karakter

(Girilen uzunluk+2) byte

MEDIUMTEXT ve MEDIUMBLOB

Küçük/Büyük harf ayrımı vardır. Uzunluk belirtilmez. Max. 16777216 karakter.

(Girilen uznlk + 3) byte

LONGTEXT ve LONGBLOB

Küçük/Büyük harf ayrımı vardır. Uzunluk belirtilmez. Max. 4294967295 karakter

(Girilen uznlk+4) byte

ENUM(‘değer1’,’değer2’,….,’değern’)

Verilen değerlerden bir tanesi mutlaka seçilidir. (Alan kısıtlamasında kullanılır)

En fazla 2 byte

SET (‘değer1’, ’değer2’,…., ’değern’)

Verilen değerlerden birden çok seçilebilir.

1-8 byte arasında

Tablo 1.1. Alan Veri Türü 

Örnek; Mezun olan öğrenciler için mezun bilgilerinin tutulacağı bir tablo oluşturalım. Bu tablo için aşağıdaki alan adları bulunacaktır. Tablo adını kayit olarak kabul edelim.

 Alan adı- Açıklama

adi          : Öğrenci adı,

soyadi     : Öğrenci soyadı,

ogrno      : Öğrenci No,

Kayit tablosunun oluşturulması; mysql> create table kayit    ->( ad varchar(15) not null,    ->soyad varchar(15)not null,    ->ogrno smallint(5) unsigned,    ->constraint ogrno_pk primary key (ogrno)    ->);Query OK, 0 rows affected (0.08 sec) 

Örnek; Bir alışveriş sitesinde müşteri bilgilerini tutacak bir tablo için aşağıdaki alanlar bulunacaktır. Tablo adı musteri olsun.

 Alan adı -   AçıklamaMusteri_id :müşteri numarasıadsoyad     : Müşteri adı ve soyadı,

adres         : Müşteri adresi,

sehir          :  Şehir,

tlfon          : Telefon,

 Musteri tablosunu oluşturulması; mysql> create table musteri    ->(musteri_id int unsigned not null auto_increment primary key,     ->adsoyad varchar(50) not null,    ->adres varchar(100) not null,    ->sehir varchar(15) not null,    ->tlfon varchar(11) not null    ->);Query OK, 0 rows affected (0.08 sec) 

Örnek; Bir satış sitesine konulacak ürünlerin tutulacağı urun adlı tabloyu aşağıdaki gibi oluşturalım.

 Alan adı                            Açıklama

Urun_kodu          : Satılacak ürün kodu,

Urun_markasi     : Satılacak ürünün markası,

Urun_turu           : Satılacak ürün türü,

Urun_fiyati          : Satılacak ürünün fiyatı,

 Urun tablosunun oluşturulması; mysql> create table urun    ->( urun_kodu integer(5) zerofill not null,    ->urun_markasi varchar(20)not null default ‘BELİRSİZ’,    ->urun_turu varchar(20)not null default ‘BELİRSİZ’,    ->urun_fiyati bigint(10) unsigned,    ->constraint urun_kodu_pk primary key (urun_kodu),    ->);Query OK, 0 rows affected (0.07 sec)

Tabloları Silmek (Drop Table)

 

Bazen bir tablonun tamamından kurtulmak isteyebilirsiniz. Bunun için DROP TABLE ifadesiyle yapabilirsiniz. Genel kullanımı aşağıdaki gibidir.

 Kullanımı;

DROP TABLE tablo_adi

 

Örnek; musteri tablosunu silmek için aşağıdaki ifade kullanılır.

 mysql> drop table  musteri; Bu sorgu tablodaki tüm satırları ve tablonun kendisini sileceğinden, kullanırken dikkatli olunmalıdır.