22 Mart 2012 Perşembe

Oracle Eğitimi - Join Çeşitleri - Ders 9

İki ya da daha fazla tablonun birleştirilip tek bir tablo oluşturulması işlemine join denir.  Join işleminde bilinmesi gereken 
önemli nokta,  join işlemi yapıldıktan sonra birleştirilen tabloların içeriği değiştirilmez sadece o anki sonuç ekranına yansıtılır.

Not:  Aşağıdaki komutlar kullanarak örneklerin daha iyi anlaşılabilmesi için “calisan” ve “bolum” tabloları oluşturulmuş ve bazı bilgiler eklenmiştir.


CREATE TABLE bolum

(
bolum_no NUMBER(4),
bolum_adi VARCHAR2(16)
);

CREATE TABLE calisan

(
calisan_id NUMBER(4),
calisan_ad_soyad VARCHAR2(32),
bolum_no NUMBER(4)
);


insert into bolum (bolum_no,bolum_adi)values( 1,'Muhasebe');

insert into bolum (bolum_no,bolum_adi)values( 2,'Üretim');
insert into bolum (bolum_no,bolum_adi)values( 3,'Destek');
insert into bolum (bolum_no,bolum_adi)values( 4,'Finans');



insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 1,'Ahmet Yılmaz',1);

insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 2,'Hasan Haktan',2);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 3,'Yasemin Kaya',3);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 4,'Ali Yılmaz',3);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 5,'Halis Haktan',2);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 6,'Yasemin Kaya',3);



Bu işlemler sonucunda




Inner Join

Inner Join işlemi ile birleştirilecek olan tabloların sütunlarının içerdiği veriler kontrol edilerek kesişim kümesi alınıyor. 

Aynı işlem “where” komutu kullanılarak da gerçekleştirilebilir. Inner join yerine join yazmak da yeterlidir.
Kullanımı:

SELECT kolon_ad(lar)ı

FROM tablo_1
INNER JOIN tablo_2
ON tablo_1.ortak_kolon=tablo_2.ortak_kolon ;

Örnek:


SELECT calisan_ad_soyad, bolum_adi

 FROM calisan INNERJOIN bolum ON calisan.bolum_no = bolum.bolum_no ;


 --where ile kullanımı

Select tablo_1.sütun_adı,tablo_2.sütun_adı
from tablo_1,tablo_2
where tablo_1.ortak_sütun=tablo2.ortak_sütun


SELECT calisan_ad_soyad, bolum_adi

 FROM calisan, bolum
 WHERE calisan.bolum_no = bolum.bolum_no ;




Outer Join


Inner join komutu ile birleştirilecek olan tabloların ilişkili satıları listelenmekteydi fakat outer join komutu ile birleştirilecek tabloların ilişkili olamayan satıları da listelenmektedir. İlişkilendirilen tablolarda karşılığı olmayan satırlar NULL değer içerir. Outer join komutu genelde bilgileri eksik olan kayıtlar gibi değer içermeyen sorgular için kullanılır. Oracle veri tabanında outer join ler where ifadesi ile kullanılabilmektedir.  Gösterimine geçmeden önce (+) ifadesinin ne anlama geldiğine değinelim. (+) ifadesi yazılan eşitliğin karşı tarafında belirtilen kolonda NULL değerler varsa bunların da sonuç ekranına getirilmesini sağlar. 


Örneğin:


SELECT calisan_ad_soyad, bolum_adi

 FROM calisan, bolum
 WHERE calisan.bolum_no = bolum.bolum_no(+) ;

sorgusu çalıştırıldığında bolum tablosunda bolum_no alanları NULL değerler de sonuç ekranımıza getirilecektir. Buna left outer join denilmektedir.


SELECT calisan_ad_soyad, bolum_adi

 FROM calisan, bolum

 WHERE calisan.bolum_no(+) = bolum.bolum_no;


Sorgusuylada bir  tam tersi olarak calisan tablosunda bolum_no alanı NULL değerler de sonuç ekranımıza getirilecektir. Buna right outer join denilmektedir.

21 Mart 2012 Çarşamba

Oracle Eğitimi - Nümerik Fonksiyonlar - Ders 8


COUNT:
Sütun sayısını saydırmaya yarar.
SELECT COUNT(1) FROM personel;
89
MAX:
verilen sütundaki en büyük sayısal değeri döndürür.
–Örnekte en yüksek maaşı bulur
SELECT MAX(maas) FROM personel;
MIN:
verilen sütundaki en küçük sayısal değeri döndürür.
–Örnekte en düşük maaşı bulur
SELECT MIN(maas) FROM personel;
AVG:
Verilen kolonun aritmetik ortalamasını(average) almaya yarar.
SELECT AVG(maas) FROM personel;
ABS:
Verilen sayının mutlak değerini döndürür.
SELECT ABS(-19) FROM dual;
19
CEIL:
Verilen sayı küsüratlı ise bir üst tamsayıya yuvarlar, tamsayıysa kendini döndürür.
SELECT CEIL(12.23) FROM dual;
13
FLOOR:
Verilen sayı küsüratlı ise bir alt tamsayıya yuvarlar, tamsayıysa kendini döndürür.
CEIL fonksiyonunun tersini yapar.
SELECT FLOOR(12.34) FROM dual;
12
EXP:
e üssü n değerini döndürür.
SELECT EXP(11) FROM DUAL; — e üssü 11
59874,14171
MEDIAN:
Medyan(ortanca) almaya yarar..
SELECT MEDIAN(maas) from personel where departman = ‘Finans’;

GREATEST:
Virgülle ayrılmış şekilde verilen sayılar arasından en büyüğünü geri döndürür.
SELECT GREATEST(1,2,3,4,9) FROM dual;
9
LEAST:
Virgülle ayrılmış şekilde verilen sayılar arasından en küçüğünü geri döndürür.
SELECT LEAST(-1,2,23,7,9,43,7777) FROM dual;
-1
MOD:
Modüler aritmatik ile kalanı bulur.
–26 3e bölününce ne kalır..
SELECT MOD(26,3) FROM dual;
2
POWER:
Power üs almaya yarar.
— 5in 3. kuvvetini bulduralım.
SELECT POWER(5,3) FROM dual;
SIGN:
Verilen sayının işaretini döndürür. Negatif sayıysa -1, pozitif sayıysa 1, 0 sa 0 döndürür.
SELECT SIGN(-100) FROM dual;
-1
SELECT SIGN(65) FROM dual;
1
SELECT SIGN(0) FROM dual;
0
ROUND:
Verilen sayıyı istenen basamak kadar yuvarlamaya yarar.
Yuvarlanan sayı 5 DEN büyükse yukarı, küçükse aşağı yuvarlanır.
SELECT ROUND(192.36,1) FROM dual;
192,4
SELECT ROUND(3.14365,3) FROM dual;
3,144
Eğer basamak parametresi verilmezse sayıyı tam sayıya yuvarlar.
SELECT ROUND(22.67890) FROM dual;
23
SELECT ROUND(78.1256) FROM dual;
78
SQRT:
Verilen sayının karekökünü alır.
SELECT SQRT(64) FROM dual;
8
SUM:
Verilen sütundaki değerlerin toplamını döndürür.
–Maaşların toplamı
SELECT SUM(maas) FROM personel;
TO_NUMBER:
to_number verilen değer eğer aslında sayı ise ve tipi NUMBER değilse bunu numbera dönüştürür.
Karakter tipinden NUMBER tipine dönüşüm yapar.
SELECT TO_NUMBER(‘123.56’) FROM dual;
123,56
TRUNC:
Verilen sayıdan istenen kadar küsürat kesilebilir, yuvarlanmaz direk kesilir.
SELECT TRUNC(123.456,2) FROM dual;
123,45
Eğer ikinci parametre verilmezse küsürat komple atılır.
SELECT TRUNC(123.456) FROM dual;
123


20 Mart 2012 Salı

Oracle Eğitimi - String Fonksiyonlar - Ders 7


UPPER: Tum karakterleri büyük yazar
SELECT UPPER('OraCle Eğitimi') FROM DUAL
Dönen Değer : ORACLE EĞİTİMİ



LOWER: Tum karakterleri küçük yazar
SELECT LOWER('OrAcle Eğitimi') FROM DUAL
Dönen Değer : oracle eğitimi



INITCAP: Baş harfleri büyük olarak yazar
SELECT INITCAP('oRacLe eğiTimi') FROM DUAL
Dönen Değer : Oracle Eğitimi



REPLACE: Karakter değiştirme işlemi yapar,  i karakterlerini 2 ile değiştiren örnek aşağıdadır.
SELECT REPLACE('Oracle Eğitimi', 'i','2') FROM DUAL
Donen değer : Oracle Eğ2t2m2



CONCAT: İki karakter dizisini birleştirir
SELECT CONCAT('Oracle',' Eğitimi') FROM DUAL

||: concat fonksiyou ile aynı işlemi yapar
SELECT 'Oracle'||' Eğitimi' FROM DUAL
Donen değer : Oracle Eğitimi



RPAD: Belirtilen sayıda karakter olana kadar sağına belirtilen karakteri ekler
SELECT RPAD('Oracle Eğitimi',5,'1') FROM DUAL
Donen değer : Oracle Eğitimi 11111



LPAD: Belirtilen sayıda karakter olana kadar soluna belirtilen karakteri ekler
SELECT RPAD('Oracle Eğitimi',5,'1') FROM DUAL
-- Donen değer : Oracle Eğitimi 11111



LENGTH: Dizinin kaç karakter olduğunu döndürür
SELECT LENGTH('Oracle Eğitimi') FROM DUAL
Donen değer : 14


RTRIM: Dizinin sağ tarafındaki boşlukları alır.
SELECT LENGTH(RTRIM('Oracle Eğitimi  ')) FROM DUAL
Donen değer : 14 



LTRIM: Dizinin sol tarafındaki boşlukları alır.
SELECT LENGTH(RTRIM('   Oracle Eğitimi  ')) FROM DUAL
Donen değer : 14




TRIM: Dizinin sağ ve sol tarafındaki boşlukları alır
SELECT LENGTH(TRIM('  Oracle Eğitimi   ')) FROM DUAL
Donen değer : 14



SUBSTR: Metnin belli kısmını almak için kullanılır.
Fonksiyonun 3 parametresi bulunur.
İlki işlem yapılan string dizi ikincisi başlangıç indisi
Son parametrede kaç karakter alınacağını belirtir.

SELECT SUBSTR('Oracle Eğitimi',2,3) FROM DUAL
Donen değer : rac

*Substr fonksiyonun son parametresi zorunlu değildir.
Yazmazsak başlangıç indisinden sona kadar tüm karakter dizisini döndürür

SELECT SUBSTR('Oracle Eğitimi', 2) FROM DUAL

Donen değer : racle Eğitimi


REVERSE:
verilen stringi tersten yazar.
SELECT REVERSE(‘Reverse Fonksiyonu’) FROM DUAL;
unoyisknoF esreveR
NVL:
Verilen STRING ya da kolon değeri boşsa yeni değer atamak için kullanılır.
SELECT NVL(”,’X’) FROM dual;
SELECT f.TABLE_NAME,f.CLUSTER_NAME,
NVL(f.CLUSTER_NAME,’CLUSTER YOK’) CLUSTER_DURUMU
FROM USER_TABLES f;
DECODE:
DECODE(deger,a,b,x,y,z) şeklinde kullanılır,
yani değer a ise b,x ise y,bunların dışında ise z yaz demektir…

TO_CHAR:
Verilen sayıyı ya da tarihi STRING olarak döndürür.
SELECT TO_CHAR(SYSDATE,’DD MM YYYY’) FROM dual;
SELECT TO_CHAR(12345) FROM dual;

16 Mart 2012 Cuma

Oracle Eğitimi - VIEW oluşturma - Ders 6

view Güvenlik, Performans gibi çeşitli amaçlar için kullanılan bir nesnedir.
view bir tablo değil, tablonun görüntüsüdür. O yüzden tablonun güvenliğini sağlar. view column bazında da güvenliği sağlar. Örneğin personel bilgilerini calisanlar adında
bir view ile başka kullanıcılara açabiliriz ve bazı görünmesini istemediğimiz alanları dahil etmeyiz. Bu alanlar maas, dogum_tarihi gibi gizli bilgiler olabilir.

Öncelikle view nesnesini oluşturalım;


CREATE OR REPLACE VIEW vie_calisanlar 
(calisanno,
isim,
soyisim,
birim )

AS
SELECT 
a.per_id, a.ad, a.soyad, a.bolum FROM personel a

oluşturulan view 'in kullanımı da;



SELECT * FROM vie_calisanlar

şeklidedir.

15 Mart 2012 Perşembe

Oracle ile Sql' e Giriş Ders 5

--SELECT * FROM personel
--like
--ÖRN:
--SELECT * FROM personel where ad like 'A%'
--SELECT * FROM personel where ad like '%AY%'
--SELECT * FROM personel where ad like '%AY'
--SELECT * FROM personel where ad not like '%Lİ'

--IN
SELECT * FROM personel WHERE BOLUM IN('İK','FİNANS')      -- SELECT * FROM personel WHERE BOLUM='İK' OR BOLUM='FİNANS'
SELECT * FROM personel WHERE BOLUM NOT IN ('İK','FİNANS') -- SELECT * FROM personel WHERE BOLUM<>'İK' AND BOLUM<>'FİNANS'

--BETWEEN
--sayısal ve tarih alanları için kullanılır.
SELECT * FROM PERSONEL WHERE MAAS BETWEEN 1000 AND 2000   --SELECT * FROM PERSONEL WHERE MAAS>=1000 AND MAAS<=2000
SELECT * FROM PERSONEL WHERE DOGUM_TARIHI BETWEEN '01.01.1970' AND '01.01.1980'

--GROUP BY
SELECT AD,COUNT(*) FROM PERSONEL GROUP BY AD
SELECT BOLUM,SUM(MAAS) FROM PERSONEL GROUP BY BOLUM

--HAVING
SELECT AD,COUNT(*) FROM PERSONEL GROUP BY AD HAVING COUNT(*)>1
SELECT BOLUM,SUM(MAAS) FROM PERSONEL GROUP BY BOLUM HAVING SUM(MAAS)>3000


--UNION
SELECT * FROM personel WHERE ad='AHMET'
UNION
SELECT * FROM personel WHERE ad='AYŞE'
UNION
SELECT * FROM personel WHERE ad='ALİ'


--UNION ALL
SELECT * FROM personel WHERE ad='AHMET'
UNION ALL
SELECT * FROM personel WHERE ad='ALİ'

Not: Union ile union all arasındaki fark, union distinct yapar, union all tamamını getirir.

--MINUS
--1.de olup ikincide olmayan kayıtlar
SELECT * FROM personel
MINUS
SELECT * FROM personel WHERE ad='ALİ'


--INTERSECT
--kesişim olan kayıtlar
SELECT * FROM personel
INTERSECT
SELECT * FROM personel WHERE ad='ALİ'


9 Mart 2012 Cuma

Oracle ile Sql' e Giriş Ders 4 - Constraints (Kısıtlayıcılar)

Constraints (Kısıtlayıcılar)

Constarints veritabanında veri bütünlüğünü sağlamak amacıyla oluşturulan
kurallardır. constarints veritabanına hatalı giriş yapılmasını engeller.

NOT NULL : NULL değerlerin girilmesini engeller.
UNIQUE : İlgili sütunda veri tekrarını engeller.
PRIMARY KEY : Bir tabloda ki benzersiz alanı belirtir.Yani hem NOT NULL  olacak hem de UNIQUE olacak.
FOREIGN KEY : Tablolar arasında ortak sütunları kullanarak ilişki olmasını sağlar.


Kısıtlar CREATE TABLE veya ALTER TABLE ile oluşturulur.

Kısıtımız sadece bir sütun ile ilgiliyse sütun seviyesin de kısıt oluşturulur.
Eger kısıtımız birden fazla sütun içeriyorsa tablo seviyesin de kısıt oluşturulabilir.

Kısıt oluştururken bir isim verilmesi gerekiyor.Eger isim verilmez ise Oracle otomatik olarak SYS_Cn formatın da bir isim verecktir.(SYS_C001256, SYS_C003546 vs.)


**NOT NULL
Sütun seviyesin de tanımlanan bir kısıttır.Tablo seviyesin de tanımlanamaz. NOT NULL kısıtı sütuna NULL değer girişine izin vermez.

Örnek:

CREATE TABLE deneme_not_null(
id NUMBER,
name VARCHAR2(20),
email VARCHAR2(20) CONSTRAINT test_not_null NOT NULL,
date_of_birth DATE NOT NULL
);

Bir tablo da yer alan sütunlara NOT NULL kısıtı eklemek ya da çıkarmak için ALTER TABLE MODIFY cümlesi kullanılır.

--NOT NULL kısıtını eklemek
ALTER TABLE deneme_not_null MODIFY name NOT NULL;

--NOT NULL kısıtını kaldırmak
ALTER TABLE deneme_not_null MODIFY name NULL;


**UNIQUE

UNIQUE kısıtı tabloda ki bir veya daha fazla sütun ile oluşturulur ve kısıtı oluşturan
sütun ya da sütun grubuna aynı verilerin girilmesini engeller.
UNIQUE kısıtı NULL değer girişine izin verir.

UNIQUE kısıtı tek bir sütun ile oluşturulduğu zaman ilgili sütuna aynı veri sadece bir kez girilebilir.

UNIQUE kısıtı tek bir sütun ile oluşturulabildiği gibi birden fazla sütun içerecek şekilde kompozit bir yapıda da oluşturulabilir.
Bu şekilde en fazla 32 sütun kullanılabilir.Bu durum da ilgili sütun grubu için aynı veri grubu sadece bir kez girilebilir.
Bu şekilde bir kısıtı tablo seviyesinde tanımlanmalıdır.

Aşagıda ki SQL cümlesiyle deneme_unique isimli tablo oluştururuz,oluştururken de email adlı sütuna test_unique isimli
UNIQUE kısıtını ekleriz,date_of_birth sütununa da otomatik olarak isim atayarak UNIQUE kısıtı ekleriz.

CREATE TABLE deneme_unique(
id NUMBER,
name VARCHAR2(20),
email VARCHAR2(20) CONSTRAINT test_unique UNIQUE,
date_of_birth DATE UNIQUE
);

--Aşagıda ki SQL cümlesiyle deneme_unique tablosunda ki id sütununa test_unique2 isimli UNIQUE kısıtını ekleriz.
ALTER TABLE deneme_unique ADD CONSTRAINT test_unique2 UNIQUE (id);

--Aşagıda ki SQL cümlesiyle deneme_unique tablosunda ki test_unique3 adlı UNIQUE kısıtını sileriz.
ALTER TABLE deneme_unique  DROP CONSTRAINT test_unique3 ;


**PRIMARY KEY
PRIMARK KEY kısıtı UNIQUE kısıtının ve NOT NULL kısıtının birleşimidir.
Yani hem NULL değer girişine hem de  aynı(tekrar) verinin girişine engeller.

--NOT : Bir tabloda sadece bir adet PRIMARY KEY kısıtı olabilir ama bir PRIMARY KEY kısıtının içinde birden fazla sütun olabilir.

--Aşagıda ki SQL sorgusuyla deneme_primary_key adlı tablo oluşturur ve id sütununa test_primary_key adlı Primary Key kısıtı ekleriz.
CREATE TABLE deneme_primary_key(
id NUMBER CONSTRAINT test_primary_key PRIMARY KEY,
name VARCHAR2(20),
email VARCHAR2(20)
);

--Aşagıda ki SQL sorgusuyla deneme_primary_key adlı tablo oluşturur ve id sütununa otomatik bir isim vererek Primary Key kısıtı ekleriz.
CREATE TABLE deneme_primary_key(
id NUMBER PRIMARY KEY,
name VARCHAR2(20),
email VARCHAR2(20)
);

--Aşagıda ki SQL sorgusuyla deneme_primary_key adlı tablo oluşturur ve id ve email sütununa test_primary_key adlı Primary Key kısıtı ekleriz.
CREATE TABLE deneme_primary_key(
id NUMBER,
name VARCHAR2(20),
email VARCHAR2(20),
CONSTRAINT test_primary_key PRIMARY KEY (id,email)
);

--Aşagıda ki SQL sorgusuyla deneme_primary_key adlı tabloya id sütununa test_primary_key adlı Primary Key kısıtı ekleriz.
ALTER TABLE deneme_primary_key
ADD CONSTRAINT test_primary_key PRIMARY KEY(id) ;

--Aşagıda ki SQL cümlesiyle deneme_primary_key  tablosunda ki test_primary_key adlı Primary Key kısıtını sileriz.
ALTER TABLE deneme_primary_key  DROP CONSTRAINT test_primary_key ;

--Aşagıda ki SQL cümlesiyle deneme_primary_key  tablosunda ki Primary Key kısıtını sileriz.
ALTER TABLE deneme_primary_key  DROP PRIMARY KEY;

--Aşagıda ki SQL cümlesiyle deneme_primary_key  tablosunda ki Primary Key kısıtını sileriz CASCADE kullandıgımız için ilişki olsa dahi siler.
ALTER TABLE deneme_primary_key  DROP PRIMARY KEY CASCADE ;

--NOT : Oracle PRIMARY KEY kısıtını oluşturan sütun için index oluşturur

--NOT : UNIQUE ve PRIMARY KEY kısıtları nedeniyle oluşturulan indexler ,normal indexler gibi yönetilebilir ama bu indexler DROP INDEX komutu ile düşürülemez(silinemez).


**FOREIGN KEY

FOREIGN KEY kısıtı ilişkisel bütünlüğü sağlamamızı sağlar.Bu kısıtla bir tabloda ki PRIMARYKEY ya da UNIQUE  sütunla diğer tabloda ki ya da aynı tabloda ki diğer bir sütun ile bir ilişki oluşturur.Bu sayede FOREIGN KEY kısıtı olan tabloya NULL harici bir kayıt eklenirken ilgili kaydın ana tabloda yer alması koşulu aranır.

--Aşagıda ki SQL cümlesiyle deneme_foreign_key_alt adlı tablo oluşturur ve patientid adlı sütuna da Primary key kısıtı ekleriz.
CREATE TABLE deneme_foreign_key_alt(
patientid NUMBER PRIMARY KEY,
patientname VARCHAR2(20),
patientemail VARCHAR2(20) UNIQUE,
doctorid NUMBER
);

--Aşagıda ki SQL cümlesiyle deneme_foreign_key_ana adlı tablo oluştururuz.
CREATE TABLE deneme_foreign_key_ana(
doctorid NUMBER PRIMARY KEY,
doctorname VARCHAR2(20),
doctoremail VARCHAR2(20) UNIQUE
);

--Aşagıda ki SQL koduyla da deneme_foreign_key_alt adlı foreign key sütun ekleriz.Referans olarak da deneme_foreign_key_parent tablosundan doctorid sütunu alırız.
ALTER TABLE deneme_foreign_key_alt
ADD CONSTRAINT test_foreign_key FOREIGN KEY (doctorid)
REFERENCES deneme_foreign_key_ana(doctorid);

--Aşagıda ki SQL koduyla foreign key otomatik olarak isim alır ve foreign key kısıtı ekleriz.Referans olarak da deneme_foreign_key_parent tablosundan doctorid sütunu alırız.
ALTER TABLE deneme_foreign_key_alt
ADD FOREIGN KEY (doctorid) REFERENCES deneme_foreign_key_ana(doctorid);

--Aşagıda ki SQL cümlesiyle deneme_foreign_key_alt  tablosunda ki TEST_FOREIGN_KEY adlı foreign key kısıtını sileriz.
ALTER TABLE deneme_foreign_key_alt  DROP CONSTRAINT TEST_FOREIGN_KEY ;

--NOT : FOREIGN key kısıtı oluştururken ON DELETE cümlesi kullanabiliriz,ON DELETE cümlesi ile ana(parent) tablodan bir kayıt silindiği zaman ne yapılacağını belirleriz.ON DELETE CASCADE kullanırsak  ana tablo da bir kayıt silinirse çocuk(child) tablodaki bununla ilgili kayıtlar da otomatikman silinir.ON DELETE SET NULL kullanırsak ana tabloda bir kayıt silinirse çocuk tabloda ki bununla ilgili kayıtlara NULL değer atanır.Eger ON DELETE cümlesi kısıt oluşturulurken kullanılmaz iseOracle çocuk tabloda kayıt varken ana tablodan kayıt silinmesine izin vermez.

--Aşagıda ki SQL koduyla test_foreign_key adlı foreign key kısıtı ekleriz.Daha sonra ana tabloda bir kayıt silindigi zaman da çocuk tabloda ki ilişkili kayıtlar da silinir.
ALTER TABLE deneme_foreign_key_child
ADD CONSTRAINT test_foreign_key FOREIGN KEY (doctorid)
REFERENCES deneme_foreign_key_parent(doctorid) ON DELETE CASCADE;

--Aşagıda ki SQL koduyla test_foreign_key adlı foreign key kısıtı ekleriz.Daha sonra ana tabloda bir kayıt silindigi zaman da çocuk tabloda ki ilişkili kayıtlara NULL eklenilir.
ALTER TABLE deneme_foreign_key_child
ADD CONSTRAINT test_foreign_key FOREIGN KEY (doctorid)
REFERENCES deneme_foreign_key_parent(doctorid) ON DELETE SET NULL;

7 Mart 2012 Çarşamba

Oracle ile Sql' e Giriş Ders 3

3.DERS 
 - INSERT
 - UPDATE
 - DELETE
 - SELECT sql yapısı ve WHERE koşulu kullanımı.

SELECT * FROM PERSONEL


 **TABLE ISLEMLERI

INSERT INTO TABLE_NAME
(COLUMN1,COLUMN2...COLUMN n....)
VALUES
('value1','value2'....);

--Çoklu kayıt ekleme
INSERT INTO PERSONEL
SELECT '1','AHMET','YILMAZ','FİNANS','2000' FROM DUAL
UNION ALL
SELECT '2','ALİ','GEL','FİNANS','1000' FROM DUAL
UNION ALL
SELECT '3','VELİ','KAYA','MUHASEBE','3000' FROM DUAL
UNION ALL
SELECT '4','MEHMET','KORKMAZ','İK','2500' FROM DUAL


 - UPDATE ile kayıt değiştirme.
 Babası 'HASAN' olanların maaşını 3000 tl yapın.

 - DELETE ile kayıt silme.
Birimi 'FİNANS' olan kayıtları silin.

 - ALTER ile tabloda değişiklik yapma.
Birim alan uzunluğunu VARCHAR2(50) karakter olarak değiştirin.

**INDEX ISLEMLERI
 - CALISANLAR tablosuna ID alanı için unique index oluşturun.
 - CALISANLAR tablosuna AD alanı için index oluşturun.
 - CALISAN tablosundaki indexleri drop edin.

SELECT * FROM CALISANLAR
SELECT * FROM CALISANLAR WHERE AD='AHMET'
SELECT * FROM CALISANLAR WHERE AD='AHMET' AND BABAADI='MEHMET'
SELECT * FROM CALISANLAR WHERE AD='AHMET' OR BABAADI='MEHMET'
 - DROP ile tabloyu silin.

4 Mart 2012 Pazar

Oracle ile Sql' e Giriş Ders 2

--Ders 2
Oracle ile Sql' e Giriş
 
TABLE ISLEMLERI
 - CREATE TABLE
 - INSERT INTO
 - UPDATE TABLE
 - DELETE TABLE
 - ALTER TABLE
 - DROP TABLE

 ** INDEX ISLEMLERI
 - CREATE INDEX
 - DROP INDEX
 - SELECT sql yapısı ve WHERE koşulu kullanımı."    "


**TABLE ISLEMLERI
 - id,ad,soyad,anneadi,babaadi,dogum_tarihi,birimi,maas alanlari olan CALISAN adında bir tablo oluşturun.

CREATE TABLE CALISAN
(id number,
ad varchar2(50),
soyad varchar2(50),
anneadi varchar2(50),
babaadi varchar2(50),
dogum_tarihi DATE,
birimi varchar2(50),
maas float)


 - Bu tablo üzerine INSERT ile kayıt ekleyin.

INSERT INTO CALISAN
(ID,AD,SOYAD,ANNEADI,BABAADI,DOGUM_TARIHI,BIRIMI,MAAS)
VALUES
('1','HASAN','YILMAZ','AYŞE','HASAN','01.01.1960','FİNANS','2000');

INSERT INTO CALISAN
SELECT '2','AHMET','YILMAZ','AYŞE','HASAN','01.01.1960','FİNANS','2000' FROM DUAL
UNION ALL
SELECT '3','ALİ','GEL','AYŞE','AHMET','01.01.1970','FİNANS','1000' FROM DUAL
UNION ALL
SELECT '4','VELİ','KAYA','AYŞE','ORHAN','01.01.1980','MUHASEBE','3000' FROM DUAL
UNION ALL
SELECT '5','MEHMET','KORKMAZ','AYŞE','BURHAN','01.01.1990','İK','2500' FROM DUAL
UNION ALL
SELECT '6','SELİM','YILMAZ','AYŞE','HASAN','01.01.1950','BİLGİ İŞLEM','3500' FROM DUAL


 - UPDATE ile kayıt değiştirme.
 Babası 'HASAN' olanların maaşını 3000 tl yapın.


 - DELETE ile kayıt silme.
Birimi 'FİNANS' olan kayıtları silin.


 - ALTER ile tabloda değişiklik yapma.
soyad alan uzunluğunu VARCHAR2(60) karakter olarak değiştirin.

--alter table calisan modify soyad varchar2(60);


soyad alanını drop edin.
--alter table calisan drop column soyad;


soyad alanını create edin.
--alter table calisan add soyad varchar2(50);



**INDEX ISLEMLERI
 - CALISAN tablosuna ID alanı için unique index oluşturun.

CREATE UNIQUE INDEX pk_calisan_id_inx ON calisan
(
id asc
)

 - CALISAN tablosuna AD alanı için index oluşturun.

CREATE INDEX calisan_ad_inx ON calisan
(
ad asc
)

 - CALISAN tablosundaki indexleri drop edin.
drop index pk_calisan_id_inx

drop index calisan_ad_inx;


** SELECT sql yapısı ve WHERE koşulu kullanımı **
SELECT * FROM CALISAN
SELECT * FROM CALISAN WHERE AD='AHMET'
SELECT * FROM CALISAN WHERE AD='AHMET' AND BABAADI='MEHMET'
SELECT * FROM CALISAN WHERE AD='AHMET' OR BABAADI='MEHMET'


 - DROP ile tabloyu silin.

2 Mart 2012 Cuma

Oracle ile Sql' e Giriş Ders 1


1.DERS 
1.1)Oracle Client Kurulum ve ayarları   " - Oracle client kurulumunu bilgisayarlarınıza yapınız.

 - Oracle tns yapılandırma işlemini yapınız."
1.2)SqlNavigator Kurulumu ve kullanımı.