--Tüm personel kayıtlarını seçiniz. SELECT* FROM employees ;

Benzer belgeler
BÖLÜM -2: VERİLERİ SINIRLAMA VE SIRALAMA

1. IT bölümünde çalışan tüm çalışanların isimlerini gösteren bir sorgu yazınız.

BÖLÜM- 5: BİRDEN FAZLA TABLODAN VERİ GETİRMEK

Emrah UYSAL 1

BÖLÜM- 13: ALT SORGULAR İLE VERİ İŞLEME

BÖLÜM- 11: BÜYÜK VERİ KÜMELERİ

Veriyi ve Bilgiyi Organize Etmek. Bilgisayar Mühendisliğine Giriş 1

Emrah UYSAL 1

Veritabanı Tasarımı. Çoklu Satır Alt Sorgular

BÖLÜM -6: VERİLERİ DEĞİŞTİRMEK

Emrah UYSAL 1

ORACLE DERS 1 SQL E GİRİŞ

BÖLÜM- 3: TEK SATIR FONKSİYONLARI

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

SQL Komutları (2) Uzm. Murat YAZICI

Veritabanı Tasarımı. Alt Sorgu Temelleri

Veri Tabanı II Alt Sorgular

Veritabanı Tasarımı. SQL Deyimi Anatomisi

Güz Yarıyılı MT 487 Bilgisayarda Veri Yapıları Final Çalışma Soruları

Veritabanı Tasarımı. Self-Join ve Hiyerarşik Sorgular

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Hafta IV. Öğr. Gör. Murat KEÇECĠOĞLU

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

Veritabanı. SQL (Structured Query Language)

BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA

1. Araçların tüm bilgilerini ve bağlı oldukları kiralama noktasının adres ve telefonunu içeren tam listesi:

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

Mysql Veritabanı Komutları

Veritabanı Tasarımı COUNT, DISTINCT, NVL

ACCESS PLATFORMUNDA SQL

VERİ TABANI YÖNETİM SİSTEMLERİ I

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Oracle Database 11g: Introduction to SQL

MT487_2005guz_final_cevaplar (cevaplar vurgulu ve koyu yazılmıştır)

VERİTABANI Veritabanı Sorgulama

Veritabanı ve Yönetim Sistemleri

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

İş Zekası için Dört-Katmanlı Veri Modellemesi Gerçekleştirimi. Harun Gökçe EG Yazılım, TOBB ETÜ

Veritabanı Yönetim Sistemleri (Başarım Eniyileme Performance Tuning)

VERİTABANI. SQL (Structured Query Language)

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

Alper VAHAPLAR

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

EROL AKGÜL

Bilgisayar Uygulamaları. MySql

Oracle da kullanılan veri tipleri:

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

Veritabanı Tasarımı. Join Yantümceleri

5 Sorgulama İşlemleri. Veritabanı 1

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Veri Tabanı Tasarım ve Yönetimi

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

Bölüm 3: DML Veri İşleme Dili

Veritabanı Tasarımı. Sütunlar, Karakterler ve Satırlar ile Çalışma

Veri Tabanı Programlamaya Giriş

SQL'e Giriş 2. CREATE TABLE tabloadı (kolon isimleri ve veri türleri) (BOLUM_NO NUMBER, BOLUM_ADI CHAR(10));

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

İNTERNET TABANLI PROGRAMLAMA- 12.ders

SQL Query and Table Application

Microsoft SQL Server Sorgulama

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

15 Aralık 2011 / Perşembe.

Veri Tabanı-I 12.Hafta

Veri Tabanı-I 9.Hafta

5 Sorgulama İşlemleri. Veritabanı 1

PostgreSQL ve PL/pgSQL

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

SQL Kod ile Tablo Oluşturma

Fonksiyonlar, Count, Sum, Avg, Max, Mın, Lower, Upper, Length, Round, Mod, Left, Right, Concat, If

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Veri Tabanı Yönetim Sistemleri Bölüm - 5

PostgreSQL ve PL/pgSQL

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

Çok tablolu sorgulamalar

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Veri tabanı içinde bulunan tablolardakibazı sütunlarda bulunan bilgilerin, herkes tarafından görülmesi istenmeyebilir.

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

BAYİLERİMİZE ÖZEL. 13 Ağustos İlgili Modül/ler : Genel. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

Emrah UYSAL 1

DML işlemleri. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı May Öğr. Gör. Murat KEÇECĠOĞLU

Birden Çok Tabloda Sorgulama (Join)

Veritabanı Tasarımı. DML İşlemleri ve Görünümler

VERİTABANI ve YÖNETİMİ

YAPISAL SORGULAMA DİLİ (SQL)

Veritabanı Tasarımı. Büyük/Küçük Harf ve Karakter İşleme

BMB202. Veritabanı Yönetimi Ders 5. İlişkisel Cebir ve SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Veri Tabanı Hafta Dersi

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

Transkript:

Fatih Sultan Mehmet Vakıf Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Veritabanı Yönetim Sistemleri Dersi 2015-2016 Bahar Yarıyılı Laboratuvar SQL çalışmaları Yrd. Doç. Dr. Ali NİZAM --Tüm personel kayıtlarını seçiniz. SELECT* ; --Özel kolonların seçimi, birleştirme ve artimetik işlemler --Personelin adı ve soyadını isim kolonunda gösteriniz. --Toplam maaşını bularak gösteriniz. SELECT first_name ' ' last_name isim, salary, commission_pct, salary+commıssıon_pct "Toplam Maaş" ; --Tarih aritmetiği (gün üzerinedir.) SELECT TRUNC(sysdate-hire_date), hire_date+10, sysdate, TRUNC(sysdate-TO_DATE('01/01/1980')), TO_CHAR(sysdate,'Month') ; --Mükerrer kayıtları eleme --Count kullanımı select distinct first_name,last_name ;

--Personel adetlerini bulunuz. --Count kullanımı SELECT COUNT( *) ; --Toplam tekil değer sayısının count ile bulunması SELECT COUNT(DISTINCT first_name last_name) ; --Özel bir kolon ve geri kalan kolonların tümüyle seçimi. select salary,employees.* ; --Kısıtlama yapmak --İsmi 'Ahmet' olan kişileri bulunuz. where first_name = 'Ahmet'; --Bölümü 100, (manager_id=100 veya emloyee_id 100'de büyük kişileri bulunuz.) where department_id=100 AND (manager_id=100 OR employee_id>100); --İsmi ahmet olmayanları bulunuz where first_name <> 'Ahmet'; --İsmi ahmet olmayanları bulma ikinci yöntem where first_name!= 'Ahmet'; --Desen arama LIKE --İsmi 'A' harfi ile başlayan personelleri bulunuz. where first_name like 'A%', --Desen arama escape karakter kullanımı where first_name like '%, \' escape '\';

--Tırnak kullanımı select '''Ahmet''in''', '''' from dual; --between operatörü --Son 10 yılda işe girmiş olanlar. WHERE hire_date BETWEEN sysdate-3650 AND sysdate; --NULL Aritmetiği --manager_id boş olmayanları bulunuz. WHERE manager_id IS NOT NULL; --Bir önceki örneğin alternatif çözümü (NVL fonksyonu) WHERE NOT NVL(manager_id,0) =0; --in operatörü --90,100,60 birimlerinde çalışan personellerin bulunması select department_id,e.* e where department_id IN (90,100,60,NULL); --NOT in sorun oluşturabilecek kullanım örneği select department_id,e.* e where department_id NOT IN (90,100,60,NULL); --Unvanı SA_MAN veya SA_REP olan kişileri bulunuz (OR ve IN kullanarak)

select * where job_id IN ('SA_MAN','SA_REP'); select * where job_id = 'SA_MAN' OR job_id='sa_rep'; --Maaşı 5000 den büyük ve commisyon alamamış kişileri bulunuz. select * where salary>5000 and commission_pct IS NULL; --Maaşı 3000 ve 5000 aralığında olan ve 2006 yılında işe girmiş kişileri bulunuz. select * where salary between 3000 AND 5000 and TO_CHAR(hire_date,'YYYY')='2006'; --Geçmiş tarihlerde mart ayında işe giren kişileri bulunuz. select * where TO_CHAR(hire_date,'MM')='03'; -- Toplam maaşı 10000 i geçmeyen kişileri bulunuz. (Toplam Maaş = Maaş + Comm * maaş ) select * where (salary+(commission_pct*salary))<10000; --3. harfi n ve 4. harfi a olan kişileri bulunuz.

where first_name like ' na%'; --Geçmişte IT_PROG ve AC_ACCOUNT görevlerini yapmış kişilerin id lerini bulunuz. select * from job_history j where job_id IN ('IT_PROG','AC_ACCOUNT') --Sıralama işlemi --Maaşı 10000'den büyük personelleri maaşa göre sıralayarak getiriniz. SELECT first_name,(salary+(commission_pct*salary)) maas WHERE maas>10000 ORDER BY maas --Gruplama --Personelleri birimlere göre gruplandırınız. SELECT 'Departman ID :' department_id,job_id, SUM(salary), MIN(salary), MAX(salary),COUNT(*) GROUP BY department_id, job_id ORDER BY department_id --Tek grup --En büyük ve toplam maaşı bulunuz. SELECT MAX(salary), SUM(salary) --Grupları kısıtlama -- Toplam olarak 100000 $ üzerinde maaş ödenenen birimleri bulunuz. SElect department_id, SUM(salary) GROUP BY department_id HAVING SUM(salary) > 100000

ORDER BY department_id --Grupları kısıtlamam -- Toplam olarak 100000 $ üzerinde maaş ödenenen birimleri bulunuz. SElect department_id, SUM(salary) GROUP BY department_id HAVING SUM(salary) > 100000 ORDER BY department_id; -İsmi çift olanların bulunması select first_name,count(*) group by first_name having count(*)>1 order by count(*) desc; Alt Sorgu örnekleri --10 nolu birimin yöneticisinin id numarasının bulunması where employee_ıd = ( 10 nolu birimin yöneticisinin id) (10 nolu birimin yöneticisinin idsi) select manager_id from departments where department_id=10 --Bütünleşik çözüm where employee_ıd = (select manager_id from departments where department_id=10) --'South San Francisco'daki birimlerin ismi select location_id from locations where city='south San Francisco';

Bütünleşik Çözüm select * from departments where location_id=(select location_id from locations where city='south San Francisco') Ortalamanın üzerinde maaş alan kişilerin bulunması select * where salary>(select AVG(salary) ) IT_PROG le aynı maaş ve komisyonu alan FI_ACCOUNT ünvanlı kişilerin buluması where job_id='fi_account' AND (salary,nvl(commission_pct,0)) IN (SELECT salary,nvl(commission_pct,0) WHERE job_id='it_prog') --Birimlerdeki en yüksek ortalama maaşın değerini bulunuz. select * from ( where job_id='it_prog') select max(ortalama) from (SELECT department_id,avg(salary) ortalama GROUP BY department_id); --İkinci çözüm select max(avg(salary)) GROUP BY department_id ; --Kendi birimi ortalaması üzerinde maaş alan kişiler ust where salary>(select AVG(salary) alt WHERE alt.department_ıd=ust.department_ıd ) --Kendi amiriyle aynı birimde çalışan kişileri bulunuz.

select * ust where department_id=(select department_id WHERE employee_id=ust.manager_id); --1700 nolu lokasyonda çalışan kişilerin isimlerini bulunuz. where department_id IN (select department_id FROM departments WHERE location_id=1700) --Seattle'da çalışan kişilerin isimlerini bulunuz. where department_id IN (select department_id FROM departments WHERE location_id IN (select location_id from locations where city='seattle')) --Kimsenin çalışmadığı birimleri bulunuz. select * from departments where department_id NOT IN (SELECT NVL(department_id,0) ); --Lab 3 --Geçmişte «SA_REP» olarak çalışan personellerin isimlerini bulunuz. WHERE employee_id IN (SELECT employee_id FROM job_history WHERE job_id='sa_rep' ) --Birden fazla birim olan yerlerin isimlerini bulunuz. FROM locations

WHERE location_id IN (SELECT location_id FROM departments GROUP BY location_id HAVING count(*)>1) --En yüksek maaş alan 5 adet personeli bulunuz. (rownum kullanılacaktır.) --Yanlış çözüm FROM (SELECT first_name,last_name,salary,rownum x ORDER BY salary DESC) where x<6 --Doğru çözüm select rownum,first_name,last_name,salary from (SELECT first_name,last_name,salary ORDER BY salary DESC ) WHERE rownum<6 --Ortalama maaşı en yüksek 5 birimi bulunuz. FROM departments WHERE department_id IN (SELECT department_id FROM (SELECT department_id,avg(salary) ort_maas GROUP BY department_id ORDER BY ort_maas DESC) WHERE rownum<6) --Hiç iş değiştirmeyen personelleri bulunuz. (job_history) WHERE employee_id NOT IN (SELECT employee_id FROM job_history) --Biriminde kendi ünvanında başka çalışan olmayan kişileri bulunuz. a WHERE 'x' NOT IN (SELECT 'x' WHERE employee_id<>a.employee_id AND department_id=a.department_id

AND job_id=a.job_id) --1700 Nolu mekanda yaşayan ve «Stock Manager» ünvanlı kişileri bulunuz. a WHERE department_id IN (SELECT department_id FROM departments WHERE location_id=1700) AND job_id=(select job_id FROM jobs WHERE job_title='accountant') --Seattle da çalışan kişileri bulunuz. --Alt Sorgu kullanınız. (Exist) e WHERE EXISTS ( FROM departments d WHERE e.department_id=d.department_id and EXISTS ( FROM locations l WHERE l.location_id=d.location_id AND city='seattle')) --Klasik e, departments d, locations l WHERE e.department_id=d.department_id AND l.location_id=d.location_id AND city='seattle' --ANSI e JOIN departments d ON e.department_id=d.department_id

JOIN locations l ON l.location_id=d.location_id WHERE city='seattle' --ANSI e INNER JOIN departments d USING (department_id) INNER JOIN locations l USING (location_id) WHERE city='seattle' e NATURAL JOIN departments d NATURAL JOIN locations l WHERE city='seattle' --Birimde çalışan kişilerin sayılarını birim isimleriyle bulunuz. SELECT department_name,adet FROM departments, (SELECT department_id,count(*) adet e GROUP BY department_id) dept_adet WHERE departments.department_id=dept_adet.department_id SELECT e.department_id,department_name,count(*) adet e, departments d WHERE e.department_id=d.department_id GROUP BY e.department_id,department_name ORDER BY adet desc SELECT department_id,department_name,count(*) adet e INNER JOIN departments d USING (department_id) GROUP BY department_id,department_name ORDER BY adet desc

--Her birimde en düşük maaş alan kişileri bulunuz. (birim_adi, personel_adi, maas) emp, (SELECT e.department_id,d.department_name,min(salary) en_dusuk_maas e, departments d WHERE e.department_id=d.department_id GROUP BY e.department_id,department_name) min_dept WHERE emp.department_id=min_dept.department_id AND emp.salary=min_dept.en_dusuk_maas CREATE VIEW min_dept AS (SELECT e.department_id,d.department_name,min(salary) en_dusuk_maas e, departments d WHERE e.department_id=d.department_id GROUP BY e.department_id,department_name) FROM min_dept, employees e WHERE min_dept.department_id=e.department_id AND salary=en_dusuk_maas --Birimlerde unvanlara verilen ortalama maaşları birim ve unvan ismiyle gösteriniz. SELECT e.department_id, d.department_name, j.job_id, j.job_title, MIN(salary) e, departments d, jobs j WHERE e.department_id=d.department_id AND e.job_id=j.job_id GROUP BY e.department_id, d.department_name, j.job_id, j.job_title --Çalıştığı birimin ve unvanın en düşük maaşı eşit olan personelleri bulunuz. e, (SELECT e.department_id,min(salary) en_dusuk_maas e GROUP BY e.department_id) dd, (SELECT e.job_id,min(salary) en_dusuk_maas e GROUP BY e.job_id ) ud WHERE e.department_id=dd.department_id AND e.salary=dd.en_dusuk_maas AND e.job_id=ud.job_id AND e.salary=ud.en_dusuk_maas

--Maaşı 1000 TL üzerinde olan Seattle'daki personellerin maaşlarına %10 zam yapınız. WHERE department_id IN (SELECT department_id FROM locations WHERE city='seattle') AND salary>1000; WHERE department_id IN (SELECT department_id FROM departments WHERE location_id IN (SELECT location_id FROM locations WHERE city='seattle')) AND salary>1000; UPDATE employees SET salary=salary*1.1 WHERE department_id IN (SELECT department_id FROM departments WHERE location_id IN (SELECT location_id FROM locations WHERE city='seattle')) AND salary>1000; --Personelleri bir önceki çalıştıkları işlere atayan(max) UPDATE işlemini yazınız. UPDATE calisan c SET job_id = (SELECT MAX(job_id) FROM job_history jh WHERE jh.employee_id=c.employee_id) WHERE employee_id IN (SELECT employee_id FROM job_history) --Hareket Yönetimi giriş Örnekleri UPDATE calisan

SET salary=8500 WHERE employee_id=100 commit FROM calisan WHERE employee_id=100 rollback ilk malzeme maiktar(100), para (500) --HArekt başlangıcı INSERT satıs fisi 3, 150TL UPDATE malzeme miktarı 97 UPDATE toplam para --commit, 650TL commit FROM calisan WHERE employee_id=100 FOR UPDATE NOWAIT --Aşağıdaki konutların hangisi kalıcı olarak saklanır? INSERT UPDATE COMMIT UPDATE SAVEPOINT A: INSERT UPDATE ROLLBACK TO SAVEPOINT A COMMIT: