TABLOLARI OLUŞTURMA VE YÖNETME
VERİTABANI 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İ
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ı
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.
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
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
Comments (2)
DellaEteltsays:
Şubat 6, 2022 at 6:16 pm“CREATE TABLE AND DATA TYPE Temmuz 4, 2018 tarihinde gonderilmis Faruk Cevik taraf?ndan”
🙂 .
Frbetbumsays:
Mart 7, 2024 at 6:57 pm+ for the post