DELETE : Tabloda belirtilen kayıtı siler.
Yazılımı;
DELETE FROM table
[WHERE kosul]
Örnek : Personelin maasları 100.000.000 ‘dan küçük olan kayıtları silelim;
DELETE FROM Personel
WHERE maas<100000000
Bir tablodaki tüm kayıtları silmek istersek koşul konmaz. Tablo silinmez, sadece kayıtları silinir.
Örneğin
DELETE FROM Personel
Foreign key veya primary key silinecek kayıtta varsa silinme hatası verir. Çünkü başka tablo ile ilişki kurulduğundan(join), diğer tablonun kullandığı kayıt vardır. O yüzden bu kaydı silebilmek için, ilişkide bulunduğu tüm kayıtları önce silmek gerekir. Ayni zamanda tablo üzerinde çalışan kullanıcı varsa kayıtlar silinemez. ROLLBACK komutu ile silinen kayıtları kurtarabiliriz(Tabi ki en son COMMIT komutu kullanılana kadar).
COMMIT : Bütün yapılan İşlemleri kesin olarak kalıcı olmasını sağlar. Böylece yapılan değişiklikleri varsa diğer kullanıcılarda görür.
SAVEPOINT x : İşlemi belirli bir yere yönlendirmek için kullanılır. X ile belirtilen alan için işaret konularak istenildiğinde bu işarete kadar işlemler yapılabilir.
ROLLBACK x : Bütün yapılan İşlemleri kesin olarak iptal eder. SAVEPOINT komutu ile belirlenen x kodlu alana kadar olan tüm itleri iptal eder.
Yazılımı;
ROLLBACK [TO SAVEPOINT x]
Örnek:
UPDATE personel …..
SAVEPOINT dön
DELETE FROM Personel
INSERT INTO …..
ROLLBACK dön teklindeki bir işlemle personel kaydının silinmesi ve yeni kayıt eklenmesi işlemi iptal edildi. Ama ilk yapılan değişiklik kaldı.
Read uncommitted : Commit olmadan görünmez. O halde böyle level yoktur.
Read committed : Oracle ’ın varsayılan değeridir. Committen sonra işlem görür.
Serializable : Yapılan insert İşlemleri gözükmez. Eski datalar gözükür.
Read only : Transaction işleminde sadece okuma var demektir.
ALTER TABLE : Yeni bir kolon eklemek, kolonun tipini veya uzunluğunu değiştirmek vb. yapısal değişiklikler yapılması için kullanılır. Eğer kolon üzerinde değişiklikler yapılacaksa dikkat edilmesi gereken koşullar vardır. Örneğin kayıt uzunluğu 15 iken uzunluğunu 10’a indirirsek kayıt içindeki bilgiler kesilir. Kolonlar ekleyebilir ve yapısal değişiklikler yapabiliriz. Constraint yapısını ekler, silebilir, enable ve disable yapabiliriz. Yazılımı;
ALTER TABLE table
[ADD (kolon datatipi [DEFAULT değer] [NOT NULL]) , …]
[ADD [CONSTRAINT açıklama] tipi (kolon)]
[MODIFY (kolon datatipi [DEFAULT değer] [NOT NULL]) , …]
[DROP [CONSTRAINT açıklama] tipi (kolon)]
[ENABLE | DISABLE CONSTRAINT açıklama]
ADD : Yeni bir kolon ekler.
MODIFY : Kolonun içeriğini, uzunluğunu ve tipini değiştirir. Bunun için kayıtların değeri null olmalıdır.
DROP : Kolonu siler.
Kolon : Tabloda işlem yapılacak kolon adıdır.
Datatipi : Kolonun alacağı tipi belirler.
DEFAULT değer: Kolonun ilk alacağı değerdir. Kolon hiç değer atanmaz ise burada değer ile ifade edilen sabit veri aktarılır.
ENABLE : Unique veya primary key indexlerin otomatik yaratılmasını sağlar. Bütün kayıtların tanımlanan unique veya primary key tanımına uyması gerekir.
DISABLE : Unique veya primary key tanımını kaldırır.
Örnek : Personel tablosuna ek maas isminde 15 uzunluğunda bir kolon yaratalım. İlk değer 0 olsun.
ALTER TABLE Personel
ADD (ekmaas number(15) DEFAULT 15)
Örnek : Personel tablosundaki pers_id ile departman tablosundaki dept_id arasında FOREIGN KEY kuralım.
ALTER TABLE Personel
ADD CONSTRAINT personel_dept_id_fk
FOREIGN KEY (dept_id)
REFERENCES personel(pers_id)
Örnek : Personel tablosundaki maas kolonundaki alan uzunluğunu 15’e çıkaralım.
ALTER TABLE Personel
MODIFY (maas number(15))
Örnek : Personel tablosundaki maas kolonu silinsin.
ALTER TABLE Personel
DROP (maas number(15))
Örnek: Personel tablosundaki personel_id primary key için index yaratılması otomatikleştirelim;
ALTER TABLE Personel
ENABLE CONSTRAINT Personel_id_pk
DROP TABLE : Tabloyu fiziksel olarak siler. Rollback komutu ile silinen tablo geri getirilemez. Tabloyu ancak yetkisi olan kullanıcı silebilir. Yazılımı;
DROP TABLE table
[CASCADE CONSTRAINTS]
Örnek: Personel tablosunu silelim;
DROP TABLE Personel
RENAME ..TO.. : Objelerin ismini değiştirmek için kullanılır. Otomatik olarak commit olur. Tabloyu ancak yetkisi olan kullanıcı silebilir.
Yazılımı;
RENAME eski_isim TO yeni_isim
Örnek: Personel tablosunun adını pers olarak değiştirelim;
RENAME personel TO pers
TRUNCATE TABLE : Tablodaki tüm kayıtları siler. Delete komutu gibi olmasına karşın o komuttan çok daha hızlı silme işlemi yapar. Rollback komutu ile silinen kayıtlar geri getirilemez. Otomatik olarak commit olur. Tabloyu ancak yetkisi olan kullanıcı silebilir. Yazılımı;
TRUNCATE TABLE table
Delete komutu ile Truncate arasındaki en önemli fark; Delete komutu kayıtları silmek için kayıtlarda boşluk bırakır. Truncate ise tamamen kayıtları temizler, yani basa sarar.
Örnek: Personel tablosundaki tüm kayıtları silelim;
TRUNCATE TABLE Personel
COMMENT ON TABLE : Tablo veya kolonların içeriği hakkında açıklayıcı bilgi verilir. 2000 byte açıklama alanı girilebilir.
Yazılımı;
COMMENT ON TABLE table | COLUMN table.kolon
IS ‘açıklama’
Örnek : Personel tablosu açıklaması ‘Basak Sigorta’da çalışan kişiler’ olarak not düselim;
COMMENT ON TABLE personel
IS ‘Basak Sigorta’da çalışan kişiler’
Örnek : Personel tablosundaki pers_id kolonun açıklaması ‘Personel numarası’ olarak not düselim;
COMMENT ON COLUMN personel.pers_id
IS ‘Personel numarası’
ALL_COL_COMMENTS : Yetkili olan kullanıcının kolonlarının açıklayıcı notları listelenir.
USER_COL_COMMENTS : Tüm kullanıcıların kolonlarının açıklayıcı notları listelenir.
ALL_TAB_COMMENTS : Tüm kullanıcıların tablolarının açıklayıcı notları listelenir.
USER_TAB_COMMENTS : Yetkili olan kullanıcının tabloları için açıklayıcı notları istelenir.
Otomatik Numara Üretimi(Sequence): Yaptığı is unique Sayılar üretmektir. Belli oranlarda arttırmalar yapılmakta kullanılır. Her çağrıldığında yeni bir Sayı üretir. Ekstra bir hesaplama yapılmadan, seri olarak tanımlandığı şekilde rakamlar üretir. Sayıları cacheden okuduğu için çok hızlı sonuç üretir.
Yazılımı;
CREATE SEQUENCE kolon
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
INCREMENT BY n : Sayının artış miktarı belirtilir. Varsayılan değer 1’dir. Birer birer Sayı arttırılır.
START WITH n : Numaranın üretileceği başlangıç numarasıdır. Varsayılan değer 1’dir.
MAXVALUE n : Numaranın alabileceği maksimum rakam yazılır. NOMAXVALUE ile bitiş numarası verilmez. Max = 1027
MINVALUE n : Numaranın alabileceği minimum rakam yazılır. NOMINVALUE ile başlangıç numarası verilmez. Min = 1
CYCLE | NOCYCLE : Maxvalue değeri kadar işlem yapıldıktan sonra işlemi tekrardan başlatır.Varsayılan değer NOCYCLE’dir.
CACHE : Cache Sayısı kadar Sayıyı hafızaya gönderir. Varsayılan değer NOCACHE=20’dir.
Örnek: Personel departmanının pers_id kolonunu 10’dan 50’ye kadar 2’ser 2’ser arttıralım;
CREATE SEQUENCE pers_id
INCREMENT BY 2
START WITH 10
MAXVALUE 50
NOCYCLE
NOCACHE
Örnek: Personel departmanının pers_id kolonunu birer birer arttıralım;
CREATE SEQUENCE pers_id
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
NOCACHE
USER_SEQUENCES : Sequences’in en son durumu gösterir.
Yazılımı;
SELECT sequence_name, min_value, max_value, increment by, last_number
FROM user_ sequences
Sequence_name : İşlemlerin tanımlandığı isimdir.
Min_value : Sayının aldığı min değerdir.
Max_value : Sayının aldığı max değerdir.
Increment_by : Sayının aldığı artış miktarının gösterir.
Cycle_flag : İşlemin tekrar yapılması isteniyorsa Y, istenmiyorsa N değerini alır.
Cache_size : Hafızadaki cache Sayısıdır.
Last_number : Numaranın alacağı değerdir
NEXTVAL : En son aldığı Sayının bir sonra alacağı değeri gösterir.
Örnek: Personel tablosuna pers_id kolonuna otomatik değerler atayarak kayıt edelim;
INSERT INTO personel
VALUES (pers_id.NEXTVAL,’Mehmet’,’Batal’)
CURRVAL : O anki Sayısal değeri gösterir. Eğer hiç nextval fonksiyonu kullanılmamışsa değeri bos değer gelir.
Dictionary ’de bulunan objelerden bazıları;
User_tables : Hangi kullanıcı ile login olundu ise o kullanıcıya ait tabloları listeler.
All_tables : Bütün kullanıcıların yarattığı tabloları listeler.
Dba_tables : Database ile ilgili her türlü tablolar listelenir.
V$_tables : Sistemin performansını ölçmek için tutulan bilgilerdir.
V$_librarycache: Cache’in yeterli olup olmadığını anlamak için bakılır.
V$_rollstat : Rollback segmentinin yeterli olup olmadığını anlamak için bakılır.
Örnek : Login şifresiyle giren kullanıcının yarattığı tabloların listesini alalım;
SELECT table_name FROM user_tables
Örnek: Tüm obje isimlerinin listesini alalım;
SELECT object_name FROM user_objects