CREATE TABLE AND DATA TYPE

TABLOLARI OLUŞTURMA VE YÖNETME

VERİTABANI NESNELERİ

nesneler

İSİMLENDİRME KURALLARI

  • Bir harf ile başlanmalı
  • En fazla 30 karakter uzunluğunda olabilir.
  • Aynı kullanıcının altında, bir isimden sadece bir kez kullanılabilir.
  • Oracle için rezerve edilen isimler olmamalı.

SYNTAX :
CREATE TABLE FARUK_SCHEMA.BENIM_TABLE
(
ID NUMBER(6),
ISIM VARCHAR2(20),
SOYISIM VARCHAR2(20),
E_MAIL VARCHAR2(50),
DOGUM_TARIHI DATE,
MAAS NUMBER(8,2)
);

TABLOYA YORUM EKLEME

  • Tablolara yada kolonlara ayrı ayrı yorum eklenebilir.
  • Bu yorumlar, USER_TAB_COMMENTS, USER_COL_COMMENTS viewlarından sorgulanabilir.

ÖRNEK :

comment on table hr.employees is ‘HR şemasındaki işçileri simgeler’;

VERİ TİPLERİ

veritipleri

 

   Karakter Veri Tipleri

CHAR : Sabit uzunluklu karakter setlerini saklamak için kullanılır . Girilen her karakter için 1 byte yer tutar. Yalnız şu duruma dikkat etmeliyiz . Tanımlanan karakter uzunluğundan daha kısa bir veri saklamaya çalışırsak  , kaydetmek istediğimiz verinin sonuna boşluk ekler .

Örnek olarak veritabanında char(10) şeklinde bir tanımlama yaptık .  “Ali” içeriğini kaydetmek istediğimizde bu veriyi sonunu 10 a tamamlayacak şekilde veritabanına kaydeder . Veritabanındaki son hali “Ali       ” olur .

Maksimum uzunluğu 8000 karakterdir .  Her karakter için bir byte yer ayırır

VARCHAR: Karakter türünden veri tiplerini saklar . Maksimum uzunluğu 8000 karakterdir . Char veri tipinden farkı ise kaydetmek istediğimiz veri tipinin sonuna boşluk eklememesidir .

Maksimum uzunluğu 8000 karakterdir .  Her karakter için bir byte yer ayırır

VARCHAR(MAX)  : 2 GB kadar olan karakter setlerini tutar .  

NCHAR :  Char veri tipine çok benzerdir tek farkı karakter setini unicode olarak tutar . Bu nedenle her karakter veri tabanında 2 byte yer kaplar . Bu nedenle max 4000 karakter tanımlanabilir

NVARCHAR: Varchar veri tipine çok benzerdir tek farkı karakter setini unicode olarak tutar . Bu nedenle her karakter veri tabanında 2 byte yer kaplar . Bu nedenle max 4000 karakter tanımlanabilir

VARCHAR2 :  Varchar veri tipinin yeni versiyonudur . Oracle artık Varchar2 kullanmamızı önerir . Tek farkı ise Varchar null değerlerde boşluk kaydeder . (space) . Varchar2 ise null değerlerde hiçbir şey insert etmez .

NVARCHAR2 : VARCHAR2  veri tipinden tek farkı her karakter 2 byte yer kaplar.

DATE :  Tarih ve zaman bilgilerini tutmak için bu veri tipi kullanılır .

                                                          Tam Sayı Veri Türleri

BIT : Veritabanında fiziksel olarak 1 bayt veri saklar. 1 yada 0 değerini alır .

TINYINT : Veritabanında 1 byte yer kaplar . 0 – 255 arası değer alır

SMALLINT :  Veritabanında 2 byte yer kaplar . -32768 ve 32767 arasında veri saklar

INT :  4 byte bir yer kaplar

BIGINT :  8 byte bir yer kaplar

INTEGER : ANSI standartlarından dolayı Oracle ın kabul etmiş olduğu veri tipidir. NUMBER(38) veri tipine karşılık gelir .  



                                                  Ondalıklı Sayıların Veri Türleri

DECIMAL : Ondalıklı sayıları tutar. Scale den uzun bir veri geldiği durumda ondalıklı sayıları truncate eder

NUMBER : Ondalıklı sayıları tutar. Scale den uzun bir veri geldiği durumda  round(yuvarlar) eder

Tarih Veri Tipleri

DATE : Veri tipinde zaman bilgilerini tutmak için kullanılır .

DD.MM.YYYY  HH:MM:SS şeklinde tutulur .   30.09.2013 09:00:00

 LOB(Large Object)  Veri Tipleri

Büyük nesne veri tiplerinin amacı boyutu büyük olan verileri saklamaktır . (örneğin metin, grafik görüntüleri, video klipleri, ses vs. gibi )

LONG , RAW , LONG RAW : Bu veri tipleri günümüzde pek kullanılmaz . Asıl amacı eskiye yönelik desteği sağlamak . Bu tiplerin yerine BLOP , LOB , BFILE gibi veri tipleri kullanılır .

BLOB : Verileri binary olarak saklar.  Max 128 TB a kadar veri saklar . Resim , video gibi dosyalar bu veri tipinde saklanabilir .

CLOB :  Verileri karakter olarak saklar . Max 128 TB a kadar veri saklar . TXT dosyalarının içerisindeki verileri CLOB veri tipinde saklayabiliriz

BFILE : İşletim sistemindeki fiziksel dosyaların referansını saklamak için kullanılır .

NCLOP  :  Multi byte veri tipini saklar .

ROWID
ROWID : Veritabanında ilgili satırın adresini tutar . ROWID tanımladıktan sonra ilgili satırın ROWID değerinin değişmemesi lazım . Hızlı erişimlerde kullanışlıdır

UROWID :  ROWID ile yapısı aynıdır . Fakat ROWID geçmişe yönelik destek amacıyla kullanılmaktadır . Oracle yeni versiyon olarak UROWID kullanır .

                                                   Diğer Veri Tipleri 

BINARY_DOUBLE : Ondalıklı sayı değeri binary(1-0) olarak tutulur . Bu sayede ondalıklı sayılar üzerindeki işlemlerde yuvarlama , kırpma gibi durumlar olmaz

BINARY_FLOAT : Ondalıklı sayı değeri binary(1-0) olarak tutulur . Bu sayede ondalıklı sayılar üzerindeki işlemlerde yuvarlama , kırpma gibi durumlar olmaz

URITYPE : Bir URL adresinin bilgisi kaydedilir .

CHAR_VARYING :  VARCHAR veri tipiyle aynıdır

CHARACTER_VARYING :  VARCHAR veri tipiyle aynıdır

DOUBLE_PRECISION : NUMBER veri tipiyle aynıdır.

NATIONAL_CHAR  : NCHAR tipiyle aynıdır .

REAL :  FLOAT  veri tipine karşılık gelir.

National Karakter Veri Tipleri 

Oracle veritabanında karakter setlerini national olarak kaydedersek her bir katakter 1 byte yerine 2 byte yer kaplar . Bunun aslı nedeni ise UTF-16 veri formatına göre kaydetmektir . Yani ANSI standartlarında desteklenmeyen karakterler UTF-16 standartlarında olduğu için bu şekilde kaydedilir .

Farklı Veritabanlarında Veri Türleri Farklılıkları

veritipleri vt ye göre

CONSTRAINTS ( KISITLAMALAR )

  • Constraint’ler tablo seviyesinde kuralların uygulanmasına zorlar.
  • Birbirine bağımlı verilerin silinmesini engellerler.
  • Yanlış veri girişini engellerler.
  • Verilerin tekil olmasını sağlarlar.
  • Tablo yada sütun seviyesinde olabilirler.

NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK

NOT NULL CONSTRAINT :  Belirlenen sütunların null olmasını engeller.

CREATE TABLE FARUK_SCHEMA.BENIM_TABLE
(
ID NUMBER(6),
ISIM VARCHAR2(20) NOT_NULL,
SOYISIM VARCHAR2(20),
E_MAIL VARCHAR2(50),
DOGUM_TARIHI DATE,
MAAS NUMBER(8,2)
);

UNIQUE CONSTRAINT: Column un uniqe olmasını sağlar

CREATE TABLE FARUK_SCHEMA.BENIM_TABLE
(
ID NUMBER(6) UNIQUE,
ISIM VARCHAR2(20) ,
SOYISIM VARCHAR2(20),
E_MAIL VARCHAR2(50),
DOGUM_TARIHI DATE,
MAAS NUMBER(8,2)
);

PRIMARY KEY CONSTRAINT :

  • Bir tabloda sadece bir kolon için Primary Key konulabilir
  • Bu alandaki değer Null ve uniqe dir olamaz.
  • Aynı zamanda index olarak görev yapar.

CREATE TABLE FARUK_SCHEMA.BENIM_TABLE
(
ID NUMBER(6) CONSTRAINT E_PK PRIMARY KEY,
ISIM VARCHAR2(20) ,
SOYISIM VARCHAR2(20),
E_MAIL VARCHAR2(50),
DOGUM_TARIHI DATE,
MAAS NUMBER(8,2)
);

FOREIGN KEY CONSTRAINT : Bir tablonun bir kolonundaki verilerin başka bir tablodan gelmesi gerektiğini garanti eder.

customer_table

CHECK CONSTRAINT 

  • Herbir satır için uyulması gereken şartları tanımlar.
  • CURRVAL, NEXTVAL, LEVEL ve ROWNUM takma adları kullanılmaz.
  • SYSDATE, UID, USER ve USERNV fonksiyonlarını çağrılamaz.
  • Başka satırlardaki başka değerlere referans eden sorgulamalar yapılmaz.

CREATE TABLE FARUK_SCHEMA.BENIM_TABLE
(
ID NUMBER(6) CONSTRAINT E_PK PRIMARY KEY,
ISIM VARCHAR2(20) ,
SOYISIM VARCHAR2(20),
E_MAIL VARCHAR2(50),
DOGUM_TARIHI DATE,
MAAS NUMBER(8,2)  CONSTRAINT S_MIN CHECK(SALARY>3000) 
);

CTAS (CREATE TABLE AS SELECT ………)

Hızlı bir yöntemdir

CREATE TABLE TABLE_NAME
                     (column, column…….)
as subquery

ALTER TABLE

alter

Kolon isimi değiştirme

alter table hr.employees rename column employee_id to emp_id;

Tabloyu read-only moda geçirme 

alter table hr.employees read only;

Tablonun ismini değiştirme

alter table hr.employees rename to hr.isciler;

Tabloya partition ekleme 

alter table hr.employees add partition part values (‘G3_201407_07′)

Tabloya Primary key Ekleme 

ALTER TABLE HR.EMPLOYEES ADD (CONSTRAINT EMP_EMP_ID_PK PRIMARY KEY (EMP_ID));

ALTER TABLE CONSTRAINT

  • Constraint Disable edilerek tablo üzerinden, constrainte ait kontrol kaldırılır.
  • Constraint Enable edildiğinde tekrar kontroller aktif olur.
  • Unique Key yada Primary key Enable edilmek istediğinde eğer yok ise unique index otomatik oluşturulur.

ALTER TABLE HR.DEPARTMENTS DISABLE CONSTRAINT DEPT_LOC_FK;

ALTER TABLE HR.DEPARTMENTS ENABLE CONSTRAINT DEPT_LOC_FK;

ALTER TABLE – SET UNUSED

  • Bir tablo üzerinde kullanılmadığını düşündüğünüz kolonlar varsa, drop etmek yerine bunlar UNUSED olarak işaretlenebilir.
  • Böyle kolonlar, tablodan fiziksel olarak kaldırılmaz.
  • Unused işaretlenen kolonlar SQL lerde, View’larda görünmez,
  • Bu kolonlar üzerinde bulunan tüm constraint’ler, indexler ve istatistikler kaldırılır,
  • Bu kolon isimleri, yeni bir kolona verilebilir.

alter table <table_name> set unused (<column_name>);

alter table <table_name> drop unused columns;

Aşağıdaki tablolardan unused bilgileri sorgulanabilir.

  • dba_unused_col_tabs,
  • all_unused_col_tabs,
  • user_unused_col_tabs