Oracle Bölüm:3

Yedek Alma ve Geri Getirme
Fiziksel Yedek Alma

NOARCHIVELOG Modunda Yedek Alma

ARCHIVELOG Modunda Yedek Alma

Mantıksal Yedek Alma

Export

Import

SQL(Structured Query Language)
Oracle de Kullanılan Veri Tipleri
Sorgular

Yedek Alma ve Geri Getirme
   
Oracle, verileri her ne kadar güvenli tutsa da,fiziksel sebeplerden(disk hataları), kullanıcı hatalarından veya benzer durumlardan dolayı yedeklere ihtiyaç duyulmaktadır.Yedek alma, veritabanı yöneticisinin yapacağı önemli işlerden birisidir.
   Oracle’da,yedek almayla ilgili değişik yöntemler vardır.Veritabanı yöneticisi,kendi veritabanının durumuna göre,yedek almayla ilgili bir veya birden fazla yöntemi kullanmaya karar vermelidir.Bu kararı vermede,yönetici,yedeği kimin alacağı, hangi tür depolama ünitesine alınacağı,ne kadar sıklıkla alınacağı, alınan yedeklerin büyüklüğü,veritabanında küçük de olsa bir kayba tahammül olup olmadığı gibi çok değişik sebepleri göz önünde bulundurmak zorundadır.

Fiziksel Yedek Alma
        
Fiziksel yedek alma veri dosyalarının,redo log dosyalarının ve kontrol dosyalarının yedeklerinin alınması işlemidir.Bir veritabanı ARCHIVELOG ve NOARCHIVELOG olmak üzere iki farklı modda çalışabilir.ARCHIVELOG modunda yapılan tüm işlemler redo log dosyalarına otomatik olarak kaydedilir.Bunun anlamı veritabanındaki değişikliklerin sürekli dosyalara kaydedilmesidir.Kaydedilen bu dosyaların hangileri olduğu ve nerede bulundukları gibi bilgiler init<SID>.ora dosyası içerisinde yer alır.ARCHIVELOG modda çalışan bir veritabanında veri kaybı söz konusu değildir.Eğer veritabanı NOARCHIVELOG modda çalışıyorsa yapılan değişiklikler bir yere kaydedilmeyecektir.Bu yüzden sistemin bozulması durumunda ancak son alınan yedekler geri getirilebilir.Yani son alınan yedekten sonra yapılan değişiklikler kaybolur.İşletim sistemi yedeği alma olarak ta bilinen fiziksel yedek alma işleminin dezavantajı,yedek alma işlemi boyunca veritabanının kapatılması gereğidir.
NOARCHIVELOG Modunda Yedek Alma>
     
Bu modda yedek almak için komut moduna geçilerek aşağıdaki işlemleri yapmak gerekir.Bundan önce SQL*Plus içerisinde yedeği alınacak dosyaların tespiti yapılmalıdır.


 
Burada kullanılan V$LOGFILE,V$CONTROLFILE ve DBA_DATFILES dosyaları veri sözlüğündeki görüntülerdir.Bu görüntüleri sorgulayarak yedeklememiz gereken dosyaları ve bunların nerede bulunduklarını öğreniyoruz.Burada yapacağımız iş veritabanı oturumunu kapattıktan sonra, bu dosyaları bir başkadepolama ünitesine kopyalamak.Veritabanını Windows NT veya Windows 2000 içerisinde,Denetim Masası’na girip "Sevices"simgesine çift tıkladıktan sonra burada "Oracle" ile başlayan tüm servisleri durdurarak kapatabiliriz.Bu işlemler komut modundan da yapılabilir.Bunun için veritabanı yüklenirken belirtilen dizin içerisindeki "Svrmgrl" programı çalıştırılır.Eğer varsayılan dizini seçtiyseniz bu "c:\oracle\ora81\bin" dizinidir.Komut modunda şu adımlar gerçekleştirilir:
       svrmgr
        svrmgr>
connect internal 
        svrmgr>
shutdown immediate 
        svrmgr>
exit        
        lsnrctl
stop

    Buradaki işlemlerde önce sunucu yöneticisine(server manager) bağlanılıyor ve sonra da veritabaını kapatılıyor.En sonda da Dinleyici(Listener) durduruluyor.İlgili dosyalar kopyalandıktan sonra :
       svrmgr
        svrmgr>
connect internal
        svrmgr>startup

    Bu dosyaları bir bozulma anında tekrar geri yüklemek için veritabanını kapatıp dosyaları geriye kopyalamak ve sonra yeniden veritabanını açmak gerekir.İşte burada son yapılan değişiklikler kaybolur.
ARCHIVELOG Modunda Yedek Alma>
    Bu modda yapılan değişiklikler otomatik olarak redo log dosyalarına yazıldığı için dosyaları tek tek kopyalamak gerekmez.Fakat bu değişikliklerin kaydedildiği dosyaları yedeklemek yararlı olabilir.Veritabanında bir bozukluk durumunda yapacağımız iş veritabanını kapatıp "Recover Database" komutunu kullanmak ve sonra veritabanını yeniden açmak."Recover Database" komutunu kullanmak için veritabanı "Mount" modunda açılır.
     svrmgr
     svrmgr>connect internal

      svrmgr>shutdown immediate
     exit
      lsnrctl
stop

       svrmgr
       svrmgr>connect internal
      svrmgr>startup mount
      svrmgr>recover database
Mantıksal Yedek Alma
     
Oracle’da mantıksal yedek alma denince Export ve Import anlaşılır.Bunlar Oracle firmasının geliştirdiği komut modunda çalışan yardımcı programlardır.Bu tür yedek alma veritabanı nesnelerinin yedeklenmesi olduğu için mantıksal yedek olarak adlandırılır.Yani export ile log dosyalarının ya da kontrol dosyalarının yedeği alınmaz.
Export
        
Export Oracle’ın mantıksal yedek alma işlemleri için geliştirdiği bir üründür.Mantıksal yedek alma veritabanının kapatılmaması gerektiği zaman kullanılan bir yedek alma türüdür.Bu yöntemle farklı modlarda yedek alınabilir.Bunlar aşağıda açıklanacaktır.Export ile alınan yedekler ancak Import ilegeri yüklenebilir.Export kullanılarak bir veritabanının yapısı veriler olmadan yedeklenebilir,belli tablolar verilerle birlikte ya da sadece yapıları ile yedeklenebilir,yani yedeklenecek veritabanınesnelerinin seçimi yapılabilir.
      Export almada 4 mod vardır:
 1-Tablo Modu(Table Mode)’dur.Bu modda kullanıcılar kendi tablolarının yedeklerini alabilirler ya da hakkı olan kullanıcı bir başka kullanıcnın tablolarının yedeklerini alabilir.
 2- Kullanıcı Modu(User Mode)’dur.Bu modda bir kullanıcının nesnelerinin yedeği alınabilir.
 3- Tam Veritabanı Modu’dur(Full Database Mode).Bu modda tümveri tabanının yedeği alınabilir.Bu modu gerçekleştirmek için kullanıcının bazı özel haklara sahip olması gerekir.EXP_FULL_DATABASE rolüne sahip olan kullanıcı ya da DBA rolüne sahip olan kullanıcılar bu modu kullanabilir.
4-Tablo Uzayı Modu’dur.Bu modda da tablo uzaylarının yedeği alınır.
     Export yardımcı programını çalıştırmak için komut moduna geçilmelidir.Exp.exe dosyası Oracle8i kurulurken varsayılan dizin adı kabul edildiyse "c:\oracle\ora81\bin" dizini içerisinde bulunabilir.Aşağıdaki örnekler bu dizine geçip komut modunda yazılarak çalıştırılabilir.
Tam Veritabanı Modu örnekleri:

 c:\exp system/manager full=Y file=deneme.dmp
   Yukarıdaki komut tüm veritabanının yedeğini alır.Eğer tüm veritabanı içerisinde istenilen belli özelliklerin yedeği alınmak istenirse etkileşimli metod kullanılır(aşağıdaki gibi).
 c:\exp system/manager
      ........
 Enter array buffer size:4096>(return)    'veri tamponunun büyüklüğü'
 Export file:EXPDAT.DMP>deneme.dmp   ‘varsayılan yedekleme dosyası ismi EXPDAT.dmp'
 E(ntire databese),U(sers),T(ables):U>e ‘tüm veritabanı mı? Kullanıcı ya da Tablo yedeği  mi?'
 Export grants(Y/N):Y>y       ‘kullanıcı haklarının yedeği alınsın mı?'
 Export Table Data(Y/N):Y>y    ‘ veriler kopyalansın mı?'
  .......
Kullanıcı Modu Örnekleri:
   
C:\exp scott/tiger file=scott.dmp     Scott kullanıcısının tüm nesneleri ve verileri scott.dmp dosyasına yedeklenir. Etkileşimli mod için yine “c:\exp scott/tiger” şeklinde komut girilir.

Tablo Modu Örnekleri:
      c:\
System kullanıcısı kendisine ait olan a tablosunu,scott kullanıcısına ait olan b tablosunu ve mehmet kullanıcısına ait oland tablosunu yedekliyor."rows=n" bildirisiyle tablo verilerinin alınmamasını sadece tablonun yapılarının kopyalanmasını sağlıyor.

Import
      
Export ile yedeklenen veriler Import yardımcı programıyla geri getirilebilir.Yedeklenmiş dosyanın tamamı ya da bir kısmı yedekleyen kullanıcı için geri getirilebildiği gibi bir başka kullanıcıya da aktarılabilir.
   C:\imp system/manager file=deneme.dmp fromuser=usr_esef  tables=(isci,bolum)
      usr_esef kullanıcısının deneme.dmp tablosuna yedeklediği  isci ve bolum tabloları geri getirilir.
   C:\imp system/manager file=scott.dmp fromuser=scott touser=esef tables=(*)
        scott kullanıcısının scott.dmp isimli yedek dosyasındaki tüm tablolar esef kullanıcısına aktarılır.Tüm tablolar için "*" işareti kullanılır.

  SQL( Structured Query Language )
       
Açılımı "Structured Query Language" yani "Yapısal Sorgulama Dili" olan SQL,veritabanı işlemleri ile ilgili komutlardanoluşan bir programlama dilidir.Burada veri tabanı işlemleri denilenler veritabanının kendisini oluşturmaktan, tablo, indeks,kullanıcı oluşturmak gibi veri tanımlama dili komutlarına ve kayıt ekleme,silme,düzeltme gibi veri işleme dili komutlarına kadar uzanır.Buradaki yapısal sözcüğü Pascal,C ve benzeri dillerdeki fonsiyon ve prosedür oluşturarak bir program yazmaktan biraz farklıdır.Yani kullanıcı SQL kullanırken fonksiyonve prosedür yazmaz.SQL tarafından tanımlı komutları gerekli parametreleri vererek bir komut modu uygulamasındaymış gibi çalışır.Yine SQL kullanımında şartlı ifadeler ve dallanmalar yoktur.Yani kullanıcı Pascal,C vb.dillerdeki İf,Case gibi ifadeler kullanmaz.SQL’in akış kontrolü yapabilen bir modeli ISO/IEC tarafından kabul edilmiştir,fakat yaygın olarak kullanılmamaktadır.Oracle’ın geliştirdiği PL/SQL(Programming Language/SQL) işte bu prosedür,fonksiyon ve if,case,for..next gibi programlama için gereken işlemleri kullanmayı olanaklı kılar.Fakat PL/SQL sadece içerisinde SQL komutları kullanılabilen bir dildir.Yani SQL’in yapısını değiştirmemiştir.Komut modunda yazdığınız bir SQL cümlesini alıp PL/SQL blokları arasına yazabilirsiniz.
    Oracle sirketi geliştirdiği tüm uygulamalarda SQL kullanmayı esas alır.Kullanıcının Oracle ürünlerini kullanarak yaptığı tüm işlemlerin arkasında SQL komutları çalıştırılır.SQL’in veritabanı işlemleri için kullanılan komutları 5 kategoride toplanabilir:

  • Veri sorgulama komutları

  • Tabloya veri ekleme,değiştirme ve silme komutları

  • Veritabanı nesneleri oluşturma,değiştirme ve silme komutları

  • Veritabanına ve veritabanı nesnelerine erişimi kontrol etme komutları

  • Veritabanının tutarlılığını ve bütünlüğünü koruma komutları

SQL’in Tarihi :
   
Dr.E.F.Codd ‘un "Communications of  The ACM(Association  ofComputer Machinery)" adlı dergide 1970 Haziranında yayınladığı "A Reletional Model of Data for Large Shared Data Banks"(Büyük ve Paylaşımlı Veri Bankaları İçin İlişkisel Model) adlı makale bugün ilişkisel veri tabanı yönetim sistemleri(RDBMS)için kabul edilen model olmuştur.IBM şirketi Dr.Codd ‘un bu modelini kullanarak "Structured English Query Language ("SEQUEL")" denilen bir dil geliştirmiştir.1979 yılında o zamanki adı "Relational Software"  olan Oracle şirketi ticari olarak ilk defa SQL kullanmaya başlamıştır.Bugün SQL,ilişkisel veritabanı yönetim sistemlerinin  standart dili olarak kabul edilmektedir.

Oracle’da Kullanılan Veri Tipleri:
CHAR(sayı):
Sabit uzunluktaki alfasayısal verilerin tutulabildiği alanlar için kullanılır.Oracle 7 ve daha önceki sürümler için bu alanın uzunluğu en fazla 255 karakter olabilir.Oracle 8 ve sonrasında 2000 karakter uzunluğundadır.Eğer,sayı ile ifade edilen numaradan daha kısa uzunlukta veriler girilirse Oracle kaydın sonuna boşluk ekleyerek sabit uzunluğa kadar getirir.Örnek char(20).
VARCHAR2(sayı):
Değişken uzunluklu alfasayısal verilerin tutulduğu alanlar için kullanılır.Oracle 7 ve önceki sürümlerinde 2000 karakter,Oracle 8 ve sonraki sürümlerinde 4000 karakter uzunluğunda bilgi girilebilir.Örnek varchar2(30).
NUMBER(n,p):
Tamsayı ve Gerçel sayılar için kullanılan sayısal veri tipidir.Tam kısım en fazla 38 basamak olabilir.Ondalık kısmınbasamak sayısı da –84 ile 127 arasında değişmektedir.Number veri tipinden türetilmiş int[eger], dec[imal],smallint ve real veri tipleri de kullanılabilmektedir.
DATE:
Tarih tutan alanlar için kullanılır.Bu tip alanlarda, tarih bilgileri ve saat bilgileri tutulabilir.Tarih formatları Oracle yüklerken seçtiğiniz dile göre değişir.Amerikan standartı için ‘DD-MON-YY’ dir.Yani bir tarih ’03-MAY-01’ şeklinde görünür.NLS_DATE_FORMAT parametresi ile tarih formatı değiştirilebilir.Tarihsel alanlar üzerinde aritmetiksel işlemler yapılabilir.Sistem tarihi SYSDATE fonksiyonu kullanılarak öğrenilebilir.Sayısal veya karakter olarak tanımlı bir alandaki veriler TO_DATE fonksiyonu ile tarih tipine çevrilebilir.
LONG:
2 GB ‘a kadar bilgi tutabilen karakter alanlar için kullanılır.Bir tabloda bu tipten ancak bir adet alan tanımlanabilir.Long veri tipine sahip alanlar için index oluşturulamaz.
Not:
Oracle’da boolean veri tipi yoktur.Bunun için char(1) ya da number(1) şeklinde tanımlama yapılıp kullanılabilir.
Not:
Bir tablonun alanları kendi veri tipine uygun değerler alabildiği gibi bir de NULL değer alabilirler.NULL değeri sayısal olarak 0’dan ve karakter olarak ta boş karakterden(‘ ‘) faklıdır.
SQL bölümünün bundan sonraki kısmında SQL komutları örnek tablolar üzerinde anlatılacaktır.Oracle veritabanı ilk yüklendiğindebir "SCOTT" adlı kullanıcı oluşturulur ve bu kullanıcıya ait demo tablolar da oluşturulur.Bu kullanıcı ve tabloları tamamen deneme amaçlıdır.Aşağıda kullandığımız komutları bu tablolar üzerinde deneyebilirsiniz.
amaçla öncelikle tablolarımız hakkında bilgiler verelim.Oluşturduğumuz tablolar bir iş yerindeki işçi kayıtlarını, bolum adlarını tutmak için kullanılan tablolardır.Birinci tablo "isci"tablosudur.Bu tablo iscino:number(4), isciadi:varchar2(10),isi:varchar2(9),muduru:number(4),isbastar:date, ucret:number(7,2),bolum:number(2) alanlarından oluşmaktadır.Tablo da isçilerin numarası, adı,görevi, işe başlamatarihi,aldığı ücret ve işçinin müdür kodu yer almaktadır.

 İkinci tablo "bolum" tablosudur."Bölüm" tablosu bolumno:number(2), bolumadi:varchar2(14),yer: varchar2(13) alanlarından oluşmaktadır.Bu tabloda işçilerin çalıştıkları bölüm kodları,bölüm adları ve bölümün bulunduğu il adı yer almaktadır.


 

 

 

 

 

Üçüncü tablo "ucretoran" tablosudur.Bu tabloda derece:number(5), endusuc:number(5), enyukuc:number(5) alanları yer almaktadır.Tablo işçilerin alabilecekleri kıdem numaralarını ve bu numara için en düşük ve en yüksek ücret miktarlarını göstermektedir.

  Sorgular  Veri tabanı içerisindeki tablolardan veri seçip listeleme,kayıt ekleme,silme, değiştirme ile ilgili komutları bu başlık altında anlatacağız.Burada SQL ile ilgili olarak en çok kullanılan komut şekilleri anlatılmaya çalışılacaktır.

SQL/1      Bir tablonun yapısını görmek için DESC[IRIBE] komutu kullanılır.
SQL/2   Bir tablodan istenilen özellikteki verileri veri seçip listeleme için "SELECT" komutu kullanılır.Komutun yapısı:
        
SELECT [ DISTINCT | ALL ] <sütun(lar)> FROM <tablo adı>
[ WHERE <şart> ]
[ GROUP BY <sütunlar>]
[ HAVING < grup kısıtlaması>]
[ ORDER BY <sütun(lar) [ ASC | DESC ]> ]
SQL/3  Tablo içerisinde istediğimiz bir şarta uygun kayıtları elde etmek istiyorsak "WHERE" yardımcı sözcüğünün yanına gerekli şartı yazmalıyız.Ayrıca select sözcüğünün yanına sadece istediğimiz alanların listelenmesi için alan adları yazabiliriz.
SQL/4   İşi ‘tezgahtar’ olan ve aldığı maaş 900’den büyük olan işçi kayıtların  listesi.
SQL/5  İşçi tablosunda maaşı 1000 ile 1400 arasında olan kayıtların işçi adı ve numaralarının listesi.
SQL/6
  İşçi tablosunda adı ‘m’ ile başlayan kayıtların listesi.   Burada "_" alt tire işareti tek bir karaktere ve ‘%’ işareti birden fazla karaktere karşılık gelir.Birinci sorguda iki alt tire işareti kullanıldığında 3 adet kayıt listelenmiş,ikinci sorguda alt tire işareti üçe çıkarıldığında iki kayıt listelenmiştir.Çünkü ikinci sorguda istenen kayıtların isciadi alanının uzunluğu en az 5 karaktere çıkarılmış oluyor.
  SQL/7      İşçi tablosundan numarası ‘79’ ile başlayan kayıtların isciadi alanına göre tersten sıralanmış listesi.Burada to_char fonksiyonu iscino sayısal alanını karaktere çevirmek ve substr fonksiyonu da soldan ilk iki karakterini alıp karşılaştırma yapabilmek için kullanılmıştır.
SQL/8
     Eğer tablodan listelenecek kaydın bir alanının içeriği tam olarak bilinmiyorsa ilgili kelimenin yakın telaffuzu yazılarak "soundex" fonksiyonu ile listeleme yapılabilir.    SQL/9      Months_between(tarih1,tarih2) fonksiyonu iki tarih arasındaki farkı ay olarak verir.Aşağıdaki sorgu komutu bunu gerçekleştirmektedir.Burada işleme sokarak elde ettiğimiz bir alana isim verme(bu örnekte FARK) işlemi de görülmektedir.Bu isim verme işlemi her alan için virgülden önce yapılabilir. SQL/10      COUNT(* | [ DISTINCT | ALL ] açıklama) fonksiyonu sorgu sonucu dönen kayıt miktarını göstermektedir.Eğer parametre olarak "*" girilirse tablodaki tüm kayıt sayısını verir.Parametre olarak bir sütun adı verilirse,o sütundaki içeriği NULL olmayan tüm kayıt sayısını verir.

 

 

 

 

 

SQL/11    "GROUP BY" yardımcı sözcüğü bir alana göre kayıtları guruplamak için kullanılır.Aşağıdaki örnekte isci tablosu içerisindebir bölümde çalışan toplam kişi sayısı bulunuyor ve listelemede bolum alanı içerisindeki grup sayısı kadar kayıt yer alıyor.Yani bizim isci tablosunda 10,20,30 olmak üzere üç farklı bölüm numarası olduğundan 3 kayıt listeleniyor.Bölüm adı ve kodlarını tutan bölüm tablosunda toplam 4 adet kayıt olduğu, halde 40 nolubölüm koduna sahip hiç bir işçi için "isci" tablosuna kayıt yapılmamış olduğu buradan anlaşılabilir.

 


 

 

SQL/12"HAVING" yardımcı sözcüğü "GROUP BY" yardımcı sözcüğü ile gruplanan kayıtlar üzerinde kısıtlama yapma işine yarar.Aşağıdaki örnekte isci tablosunda ikiden fazla kişi tarafından yapılan işlerin listesini veren komut gösterilmiştir.
SQL/13
    Bir işçinin adının ve çalıştığı yerin isminin(kodunun değil) listelenmesini istiyorsak, o işçinin çalıştığı yer kodunun adını bolum tablosundan getirmeliyiz.Bu tip işlemler "tablo birleştirme" işlemleri olarak adlandırılır.Verdiğimiz bu örneğe "eşitbirleştirme" denir.Eşit birleştirme işlemlerinde bir tablodaki değere, diğer tabloda da mutlaka bir değer karşılık gelir ve "=" operatörü eşit birleştirme işlemlerinde kullanılır.

 

 

SQL/14  Bu örnek her bir bölümde belli bir işi yapanların ortalama maaş miktarlarının listesini verir.Örneğin satış bölümünde satış görevlisi olanların aldıkları maaşların ortalaması.una göre satış bölümünde 3 kişi varmış ve bunların maaşlarının ortalaması 1450.


SQL/15
 Birleştirme işlemlerinde "eşit olmayan birleştirme" de vardır.Buna göre bir tabloda ki bir değer diğer tablodaki iki değerarasında yer almaktadır.Örneğin aşağıdaki örnek isci tablosundaki işçilerin ücretlerini  ucretoran tablosundaki en düşükve en yüksek ücret alanları ile karşılaştırılıp, bu işçilerin kıdemlerini bulmayı sağlıyor.Dikkat edilirse "from" sözcüğünden sonra yazılan tablo adları için bir boşluk bıraktıktan sonra kısa birisim verilebiliyor.Böylece uzun tablo adını sürekli yazmaktansao tablo adı için "alias" olarak adlandırılan kısa isim kullanılabiliyor.
SQL/16
Birleştirme işlemleri yapılırken karşımıza şöyle bir problem çıkmaktadır.Birleştirme yapılan tablolardan ikinci tabloda birinci tablodaki her kaydın karşılığı olmazsa,karşılığı olmayan kayıtlar sorgu sonucunda sadece olmayan kayıtlar değil bilakis hiç kayıt gelmez. Bunun için "dış birleştirme" kullanılır.Dış birleştirme işlemi, kayıtları eksik olan tablonun şart tarafına
"(+)" işareti konularak yapılır.Örneğin isci tablomuzda çalıştığı bölüm kodu 40 olan hiçbir kayıt yoktu,fakat bolum tablosunda 40 kodlu bir bölüm vardı.Bu tablolardan tüm bölümlerde çalışan işçilerin listesini veren komutun şöyle yazıldığını düşünelim:

 

 

 

 

 

 

 

 

 

 

 Dikkat edilirse 40 nolu bölümden işçi tablosunda hiç kimse olmadığı için böyle bir bölümün var olduğu bu sorgudan anlaşılamıyor.Bu komut şöyle yazılsaydı daha doğru olacaktı:
SQL/17
    Bazen bir tablonun içindeki alanlar birbirleri ile ilişkili olabilir.Örneğin isci tablosunda bir işçinin müdürünün kodu tutulmakta ve bu müdürün kaydı da ayrı bir kayıt olarak yine isci tablosunda yer almakta.Burada "kendine birleştirme"(self-join)"kullanılır.Aşağıda bununla ilgili bir örnek verilmiştir.
SQL/18
    Birkaç tablo üzerinde yapılan sorgular üzerinde birleştirme ya da fark alma işlemleri yapılabilir.Bunun için
UNION, INTERSECTION ve MINUS
operatörleri kullanılır. Aşağıdaki örnekte isci tablosundan yapılan iki sorgu UNION operatörü ile birleştirilmiştir.
SQL/19
 Aşağıdaki sorgu ile çalıştığı bölüm kodu 30 olan ve müdür olmayan işçiler listelenmiştir.
SQL/20
   Aşağıdaki sorgu ile işi "satış gör" olan ve müdür kodu 7698 olan kayıtlar listelenmiştir. 
SQL/21
  SQL*Plus kullanırken kullanıcıdan alınan bir bilgiye uyacak şekilde sorgulamalar yapılabilir.Örneğin aşağıda kullanıcının girdiği işçi numarasına ait bilgileri listeleyen bir sorguyer almaktadır:
SQL/22
 SQL’de bir sorgunun çıktısı diğer bir sorgu için girdi olarak kullanılabilir.Bunu göstermek için isci tablosu içerisinde maaşı,tüm kayıtların ortalama maaşından az olan kayıtların, listesini veren bir sorgu gösterilmiştir.
SQL/23
SQL’de bir tabloya yeni bir kayıt eklemek için "INSERT INTO" komutu kullanılır. Aşağıda isci tablosuna yeni bir kayıt ekleme komutu gösterilmiştir.
SQL/24  SQL’de bir tablodan kayıt silmek için‘DELETE FROM’komutu kullanılır.
 DELETE FROM tablo-adı WHERE şart
SQL/25
  >SQL’de bir tablodaki bir kayıtta değişiklik yapma komutu ‘UPDATE’ tir.
 UPDATE tablo-adı SET sütun-adı=değer WHERE şart