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

Benzer belgeler
Çok tablolu sorgulamalar

SQL (Structured Query Language)

SQL (Structured Query Language)

SQL Komutları (2) Uzm. Murat YAZICI

VERİTABANI. SQL (Structured Query Language)

SQL Kod ile Tablo Oluşturma

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

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

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ü

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

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

İLİŞKİSEL VERİTABANLARINDA BİRLEŞTİRME

Veritabanı. SQL (Structured Query Language)

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

Veri Tabanı Tasarım ve Yönetimi

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

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

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

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

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

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

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

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

ACCESS PLATFORMUNDA SQL

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

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

VERİTABANI ve YÖNETİMİ

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

Mysql Veritabanı Komutları

Veri Tabanı Hafta Dersi

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

Birden Çok Tabloda Sorgulama (Join)

VERİTABANI Veritabanı Yönetimi

SQL e Giriş. Uzm. Murat YAZICI

SORGULAR VE ÇEŞİTLERİ II

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

SQL DİĞER Deyimler ve Komutlar

İNTERNET TABANLI PROGRAMLAMA- 12.ders

VERİTABANI Veritabanı Sorgulama

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

IN ve NOT IN Tablodaki alan içeriklerine ulaşmak için IN deyimi kullanılır.

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

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

BİLİŞİM TEKNOLOJİLERİ

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

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

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

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

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

BİLİŞİM TEKNOLOJİLERİ

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Veri Tabanı Programlamaya Giriş

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

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

Veri Tabanı Hafta Dersi

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

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

VERİ TABANI YÖNETİMİ Hafta1

6 Aritmetiksel Operatörler ve Hazır Fonksiyonlar

YAPISAL SORGULAMA DİLİ (SQL)

Emrah UYSAL 1

Oracle Database 11g: Introduction to SQL

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

Veritabanı Yönetim Sistemleri

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

Veri Tabanı II Alt Sorgular

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

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

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

Veri Tabanı-I 9.Hafta

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

SQL Query and Table Application

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

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

1 - Adi A Harfi İle Biten Kişilerin Listesi İçin Hangisi Kullanılmalıdır? Select * From Kisiler Where Adi End A Select * From Kisiler Where Adi Like

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL-2

Like Joker Karakterler, Order By, Group By

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

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

Maltepe Üniversitesi Endüstri Mühendisliği Bölümü Veri Tabanı Yönetimi (END 210)

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

Bilgisayar Uygulamaları. MySql

Veritabanı Tasarımı. Kartezyen Çarpım ve Join İşlemleri

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

Laboratuvar 2 Tek Kayıt Fonksiyonları

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

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

Oracle da kullanılan veri tipleri:

Lıke Joker Karakterler, Is [not] Null, Order By, Group By, As

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

Veritabanı ve Yönetim Sistemleri

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

15 Aralık 2011 / Perşembe.

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

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

Durhan GABRALI Veritabanı Organizasyonu Dersi (11B)

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

Transkript:

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

Dersin Planı SQL Fonksiyonları Çoklu Tablo İşlemleri İç içe Select ler JOIN Birleştirme DML DDL

Örnek Veritabanı Öğrenci İşleri OGRENCILER Tablosu: OGR_NO (PK) AD SOYAD TEL ADRES DERSLER Tablosu: DERS_KODU (PK) DERS_ADI DERS_KREDISI HOCASI (FK- HOCALAR) NOTLAR Tablosu: OGRENCI (FK- OGRENCILER) DERS (FK-DERSLER) DERS_YILI VIZE FINAL HOCALAR Tablosu: HOCA_NO (PK) AD SOYAD UNVAN

SQL Fonksiyonları Programlama dillerinde olduğu gibi, SQL de de bazı aritmetik işlemler için yada tip dönüşümü yapmak için hazır olarak sunulan fonksiyonlar mevcuttur. Bu fonksiyonların bazıları (SUM, AVG, MIN, MAX, ) birçok kayıt üzerinde işlem yapıp tek bir sonuç üretirken, bazıları ise (Örneğin; tip dönüşümü ile ilgili olanlar) üzerinde işlem yaptığı her kayıt için ayrı sonuç üretir.

SUM Belirli bir sütundaki sayısal verilerin toplanarak sonucun gösterilmesi istenirse SUM, aritmetik ortalamasının gösterilmesi istenirse AVG kullanılır. Aşağıdaki SQL cümlelerinden ilki tüm personelin maaşlarının toplamını, ikincisi ise maaşların aritmetik ortalamasını gösterir: SELECT SUM(MAAS) AS TOPLAM_MAAS FROM PERSONEL SELECT AVG(MAAS) AS [MAASLARIN ORTALAMASI] FROM PERSONEL NOT: _ karakteri yerine boşluk karakteri kullanılması istenirse [] içinde yazılmalıdır.

MIN ve MAX Belirli bir sütundaki en büyük veriyi görüntülemek için MAX, en küçük veriyi görüntülemek için ise MIN fonksiyonları kullanılır. Aşağıdaki SQL cümlesi, 2009-2010 öğretim yılında BM 316 dersinden en yüksek başarı notunu gösterir: SELECT MAX(VIZE*0.3 + FINAL*0.7) FROM NOTLAR WHERE DERS = BM 316 AND DERS_YILI = 2009-2010

COUNT Sorgunun ürettiği satır sayısını döndürür. Aşağıdaki SQL cümlesi PERSONEL tablosundaki toplam kayıt sayısını döndürür: SELECT COUNT(*) FROM PERSONEL Eğer COUNT içinde * yerine belirli bir sütun ismi verilirse o sütundaki NULL olmayan değer sayısını döndürür: SELECT COUNT(ADRES) FROM OGRENCILER

TOP Önceki örnekte en yüksek başarı notunu alan öğrencinin numarasını da göstermek istersek aşağıdaki kullanım hata verecektir: SELECT OGRENCI, MAX(VIZE*0.3 + FINAL*0.7) FROM NOTLAR WHERE DERS = BM 316 AND DERS_YILI = 2009-2010 SELECT sonrasında TOP n kullanımı en üstteki n kaydı gösterir. Örneğimizde başarı notuna göre azalan sıralama yapıp en üstteki kaydı almak için TOP 1 deyimini kullanmak en uygun çözümdür: SELECT TOP 1 OGRENCI, VIZE*0.3 + FINAL*0.7 AS Başarı_Notu FROM NOTLAR WHERE DERS = BM 316 AND DERS_YILI = 2009-2010 ORDER BY VIZE*0.3 + FINAL*0.7 NOT: Bu ifade yerine takma ismi olan Başarı_Notu kullanılması hata verir

LCASE, UCASE ve LEN LCASE: Tüm karakterleri küçük harfe dönüştürür. (Oracle da LOWER) UCASE: Tüm karakterleri büyük harfe dönüştürür. (Oracle da UPPER) LEN: Sütun yada ifade içindeki karakter sayısını döndürür (Oracle da LENGTH) Aşağıdaki SQL cümlesi SOYAD bilgileri küçük harfli bile girilmiş olsa tüm karakterleri büyük harf olarak görüntüler: SELECT AD, LCASE(SOYAD) FROM PERSONEL

Tip Dönüşümleri Access te tip dönüşümleri için aşağıdaki fonksiyonlar kullanılır: CBool CDate CInt CStr CByte CDbl CLng CVar CCur CDec Csng Diğer VTYS içinde tip dönüşümü mümkündür. Fakat, Tip Dönüşümü pek tavsiye edilmez.

Tarihsel Fonksiyonlar Access NOW: Sistem tarihini ve saatini döndürür. DATEDIFF: İki tarih arasındaki farkı verir. DATEADD: Aldığı tarihin üzerine aldığı değeri (gün, ay, yıl) ekleyerek yeni bir tarih değeri üretir. DAY: Aldığı tarihin gün kısmını döndürür. MONTH: Aldığı tarihin gün kısmını döndürür. YEAR: Aldığı tarihin gün kısmını döndürür. Programlama Dili tarafında da yönetilebileceği unutulmamalıdır.

GROUP BY SUM, AVG gibi bazı fonksiyonların tablonun tamamı için değil de, belirli bir alana (yada alanlara) göre gruplandırılarak çalıştırılması GROUP BY deyimi ile sağlanabilir. Aşağıdaki SQL cümlesi personelin ortalama maaşlarını her bölüm için ayrı ayrı listeler: SELECT AVG(MAAS) FROM PERSONEL GROUP BY BOLUM

HAVING HAVING ifadesinin işlevi WHERE ifadesininkine çok benziyor. Ancak kümeleme fonksiyonları ile WHERE ifadesi birlikte kullanılamadığından HAVING ifadesine ihtiyaç duyulmuştur. Maaşı 3000 den büyük maaşlar için SELECT * FROM PERSONEL WHERE MAAS > 3000 Maaş ortalaması 1500 den fazla görevlerin görüntülenmesi SELECT Gorev, AVG(maas) FROM PERSONEL GROUP BY Gorev HAVING AVG(Maas) > 1500

Çok tablolu sorgulamalar Eğer birden fazla tabloda yer alan verilerin tek bir sorgu ile görüntülenmesi istenirse FROM kısmında ilgili tablolar araya virgül konularak yazılmalı, WHERE kısmında ise o tabloları birbirine bağlayan alanların birbirine eşit olması kriteri verilmelidir. WHERE kısmında böyle bir kriter verilmezse, iki tablonun tüm kayıtları birbiri ile eşleştirilecek (kartezyen çarpım) ve ortaya istenilenden daha çok sayıda kayıt çıkacaktır. Kartezyen çarpımı için İlişkisel Çebir konusuna bak.

2 tablolu sorgulama örneği PERSONEL tablosundaki BOLUM (FK) alanı ile BOLUMLER tablosundaki BOLUM_NO (PK) alanı birbirine bağlıdır. Eğer personel bilgileri görüntülenirken personelin çalıştığı bölümün numarasını değil de adını göstermek istersek bu adı BOLUMLER tablosundan elde etmeliyiz. Bu nedenle iki tablonun ismini de FROM kısmında kullanmalıyız: SELECT AD, SOYAD, GOREV, BOLUM_ADI FROM PERSONEL, BOLUMLER WHERE BOLUM = BOLUM_NO NOT: Bu satır yazılmadığında görüntülenen kartezyen çarpıma dikkat!

Alan isimlerinin aynı olması durumu Eğer bir çok tablolu sorgulamada ilişkinin her iki tarafındaki alanlar aynı isimde ise; alan isimlerinden önce, o alanın ait olduğu tablo ismi de yer almalıdır. Örneğin PERSONEL tablosundaki alan ismi de BOLUM_NO olsaydı sorgu şu şekilde yazılmalıydı: SELECT AD, SOYAD, GOREV, BOLUM_ADI FROM PERSONEL, BOLUMLER WHERE PERSONEL.BOLUM_NO = BOLUMLER.BOLUM_NO Takma İsim Kullanarak SELECT AD, SOYAD, GOREV, BOLUM_ADI FROM PERSONEL P, BOLUMLER B WHERE P.BOLUM_NO = B.BOLUM_NO

3 tablolu sorgulama örneği Öğrencilerin adı, soyadı, aldıkları derslerin adı ve bu derslerden başarı notları görüntülenmek istenirse: SELECT AD, SOYAD, DERS_ADI, VIZE*0.3 + FINAL*0.7 AS BN FROM OGRENCILER, NOTLAR, DERSLER WHERE OGR_NO = OGRENCI AND DERS = DERS_KODU

İç içe SELECT ifadesi Eğer SELECT sonrasında yazılan alanların hepsi aynı tabloda, fakat kriter olarak kullanılan alanlar onlardan farklı bir tabloda ise iç içe SELECT ifadeleri kullanılabilir. Aşağıdaki SQL cümlesi Fizik dersini alan öğrencilerin bilgilerini gösterir: SELECT OGR_NO, AD, SOYAD FROM OGRENCILER WHERE OGR_NO IN ( SELECT OGRENCI FROM NOTLAR WHERE DERS IN ( SELECT DERS_KODU FROM DERSLER WHERE DERS_ADI = Fizik )) Fizik dersinin bir ders kodu olacağı için bu satırdaki IN yerine = kullanılabilirdi.

İç İçe SELECT ifadesi Önceki örneği çok tablolu sorgulama türünde de yapabilirdik: SELECT OGR_NO, AD, SOYAD FROM OGRENCILER, NOTLAR, DERSLER WHERE OGR_NO = OGRENCI AND DERS_NO = DERS AND DERS_ADI = Fizik Fakat bu sorgu tabloların kartezyen çarpımına neden olacağı için muhtemelen daha yavaş çalışacaktır.

Örnek Veritabanı

JOIN vs WHERE Tablolar üzerinden bilgi çekmeyi 2 farklı yöntem ile yapabilirsiniz: WHERE ile sorgu koşulu belirleyerek Tablo Birleştirme JOIN komutlarını kullanarak Tablo Birleştirme

WHERE üzerinden Filmlerin türlerini gösterme SELECT F.Ad AS Film_Adı, T.Ad AS Tur_Adı FROM Filmler F, Turler T WHERE F.Tur_ID = T.Tur_ID Eğer birleştirme koşulu belirtilmeseydi, VTYS iki farklı tablodaki her değer için kartezyen çarpım yapacaktı ve 70 farklı sonuç elde edecektik. Dolayısıyla istediğimiz sonuca ulaşamayacaktık. Tablo birleştirme 2 den fazla sayıda tablo için de uygulanabilir. Böyle bir durumda sorgu koşulu giderek büyüyecektir. Fakat bu sorgu tabloların kartezyen çarpımına neden olacağı için muhtemelen daha yavaş çalışacaktır.

JOIN Birbirleri ile ilişkisi olan bu tablolar joinlerle birleştirmeler yapılarak gerekli alanlar alınabilir. Inner join Left join Right join Full join VTYS ye göre ufak farklılıklar gösterebilir.

INNER JOIN 2 tablo için de boş verileri, yani bir tabloda Tur_ID si olan fakat diğerinde olmayan verileri temizler ve göstermez. SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;

INNER JOIN SELECT F.Ad AS Film_Adı, T.Ad AS Tur_Adı FROM Filmler F INNER JOIN Turler T ON F.Tur_ID = T.Tur_ID ORDER BY T.Ad

LEFT JOIN İlk (Filmler) tablo için boş olan verileri de göstermenizi sağlar. Yani Filmler tablosunda Tur_ID değeri boş olarak gösterilecektir. SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;

LEFT JOIN Aşağıdaki sorgu, türü olmayan filmler dahil tüm filmlerin adlarını, türlerini ve IMDB Puanlarını, IMDB Puanlarına göre sıralayarak listeleyecektir. SELECT F.Ad, T.Ad, IMDB_Puan FROM Filmler F LEFT JOIN Turler T ON F.Tur_ID = T.Tur_ID ORDER BY IMDB_Puan

RIGHT JOIN İkinci (Türler) tablo için boş olan verileri de göstermenizi sağlar. SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;

RIGHT JOIN SELECT F.Ad, T.Ad, IMDB_Puan FROM Filmler F RIGHT JOIN Turler T ON F.Tur_ID = T.Tur_ID ORDER BY IMDB_Puan

FULL JOIN İki tablo için de boş olan değerler gösterilir. SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;

FULL JOIN SELECT F.Ad, T.Ad, IMDB_Puan FROM Filmler F FULL JOIN Turler T ON F.Tur_ID = T.Tur_ID

UNION ve UNION ALL işleçleri Union, verilen koşul ifadesine uygun olarak, çift kayıtların göz ardı edilerek her iki kümedeki tüm kayıtları seçer. Union All, çift kayıtları da dahil eden birleştirme işlemidir. Örnek: PERSONEL tablosunda, adı A ile başlayanları veya görevi M ile başlayanları topluca listelemek için: SELECT Adı,Görevi FROM PERSONEL WHERE Adı LIKE A* UNION SELECT Adı, Görevi FROM PERSONEL WHERE Görevi LIKE M* ;

DML DML (Data Manipulation Language): Tablolara veri girme, var olan veriyi güncelleme ve veri silme işlemleri için kullanılan komutları içerir. INSERT UPDATE DELETE

INSERT Bir tabloya kayıt eklerken kullanılan DML komutudur. Aşağıdaki DML ifadesi HOCALAR tablosuna kayıt ekler: INSERT INTO HOCALAR VALUES (15, Ahmet, Çalışkan, Prof. Dr. ) Eğer eklenecek kaydın sadece belirli alanlarına veri girilecekse (Ör. HOCA_NO alanı otomatik sayı veri türünde ise o alana veri giremeyiz), tablo adından sonra bu alanlar belirtilmelidir: INSERT INTO HOCALAR (AD, SOYAD, UNVAN) VALUES ( Ahmet, Çalışkan, Prof. Dr. )

UPDATE Bir tablodaki kayıtların güncellenmesi amacıyla kullanılan DML komutudur. Hangi kayıt yada kayıtların güncelleneceği WHERE sözcüğü ile verilen kriter ile, kayıtlardaki güncellenecek alanlar ise SET sözcüğü sonrasında yeni değerlerinin atanması ile belirtilir. Aşağıdaki DML ifadesi PERSONEL tablosundaki Pazarlama bölümünde çalışanların maaşlarını %10 oranında arttırır. UPDATE PERSONEL SET MAAS = MAAS * 1.1 WHERE BOLUM = (SELECT BOLUM_NO FROM BOLUMLER WHERE BOLUM_ADI = Pazarlama )

DELETE Bir tablodaki bir yada daha çok kaydı silmek amacıyla kullanılan DML komutudur. Hangi kayıt yada kayıtların silineceği WHERE sözcüğünden sonra verilen kriter ile belirlenir. Aşağıdaki DML ifadesi NOTLAR tablosundan 2007-2008 öğretim yılına ait tüm kayıtları siler: DELETE FROM NOTLAR WHERE DERS_YILI = 2007-2008 Eğer WHERE sözcüğü hiç kullanılmaz ise tablodaki tüm kayıtlar silinir: DELETE FROM NOTLAR Silme İşleminin Primary Key üzerinden yapılması tavsiye edilir.

Sorgu Sonucundan Yeni Tablo Yaratma Bir sorgu sonucunun yeni bir tablo olarak saklanması isteniyorsa FROM öncesinde INTO TABLO_ADI kullanılır. Aşağıdaki SQL cümlesi PERSONEL tablosundaki tüm verileri yeni yaratacağı PERS_YEDEK tablosuna kopyalar: SELECT * INTO PERS_YEDEK FROM PERSONEL Eğer PERS_YEDEK tablosu önceden varsa, yukarıdaki komut önce tabloyu siler, sonra tekrar yaratarak verileri kopyalar.

Sorgu sonucunu INSERT ile kullanma Bir tabloya veri eklerken INSERT ifadesinde VALUES yazılmayıp bir sorgu da yazılabilir. Aşağıdaki ifade PERSONEL tablosundaki tüm verileri önceden yaratılmış olan PERS_YEDEK tablosuna ekler: INSERT INTO PERS_YEDEK SELECT * FROM PERSONEL Bu komut çalıştırılmadan önce PERS_YEDEK tablosu boş değilse anahtar alan olan PERSONEL_NO alanında veri tekrarına neden olabilir (dolayısı ile hata verebilir). Aşağıdaki ifade sadece 2010 yılından sonra işe başlayanları ekler: INSERT INTO PERS_YEDEK SELECT * FROM PERSONEL WHERE GIRIS_TARIHI > #1/1/2010#

DDL DDL (Data Definition Language): Tablo, Kullanıcı gibi nesneleri yaratmak için kullanılan komutları içerir. Create Alter Drop VTYS göre ufak farklılıklar gösterebilir. Bu durumda google üzerinden anahtar kelimeye uygun örnekler araştırılmalıdır.

Create Veritabanı üzerinde bir tablo yaratmak için CREATE deyimi kullanılır. CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );

Alter Daha önce yaratılmış nesnenin değiştirilmesini sağlar. Örneği bir tablonun tasarımını değiştirmek gibi. Yeni özellik ekleme ALTER TABLE table_name ADD column_name datatype Bir özelliği düşürme ALTER TABLE table_name DROP COLUMN column_name Bir özelliğin veri tipini veya iç özelliklerini değiştirme ALTER TABLE table_name ALTER COLUMN column_name datatype

Drop Bir tablonun veya özelliğin silinmesini sağlar. Tablo Silme DROP table_name Tablo içindeki bir özelliğin silinmesi DROP INDEX index_name ON table_name Eğer bir tablo içindeki veriler tamamen silinmek isteniyorsa TRUNCATE TABLE table_name Truncate kavramı ile bir şarta bakmaksızın tüm tablomuzu boşaltırız. Delete komutunda Where şartı ile belli şartlara bağlayabiliriz.