Emrah UYSAL 1

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

Emrah UYSAL 1

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

Emrah UYSAL 1

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

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

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

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

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

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

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

Veri Tabanı II Alt Sorgular

Veritabanı Tasarımı. Alt Sorgu Temelleri

Emrah UYSAL 1

ORACLE DERS 1 SQL E GİRİŞ

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

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

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

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

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

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

Creating Tables in Oracle

Oracle da kullanılan veri tipleri:

YAPISAL SORGULAMA DİLİ (SQL)

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

Oracle Database 11g: Introduction to SQL

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

Mysql Veritabanı Komutları

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

Emrah UYSAL 1 TABLESPACE ENCRYPTION ORACLE 11G

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

Microsoft SQL Server Sorgulama

Alper VAHAPLAR

ACCESS PLATFORMUNDA SQL

Veri Tabanı Hafta Dersi

MOBİL UYGULAMA GELİŞTİRME

Unutulmuş Özellikler: Oracle Veritabanına Yaptığınız Yatırımı Sonuna Kadar Kullanın

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

VERİTABANI. SQL (Structured Query Language)

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi --

Veri Tabanı-I 9.Hafta

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

EROL AKGÜL

Veritabanı Tasarımı. Tablo Oluşturma

Her bölüm için kısa bazı girişler yapılacak ve bölüm içerisinde anlatılacak olan konuların genel başlıkları belirtilecektir.

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

Veritabanı Tasarımı COUNT, DISTINCT, NVL

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

Birden Çok Tabloda Sorgulama (Join)

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

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

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

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.

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

SQL Komutları (2) Uzm. Murat YAZICI

Örnek: HAFTA12B isimli bir kullanıcı tanımlayalım. Bu kullanıcıya gerekli yetkileri verelim.

Veri Tabanı Programlamaya Giriş

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

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

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

PostgreSQL ve PL/pgSQL

SQL e Giriş. Uzm. Murat YAZICI

BMB202. Veritabanı Yönetimi Ders 6. SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

PostgreSQL ve PL/pgSQL

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

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Gruplama (aggregate) fonksiyonları bir dizi değer üzerinde hesaplama yaparlar ve bir sonuç

İNTERNET PROGRAMCILIĞI HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme

Sayfa 1 / 8. Tabo yapıları


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

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir?

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

SQL NEDİR?... 4 Transact-SQL... 4 SQL Veri İşleme Dili (Data Manipulation Language-DML)... 4 SQL Veri Tanımlama Dili (Data Definition

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

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

Bölüm 4: DDL Veri Tanımlama Dili

TBİL UYGULAMA I DERSİ. Mobil Barkotlu Depo Programı Projesi PROJESİ Kurulum Rehberi

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur.

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

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

Bilgisayar Uygulamaları. MySql

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

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Transact-SQL SQL NEDİR? Transact-SQL. SQL Veri İşleme Dili (Data Manipulation Language-DML) SQL Veri Tanımlama Dili (Data Definition Language-DDL)

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

KULLANICI TANIMLI FONKSİYONLAR

EXISTS VE NOT EXISTS fonksiyonları

VERİTABANI Veritabanı Yönetimi

Laboratuvar 2 Tek Kayıt Fonksiyonları

SQL Kod ile Tablo Oluşturma

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

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

KULLANICI TANIMLI FONKSİYONLAR (Devam)

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

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

SORGULAR. Öğr.Gör.Volkan Altıntaş

Transkript:

ORACLE DERS 5 SET(KÜME) OPERATÖRLERİ Set operatörleri,intersect VE MINUS olarak kullanılmaktadır. Grafik olarak inceleyecek olursak, = Tüm kolonları distinct olarak seçip getirir ALL = Tüm kolonları distinct kıstası olmadan seçer INTERSECT = Ortak olan kayıtları getirir MINUS = Bir tablonun diğerine göre farkını getirir OPERATÖRÜ Union her iki taraftan dublicate olarak kayıtları elimine ettikten sonra getirir.dublicate seçiminde Null kayıtlar da gelmektedir. SQL > SELECT employee_id, job_id SELECT employee_id, job_id FROM job_history; Emrah UYSAL www.emrahuysal.com 1

ALL OPERATÖRÜ Union ALL ise her iki taraftan dublicate kayıtlar dahil getirmektedir. SQL > SELECT employee_id, job_id, department_id ALL SELECT employee_id, job_id, department_id FROM job_history ORDER BY employee_id; INTERSECT OPERATÖRÜ Intersect operatörü İki tablo arasında ortak olan kayıtları getirmektedir.yani bir nevi küme kesişim işlemi yapmaktadır. SQL > SELECT employee_id, job_id INTERSECT SELECT employee_id, job_id FROM job_history; Emrah UYSAL www.emrahuysal.com 2

MİNÜS OPERATÖRÜ Minus operatörü ise bir tablonun diğer bir tabloya göre farkını getirmektedir. SQL > SELECT employee_id,job_id MINUS SELECT employee_id,job_id FROM job_history; Küme yani Set operatörlerinde select statementlarındaki kolon değerleri yani kolon sayısı aynı ve aynı veri tipinde olmalıdır. SQL > SELECT employee_id, department_id WHERE (employee_id, department_id) IN (SELECT employee_id, department_id SELECT employee_id, department_id FROM job_history); Set operatörleri sonucunda dönen kolon isimleri ve kolon aliasları ilk select statement değerine göre olmaktadır. SQL > SELECT department_id, TO_NUMBER(null) location, hire_date SELECT department_id, location_id, TO_DATE(null) FROM departments; Emrah UYSAL www.emrahuysal.com 3

SQL > SELECT employee_id, job_id,salary SELECT employee_id, job_id,0 FROM job_history; Union operatörleri ile birlikte Ordar by ile kolon sırası değiştirilebilmektedir. SQL > SELECT 'sing' AS "My dream", 3 a_dummy FROM dual SELECT 'I''d like to teach', 1 FROM dual SELECT 'the world to', 2 FROM dual ORDER BY 1; SQL > SELECT 'sing' AS "My dream", 3 a_dummy FROM dual SELECT 'I''d like to teach', 1 FROM dual SELECT 'the world to', 2 FROM dual ORDER BY 2; Emrah UYSAL www.emrahuysal.com 4

GÜÇLENDİRİLMİŞ GROUP BY OPERATÖRLERİ Güçlendirilmiş Group by fonkisyonları Roll Up ve Cube olarak akrşımıza çıkmaktadır. Normal olarak grup fonksiyonlarının kullanım syntaxları şu şekildedir. Syntax: SELECT [column,] group_function(column)... FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column]; SELECT [column,] group_function(column)... FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING having_expression] [ORDER BY column]; SQL > SELECT AVG(salary), STDDEV(salary), COUNT(commission_pct),MAX(hire_date) WHERE job_id LIKE SA% ; SQL > SELECT department_id, job_id, SUM(salary), COUNT(employee_id) GROUP BY department_id, job_id ; SQL > SELECT department_id, AVG(salary) GROUP BY department_id HAVING AVG(salary) >9500; Emrah UYSAL www.emrahuysal.com 5

Rollup ve cube operatörleri ise normal grup fonksiyonları ile yapamadığımız raporları almakta kullanılır.görüntüsel olarak 3 boyutlu raporları andırmaktadır. ROLLUP OPERATÖRÜ Grup by tarafında kullanılmaktadır, Alt toplamlar için cümülative olarak toplamlar almakta kullanılır. Syntax: SELECT [column,] group_function(column)... FROM table [WHERE condition] [GROUP BY [ROLLUP] group_by_expression] [HAVING having_expression]; [ORDER BY column]; SQL > SELECT department_id, job_id, SUM(salary) WHERE department_id < 60 GROUP BY ROLLUP(department_id, job_id); CUBE OPERATÖRÜ Grup by tarafında kullanılmaktadır, Gruplanmış verileri çapraz olarak göstermekte gösterilir. Syntax: SELECT [column,] group_function(column)... FROM table [WHERE condition] [GROUP BY [CUBE] group_by_expression] [HAVING having_expression] [ORDER BY column]; SQL > SELECT department_id, job_id, SUM(salary) WHERE department_id < 60 GROUP BY CUBE (department_id, job_id) ; Emrah UYSAL www.emrahuysal.com 6

GROUPING OPERATÖRÜ Rollup, cube fonksiyonlarından her ikisinden bir ile de kullanılabilir. Gruplanmış verileri çapraz olarak göstermekte gösterilir. Grouping fonksiyonları 0 yada 1 döner Null değerleri de hesaba katar Syntax: SELECT [column,] group_function(column)., GROUPING(expr) FROM table [WHERE condition] [GROUP BY [ROLLUP][CUBE] group_by_expression] [HAVING having_expression] [ORDER BY column]; SQL > SELECT department_id DEPTID, job_id JOB, SUM(salary), GROUPING(department_id) GRP_DEPT, GROUPING(job_id) GRP_JOB WHERE department_id < 50 GROUP BY ROLLUP(department_id, job_id); Emrah UYSAL www.emrahuysal.com 7

GROUPİNG SETS Gruplamaları daha farklı şekilde ele almak ve göstermek için kullanılan bir yapıdır. SQL > SELECT department_id, job_id, manager_id,avg(salary) GROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id)); SQL > SELECT department_id, job_id, NULL as manager_id, AVG(salary) as AVGSAL GROUP BY department_id, job_id ALL SELECT NULL, job_id, manager_id, avg(salary) as AVGSAL GROUP BY job_id, manager_id; GELİŞMİŞ SUBQUERY KULLANIMI Syntax: SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); SQL > SELECT last_name WHERE salary > (SELECT salary WHERE employee_id = 149) ; Emrah UYSAL www.emrahuysal.com 8

SQL > SELECT employee_id, manager_id, department_id WHERE (manager_id, department_id) IN (SELECT manager_id, department_id WHERE employee_id IN (178,174)) AND employee_id NOT IN (178,174); SQL > SELECT employee_id, manager_id, department_id WHERE manager_id IN (SELECT manager_id WHERE employee_id IN (174,141)) AND department_id IN (SELECT department_id WHERE employee_id IN (174,141)) AND employee_id NOT IN(174,141); SQL > SELECT a.last_name, a.salary, a.department_id, b.salavg a, (SELECT department_id, AVG(salary) salavg GROUP BY department_id) b WHERE a.department_id = b.department_id AND a.salary > b.salavg; SQL > SELECT employee_id, last_name, (CASE WHEN department_id = (SELECT department_id FROM departments WHERE location_id = 1800) THEN Canada ELSE USA END) location ; Emrah UYSAL www.emrahuysal.com 9

SQL > SELECT employee_id, last_name e ORDER BY (SELECT department_name FROM departments d WHERE e.department_id = d.department_id); EXIST OPERATÖRÜ Subqery tarafını kontrol ederek rowların durumuna bakmaktadır.true yada false olarak subquery den değerler dönmektedir. Aşağıdaki sorgu herhangi bir yöneticisi olan kişileri listelemektedir. SQL > SELECT employee_id, last_name, job_id, department_id outer WHERE EXISTS ( SELECT X WHERE manager_id = outer.employee_id); Yukarıdaki sorgunun alternatifi aşağıdaki gibidir. SQL > SELECT employee_id,last_name,job_id,department_id WHERE employee_id IN (SELECT manager_id WHERE manager_id IS NOT NULL); Emrah UYSAL www.emrahuysal.com 10

Aşağıdaki sorgu ise herhangi bir personeli olmayan departmanları listelemektedir. SQL > SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT X WHERE department_id = d.department_id); Yukarıdaki sorgunun alternatifi aşağıdaki gibidir.fakat tek fark alt sorgudan Null değer geldiği için Sorgu da herhangi bir kayıt dönemeyecktir. SQL > SELECT department_id, department_name FROM departments WHERE department_id NOT IN (SELECT department_id ); Bir tabloya yeni bir kolon eklendikten sonra kolonu güncellemek şu şekilde yapılabilir. SQL > ALTER TABLE employees ADD(department_name VARCHAR2(14)); SQL > UPDATE employees e SET department_name = (SELECT department_name FROM departments d WHERE e.department_id = d.department_id); MULTİPLE İNSERTS Burada görülecek konular ile bir tabloya birden fazla kaydı basit olarak nasıl yükleyeceğimiz konusunda bilgi alacağız. INSERT INTO table [(column [, column...])] VALUES (value [, value...]); SQL > INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (70, Public Relations, 100, 1700); 1 row created. UPDATE table SET column = value [, column = value,...] [WHERE condition]; SQL > UPDATE employees SET department_id = 70 WHERE employee_id = 142; 1 row updated. Emrah UYSAL www.emrahuysal.com 11

INSERT [ALL] [conditional_insert_clause] [insert_into_clause values_clause] (subquery) [ALL] [FIRST] [WHEN condition THEN] [insert_into_clause values_clause] [ELSE] [insert_into_clause values_clause] SQL > INSERT ALL INTO sal_history VALUES(EMPID,HIREDATE,SAL) INTO mgr_history VALUES(EMPID,MGR,SAL) SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR WHERE employee_id > 200; 8 rows created. SQL > INSERT ALL WHEN SAL > 10000 THEN INTO sal_history VALUES(EMPID,HIREDATE,SAL) WHEN MGR > 200 THEN INTO mgr_history VALUES(EMPID,MGR,SAL) SELECT employee_id EMPID,hire_date HIREDATE, salary SAL, manager_id MGR WHERE employee_id > 200; 4 rows created. SQL > INSERT ALL WHEN SAL > 25000 THEN INTO special_sal VALUES(DEPTID, SAL) WHEN HIREDATE like ( %00% ) THEN INTO hiredate_history_00 VALUES(DEPTID,HIREDATE) WHEN HIREDATE like ( %99% ) THEN INTO hiredate_history_99 VALUES(DEPTID, HIREDATE) ELSE INTO hiredate_history VALUES(DEPTID, HIREDATE) SELECT department_id DEPTID, SUM(salary) SAL, MAX(hire_date) HIREDATE GROUP BY department_id; SQL > INSERT FIRST WHEN SAL > 25000 THEN INTO special_sal VALUES(DEPTID, SAL) WHEN HIREDATE like ( %00% ) THEN INTO hiredate_history_00 VALUES(DEPTID,HIREDATE) WHEN HIREDATE like ( %99% ) THEN INTO hiredate_history_99 VALUES(DEPTID, HIREDATE) ELSE INTO hiredate_history VALUES(DEPTID, HIREDATE) SELECT department_id DEPTID, SUM(salary) SAL, MAX(hire_date) HIREDATE GROUP BY department_id; Emrah UYSAL www.emrahuysal.com 12

8 rows created. INSERT ALL INTO sales_info VALUES (employee_id,week_id,sales_mon) INTO sales_info VALUES (employee_id,week_id,sales_tue) INTO sales_info VALUES (employee_id,week_id,sales_wed) INTO sales_info VALUES (employee_id,week_id,sales_thur) INTO sales_info VALUES (employee_id,week_id, sales_fri) SELECT EMPLOYEE_ID, week_id, sales_mon, sales_tue, sales_wed, sales_thur,sales_fri FROM sales_source_data; 5 rows created EXTERNAL TABLE. External table geçici olarak tablo yaratma işlemlerinde kullanılır. SQL > CREATE DIRECTORY emp_dir AS /flat_files ; SQL > CREATE TABLE oldemp ( empno NUMBER, empname CHAR(20), birthdate DATE) ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY emp_dir ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE BADFILE bad_emp LOGFILE log_emp FIELDS TERMINATED BY, (empno CHAR, empname CHAR, birthdate CHAR date_format date mask "dd-mon-yyyy")) LOCATION ( emp1.txt )) PARALLEL 5 REJECT LIMIT 200; Table created. SQL > SELECT * FROM oldemp TABLO OLUŞTURUKEN INDEX YARATMA Tablo oluşturma aşamasında da index yaratılabilir. SQL > CREATE TABLE NEW_EMP (employee_id NUMBER(6) PRIMARY KEY USING INDEX (CREATE INDEX emp_id_idx ON NEW_EMP(employee_id)), first_name VARCHAR2(20), last_name VARCHAR2(25)); Table created. SQL > SELECT INDEX_NAME, TABLE_NAME FROM USER_INDEXES WHERE TABLE_NAME = NEW_EMP ; Emrah UYSAL www.emrahuysal.com 13

Emrah UYSAL www.emrahuysal.com 14