SQL Yapsal Sorgulama Dili Veritaban 1 SQL Yapsal
SQL- Yapısal Sorgulama Dili Veritabanı 1
SQL- Yapısal Sorgulama Dili SQL ifadeleri yapısal olarak üç gruba ayrılır. • Veri Tanımlama Dili (DDL - Data Definition Language) • Veri İşleme Dili (DML - Data Manipulation Language) • Veri Kontrol Dili (DCL – Data Control Language)
Veri Tanımlama Dili (DDL-Data Definition Language) • Veri tanımlama dili verinin ne olduğu ile değil verinin nerede ve nasıl tutulacağı ile ilgilenir. • Veri tanımlama dilinin temel ifadeleri – Create; Nesne oluşturmak için kullanılır – Alter; Nesneler üzerinde değişiklik yapmak için kullanılır. – Drop; Nesneleri silmek için kullanılır.
Veri Tanımlama Dili - Create • Create ; Veritabanı nesnelerini ve veritabanının kendisi oluşturmak için kullanılır. – CREATE DATABASE veritabanı_ismi – CREATE TABLE tablo_ismi … – CREATE FUNCTION … – CREATE PROCEDURE … –…
Veri Tanımlama Dili – Create Database CREATE DATABASE db_ders. Ornek ON (NAME = db_ders. Ornek --(Dosya Adı) , FILENAME= 'c: db_ders. Ornek. mdf' --(Fiziksel Dosya Adı) , SIZE = 10 --(Dosya Boyutu) , MAXSIZE = 50 -(Maksimum Dosya Boyutu) , FILEGROWTH =5) --(Artım Miktarı) LOG ON (NAME = db_ders. Ornek , FILENAME= 'c: db_ders. Ornek. ldf' , SIZE = 5 , MAXSIZE = 40 , FILEGROWTH =2)
Veri Tanımlama Dili – Create Table • Veritabanı üzerinde yeni tablo oluşturur. – Sütun adları – Veri tipleri – Constraintler – Otomatik arttırma – NULL yada Not NULL • Kullanım Şekli CREATE TABLE <tablo_adı> (alan_adı veri_türü)
Veri Tanımlama Dili – Create Table CREATE TABLE tbl_ogrenci ( ogr_id INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, ogr. No NVARCHAR(8) NOT NULL, tc. No DECIMAL(11) NOT NULL UNIQUE, ad NVARCHAR(100) NOT NULL, soyad NVARCHAR(100) NOT NULL, dogum. Tarihi DATETIME NULL, dogum. Yeri NVARCHAR(50) )
Veri Tanımlama Dili – Create Table CREATE TABLE tbl_ogrenci. Not ( ogr. Not_id INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, ogr_id INT NOT NULL FOREIGN KEY REFERENCES tbl_ogrenci(ogr_id), ders_id INT NOT NULL FOREIGN KEY REFERENCES tbl_ders(ders_id), notu TINYINT CHECK (notu>=0 and notu<=100), not. Giris. Tarihi DATETIME NOT NULL DEFAULT GETDATE() )
Veri Tanımlama Dili – Create Table CREATE TABLE tbl_ogrenci. Not( ogr. Not_id INT IDENTITY(1, 1) NOT NULL, ogr_id INT NOT NULL, ders_id INT NOT NULL, notu TINYINT, not. Giris. Tarihi DATETIME NOT NULL CONSTRAINT pk_key PRIMARY KEY (ogr. Not_id), CONSTRAINT ck_not CHECK (notu>=0 AND notu <=100), CONSTRAINT uk_ogr_id_ders_id UNIQUE (ogr_id, ders_id), CONSTRAINT fk_key_ogr_id FOREIGN KEY (ogr_id) REFERENCES tbl_ogrenci(ogr_id), CONSTRAINT fk_key_ders_id FOREIGN KEY (ders_id) REFERENCES tbl_ders(ders_id) ON UPDATE CASCADE ON DELETE CASCADE )
Veri Tanımlama Dili - ALTER • Alter; Daha önce oluşturulmuş veritabanı nesnesinin özelliklerini değiştirmek için kullanılır. – ALTER TABLE tablo_ismi … – ALTER FUNCTION … – ALTER PROCEDURE … – ALTER TRIGER –…
Veri Tanımlama Dili - ALTER • ALTER TABLE tablo ADD sütun_adı özellikler ALTER TABLE ogrenci ADD dogum. Tarihi Date. Time NOT NULL • ALTER TABLE tablo DROP COLUMN sütun_adı ALTER TABLE ogrenci DROP COLUMN dogum. Tarihi • ALTER TABLE tablo ALTER COLUMN sütun_adı özellikler ALTER TABLE ogrenci ALTER COLUMN dogum. Tarihi Date. Time NULL
Veri Tanımlama Dili - ALTER • • ALTER TABLE ogrenci ADD UNIQUE (ogr. No) ALTER TABLE ogrenci. Not ADD UNIQUE (ders_id, ogr_id) ALTER TABLE ogrenci ADD PRIMARY KEY (ogr_id) ALTER TABLE ogrenci ADD CONSTRAINT pk PRIMARY KEY (ogr_id) • ALTER TABLE ogrenci. Not ADD CONSTRAINT fk FOREIGN KEY (ogr_id) REFERENCES ogrenci(ogr_id) • ALTER TABLE ogrenci. Not ADD CHECK (notu>=0 and notu <=100)
Veri Tanımlama Dili - DROP • Drop; Veritabanı nesnelerini ve veritabanının kendisi silmek için kullanılır. – DROP DATABASE veritabanı_ismi – DROP TABLE tablo_ismi … – DROP FUNCTION … – DROP PROCEDURE … –…
Veri Tanımlama Dili - DROP • DROP TABLE ogrenci • DROP DATABASE okul
Veri İşleme Dili (DML-Data Manipulation Language) • Veri işleme dili tutulan veriler üzerinde işlem yapar. • Veri işleme dilinin temel ifadeleri – Select; Veritabanındaki kayıtları sorgular – Insert; Yeni kayıt eklemek için kullanılır. – Update; Daha önce olan kaydı günceller – Delete; Veritabanındaki kaydı silmek için kullanılır.
Veri İşleme Dili - SELECT • Select; Tablo yada tablolarda istenilen verinin seçimi için kullanılır. Seçilen verilerde değişim olmaz. – SELECT sütunlar FROM tablo_ismi • select * from ogrenciler • select ogr. No, ad, soyad from ogrenciler
Veri İşleme Dili - SELECT Özellikleri • Tablonun her sütunu yazılabilir. • Birden fazla tabloda sorgulama yapılabilir. • Mevcut kayıtlar belirli koşullara göre seçilebilir. • Sorgulama sırasında birden fazla sütun birleştirilebilir veya sütunlara ek bilgiler eklenebilir. • Sorgulamada sütunlar sayısal tipte ise matematiksel işlemler yapılabilir. • Sorgulamada dönen değerler birden fazla sütuna göre sıralı seçilebilir. • Ortak sütunlara sahip tablolar ilişkilendirilerek farklı tablolardan ortak özelliklere sahip sütunlar seçilebilir. • Daha karmaşık sorgular için iç içe select yazılabilir.
Veri İşleme Dili - SELECT Personel Tablosu per_id adi soyadi gorevi sehir 1 Ali Coşkun Mühendis Denizli 2 Mehmet Kara Tekniker Ankara 3 Ayşe Con Mühendis Antalya • Select * from tbl_Personel • select per_id, adi, gorevi from personel
Veri İşleme Dili - SELECT • Sorgulamada belirli koşullara bağlı kayıtlar isteniyorsa Where ifadesi kullanılır. – – – <, >, <=, >=, = , <> , != AND, OR , NOT IN BETWEEN LIKE Select * From tbl_personel where adi=‘Ali’ Personel Tablosu per_id adi soyadi gorevi sehir 1 Ali Coşkun Mühendis Denizli 2 Mehmet Kara Tekniker Ankara 3 Ayşe Con Mühendis Antalya
Veri İşleme Dili - SELECT Personel Tablosu per_id adi soyadi gorevi sehir 1 Ali Coşkun Mühendis Denizli 2 Mehmet Kara Tekniker Ankara 3 Ayşe Con Mühendis Antalya • SELECT * FROM tbl_personel WHERE per_id<3 • SELECT * FROM tbl_personel WHERE gorevi=‘Mühendis’ AND sehir=‘Denizli’ • SELECT * FROM tbl_personel WHERE sehir=‘Denizli’ OR soyadi=‘Con’ • SELECT * FROM tbl_personel WHERE sehir IN (‘Denizli’, ’Ankara’) • SELECT * FROM tbl_personel WHERE ad LIKE ‘A%’
Veri İşleme Dili - INSERT • Insert; Tabloya yeni veri girişi için kullanılır. • Kullanım şekilleri – INSERT INTO tablo_ismi VALUES (değerler) • insert into tbl_personel values (‘Kemal’, ’Kara’, ’Güvenlik’, ’Denizli’) – INSERT INTO tablo_ismi (sutun. Adları) VALUES (değerler) • insert into tbl_personel (adi, soyadi, gorevi, sehir) values (‘Kemal’, ’Kara’, ’Güvenlik’, ’Denizli’)
Veri İşleme Dili - UPDATE • Update; Tabloya daha önce girilmiş verilerin güncellenmesi için kullanılır. – UPDATE tablo_ismi SET sütun 1=deger… WHERE koşul UPDATE tbl_ogrenci SET tc. No=2 WHERE tc. No=1 --Tc. No sisteme yanlışlıkla 1 olarak kayıt -- edilmiş 2 olması gerkiyor. tc. No su 1 -- olanın tc. No su 2 olarak güncellendi. UPDATE tbl_ogrenci. Not SET notu=notu+10 WHERE ders_id=1 -- ders_id 1 olan hoca bu dersi alan herkese -- +10 puan veriyor herkesin notunu -- 10 puan arttırıp güncelledik
Veri İşleme Dili - DELETE • Delete; Tabloya daha önce girilmiş verilerin silinmesi için kullanılır. – DELETE FROM tablo_ismi WHERE koşul DELETE FROM tbl_ders WHERE ders. Kod =‘geng 103’ --bu ders yanlışlıkla eklenmiş --siliyoruz. DELETE FROM tbl_ders WHERE ders_id=1 --bu dersi silmeye çalışalım
Veri Kontrol Dili (DCL-Data Control Language) • Veri tabanı üzerindeki verilere erişim yetkilerini düzenler. • Veri kontrol dilinin temel ifadeleri – Grant; Kullanıcıların kayıtlar üzerinde işlem yapmasına izin verir. – Deny; Kullanıcının kayıtları kullanmasını kısıtlar – Revoke; Daha önce yapılan tüm kısıtlama ve izinleri iptal eder.
Veri Kontrol Dili - GRANT • Grant; Kullanıcıya veritabanı veya nesneleri üzerinde çeşitli izinler vermek için kullanılır. Veri. Tabanı Tablo Görünüm – GRANT izinler – ON izin alanı – TO kullanıcılar için İçin CREATE DATABASE BACKUP DATABASE CREATE TABLE CREATE VIEW DELETE INSERT SELECT UPDATE GRANT DELETE, INSERT, SELECT, UPDATE ON tbl_personel TO ders. Kull
Veri Kontrol Dili - DENY • Deny; Kullanıcıya veritabanı veya nesneleri üzerinde çeşitli izinleri kısıtlamak için kullanılır. Veri. Tabanı Tablo Görünüm – DENY izinler – TO kullanıcılar için İçin CREATE DATABASE BACKUP DATABASE CREATE TABLE CREATE VIEW DELETE INSERT SELECT UPDATE DENY DELETE, INSERT, SELECT, UPDATE TO ders. Kull
Veri Kontrol Dili - REVOKE • Revoke; Kullanıcıya veritabanı veya nesneleri üzerinde verilen izinleri ve kısıtlamalaro kaldırmak için kullanılır. – REVOKE izinler Veri. Tabanı için – TO kullanıcılar CREATE DATABASE Tablo İçin DELETE BACKUP DATABASE INSERT CREATE TABLE SELECT CREATE VIEW UPDATE REVOKE DELETE, INSERT, SELECT, UPDATE TO ders. Kull Görünüm İçin DELETE INSERT SELECT UPDATE
Sorgulama İşlemleri Veritabanı 1
Select işlemleri • SELECT sütunlar FROM tablo_adi • SELECT * FROM tbl_personel • SELECT adi, soyadi, gorevi FROM tbl_personel
Distinct • Tekrar eden satırları kaldırmak için kullanılır. • SELECT DISTINCT ders. Ad, ders. Veren FROM tbl_ders • SELECT DISTINCT ders. Veren FROM tbl_ders
Order By • Seçilen satırların istenilen sırada görüntülenmesini sağlar. Ø SELECT ders. Kod, ders. Ad, ders. Veren FROM tbl_ders ORDER BY ders. Kod -- hiç bir şey yazmazsak ASC Ø ASC : Artan sırada sıralama (A-Z ye doğru) Ø SELECT ders. Kod, ders. Ad, ders. Veren FROM tbl_ders ORDER BY ders. Veren ASC Ø DESC : Azalan sırada sıralama (Z-A ya doğru) Ø SELECT ders. Kod, ders. Ad, ders. Veren FROM tbl_ders ORDER BY ders. Kod DESC Ø SELECT ders. Kod, ders. Ad, ders. Veren FROM tbl_ders ORDER BY ders. Veren ASC, ders. Kod DESC
Sütunlara Takma İsim Ekleme (Alia. S) • Seçilen sütunların istenilen isimde görüntülenmesini sağlar. Ø Kullanımı Ø SELECT sütun_adi 1 AS takma_isim 1, … FROM tablo_ismi • Ø SELECT ders. Kod AS Dersin. Kodu, ders. Ad AS 'Dersin Adı', ders. Veren [Dersi Veren Hoca] FROM tbl_ders
Sütunlar Üzerinde Matematiksel İşlemler Yapmak • • + Toplama - Çıkarma * Çarpma / Bölme • SELECT ogr_id, notu + 10 FROM tbl_ogrenci. Not • SELECT ogr_id, notu + 10 AS 'Notuna 10 Eklenmiş' FROM tbl_ogrenci. Not • SELECT ogr_id, notu*30/100 AS 'Notun %30 u' FROM tbl_ogrenci. Not
Sütunları Birleştirmek • Birleştirme işlemi için + operatörü kullanılır. Metin tipinde veriler birleştirilebilir. • SELECT ders. Kod +' '+ ders. Ad+' '+ ders. Veren FROM tbl_ders • SELECT ders. Kod +' '+ ders. Ad ders. Bilgileri, ders. Veren FROM tbl_ders
Koşula Bağlı Sorgulamalar • Koşul belirtmek için Where kullanılır. • SELECT * FROM tbl_ders WHERE ders. Kod=‘BPG 102‘ – – – – <, >, <=, >=, = , <> , != Tarih Sorgulama AND, OR , NOT IN BETWEEN … AND. . LIKE NULL Sorgulama
<, >, <=, >=, = , <> , != • SELECT * FROM tbl_ders WHERE ders. Kod=' BPG 102‘ • SELECT * FROM tbl_ogrenci. Not WHERE notu>50 • SELECT * FROM tbl_ogrenci. Not WHERE ders_id<>1
Tarih Sorgulama • Tarih tırnak içerisinde yazılır • SELECT * FROM tbl_ogrenci. Not WHERE not. Giris. Tarihi =‘ 19. 03. 2012‘ --sadece 19. 03. 2012 ye ait kayıtları getirir • SELECT * FROM tbl_ogrenci. Not WHERE not. Giris. Tarihi =’ 19. 03. 2012 13: 00‘ • SELECT * FROM tbl_ogrenci. Not WHERE not. Giris. Tarihi >=‘ 19. 03. 2012'
AND, OR , Not • SELECT * FROM tbl_personel WHERE sehir='Denizli' AND gorevi='Mühendis' --denizlili ve mühendis olanları getirir • SELECT * FROM tbl_personel WHERE sehir='Denizli' OR gorevi='Mühendis' --denizlili veya mühendis olanları getirir • SELECT * FROM tbl_personel WHERE NOT sehir='Denizli' --denizlili olmayanları getirir
İşlem Önceliği ↓ Karşılaştırma Operatörleri (<, >, <=, >=, <>, …) ↓ NOT ↓ AND ↓ OR • SELECT * FROM tbl_personel WHERE sehir='Denizli' OR adi= 'Ali' AND gorevi='Mühendis' • SELECT * FROM tbl_personel WHERE (sehir= 'Denizli' OR adi= 'Ali' ) AND gorevi='Mühendis'
IN Operatörü • Aldığı değerlerin arasında or operatörü olduğu düşünülür. • Kullanımı ; SELECT sutun_isimleri FROM tablo_ismi WHERE sutun_adi IN (değer 1, değer 2, …) • SELECT * FROM tbl_personel WHERE sehir IN ('Ankara' , 'Denizli' , 'Antalya' ) • SELECT * FROM tbl_personel WHERE sehir <> 'Ankara' and sehir <> 'Denizli' --ankara ve denizlili olmayanlar • SELECT * FROM tbl_personel WHERE sehir NOT IN ('Ankara' , 'Denizli' )
BETWEEN … AND … Operatörü • Aldığı değerlerin arasındaki değerleri içeren sütunları döndürür. • Kullanımı ; SELECT * FROM tablo_ismi WHERE sutun_adi BETWEEN ilk_değer AND son_değer • SELECT * FROM tbl_ogrenci. Not WHERE notu BETWEEN 60 AND 100 --notu 60 ile 100 arasında olanlar 100 ve 60 dahil • SELECT * FROM tbl_ogrenci. Not WHERE notu >= 60 AND notu <= 100
LIKE (Karakter Sorgulama) • Bir veri kümesi içerisinde belirttiğimiz değere benzeyen verilerin olup olmadığını kontrol etmek için kullanılır. Ø Ø % 0 veya daha fazla karakter _ Sadece tek bir karakter [ ] Belirtilen karakterler arasında sadece tek bir karakter [^a] Belirtilen karakterler arasında olmayan tek bir karakter Örnekler; LIKE ‘A%’ A ile başlayan tüm isimler LIKE ‘%n’ n ile biten tüm isimler LIKE ‘%y%’ y karakterlerini içeren tüm isimler LIKE ‘____n’ n ile biten tüm 5 karakterli isimler LIKE ‘[FH]%’ F veya H ile başlayan tüm isimler LIKE ‘[A-K]%’ A ve K arasındaki harfler ile başlayan tüm isimler LIKE ‘[^M-Z]%’ M ve Z arasındaki harfler ile başlamayan tüm isimler LIKE ‘[^U]%’ Baş harfi U olmayan tüm isimler
? ? ? • • Adı 3 harften oluşan İlk harfi C ile Z arasında olmayan İkinci harfinde K, T, N içermeyen Son harfi D ile Z arasında olan isimleri sorgula
NULL Değer Sorgulama • IS NULL • IS NOT NULL • SELECT * FROM tbl_ogrenci. Not WHERE notu IS NULL
- Slides: 44