ORACLE
KURUMU VE AYARLAMALARI
Oracle
Kurulumu:
Öncelikle Oracle Client Server uygulamalarda Kullanmak
icin Oracle Client Server Cd sine sahip olmaniz gerekir.
Oracle Serverini Kurulumu Nt Gereklidir Ayni Cd den
Clientler Windows9x yeterli olacaktir istenirse
Clientler Nt isletim sistemlerinede kurulabilinir Ama
Serveri windows9x yükleyemezsiniz.
Tek Makinada Oracle'in Kurulmasi icin Personel Oracle
Secilecek
Personel Oracle Cd yerlestirdikten Sonra Language Kismi
Türkce Secilmeli genelde bu kisim zaten türkce gelir
Sonra Application Database le devam edin
Replication 55M disk Space Secin Standart secmemekte
fayda var...
Oracle'ı Ayarlama:
Kurulum islemi bittikten sonra yapilmasi gerekenler
Oracle ile bir Listener Yaratilmasi Clien server
uygulamalarda TCP/IP secilir ve Serverin ip numarasi
yazilir örnegin 192.168.24.8 gibi Test islemi yapilmaz
cünkü daha baglanti ayarlari yapilmamistir.Onun yerine
Final le Bitirilir.Simdi BDE Ayarlarin yapilmasi icin
sirayla BDE calistirilir.BDE calistirlmadan önce sürümü
lütfen update edin bunuda Borlandin sayfasindan
cekebilirsiniz Configration,Drivers,Native Oracle
secilir DLL32 Kismindan SQLORA32.Dll isaretlenir Vendor
Init icin OCI.Dll isaretlenmelidir.Enable integers True
Yapilmasi gerekir,Lang Driver ile uygun dil secilir
Türkce icin PdoxAnsiInit 850 uygun olacaktir Server Name
Kismina Olusturulan Listener Adi yazilir Örnegin ORAC
(Sonuna .World) otomatik olarak konulacaktir telas
etmeyin
Username Kismina Kullanilacak Olan User Kullanilir
Mesala ADMIN veya ROOT gibi Simdi BDE Kapatalim Ve SQL
Plusi Calistiralim Defaut User ve sifre (User:SYSTEM
Password:Change_on_install ) olarak girilir ve connect
olunur Simdi Bir user tanimlayalim ve veritabani
alanimizi belirleyelim
CREATE TABLESPACE
DATAFILE 'C:ORAC.ORA' SIZE 500M
AUTOEXTEND ON MAXSIZE UNLIMITED;
/* ORACLE SCRIPT */
CREATE USER
IDENTIFIED BY
DEFAULT TABLESPACE ;
/* ORACLE SCRIPT */
GRANT DBA TO ;
/* ORACLE SCRIPT */
Grant Komutuyla Kullanici Baglantisi test edilir eger
connect olursak hic bir sorun yoktur simdi BDE
calistirip bir Alias yaratalim Türü ORACLE secilecek
Olusturan Alias Tiklayarak verilen Kullanici Adini ve
Passwordu girelim ve Okey tusuna basalim Hersey
yolundayda Artik Oracle Baglanmis olunacaktir ... Diger
Makalede Tablo Olusturulmasi ,Autoincremant Triger ve
stored Procedur yazilimlarini anlatacagim simdilik iyi
calismalar Konuyla ilgili yorumlarınızı Beklerim
SQL
PLUS - DERS 1
Yardımcı Komutlar:
Sql komutları sadece hafızada tutulurlar. İşletilen her
komut hafıza tutulur. O yüzden kullanıcının isini
kolaylaştırmak için bazı ek komutlara ihtiyaç
duyulmuştur. Sql Plus ’a girmek için komut satırında şu
şekilde girilir;
SQLPLUS [kullanıcı adı [/şifre [@Database]]]
A[PPEND] Text -->Satir sonuna kelime ekler.
C[HANGE] /eski/yeni -->eski text yerine yeni text ekler.
Yeni alanı bos bırakılırsa eski alan olarak belirtilen
text silinir.
CL[EAR] BUFF[ER] -->SQL hafızasındaki tüm satırları
siler, hafızayı boşaltır.
DEL -->Aktif olarak bulunduğu satiri siler. Satir no
belirtilirse o satiri siler.
I[NPUT] Text -->Satir arasına Text ifadesiyle belirtilen
cümleyi ekler.
L[IST] -->Hafızadaki tüm satırları listeler.
L[IST] m n -->Sadece m ile n arasındaki satırları
listeler.
R[UN] -->Hafızadaki SQL satirini çalıştırır. Ayni işlevi
"R,r,/, ; " karakterleride yapar.
n Text -->n satırındaki cümleyi Text ifadesi belirtilen
alana yazılan cümle ile değiştirir.
0 Text -->Bulunduğu satırdan bir önceki satıra yeni alan
açar ve text 'i oraya ekler.
SAVE Dosya -->Hafızadaki komutu belirtilen dosya adı
altında saklar.
GET Dosya -->Belirtilen dosyayı hafızaya yükler.
START Dosya-->Belirtilen dosyayı direkt çalıştırır.
Hafızaya yüklemez. @ işaretide aynidir.
ED[IT] Dosya-->Belirtilen dosyayı bir editör içinde
açar.
SPOOL -->Ekranda yapılan her türlü isi dosyaya atar.
SPOOL OFF ile dosyaya kayıt işlemini durdurur.
EXIT -->SQL ’den çıkış sağlar.
HELP Komut -->Belirtilen komut için açıklayıcı bilgi
verir.
SQL Plus Fonksiyonları:
Fonksiyonlar sayesinde;Datalar üzerinde hesap yapabilir,
Datalar üzerinde değişiklikler yapılabilir, Grup
oluşturularak bu kayıtlar için kullanılabilir. Tarih
datası çeşitli formatlarda görüntülenebilir, Kolon
tipleri değiştirilebilir. İç içe fonksiyonlar
tanımlanabilir. Öncelikle içteki fonksiyon çalışır.
Çıkan sonuca göre dıştaki fonksiyon işlem görür.
Sys.Dual : Oracle database ’inde bulunan tek kolon ve
tek satırdan oluşan bir tablodur. Belirli bir tablodan
değerler almadan fonksiyonların kullanılması
gerektiğinde bu tablo kullanılır.
Karakter Fonksiyonları:
LOWER(Text) : Text olarak belirtilen alanı küçük harfe
çevirir.
UPPER(Text) : Text olarak belirtilen alanı büyük harfe
çevirir.
INITCAP(Text) : Text olarak belirtilen alanın bas
harfini büyük diğerlerini küçük harfe çevirir.
CONCAT (Text1,Text2) : Text1 olarak belirtilen alan ile
Text2 alanını birleştirir. ‘ || ‘ simgeside aynidir.
SUBSTR(Text,m,n) : Text alanının m. karakterinden
itibaren (m. karakter dahil) n kadar karakter alır.
LENGTH(Text) : Text alanın karakter uzunluğunu Sayısal
olarak verir.
NVL(KOLON,DEGER) : Kolonun aldığı değer null ise değer
alanında belirtilen değeri verir.
Sayısal Fonksiyonları :
ROUND(Sayı,m): Sayı alanına girilen rakam, m olarak
belirtilen ondalık kadar yuvarlar.
Örneğin;
ROUND(45.923,2) -->45.92
ROUND(45.923,0) -->46
ROUND(45.923,-1) -->50
ROUND(45.951,2) -->45.92
ROUND(45.929,2) -->45.93
TRUNC(Sayı,m): Sayı alanına girilen rakam, m olarak
belirtilen ondalık kadar sondan keser.
TRUNC(54.923,2) -->45.92
TRUNC(54.923,-1) -->40
TRUNC (54.929,2) -->45.92
MOD(m,n) : m Sayısı n Sayısına bölündüğünde kalan rakamı
bulur.
Zamansal Fonksiyonları ve İşlemleri:
Tarih + Sayı -->Tarihe Sayı kadar gün ekler.
Tarih - Sayı -->Tarihe Sayı kadar gün çıkarır.
Tarih - Tarih -->İki tarih arasındaki gün farkını
Sayısal olarak verir.
Tarih + Sayı / 24 -->Tarihe Sayı kadar saat ekler.
SYSDATE -->Sistem tarihini verir. Oracle ’ın varsayılan
tarih formatı ‘DD-MON-YY’ seklindedir. Üzerinde
aritmetiksel işlemler yapılabilir.
MONTHS_BETWEEN(tarih1,tarih2)-->İki tarih arasını ay
olarak bulur.
ADD_MONTHS (tarih,n) -->Tarihe n kadar ay ekler.
NEXT_DAY(tarih,' gün' ) -->tarih ‘den sonraki günün ilk
tarihini verir.
LAST_DAY(tarih,' gün' ) -->tarih ‘den önceki günün ilk
tarihini verir.
ROUND(tarih[,' fmt '] ) -->tarih ‘i belirtilen formata
göre aya veya yıla göre yuvarlar.
TRUNC(tarih[,' fmt '] ) -->tarih ‘i belirtilen formata
göre aya veya yıla göre keser.
Çevirme Fonksiyonları:
TO_CHAR(Sayı,[‘fmt’]) : Girilen tarih veya Sayıyı
karakter tipine çevirir.
Tarih parametreleri;
YYYY -->Yılı rakamsal olarak gösterir.
YEAR àYılı yazısal olarak verir.
BC -->Millattan önce ve sonrası için zaman verir.
MM -->Ayi rakamsal olarak gösterir.
MONTH -->Ayi yazısal olarak verir. Belirtilen ülkenin
tarih yazısıyla verir.
MON -->Ayi yazısal sadece ilk 3 harfini verir.
Belirtilen ülkenin tarih yazısıyla verir.
RM -->Ayi roma rakamıyla gösterir.
DD -->Günü rakamsal olarak gösterir.
DAY --> Günü yazısal olarak verir.
Sayısal parametreleri;
--> Rakamdır.
--> Sıfır rakamı verir.
$ --> Rakamın başına $ işareti koyar.
. --> Ondalık haneye ayırır.
, --> Rakamı 3’er hane ayırarak aralarına virgül koyar.
MI --> Negatif Sayılar için sonuna – işareti koyar.
Örneğin " x nolu kişi xxx'dir." Formatında ekrana liste
oluşturalım (id number);
SELECT TO_CHAR(id) || ' nolu kişi ' ||name||'dir.'
Örneğin sistem tarihini DD-MM-YYYY olarak gösterelim;
SELECT TO_CHAR(sysdate,' DD-MM-YYYY')
Örneğin sistem zamanını HH:MI olarak gösterelim;
SELECT TO_CHAR(sysdate,' HH:MI' )
TO_NUMBER (Karakter) : Girilen karakteri Sayısal ifadeye
çevirir.
TO_DATE(char, [‘fmt’]) : Girilen karakteri belirtilen
formatta tarih formatına çevirir.
Örneğin tarih kolonundaki değerleri, 7 /11/1998 tarihine
eşit olanların listesini oluşturalım. Ama kolon
değerleri string olarak ayin uzun ad, günü ve yılı
Sayısal olarak kayıtlıdır. Bu sorunu çözmek için
kullanılır;
SELECT no, maas
FROM Personel
WHERE MAAS_TARIH=TO_DATE('KASIM 7, 1998', 'Month
dd,YYYY')
Tablolar Arasında İlişki Kurulması (JOIN):
* Birden fazla tabloyla ilişki kurularak ortak sorgulama
yapılmasıdır. Tabloları belli bir ortak kolona göre
birleştirmek için join yöntemi kullanılır. Bunun için
öncelikle tablolardaki kolonlar ayni tipte ve ayni
büyüklükte olmalıdır.
Yazılımı:
SELECT table1.kolonları,table2.kolonları
FROM table1, table2
WHERE table1.kolon1=table2.kolon2
İki tabloyu birleştirmek için iki tabloda ortak bulunan
kolonları where kotulu içinde editleriz.
Örneğin personel adı ve bulunduğu departman listesi
için;
SELECT a.*,b.*
FROM personel a , departman b
WHERE a.dept_id=b.dept_id
Böylece personel tablosundan personel adı ve soyadı,
departman tablosundan departman adı bilgisi getirilir. *
Bazı durumlarda tablo birleştirme koşulu bir aralık
şeklinde oluşabilir. Yani tabloları birleştirirken
anahtar sahaların belirli bir aralığı seçilebilir.
SELECT table1.kolonları, table2.kolonları
FROM table1, table2
WHERE table1.kolon1 BETWEEN table2.min2 AND table2. max2
* (OUTER JOIN) Bir diğer durumda tablodaki verilerin
değerleri null olabilir. Fakat biz null değerlere sahip
olanlarıda birleştirmek istersek eksik olan tablonun
yanına (+) işareti eklenir.
SELECT table1.kolonları, table2.kolonları
FROM table1, table2
WHERE table1.kolon1 (+) = table2.kolon2
* (SELF JOIN) Bir başka durumda ayni tablodaki kendi
içindeki kolonlar arasında ilişki kurulabilir. Bazı
durumlarda kolonlardaki değerleri eşit olma durumlarına
göre sorgu düzenlenebilir.
SELECT table1.kolonları
FROM table1 a, table1 b
WHERE table1.a = table1. b
Grup (GROUP) Fonksiyonları :
Bazen belli bir koşula uygun belli bir topluluk için
sorgu kurulabilir. Bu durumda grup işlemi yapılır.
Örneğin departmanlara göre grup oluşturulup o
departmandaki personel Sayısı hesaplanabilir. Grup
Fonksiyonları sadece grup ifadeleriyle kullanılabilir.
Yazılımı:
SELECT kolonlar, grup Fonksiyonları
FROM table
[WHERE kotul]
[GROUP BY grup_kolonu]
[HAVING group_kotulu]
[ORDER BY kolon]
GROUP BY satiri ile kolonlar üzerinde küçük gruplar
oluşturulur.
HAVING satiri ile bu oluşturulan grup için grup
koşulları tanımlanabilir. Where koşulundan farkı WHERE
kayıt üzerinde koşul koyar, HAVING ise sadece grup
kayıtları üzerinde koşul konabilir ve grup Fonksiyonları
kullanılabilir.
AVG(Kolon) : Belirtilen kolonun ortalamasını bulur.
COUNT(Kolon) : Belirtilen kolonun kayıt Sayısını bulur.
Count(*) ile o grupta oluşturulan kayıt Sayısı
hesaplanır. Null değerler için nvl fonksiyonu
kullanılır. Çünkü kolon içindeki null değerler işleme
alınmaz.
MAX(Kolon) : Belirtilen kolondaki kayıtların
değerlerinin maksimum değerini bulur. Sayısal,
karakteristik veya tarihsel olarak kendi içinde sıralama
yapabilir.
MIN(Kolon) : Belirtilen kolondaki kayıtların
değerlerinin minimum değerini bulur. Sayısal,
karakteristik veya tarihsel olarak kendi içinde sıralama
yapabilir.
SUM(Kolon) : Belirtilen kolondaki kayıtların
değerlerinin Sayısal toplamını bulur.
VARIANCE(Kolon) : Belirtilen kolondaki kayıtların
değerlerinin matematiksel varyansını bulur.
Örneğin bir personel listesindeki departmanların ayrı
ayrı departman içindeki personelin max ve min maas alan
kişilerin maaslarını isteyelim;
SELECT Departman_id, MAX(Maas) , MIN(maas) TABLE
Personel GROUP BY Departman_id
Veya 38 nolu departmandaki personel Sayısını bulalım;
SELECT COUNT(*) TABLE Personel WHERE Departman_id = 38
Veya tüm departmanlardaki maaslarının ortalaması
80.000.000 ‘den büyük olanların listesini oluşturalım;
SELECT Departman_id, AVG(Maas) TABLE Personel GROUP BY
Departman_id HAVING AVG(maas) > 80000000
Bazı durumlarda iç içe grup oluşturulması istenebilir.
Bu durumda şu şekilde yazılır.
GROUP BY Kolon1, Kolon2 , …
Örneğin Departman adına ve personel yaşına göre grup
oluşturalım.
SELECT Departman_id, Yas
TABLE Personel
GROUP BY Departman_id, Yas
SQL PLUS - DERS 2
Altsorgular(SUBQUERY):
Subquery, bir sorgu oluşturulurken, bu sorguya ait
kriterleri başka bir sorgu belirleme durumudur. Kısaca
sonucu bilinmeyen koşullar olduğunda bu yöntem
kullanılır.
Yazılımı:
SELECT …..
FROM ……
WHERE kolon=( SELECT …
FROM ….
WHERE ….)
Select cümlesi parantez içinde tanımlanır. = koşulu
kondu ise select cümlesi tek değer döndürmek zorundadır.
Eğer birden fazla değer için koşul konulması gerekirse "
in, not in " kelimesi kullanılır. Tek kayıt döndüğünde =
yerine >,>=, <, <=, <> kontrol ifadelerice
kullanabiliriz. Bir önemli nokta da koşula eşitlenecek
değer 2. Select cümlesi içindeki kolon değerine es
olmalıdır. Yani tipleri eşit olmalıdır.Subquery
sorgulama tekniğinde order by kullanılamaz.Having grup
kotulu içinde select cümlesi kullanabiliriz.
Örneğin;
Sorgu : Mehmet' in departman numarası kaçtır?
SELECT dept_id,name
FROM Personel
WHERE name='Mehmet'
Sorgu : Departman numarası 38 olan kişilerin listesinden
adı mehmet olan var mi incele?
SELECT dept_id,name
FROM Personel
WHERE dept_id=38
Sorgu : Bu iki sorgunun birleşimi istenirse, yani
departmanı 38 olan mehmet adli personel bilgisi ?
SELECT dept_id,name
FROM Personel
WHERE dept_id=( SELECT dept_id
FROM Personel
WHERE name='Mehmet')
Çalışma Anında Sorguya Dışarıdan Deger Alma:
Bir sorgu oluşturulurken bazen bazı alanların değerleri
değişkendir. Bu yüzden sorguya dışarıdan değer girilmesi
ve bu değere göre bir sorgu oluşturulması gerekir. Bunun
için anahtar kelimenin basına ‘ & ‘ karakteri getirilir.
Örneğin istenilen departman koduna göre personelin adı
ve soyadı listeleyelim;
SELECT ad,soyad
FROM Personel
WHERE Dept_id = &Departman_kodu
Ekran:
Departman_kodu için değer gir: 38
eski 1: select ad,soyad from Personel where Dept_id =
&Departman_kodu
yeni 1: select ad,soyad from Personel where Dept_id = 38
Eğer sorgu yazılımı sorunlu ise bu giriş yapıldıktan
sonra anlaşılır ve kesinlikle girilen değer kolon tipine
es olmalıdır. Örneğin ‘&anahtar_kelime’ seklinde tırnak
arasında belirtilmişse giriş olarak sadece text değer
girilir. Ama &anahtar_kelime tırnak içinde
belirtilmemişse giriş yapılırken tırnak içinde giriş
yapılmalıdır. Birden fazla &anahtar_kelime tanımlanırsa
sırayla sorgu sorulur ve tüm değerler girildikten sonra
sorgu oluşturulur. Eğer where koşulunda
&anahtar_kelime’si kullanılmışsa giriş yapılırken
matematiksel koşul seklinde giriş yapabiliriz.Eğer
anahtar kelimenin basına ‘ && ‘ konulursa sorgu
sırasında sadece bir kerelik sorgu sorulur. Bundan sonra
anahtar kelimenin değeri ilk girilen değer olarak
geçerlidir.
DEFINE değişken=değer : Belirtilen değişkene karakter
atanır.
ACCEPT : Kullanıcıya açıklayıcı mesaj verilerek
istenilen tipte veri girişi yapılması sağlanır. &
işaretiyle yapılan işlemin daha kontrollü seklidir.
Yazılımı :
ACCEPT değişken [datatipi] [ FORMAT ] [PROMPT text] [HIDE]
Değişken --> Giriş yapılacak verinin değerinin tutulduğu
anahtar kelimedir.
Datatipi --> Girişi yapılacak verinin veri tipidir.
FORMAT --> Giriş yapılacak verinin giriş düzeni
sağlanır. Örneğin rakam için 9999 (4 haneli Sayı) ,
karakter için A10 (10 karakterlik yer) .
PROMPT --> Kullanıcıya gireceği değer için açıklayıcı
mesaj görüntüler.
HIDE --> Giriş yapılırken verinin görüntülenmeden giriş
yapılması sağlanır. Örneğin şifre girişlerinde.
Örnekler;
ACCEPT adı PROMPT ‘Adinizi giriniz:’
ACCEPT yas NUMBER PROMPT ‘Yaşınızı giriniz:’
ACCEPT yıl NUMBER FORMAT 9999 PROMPT ‘Bulunduğunuz yılı
giriniz:’
ACCEPT sifre CHAR PROMPT ‘Şifrenizi giriniz:’ HIDE
Örnek: Personel adına göre personel bilgilerini
gösterelim. Bunun için bir .sql uzantılı dosyada
yazalım. Bu programı start ile çalıştıralım.
SET ECHO OFF
ACCEPT adı PROMPT ‘ Adinizi Giriniz:’
SELECT * FROM Personel
WHERE UPPER(Personel.ad) LIKE UPPER(‘&adı’)
SET ECHO ON
“Start Ornek.sql “ yazılarak sql çalıştırılır.Bazen
parametre girişlerini daha başlangıçta vermek
istenirse;Start Dosya_adı Parametreler,…Örneğin
yukarıdaki örnek için Start Örnek Kazim.
Tabloların Yaratılması:
Database ’de verilerin saklanması amacıyla tablolar
yaratılır. Tablo yaratabilmek için o kullanıcının buna
yetkisi olmalıdır. Ayni zamanda limitsiz tablespace
hakkına sahip olmalıdır. Yazılımı :
CREATE TABLE [kullanıcı.]table
(kolon datatipi(boyutu) [DEFAULT değer]
[CONSTRAINT constraint_name] constraint_type]
[table_constraint]
[PCTFREE integer] [PCTUSED integer]
[TABLESPACE tablespace] [STORAGE storage_clause]
[CACHE]
[ENABLE enable_clause]
[DISABLE disable_clause]
[AS subquery]
Kullanıcı --> Tablonun yaratıcısıdır. Onun sahip olduğu
haklara ve mekana sahiptir.
Kolon --> Tablonun kolon adlarını belirler. Bir
tablodaki kolon Sayısı 1-254 arasında olmalıdır.
Datatipi --> Bir kolonun veri tipini belirler.
Varchar2(boyut): Boyut ile belirtilen max miktar kadar
karakterdir.Max değeri 2000’dir.
Char(boyut) : Boyut ile belirtilen max miktar kadar
karakterdir.Max. değeri 255’dir. Number : e38 ‘e kadar
olan tüm Sayısal değerlerdir.
Number(m,n) : m kadar (max e38) Sayının n kadar ondalık
alan için değer alır.
Date : Tarih ve saat değerlerini bir tutar.
Boolean : Mantıksal ifadeleri saklar. Yani doğru ise
True, yanlış ise false.
Long : Max 2GB ‘a kadar büyük olan alanlar için yer
tutar.
Raw : Grafiksel yapıdaki veriler için tanımlanır.
DEFAULT --> Herhangi bir kolona değer girilmezse, direkt
olarak değer atamaya yarar. Girilen değerin veri tipi
ile ayni olması gerekir.
CONSTRAINT --> O kolon için daha açıklayıcı olması
açısından ve yapısı açısından kullanılır.
table_constraint --> O tablo için daha açıklayıcı olması
açısından belirtilen etikettir.
PCTFREE --> Tablo üzerinde yapılan kayıt güncelleme
İşlemleri için, kayıt bloklarındaki ayrılacak
rezervasyon yüzde değeridir. 1-99 arasında bir
tamsayıdır. 0,tüm bloklara yeni kayıt girişine izin
verilir. Varsayılan değer 10’dur. Yani güncelleme için
her bloğun %10’unu rezerve eder. Geri kalan %90’nini ise
yeni kayıt girişlerine ayırır.
PCTUSED --> Tablonun her veri bloğu için Oracle ’lın
koruduğu, kullanılmış alanın min yüzdesini verir. 1-99
arasında bir tamsayıdır.Varsayılan değeri 40’dir.
Verilen parametre değerinin altına düşecek blok için,
yeni kayıt girişi seçimliktir. PCTFREE+PCTUSED <100
olmak zorundadır.
TABLESPACE--> Oracle ’ın tabloyu yaratacağı tablo
boşluğunu belirler. Eğer tanımlanmazsa çalışılmakta olan
kullanıcının tablo boşluğunda yaratılır.
STORAGE --> Tablonun depolama karakteristiğini belirler.
Büyük tablolarda performans düzenleyici olarak
kullanılır.
CACHE --> Tablo üzerinde arama yapılırken, hafıza
cache’nin en çok kullanılanlar üzerinde yer almasını
sağlar.
ENABLE --> Bütün sınırlamaları geçerli kılar.
DISABLE --> Bütün sınırlamaları iptal eder.
AS query --> Tablo yaratılırken, alt sorgu aracılığı ile
geriye döndürülen satırlar tabloya
yerleştirilir.(insert)
Data Dictionary:
Database ile ilgili her türlü bilgiyi buraya atar.
Buradan verilere ulaşabiliriz. Kullanıcılar, tablolar,
indexler, constraintsler vb. birçok açıklayıcı bilgiler
tutulur. Bütün tablo ve viewerların adlarını ve
açıklamalarını görmek için ;
SELECT * FROM Dictionary;
Dictionary ’nin yapısını görmek için;
DESC dictionary
İsim Tip
-------------------- --------------------------
TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(2000)
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
Database Üzerinde Transaction Kontrol Komutları:
Transaction, datanın tutarlı şekilde korunmasını
sağlayan yöntemdir. Database üzerinde kayıt yapma ,
silme, düzeltme vb. İşlemlerin yapılabilmesi için
aşağıdaki komutlara ihtiyaç vardır;
INSERT INTO : Tabloya yeni bir kayıt eklenmesini sağlar.
Yazılımı;
INSERT INTO table [(kolon1, kolon2, …)] VALUES (değer1,
değer2, …)
Kolon : Tablonun kayıt yapılacağı kolon adlarını
belirler. Bir tablodaki kolon Sayısı 1-254 arasında ve o
tabloda var olmalıdır. Deger : O kolon için alacağı
değer verilir. Kolon tipiyle ayni olmalıdır. Eğer kolon
adları belirtilmezse değerler kolon sırasına göre değer
almalıdır. Degerlere sysdate, user vb. hazır
fonksiyonlar aktarılabilir. Eğer bir alana değer
verilmesi istenmiyorsa, yani bos değer verilmesi
isteniyorsa NULL değeri verilir.
Örnek: Personel tablosuna yeni bir personel girişi
yapalım;
INSERT INTO personel
(ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi)
VALUES (‘Kazim’,’Sarikaya’,400000000,NULL,SYSDATE)
Ayni örnek için kolon sırasını bildiğimiz düşünülürse şu
şekilde de yazılabilir;
INSERT INTO personel
VALUES (‘Kazim’,’Sarikaya’,400000000,NULL,SYSDATE)
Sadece tek kayıt girişi yapılıyorsa, rahat veri girişi
yapılması için değerlere değişken tanımlayarak veri
girişi sağlayabiliriz. Böylece table her çalıştığında
yeni veri girişi yapılır.
Örnek: Personel tablosuna her çalıştırdığımızda yeni bir
personel girişi yapalım;
INSERT INTO personel
(ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi)
VALUES (‘&Adi’,’&Soyadı’,&maas,NULL,SYSDATE)
Örnek: Daha güvenli ve rahat giriş yapılacak şekilde
kayıt yapılacak script yazalım;
SET ECHO OFF
ACCEPT ad PROMPT ‘Adini giriniz:’
ACCEPT soyad PROMPT ‘Soyadı giriniz:’
ACCEPT maas PROMPT ‘Maasini giriniz:’
INSERT INTO
personel(ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi)
VALUES (‘&ad’,’&soyad’,&maas,NULL,SYSDATE)
/
SET ECHO OFF
Kayıt yapılacak kolonların değerleri bilinmiyorsa veya
başka bir tablodan değer alınması gerekiyorsa aşağıdaki
yapı kullanılır;
Yazılımı; INSERT INTO table [(kolon1, kolon2, …)]
Altsorgu Örnek: Personel tablosuna departman tablosundan
departman kodu 38 olan personellerin değerlerini
aktaralım; INSERT INTO
personel(ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi)
SELECT adı,soyadı,maasi,ayrilma,kayıt_giriş FROM
departman WHERE dept_id=38 UPDATE : Tablodaki kolonların
değerlerini değiştirmek için kullanılır.
Yazılımı;
UPDATE table
SET kolon1=değer1, kolon2=değer2, …
[WHERE kotul]
Kolon : Tabloda değişiklik yapılacak kolon adıdır. Bir
tablodaki kolon Sayısı 1-254 arasında ve o tabloda var
olmalıdır.
Deger : O kolon için alacağı değer verilir. Kolon
tipiyle ayni olmalıdır. Eğer kolon adları belirtilmezse
değerler kolon sırasına göre değer almalıdır. Degerlere
sysdate, user vb. hazır fonksiyonlar aktarılabilir. Eğer
bir alana değer verilmesi istenmiyorsa, yani bos değer
verilmesi isteniyorsa NULL değeri verilir.
Örnek: 41 nolu departmanın maasini %13 artıralım;
UPDATE Personel
SET maas=maas+maas*13/100
WHERE dept_id=41
Örnek: 649 nolu personelin departman kodu 10 olsun;
UPDATE Personel
SET dept_id=10
WHERE personel_id=649
Eğer WHERE koşulu konulmazsa tüm tablo için kolon
değerini değiştirir. koşulu SET ile değiştirdiğimiz
kolona veremeyiz.
|