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.
|