50
SQL Structured Query Language

SQL Structured Query Language

Embed Size (px)

DESCRIPTION

SQL Structured Query Language. Daha Elle tutulur. Standart sorgu dilidir ve bircok RDBS tarfından kullanılır . Standart ??? Neden Çok fazla VTYS var paralı / ücretsiz Her birisi kendi dilini kullansa bir VT diğerine geçmek mümkün olmazdı . - PowerPoint PPT Presentation

Citation preview

Page 1: SQL Structured Query Language

SQLStructured Query Language

Page 2: SQL Structured Query Language

Daha Elle tutulur• Standart sorgu dilidir ve bircok RDBS tarfından kullanılır.• Standart??? Neden• Çok fazla VTYS var paralı/ücretsiz• Her birisi kendi dilini kullansa bir VT diğerine geçmek mümkün olmazdı.• Buna rağmen ufak farklılıklar gene de vardır.

• IBM tarafından R sistemi adı altında geliştirildi.• Ilişkisel cebir ile alakası YOKTUR. Ama benzerlikleri vardır.

Page 3: SQL Structured Query Language

SQL • VTYS den bağımsızdır.• DDL Data definition Language • Tables, Constraints, index vb.

• DML Data Manupulation Language• CRUD işlemleri

• SQL 2 standartı bir SCHEMA getirmiştir.• Create SCHEMA Univ Autherization dean;

• Dean adındaki kullnıcıya Univ adındaki şemaya yetki verilmiştir.• Güvenlik ve güvenlik amaçlı kullanılır.

Page 4: SQL Structured Query Language

Catalog• Schema LAR kolleksiyonuna verilen ad • Referencila integraty

Page 5: SQL Structured Query Language

Table Oluşturma• Create Table [schema.] Tablo_adı [{ sütün tanımları}]• Create Table Univ.Department;

Page 6: SQL Structured Query Language

SQL2 nin desteklediği Veri Tipleri ve Domainleri

• Numeric (int, smallint, float, real, double precision)• Formated sayılar( decimal(I,j), numeric(i,j))• Karakterler dizisi ( sabit uzunluklta char(n) değişen uzunluklarda

varchar(n)• Bit dizisi ( sabit uzunlukta bit(n) veya değişen uzunlukta bit

varying(n)• Date, time ve timestamp• Text …..

Page 7: SQL Structured Query Language

Constraint ve Default Değerler• Not NULL .. Null değeri alamaz • DEFAULT .. Değer girilmediğine alınması istenen değeri ifade

eder• PRIMARY KEY..• UNIQUE• FOREIGHN KEY, refencail integretey için. Var olan bir kayda

referans verilmesi

Page 8: SQL Structured Query Language

Örnek Create Table

Create Table Muhasebe.Calisan(Tcno char(11) NOT NULL, UNIQUECalNo int(6) NOT NULL,Ad varchar(40),CinsiyetChar,DT Date,Adress Varchar(100),Maaş decimal(8,2),RaporVerir int(6)Primary Key (EMPNO),Foreign Key (RaporVerir) REFERENCES Muhasebe.Calisan(CalNo));

Page 9: SQL Structured Query Language

Tablonun Silinmesi• DROP TABLE tablo adı [DEPENDENT {Cascade|Restrict}];

• CASCADE: foreign key kısıta olan tablo var ise o da silinecektir.• RESTRICT: tablo kimse tarafından referans edilmiyor ise ancak

o zaman silinmesine izin verir.

Page 10: SQL Structured Query Language

SCHEMA silinmesi• Tablo ya benzer• DROP SCHEMA şema_adı [Cascade|Restrict}];

• Cascade: şema içindeki elemanlarla birlikte SİL• Restrict: Şema içinde eleman yoksa SiL

Page 11: SQL Structured Query Language

Tabloyu Değiştirmek• Tabloyu değil aslında onun tanımını değiştiriyoruz

• ALTERALTER TABLE Muhasebe.CalisanADD JOB varchar(20)

Zaten içinde Veri varsa ??? JOB sütünunda ne değeri olur Eğer Not NULL kısıtı kullanarak yapmışşsam ne olur?

Page 12: SQL Structured Query Language

DEğiştirme• Mutlaka DEFAULT değerleri tanımlamak ZORUNDA KALIRIM• Sutun Silmek • Alter Table Muhasebe.Calisan• Drop Tcno Cascade;

• Restrict de kullanılabilirdi.

Page 13: SQL Structured Query Language

Değiştirme Devam • Alter Table Muhasebe.Calisan• ALTER RaporVerir SET DEFAULT “007”;• Tüm NULL değerler güncellenir.

• Alter Table Muhasebe.Calisan• ALTER RaporVerir DROP DEFAULT;

Page 14: SQL Structured Query Language

SQL Select işlemi• En Karmaşık SQL işlemidir • Çok farlı formlarda olabilir• Temel görevi Verileri alabilmektir.• Ilişkisel CEBİRDEKİ SELECT ile ALAKASI YOKTUR • Select aynı kayıtların çoklu kullnımına izin verir.

Page 15: SQL Structured Query Language

SELECT• SELECT FROM WHERE• Select <nitelik/alan listesi>• FROM < tablo Listesi>• WHERE <Şartlar>

• Select CalNo, Ad From Muhasebe.Calisan• Where RaporVerir=‘007’;

Page 16: SQL Structured Query Language

Select• SUPPLIES bölümünün başındaki kişinin adı nedir?

SELECT Calisan.NameFROM Calisan, BOLUMLERWHERE EMPNO=HEAD AND

BOLUMLER.NAME=‘SUPPLIES’ ;

Page 17: SQL Structured Query Language

Select• Ahmet Çelik adlı çalışanın rapor verdiği kiş kimdir?

SELECT calisan.AdFrom Calisan, CalisanWHERE Calisan.Ad=‘Ahmet Çelik’ AND Calisan.RaporVerir=Calisan.CalNoALLIASING gereklidir.

Page 18: SQL Structured Query Language

Problem çözüldü

SELECT calisan.AdFrom Calisan, Calisan As BOSSWHERE Calisan.Ad=‘Ahmet Çelik’ AND Calisan.RaporVerir=BOSS.CalNo

Page 19: SQL Structured Query Language

Where siz SELECT• İlişkisel cebirdeki PROJECT e benzer• Select AD, TCNo• From CALISAN

• Ya birden Fazla tablo adı verilirse ne olur?• Select Calisan.AD, Bolumler.AD• From Calısan, Bolumler

• KARtezyen Çarpım

Page 20: SQL Structured Query Language

Select• * : tum alanları getirilecek.• Select * • From Calisan• Where Ad=“Ahmet Cakar”

Select * from Calısan, Bolumlar

Page 21: SQL Structured Query Language

Tablolar Ve kümler• Tablolar nasıl Görülmektedir.• İlişkisel Cebir tabloları KÜME olarak görürken• SQL tablolara (ilişkilere) bags veya çoklu küme şekline davranır.

• Kayıtlar bir tabloda çok kez görünebilir. Bu yüzden DISTINCT anahtar kelimesi kullanılarak erişilebilir.

• Çift kayıtları ihmal etme: • Select DISTINCT AD• From CALISAN

Page 22: SQL Structured Query Language

Union, Intersection, Except• Bu teorik yaklaşımlar ilişkilerin KÜME olarak

değerlendirmektedir.

• Select Distinct Ad• From Calisan• Where Maas>3000• UNION• Select Distinct Ad• From Calisan• Where Maas<1500

Page 23: SQL Structured Query Language

Eğer Çift kayıtlara izin varsa • Ve onlarıda kullanmak istersem

• UNION ALL ( disjoint union için • INTERSECT ALL ( bag kesişimi için • EXCEPT ALL ( bag farkı için

Page 24: SQL Structured Query Language

Kıyaslama LIKE• % ve _ karakterlerini LIKE kıyaslayıcı anahtar kelimesi ile

birlikte kullanabilir

• Select * • From calisan • Where Ad LIKE ‘%al%’

• … Where AD LIKE ‘_ALG__’

Page 25: SQL Structured Query Language

Aritmetik işlemler• */-+ işlemler

• Select 1.1*Maas as Result , Maas , Result-Maas• From Calisan

• Anlamı 10% zam yapsak nasıl gözükürdü

Page 26: SQL Structured Query Language

Örnek Create Table

Create Table Muhasebe.Calisan(Tcno char(11) NOT NULL, UNIQUECalNo int(6) NOT NULL,Ad varchar(40),CinsiyetChar,DT Date,Adress Varchar(100),Maaş decimal(8,2),RaporVerir int(6)Primary Key (EMPNO),Dno int(6)Foreign Key (RaporVerir) REFERENCES Muhasebe.Calisan(CalNo));

Page 27: SQL Structured Query Language

Örnek Tablo Bolumler• Create Muhasebe.Bolumler (

Dnumber int(6) NOT NULL,Ad VarChar(20),Adres VarChar(60),Yoneticisi int(6),Primary KEY (Dnumber)Foreign Key Yoneticisi REFERENCES Calisan(CALNO));

Page 28: SQL Structured Query Language

Aritmetik işlemler • BETWEEN• Select *• From Calisan• Where Maas Between 3000 and 4000;

• ORDER BY • Select *• From Calisan• Where Maas Between 3000 and 4000;• Order by Ad, CalNo;

Page 29: SQL Structured Query Language

Explicit Set• Select Name • From Employee• Where ReportsTo in (‘007’, ‘008’, ‘009’)

Page 30: SQL Structured Query Language

Checking NULL values• Select E.Name , E.Salary• From Employee as E• Where Exists ( Select Empno From Employee• Where E.ReportsTo=EmpNo AND• ReportsTo As NULL)• Rapor vermeyen kimseler (Müdürlerin )•

Page 31: SQL Structured Query Language

Özniteliğin Adını Değiştirme• Select Name As [Employee Name]• From Employee,

Eğer boşluk konulmak istenrise […] işaretleri arasına alınmalıdır.

Page 32: SQL Structured Query Language

İç içe Sorgular Nested Query• Ilişkisel Cebirde olduğu gibi bir ilişki üzerindeki işlemin

sonucu gene bir lişkidir.• SQL de de bir tablo ile yapılan bir işlemin sonucu gene bir

tablodur.

• Select AD• From Bolumler• Where Dnumber In• ( Select DNO• From Calısan • Where Maas>3000);

Page 33: SQL Structured Query Language

Iç içe devam• ALL• Select AD• From Calısan• Where Salary > ALL• ( Select Salary• From Calısan • Where RaporVerir=‘007’);

Page 34: SQL Structured Query Language

Iç içe sorgularda Alias

Page 35: SQL Structured Query Language

Join (kartezyen çarpım DEĞİLDİR)

• Select AD, Adres• From Calisan JOIN Bolumler ON DNO=Dnumber• Where DepartmentName=‘Research’

Page 36: SQL Structured Query Language

Join (Natural Join) m• Iki ilişki de de Aynı ada sahip nitelik olmalıdır

• Select Calısan.Ad, Bolumler.Ad• From Calısan NATURAL JOIN BOLUMLER

Page 37: SQL Structured Query Language

OUTER Join

Left outer JOINRight outer JOINFull outer JOIN

Page 38: SQL Structured Query Language

Aggregate Fonks.• Select Count(Salary), Min(salary), Max(salary), Sum(Salary),

AVG(Salary ) • From Employee

• Count(*) da kullanılabilir.

Page 39: SQL Structured Query Language

• Select E.Name • From Employee AS E• Where (Select Count(*) from DepartmentID where

D.Head=E.EmpNo) >=2

Page 40: SQL Structured Query Language

Group By • Select Dno, Count(*), Avg(salary)• From Employee• Group By Dno;

Page 41: SQL Structured Query Language

Having • Select Dno, Count(*), Avg(salary)• From Employee• Group By Dno;• Having count(*)>20

• Having filitrelemesi aggragete özelliğine göre

Page 42: SQL Structured Query Language

Having mi Where mi?• En büyük Fark• Where : bağımsız kayıtlar üzerinde • Having : grup kayıtları üzerinde etkilidir.

Page 43: SQL Structured Query Language

SELECT in yazılımı • Select• From • Where • Group by • Having • Order by

Page 44: SQL Structured Query Language

INSERT• Insert into Tablo Adı [( Alan adları )]• Values( Değerler)

• Insert into Employee• Values (‘5001’, 004, ‘Ali Kasap’, ‘E’, ‘9-5-1980’, ‘Kadıköy’, 3000,

007, 3)

• Alan adları belirtildiğinde alanların bir kısmına bilgi girişi yaplacak anlamı çıkmaktadır.

• Insert into Employee(name, Addr, Dno)• Values (‘ hulya K’, ‘üsküdar’, 5)• Girilmeyen değerlere DEFAULT değerler varsa atanır. Yoksa

NULL atanır.

Page 45: SQL Structured Query Language

Insert • Create table EMD(• EmployeeNo as int,• Manager as int,• DepartmentNo as int• )

• Insert into EMD• Select E.EmpNo as EmployeeNo,

E.ReportsTo as Manager,D.Dno as DepartmentNo

From Employee s E Join Department as D on E.Dno= D.Dno

Page 46: SQL Structured Query Language

Kayıtların Silinmesi• Delete From Where

• Delete From Employee Where EmpNo=007; bir kayıt siler

• Delete From Employee Where Dno in ( Select Dnumber From Department where Head =007);Birden fazla kayıt silebilir.

DELETE FROM Employee Tüm kayıtları siler

Page 47: SQL Structured Query Language

Kayıtları Güncelleme • Update Set Where

• Update Employee• Set Salary=Salary *1.1• Where Reports To=007

Page 48: SQL Structured Query Language

View (sanal Tablolar)

• Fiziksel olarak DB içinde olan TABLOLARA BASE TABLE adı verilir.• Bir View veya sanal tablo başka BASE tablolardan

veya görünümlerden elde edilmektedir. • Görünümler veri tabanında kayıtlı olarak

tutulmasına ihtiyaç yoktur. (fakat soruları kaydedilir) • View üzerinde Güncelleme işlemi sınırlıdır ama

istenilen sorgu gerçekleştirilebilir.

Page 49: SQL Structured Query Language

View Oluşturmak • Create View EMD(EMPL, MNGR, DEPT)• As

• Select E.Name, M.Name, D.Name• From Employee as E, Employee as M, Department as D• Where E.Reportsto=M.Empno

• AND• E.DNO=D.Number

Page 50: SQL Structured Query Language

View Özellikleri

•View sorgu olarak saklandığı için her zaman günceldir.•Karakterizasonu sorgu sırasında yapılır•View ler DROP komutu ile silinebilir.•Viewlerin etkin kullanımına dikkat

etmek gereklidir.