sql örnekler

13
Personel Adres Departman Emsanno Emsanno Departman_kod Ad Adres Departman_ad Soyad Il_Ilçe_ad Maaş Ev_tlf Departman Görev *********************************************************************************** **************** ÖRNEK SQL’LER ************************************************************************************ *************** Örnek-1: Personel tablosunun sütunlarını (yapısını) listeleyiniz. Cevap: DESC (Describe) komutu tabloların sütunlarını listelemektedir (göstermektedir). DESC PERSONEL Örnek-2: Personel tablosundaki bütün kayıtları listeleyiniz. Cevap: SELECT’ten sonra konacak “*” bütün alanları ifade etmektedir ve WHERE bölümüne herhangi bir şart yazılmadı ise bütün kayıtları listele demektir. SELECT * FROM PERSONEL; Örnek-3: Personel tablosundaki bütün kayıtların emsanno,ad ve soyad alanlarını listeleyiniz. Cevap: SELECT’ten sonra istenen alanlar (column) virgül ile ayrılarak yazılır ve WHERE bölümüne herhangi bir şart yazılmadı ise bütün kayıtları listele demektir. SELECT EMSANNO, AD, SOYAD FROM PERSONEL; Örnek-4: Personel tablosundaki bütün kayıtların emsanno,ad,soyad ve yıllık maaşlarını listeleyiniz. Cevap: Yıllık maaş, aylık maaşın 12 ile çarpılmasından elde edilir. Bu örnekte görüleceği gibi, SQL cümlelerinde aritmetik ifadeler (çarpma, toplama, çıkarma, bölme, vb.) kullanılabilmektedir.

Upload: saltuk-bugra-karahanli

Post on 08-Nov-2014

42 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: SQL örnekler

Personel                  Adres                           Departman

Emsanno                  Emsanno                  Departman_kod

Ad                              Adres                         Departman_ad

Soyad                       Il_Ilçe_ad

Maaş                          Ev_tlf

Departman

Görev

 ***************************************************************************************************

ÖRNEK SQL’LER

***************************************************************************************************

Örnek-1: Personel tablosunun sütunlarını (yapısını) listeleyiniz.

Cevap: DESC (Describe) komutu tabloların sütunlarını listelemektedir (göstermektedir).

DESC PERSONEL

Örnek-2: Personel tablosundaki bütün kayıtları listeleyiniz.

Cevap:  SELECT’ten sonra konacak “*” bütün alanları ifade etmektedir ve WHERE bölümüne herhangi bir şart

yazılmadı ise bütün kayıtları listele demektir.

SELECT *

FROM PERSONEL;

Örnek-3: Personel tablosundaki bütün kayıtların emsanno,ad ve soyad alanlarını listeleyiniz.

Cevap: SELECT’ten sonra istenen alanlar (column) virgül ile ayrılarak yazılır ve WHERE bölümüne herhangi bir

şart yazılmadı ise bütün kayıtları listele demektir.

SELECT EMSANNO, AD, SOYAD

FROM PERSONEL;

Örnek-4: Personel tablosundaki bütün kayıtların emsanno,ad,soyad ve yıllık maaşlarını listeleyiniz.

Cevap:  Yıllık maaş, aylık maaşın 12 ile çarpılmasından elde edilir. Bu örnekte görüleceği gibi, SQL cümlelerinde

aritmetik ifadeler (çarpma, toplama, çıkarma, bölme, vb.) kullanılabilmektedir.

SELECT EMSANNO, AD, SOYAD, MAAS * 12

FROM PERSONEL;

Örnek-5: Personel tablosundaki bütün kayıtların emsanno,ad,soyad ve yıllık maaşlarını listeleyiniz ve maas*12

sütununa yeni bir isim (“YILLIKMAAS”) veriniz.

Page 2: SQL örnekler

Cevap: Bu örnek, yukarıdaki örneğin aynısı gibi gözüküyor fakat sadece bir fark var: O da maas*12 sütununa yeni

bir isim verme işlemi. SQL’de her yazılan sütuna yeni bir isim verilebilir, buna diğer isim (alias) denir. Şu şekilde

kullanılır:

SELECT EMSANNO, AD, SOYAD, MAAS * 12  YILLIKMAAS

FROM PERSONEL;

Örnek-6: Personel tablosundaki bütün kayıtların emsanno,ad ve soyad alanlarını listeleyiniz. Fakat, ad ve soyad

alanlarını aralarında bir boşluk olmak üzere beraber listeleyiniz.

Cevap: SQL’de, iki veya daha fazla alan birleştirilebilir. Bu işleme, neticelerin sıralanması (concatenation) denir.

Şu şekilde kullanılır:

SELECT EMSANNO, AD||’ ‘|| SOYAD

FROM PERSONEL;

Örnek-7: Personel tablosundaki bütün kayıtların ad,soyad ve departman numarası alanlarını listeleyiniz. Fakat,

ad ve soyad alanlarını aralarında bir boşluk olmak üzere beraber listeleyiniz ve departman numarasından sonra

da “numaralı departmanda çalışıyor” ibaresini ekleyiniz.

Cevap:

SELECT  AD||’ ‘|| SOYAD  ISCI ,

DEPARTMAN||’ numaralı departmanda çalışıyor’  BOLUM

FROM PERSONEL;

Örnek-8: Personel tablosundaki bütün kayıtların departman numarası alanını listeleyiniz.

Cevap:

SELECT  DEPARTMAN

FROM PERSONEL;

Örnek-9: Yukarıdaki örnekte görüleceği gibi bazı departman numaraları birden fazla geldi. Bunun sebebi, aynı

departmanda çalışan birden fazla insan olmasıdır. Eğer her departman numarasından bir tane gelmesini

isteseydik; soru ve cevap şu şekilde olacaktı:

Personel tablosundaki bütün kayıtların departman numarası alanını listeleyiniz fakat her departman

numarasından bir tane (tekil, unique) olsun.

Cevap: Kayıtları tekil olarak listeleme işlemi DISTINCT komutuyla yapılmaktadır. DISTINCT komutu, tekil olarak

listelenecek alan veya alanlardan önce yazılmaktadır.

SELECT  DISTINCT DEPARTMAN

FROM PERSONEL;

Örnek-10: Personel tablosundaki bütün kayıtların ad, soyad ve maas alanlarını, maas alanı küçükten büyüğe

doğru sıralı olmak üzere listeleyiniz.

Page 3: SQL örnekler

Cevap: Normalde, sorgu sonucu dönen kayıtların belirli bir sırası yoktur. Gelen kayıtlar sıraya konulmak istenirse

ORDER BY komutunu kullanmak gerekir. ORDER BY komutunun iki tipi vardır. Birincisi, küçükten büyüğe doğru

olanıdır, buna ASC (ascending) denir. İkincisi, büyükten küçüğe doğru olanıdır, buna  da DESC (descending)

denir. Eğer belirtilmezse, standart olarak ASC kullanılmaktadır. Bu komut şu şekilde kullanılmaktadır:

Cevap:

SELECT  AD, SOYAD, MAAS

FROM PERSONEL

ORDER BY MAAS;

Örnek-11: Personel tablosundaki bütün kayıtların emsanno, ad ve soyad alanlarını, emsanno alanı büyükten

küçüğe doğru sıralı olmak üzere listeleyiniz.

Cevap:

SELECT  EMSANNO, AD, SOYAD

FROM PERSONEL

ORDER BY EMSANNO DESC;

 

Örnek-12: Personel tablosundaki görevi “ÜRETİM ŞEFİ” olan bütün kayıtların ad, soyad ve gorev alanlarını

listeleyiniz.

Cevap:

SELECT  AD, SOYAD, GOREV

FROM PERSONEL

WHERE GOREV = ‘ÜRETİM ŞEFİ’ ;

 Örnek-13: 100 numaralı departmanda çalışan personelin departman, ad ve soyad alanlarını listeleyiniz ve

kayıtları ad alanına göre küçükten büyüğe doğru sıralayınız.

Cevap:

SELECT  DEPARTMAN, AD, SOYAD

FROM PERSONEL

WHERE DEPARTMAN = 100

ORDER BY AD ASC  ;

 Örnek-14: 100 ve 200 numaralı departmanlarda çalışan personelin departman, ad ve soyad alanlarını listeleyiniz

ve kayıtları departman ve ad alanlarına göre küçükten büyüğe doğru sıralayınız.

Page 4: SQL örnekler

Cevap: SQL’lerde bir alanın değeri birden fazla verilirse, bu tip SQL’lerde WHERE bölümünde operatör olarak IN

kullanılmaktadır. Değerlerde, parantez içerisinde yazılmaktadır.

SELECT  DEPARTMAN, AD, SOYAD

FROM PERSONEL

WHERE DEPARTMAN IN (100,200)

ORDER BY DEPARTMAN, AD ASC  ;

Örnek-15: Personel tablosundaki görevi “ÜRETİM ŞEFİ” ve “SATIŞ UZMANI” olan bütün kayıtların ad, soyad ve

görev alanlarını listeleyiniz ve kayıtları görev ve ad alanlarına göre küçükten büyüğe doğru sıralayınız.

Cevap: Eğer, IN bölümünde liste içerisine yazılacak değerler karakter değerler ise tırnak içerisinde yazılmaktadır.

SELECT  AD, SOYAD, GOREV

FROM PERSONEL

WHERE GOREV IN (‘ÜRETİM ŞEFİ’, ‘SATIŞ UZMANI’)

ORDER BY GOREV, AD;

 

Bu SQL, şu şekilde de yazılabilmektedir:

SELECT  AD, SOYAD, GOREV

FROM PERSONEL

WHERE GOREV IN (‘ÜRETİM ŞEFİ’, ‘SATIŞ UZMANI’)

ORDER BY 3,1 ;

Burada, alanların isimleri yerine alanların sırası ORDER BY bölümünde kullanılmıştır. Bu kullanım yazım

açısından daha kolaydır.

Örnek-16: Maaşı 150 milyon liradan fazla olan personelin ad, soyad ve maas alanlarını listeleyiniz ve kayıtları

maas alanına göre küçükten büyüğe doğru sıralayınız.

Cevap:

SELECT  AD, SOYAD, MAAS

FROM PERSONEL

WHERE MAAS > 150000000

ORDER BY MAAS;

Page 5: SQL örnekler

 

Sorudaki 150 milyondan büyük cümlesi, 150 milyona eşit ve büyük şeklinde değiştirilirse, SQL ve sorgu sonucu

dönen kayıtlar şu şekilde olur:

SELECT  AD, SOYAD, MAAS

FROM PERSONEL

WHERE MAAS >= 150000000

ORDER BY MAAS;

Yine, sorudaki 150 milyondan büyük cümlesi, maaşı 100 milyon ile 200 milyon arasında olanlar şeklinde

değiştirilirse, SQL ve sorgu sonucu dönen kayıtlar şu şekilde olur:

SELECT  AD, SOYAD, MAAS

FROM PERSONEL

WHERE MAAS BETWEEN 100000000 AND 200000000

ORDER BY MAAS;

 Örnek-17: Adres kayıtlarından ev telefonu alanı boş olan kayıtların emsanno,adres ve il_ilce_ad alanlarını

listeleyiniz.

Cevap: Önce, adres tablosunun kayıt alanlarını listeleyelim.

DESC ADRES

 

SELECT  EMSANNO, ADRES,  IL_ILCE_AD

                FROM ADRES

WHERE EV_TLF IS NULL;

Örnek-18: Adres kayıtlarından ev telefonu alanı boş olmayan kayıtların emsanno,adres ve il_ilce_ad alanlarını

listeleyiniz.

Cevap:

SELECT  EMSANNO, ADRES,  IL_ILCE_AD

                FROM ADRES

WHERE EV_TLF IS NOT NULL;

Örnek-19: Personel kayıtlarından adı “A” ile başlayan kayıtların emsanno, ad ve soyad alanlarını listeleyiniz.

Cevap: Adı “A” ile başlayan kayıtlar denildiğinde LIKE kullanılır. LIKE’ın kullanımı şu şekildedir:

<değer>%                         Başı değer ile başlayan ve sonu

Page 6: SQL örnekler

önemsiz olan demektir.

%<değer>                         Sonu değer ile biten ve başı önemsiz

olan demektir.

%<değer>%                      İçerisinde herhangi bir yerde değer

geçen demektir.

SELECT  EMSANNO, AD, SOYAD

                FROM PERSONEL

WHERE AD LIKE ‘A%’ ;

Örnek-20: Personel kayıtlarından maaşı 100 milyon ile 200 milyon arasında olan ve görevi “ÜRETİM ŞEFİ” olan

kayıtların ad, soyad, maas ve gorev alanlarını listeleyiniz ve kayıtları ad ve soyad alanlarına göre sıralayınız.

Cevap: WHERE bölümüne, birden fazla şart aralarına “AND” konarak yazılabilir. Buna örnek olarak:

SELECT  AD, SOYAD, MAAS, GOREV

FROM PERSONEL

WHERE MAAS BETWEEN 100000000 AND 200000000 AND

GOREV = ‘ÜRETİM ŞEFİ’ ;

ORDER BY AD, SOYAD;

 Örnek-21: Personel kayıtlarından maaşı 100 milyon ile 200 milyon arasında olan veya görevi “ÜRETİM ŞEFİ”

olan kayıtların ad, soyad, maas ve gorev alanlarını listeleyiniz ve kayıtları ad ve soyad alanlarına göre listeleyiniz.

Cevap:

SELECT  AD, SOYAD, MAAS, GOREV

FROM PERSONEL

WHERE (MAAS BETWEEN 100000000 AND 200000000) OR

GOREV = ‘ÜRETİM ŞEFİ’  ORDER BY AD, SOYAD;

Örnek-22: Personel tablosundaki bütün kayıtların ad ve gorev alanlarını ve görevi “SATIŞ UZMANI” olanlar için 1,

“GENEL MÜDÜR” olanlar için 2, “ÜRETİM ŞEFİ” olanlar için 3 yazarak listeleyiniz.

Cevap:  SQL fonksiyonlarından bazıları vardır ki, yukarıdaki bölümlerin hiçbirisine girmez. Bunlara örnek

olarak DECODE sayılabilir. DECODE, programlama dillerindeki “if-then-else” veya “case” ifadelerinin karşılığıdır.

Yani, DECODE seçim işlemini yapmaktadır. Özellikle, rapor hazırlarken çok kullanışlı bir komuttur. Mesela,

veritabanında cinsiyet için “E” ve “K” tutup, rapor alırken “Erkek” ve “Kadın” şeklinde gösterme işlemi gibi işlerde

kullanılmaktadır.

SELECT AD, GOREV,

Page 7: SQL örnekler

DECODE(GOREV, ‘SATIŞ UZMANI’, ’1′, ‘GENEL MÜDÜR’, ’2′, ‘ÜRETİM ŞEFİ’, ’3′)

FROM PERSONEL;

Örnek-23: Personel tablosundaki bütün kayıtların ortalama maaşını hesaplayınız.

Cevap:

SELECT AVG(MAAS)

FROM PERSONEL;

Örnek-24: Personel tablosundaki kayıt sayısını hesaplayınız.

Cevap:

SELECT COUNT(*)

FROM PERSONEL;

 Örnek-25: Personel tablosundaki her görev grubunun ortalama maaşını hesaplayınız ve kayıtları büyükten

küçüğe doğru sıralayınız.

Cevap:  Kayıtları belli özelliklerine göre gruplayıp onlar üzerinde işlem yapılacağı zaman GROUP BY komutu

kullanılır. GROUP BY komutu kullanılırken GROUP BY bölümünde SELECT bölümünde yazılan alanların grup

fonksiyonunun kullanıldığı alan hariç hepsi yazılmak zorundadır.  Aksi halde, yazım hatası yapılmış olmaktadır ve

SQL cümlesi çalıştırılamaz. Kullanımı şu şekildedir:

SELECT GOREV, AVG(MAAS)

FROM PERSONEL

GROUP BY GOREV

ORDER BY 2 DESC;

 Örnek-26: Personel tablosundaki en yüksek maaşı gösteriniz.

Cevap:

SELECT MAX(MAAS)

FROM PERSONEL;

Örnek-27: Her departmandaki en yüksek maaşları listeleyiniz.

Cevap: Grup fonksiyonlarının bulunduğu SQL cümlelerinde, SELECT bölümünde grup fonksiyonu haricindeki

bütün alanlar GROUP BY bölümünde bulunmak zorundadır.

SELECT DEPARTMAN, MAX(MAAS)

FROM PERSONEL

GROUP BY DEPARTMAN;

Page 8: SQL örnekler

 Örnek-28: Ortalama maaşı 100 milyondan büyük olan departmanları listeleyiniz.

Cevap: Grup fonksiyonlarının bulunduğu SQL cümlelerinde, grup ile ilgili şartlar WHERE bölümüne değil,HAVING

bölümüne yazılır.

SELECT DEPARTMAN, AVG(MAAS)

FROM PERSONEL

GROUP BY DEPARTMAN

HAVING AVG(MAAS) > 100000000;

 

Eğer, bu SQL’de 100 milyon şartı olmasaydı; SQL ve sonucu şu şekilde olurdu:

SELECT DEPARTMAN, AVG(MAAS)

FROM PERSONEL

GROUP BY DEPARTMAN;

 Örnek-29: Her departmandaki ortalama maaşları “GENEL MÜDÜR” hariç olmak üzere listeleyiniz ve kayıtları en

yüksek ortalamadan en düşük ortalamaya doğru sıralayınız.

Cevap: Grup fonksiyonlarının bulunduğu SQL cümlelerinde, grubu ilgilendirmeyen şartlar WHERE bölümüne

yazılmaktadır. Bu örnekte, “GENEL MÜDÜR”ün hariç olması, WHERE bölümünde veya HAVING bölümünde

belirtilebilir, yani “GENEL MÜDÜR”ün hariç olması hem grubu ilgilendirmektedir hem de

ilgilendirmemektedir. Şartların grubu ilgilendirip ilgilendirmediğine, şartın belirtildiği değerin veritabanında

olup olmadığına göre karar verilmektedir. Eğer, belirtilen şart GROUP işlemi sonucu meydana çıkan bir grup

fonksiyonu ile ilgili ise bu şart grupla ilgilidir. Mesela, ortalama maaşı 100 milyondan büyük departmanları

listeleyin denilirse, bu şart grupla ilgilidir. Çünkü, bu değer veritabanında yoktur ve GROUP işlemi sonucu grup

fonksiyonundan bu değer gelmektedir.

SELECT DEPARTMAN, AVG(MAAS)

FROM PERSONEL

WHERE GOREV != ‘GENEL MÜDÜR’

GROUP BY DEPARTMAN

ORDER BY 2 DESC;

 

Örnek-30: Bütün personelin ad, soyad ve departman adı bilgilerini listeleyiniz.

Cevap: Personel tablosunda departman adı diye bir alan yoktur. Bu değer ancak, departman tablosundan

seçilebilir. O halde birleştirme işlemi yapmak lazımdır. Personel ve Departman tabloları arasındaki birleştirme

işlemi departman alanı üzerinden yapılır. Bu işlem şu şekilde yapılır:

SELECT AD, SOYAD, DEPARTMAN_AD

Page 9: SQL örnekler

FROM PERSONEL, DEPARTMAN

WHERE PERSONEL.DEPARTMAN = DEPARTMAN.DEPARTMAN_KOD;

  Örnek-31: Bütün personelin emsanno, ad, soyad ve departman adı bilgilerini listeleyiniz ve her alanın başına

ilgili tablonun ismini yazınız.

Cevap: Bu SQL’de, SELECT bölümünde emsanno alanı yazılırken bir karışıklığa meydan vermemesi için alanın

başına tablonun ismi yazılır. Çünkü, her iki tabloda da emsanno alanı vardır.

SELECT PERSONEL.EMSANNO, AD, SOYAD, DEPARTMAN_AD

FROM PERSONEL, DEPARTMAN

WHERE PERSONEL.DEPARTMAN = DEPARTMAN.DEPARTMAN_KOD;

SELECT P.EMSANNO, P.AD, P.SOYAD, D.DEPARTMAN_AD

FROM PERSONEL P, DEPARTMAN D

WHERE P.DEPARTMAN = D.DEPARTMAN_KOD;

Örnek-32: Bütün personelin ad, soyad ve ev telefonu alanlarını listeleyiniz.

Cevap:

SELECT P.AD, P.SOYAD, A.EV_TLF

FROM PERSONEL P, ADRES A

WHERE P.EMSANNO = A.EMSANNO;

            Burada, sadece 5 tane kayıt gelmektedir, yani 5 tane personelin adres kayıdı var, bunlardan da 2

tanesinin ev_tlf alanı boş. Aslında, personel tablosunda 10 kayıt vardı. Diğer 5 personelin adres tablosunda kayıdı

olmadığı için sorgu sonucunda gelmedi. Eğer SQL, dış birleştirme yöntemiyle yapılırsa, SQL ve sonuç şu şekilde

değişir:

SELECT P.AD, P.SOYAD, A.EV_TLF

FROM PERSONEL P, ADRES A

WHERE P.EMSANNO = A.EMSANNO (+) ;

Örnek-33: Maaşı en fazla olan personelin emsanno, ad, soyad ve maas alanlarını listeleyiniz.

Cevap: Bu soru daha önce sorulsaydı, cevap vermek zor olacaktı. Fakat, altsorgu ile bu işlem çok kolay bir

şekilde yapılabilir. Altsorguda, ilk önce en fazla maaş bulunur ve bu maaş WHERE bölümüne yazılarak ilgili

kayıda erişilmiş olur.

SELECT EMSANNO, AD, SOYAD, MAAS

FROM PERSONEL

Page 10: SQL örnekler

WHERE MAAS  =

(SELECT  MAX(MAAS)

FROM PERSONEL);

Örnek-34: Her departmanda en az maaş alan personelin emsanno, ad, soyad ve maas alanlarını listeleyiniz.

Cevap: Bu örnekde altsorguda group by işlemi var, böylece altsorgudan birden fazla kayıt dönmektedir. Bu

yüzden, WHERE bölümünde şart yazarken IN komutu kullanılmaktadır.

SELECT DEPARTMAN, EMSANNO, AD, SOYAD, MAAS

FROM PERSONEL

WHERE MAAS  IN

(SELECT  MIN(MAAS)

FROM PERSONEL

GROUP BY DEPARTMAN);

 Örnek-35: 100 numaralı departmanda çalışan herhangi bir personelden daha fazla maaş alan personelin

emsanno, ad, soyad ve maas alanlarını listeleyiniz.

Cevap: Bu örnekteki “herhangi bir” ifadesi bize SOME/ANY kullanılacağını göstermektedir.

SELECT EMSANNO, AD, SOYAD, MAAS

FROM PERSONEL

WHERE MAAS  > SOME

(SELECT  DISTINCT MAAS

FROM PERSONEL

WHERE DEPARTMAN = 100);

 Örnek-36: 100 numaralı departmanda çalışan her personelden daha fazla maaş alan personelin emsanno, ad,

soyad ve maas alanlarını listeleyiniz.

Cevap: Bu örnekteki “her personel” ifadesi bize ALL kullanılacağını göstermektedir.

SELECT EMSANNO, AD, SOYAD, MAAS

FROM PERSONEL

WHERE MAAS  > ALL

(SELECT  DISTINCT MAAS

Page 11: SQL örnekler

FROM PERSONEL

WHERE DEPARTMAN = 100);

Bu örnek MAX fonksiyonu ile de çözülebilmektedir. Çünkü, 100 numaralı departmanda çalışan her personelden

fazla demek, o departmanda en yüksek maaş alan personelden fazla demektir. Eğer, SQL’i bu şekilde yazacak

olursak :

SELECT EMSANNO, AD, SOYAD, MAAS

FROM PERSONEL

WHERE MAAS  >

(SELECT  MAX(MAAS)

FROM PERSONEL

WHERE DEPARTMAN = 100);

 Örnek-37: 400 numaralı departmanda çalışan personelin ortalama maaşından daha fazla ortalama maaşı olan

departmanları listeleyiniz.

Cevap:

SELECT DEPARTMAN, AVG(MAAS)

FROM PERSONEL

GROUP BY DEPARTMAN

HAVING AVG(MAAS) >

(SELECT  AVG(MAAS)

FROM PERSONEL

WHERE DEPARTMAN = 400);

 Örnek-38: Personel tablosunda kendi bölümünün ortalama maaşından daha fazla maaş alan personelin

emsanno, ad, soyad ve maas alanlarını listeleyiniz.

Cevap: SQL’de her tablo kendisi ile birleştirilebilmektedir. Örnek olarak:

SELECT P.EMSANNO, P.AD, P.SOYAD, P.MAAS

FROM PERSONEL  P

WHERE P.MAAS >

(SELECT  AVG(MAAS)

Page 12: SQL örnekler

FROM PERSONEL P2

WHERE P2.DEPARTMAN = P.DEPARTMAN);