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



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

Aşağıdaki tabloyu inceleyin. Yeni kayıt girme, var olan bir kaydı silme veya güncelleme işlemlerini bu tabloya göre yapacağız.

VERİTABANI ve YÖNETİMİ

VERİTABANI Veritabanı Yönetimi

VERİTABANI. SQL (Structured Query Language)

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

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

Çok tablolu sorgulamalar

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

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

SQL Komutları (2) Uzm. Murat YAZICI

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.

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

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

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

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

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ı

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

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

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

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

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

YAPISAL SORGULAMA DİLİ (SQL)

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

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

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

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

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

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

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

SQL e Giriş. Uzm. Murat YAZICI

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

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

SQL TRIGGERS (Tetikleyiciler)

Oracle da kullanılan veri tipleri:

Veritabanına Uygulanması

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

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

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

SQL Kod ile Tablo Oluşturma

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

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

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

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

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

Veri Bütünlüğü ve Constraint ler. Veritabanı 1

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

SORGULAR VE ÇEŞİTLERİ II

VERİ TABANI ve YÖNETİMİ

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

Mysql Veritabanı Komutları

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

ACCESS PLATFORMUNDA SQL

15 Aralık 2011 / Perşembe.

SQL (Structured Query Language)

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

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

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

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

Veritabanı. SQL (Structured Query Language)

Veri Tabanı Programlamaya Giriş

EXISTS VE NOT EXISTS fonksiyonları

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

KISITLAMALAR (CONSTRAINT)

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Herhangi bir tablonun tekrarlı veriler içerdiği duruma birinci normal form denir. Birinci normal formu Aşağıdaki tablo ile ele alacağız.

STORED PROCEDURE LER (Saklı Yordamlar)

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

Veritabanı Tasarımı. Tablo Değiştirme

AYDES PROJESİ ARAMA KURTARMA HİZMET GRUBU EĞİTİM DOKÜMANI

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

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

Veritabanı Tasarımı. NOT NULL ve UNIQUE Kısıtlamaları Tanımlama

VERİTABANI Veritabanı Sorgulama

Bir çeşit prosedür. Ancak bu prosedür kendiliğinden çalışır. Çalışması için tabloya veri eklemek, veri silmek, veri değiştirmek yeterlidir.

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

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

Veritabanı Tasarımı. Seriler ile Çalışma

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

Veri Tabanı Hafta Dersi

VERİ TABANI ve YÖNETİMİ

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

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.

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

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL

BİLİŞİM TEKNOLOJİSİNİN TEMELLERİ DERSİ

SELÇUK ÜNİVERSİTESİ BOZKIR MESLEK YÜKSEKOKULU VERİTABANI-II DERSİ FİNAL SINAVI

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

Birden Çok Tabloda Sorgulama (Join)

SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir.

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

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ü

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

8 Aralık 2011 / Perşembe. Veri Tabanına Giriş

SQL (Structured Query Language)

Veritabanı Tasarımı. Birincil Anahtar, İkincil Anahtar ve Kontrol Kısıtlamaları

VeriTabanı Uygulamaları

Transkript:

SQL'DE VERİ İŞLEME KOMUTLARI SQL'de verileri işlemek için kullanılan komutlara DML (Data Manipulation Language Veri İşleme Dili) denilmektedir. Bu komutlar ile oluşturulan ifadeler tablolara kayıt eklemek, kayıtları değiştirmek ve silmek için kullanılırlar. DML komutları şunlardır. INSERT UPDATE DELETE TRUNCATE Veritabanında kayıt eklenecekse INSERT komutu, kayıtlar üzerinde değişiklik ya da güncelleme yapılacaksa UPDATE komutu, kayıtlar silinecekse DELETE ve TRUNCATE komutlarıyla oluşturulan ifadeler kullanılır. DML komutlarının anlatımında dördüncü ünitede oluşturulan magaza veritabanı ve tabloları kullanılacaktır. Bu tablolar ile ilgili özellikler şekil 1'deki gibidir. Musteri Tablosu Siparis Tablosu Urun Tablosu Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu Cinsiyeti DEFAULT 0; urun_markasi DEFAULT 'belirsiz' Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler Tabloya Yeni Bir Kayıt Girmek INSERT Komutu SQL'de bir tabloya yeni kayıt ya da kayıtlar INSERT komutu ile girilir. Kullanım şekli aşağıdaki gibidir.

INSERT INTO tablo adı [(alan_adı [, alan_adı ])] VALUES (değer [,değer... ]); INSERT komutu bu şekilde kullanıldığında her defasında sadece bir kayıt girer. INSERT ile oluşturulan ifadede her alana bir değer gelecek şekilde değerler sıralandığından değerlerin atanacağı alanların isimleri listelenmesi şart değildir. Şayet alan adları listelenmezse girilen değerler, alanların tablodaki varsayılan sırasına uygun olacak şekilde sıralanmalıdır. INSERT INTO urun VALUES ('Q Klavye', 'A4 Tech', 'Klavye',15); Bu örnekte urun tablosunda 5 alan olmasına rağmen 4 değer girilmiştir. Bunu nedeni IDENTITY yani kimlik olarak tanımlanmış alanlara değer aktarılamaz. Bu tür alanların değerleri sistem tarafından otomatik üretilir. Bu yüzden urun_kodu alanı bu ifadede göz ardı edilecek ve değerler sıradaki diğer alanlara girilecektir.! Burada dikkat edilecek nokta veri girilecek alanların sırası doğru olması ve veri tipi tanımlanırken oluşturulmuş kısıtlamalardır. Örneğin NOT NULL olarak belirlenmiş bir alana mutlaka değer girilmelidir, boş bırakılmamalıdır. INSERT ifadesinde alan ismi belirtilerek değer girilecekse değerlerin atanacağı alanların isimleri listelendikten sonra VALUES içerisinde alan listesindeki sıra gözetilerek değerler yazılır. INSERT INTO urun (urun_markasi,urun_adi, urun_turu,urun_fiyati) VALUES ('A4 Tech', 'Q Klavye', 'Klavye',15); Beklenen alan değeri için bir değer girilmemişse o alan değeri için NULL değer girilmiş demektir. Başka bir deyişle alanın değeri için NULL yazılarak da belirlenebilir. Burada dikkat edilecek nokta o alanın NOT NULL şeklinde bir kısıtlamasının olmamasıdır. INSERT INTO Musteri VALUES ('Aysu', 'TAŞ','','','','', ''); ya da INSERT INTO Musteri VALUES ('Aysu', 'TAŞ', NULL, NULL, NULL, NULL, NULL); ya da INSERT INTO Musteri (soyadi, adi) VALUES ('TAŞ', 'Aysu');

Bu örnekteki ifade çalıştırıldığında musteri tablosuna eklenen kaydın adi alanı değeri Aysu, soyadi alanı değer TAŞ ve diğer alanların değeri belirtilmediği için NULL'dur. Şekil 2'de bu sorgunun sonucu oluşan kaydı inceleyebilirsiniz. Şekil 2. Müşteri tablosuna INSERT ifadesi ile girilen kayıt INSERT deyimi içerisinde DEFAULT değerler kullanılabilir. INSERT INTO Musteri (soyadi, adi,cinsiyeti) VALUES ('TAŞ', 'Aysu', DEFAULT); Şekil 3. Müşteri tablosuna DEFAULT ifadesi ile kayıt eklenmesi Şekil 3'te de görüldüğü gibi cinsiyeti alanının DEFAULT değeri 0 belirlendiği için bu alana 0 atanmıştır. INSERT ifadesinde alanlara fonksiyonlar kullanılarak veri girilebilir. INSERT INTO musteri (adi,soyadi,dogum_tarihi, cinsiyeti, adres, kart_no, tarih) VALUES ('Bora', 'TAYFUN', '10.12.1969',1,'Ankara','123456789', GETDATE()) ; Örnekte GETDATE() fonksiyonu kullanılarak o anki tarih değeri tarih alanına girilmektedir.! Örnekteki SQL ifadesinde VALUES ifadesinden önce musteri_no alan adının olmadığına dikkat edilmelidir. musteri_no alanı kendi değerini otomatik olarak üreteceğinden INSERT ifadesinin içinde yer almaz. Tabloya Çoklu Kayıt Eklemek INSERT ifadesi kullanılarak bir tabloya aynı anda birden çok kayıt eklemek için VALUES bölümünde parantez içinde, aralarına virgül konularak her bir kayıt için gerekli alan değerleri girilir.

INSERT INTO musteri (adi, soyadi) VALUES ('Yağmur','ASLAN'), ('Mehmet','YILMAZ'), ('Selami','SERT'); Örnekte musteri tablosuna üç kayıt birden eklenmektedir. INSERT ifadesi kullanılarak bir tabloya başka bir tablodan elde edilen kayıtları eklemek mümkündür. Bu yöntemle bir komutla birden fazla kayıt zahmetsizce girilmiş olur. INSERT INTO urun (urun_adi, urun_markasi, urun_turu, urun_fiyati) SELECT adi, markasi, turu, fiyati FROM eski_urun; Bu örnekte eski ürünlerin tutulduğu eski_urun tablosundaki kayıtlar güncel ürünlerin tutulduğu urun tablosuna aktarılmıştır.! Örnekteki SQL ifadesinde görüldüğü gibi VALUES kelimesi kullanılmaz. Girilecek değerleri bir alt sorgunun SELECT listesindeki alanlar belirler. Bundan dolayı SELECT listesindeki alanların veri girilecek alanlarla sırasının eşleşmesi gerekmektedir. Tablodaki Verileri Değiştirmek (Güncellemek) UPDATE Komutu Mevcut kayıtlardaki veriler UPDATE komutu kullanılarak güncellenir. Eğer UPDATE ifadesinden WHERE cümlesi kullanılırsa güncellenecek veriler WHERE cümlesinde belirtilen ölçütlere uyanlar olacaktır. WHERE cümlesi kullanılmamışsa herhangi bir ölçüt olmadığı için tüm kayıtlar güncellenecektir. Bu komutun kullanılışı aşağıdaki gibidir. UPDATE tablo_adı SET alan_adı = değer [, alan_adı = değer ] [WHERE koşul]; UPDATE urun SET urun_fiyati = urun_fiyati+ urun_fiyati*0.15; Yukarıdaki sorgu ifadesi urun tablosundaki tüm kayıtların urun_fiyati alanındaki değerler, o anki değerleri üzerine %15 eklenmesi sonucu çıkan değerle değiştirecektir. Başka bir deyişle urun tablosundaki tüm ürünlerin fiyatı %15 artırılacaktır. UPDATE Musteri SET adi='mehmet Ali' WHERE adi = 'M.Ali'; Bu örnekte adı 'M.Ali' şeklinde girilmiş bütün müşterilerin adı 'Mehmet Ali' olarak değiştirilmektedir.

UPDATE Musteri SET adres='1. Cad Emek no:5 Ankara' WHERE musteri_no=5; Yukarıdaki sorgu, musteri_no bilgisi 5 olan müşterinin adresini sorguda belirtilen adres ile değiştirmektedir. Belirli bir kayıt üzerinde yapılacak değişiklikleri, her bir kaydı benzersiz olarak tanımlayan birincil anahtardaki bilgiye göre yapmakta fayda vardır. Örneğin adı Ali Demir olan birden fazla müşteri olabilir. Bu tarz bir değişiklik adı ve soyadına göre yapılmak istense birden fazla müşterinin adresi aynı olacaktır. INSERT ifadesinde olduğu gibi UPDATE ifadesinde de alt sorgu/sorgular kullanarak veriler güncellenebilir. Bu ifadedeki alt sorgu alan ya da alanların alacakları değerleri belirtmek için kullanılır. UPDATE Siparis SET musteri_no = (SELECT musteri_no FROM musteri WHERE adi='mehmet Ali' AND soyadi='demir') WHERE siparis_tarihi = '10.12.2009'; Bu sorgu Siparis tablosundaki tarih alanı değeri 10.12.2009 tarihinden büyük olan kayıtlar için musteri_no alanının değerinin, musteri tablosundaki adi Mehmet Ali ve soyadi Demir olan müşterinin musteri_no bilgisi ile değiştirmektedir. Bu sorgudan şu sonuç çıkarılabilir. 10.12.2009 tarihindeki bütün siparişler Mehmet Ali Demir isimli müşteriye ait olması istenmektedir. Müşterinin isimleri siparis tablosunda olmadığı için musteri_no bilgisine ulaşmak için Musteri tablosundan müşterinin musteri_no bilgisini, adı ve soyadına göre getiren bir sorgu UPDATE ifadesine eklenmiştir.! Yukarıdaki ifadenin doğru çalışması, SELECT ifadesinin tek bir kayıt döndürmesine bağlıdır. Eğer çoklu kayıt döndürürse sonuç olarak hata mesajı ile karşılaşılacaktır. Tablodan Kayıt Silmek DELETE Komutu Veritabanındaki tablolarda bulunan kayıtlar DELETE ifadesi ile silinir. WHERE cümlesini DELETE komutuyla kullanarak koşula uygun kayıtları silmek mümkündür. Eğer koşulsuz bir DELETE ifadesi yazılırsa veritabanındaki o tabloya ait tüm kayıtlar silinir. DELETE FROM tablo_adı [WHERE koşul]; DELETE FROM urun;

Yukarıdaki sorgu Urun tablosundaki tüm kayıtları siler. DELETE FROM siparis WHERE siparis_tarihi<'01.01.2004'; Yukarıdaki sorgu 01.01.2004 tarihinden önceki kayıtları siler. Bir tablodaki kayıtları başka bir tablodaki verileri temel alarak silmek için DELETE ifadesinde alt sorgular kullanılabilir. DELETE FROM siparis WHERE musteri_no = (SELECT musteri_no FROM musteri WHERE adi= 'Mehmet Ali' AND soyadi='demir'); Bu örnekte Mehmet Ali Demir isimli müşterinin bütün siparişleri silinmektedir. UPDATE örneğinde de olduğu gibi siparişleri silinecek müşterinin numarasına ulaşabilmek için bir alt sorgu DELETE ifadesine eklenmiştir. Tablodaki Tüm Kayıtları Silmek TRUNCATE Komutu Veritabanındaki bir tablodan tüm kayıtların silinmesi için TRUNCATE komutu kullanılır. Komutun çalıştırılması için sadece işlemin yapılacağı tablonun adı gereklidir. DELETE komutuyla WHERE cümlesini kullanmadan da tüm kayıtları silebiliriz. Ancak TRUNCATE komutu, DELETE komutuna göre daha hızlı çalışır ve daha az sistem kaynağı kullanır. TRUNCATE komutunun kullanım şekli aşağıdaki gibidir. TRUNCATE TABLE <tablo_adı>; TRUNCATE TABLE Siparis; Bu örnekte Siparis tablosundaki tüm kayıtlar silinir.! TRUNCATE komutu ile tablodaki kayıtlar boşaltılırken otomatik artırma (IDENDITY) özelliğine sahip alanları varsa sayaç sıfırlanır. DELETE komutunda ise tüm kayıtlar silinse bile otomatik artırma özelliğine sahip alanlar için sayaç kaldığı yerden devam eder.! TRUNCATE komutu ile yapılan silme işlemi, işlem günlüğüne yazılmadığından yapılan işlem geri alınamaz.! TRUNCATE komutu ile yabancı anahtar ilişkisi kurulmuş tablolardan birincil anahtara sahip tablonun kayıtları silinemez. Yabancı anahtar kısıtlayıcısı hata mesajı verir.? Magaza veritabanındaki bütün tablolara TRUNCATE komutu uygulanabilir mi?