VERİTABANI Veritabanı Yönetimi VERİTABANI YÖNETİMİ YAPILANDIRILMIŞ SORGULAMA DİLİ (SQL) Veritabanı yönetimi, veritabanının yapısal özelliklerini belirtmek ve değiştirmek, veritabanına kullanıcı erişimlerini ve yetkilerini tanımlamak, veritabanı içerisinde bulunan veriler üzerinde ekleme, silme ve güncelleştirme işlemlerinden oluşmaktadır. Veritabanı yönetimini gerçekleştirmek için 1970'li yılların başlarında IBM tarafından yapılandırılmış sorgulama dili (SQL-Structured Query Language) geliştirilmiştir. SQL ilişkisel veritabanlarında verileri yönetmek ve tasarlamak için kullanılan bir dildir. Veritabanı yönetim sistemi yazılımlarında küçük farklılıklar göstermesine rağmen birçok veritabanı yönetim sistemi standart SQL komutlarını desteklemektedir. SQL ile veritabanı üzerindeki tüm yönetimsel işlemler yapılabilmektedir. VERİTABANI YÖNETİMİ SQL kendi içerisinde alt diller bulundurmaktadır. Bunlar; • Veri Tanımlama Dili (Data Definition Language (DDL)) • Veri Kontrol Dili (Data Control Language (DCL)) • Veri İşleme Dili(Data Manipulation Language (DML)) • Veri Sorgulama Dili (Data Query Language (DQL)) olarak kategorilere ayrılmaktadır. VERİTABANI YÖNETİMİ VERİ TANIMLAMA DİLİ (DATA DEFINITION LANGUAGE) Veri tanımlama dili veritabanı üzerindeki yapısal özellikleri belirtmek ve değiştirmek için kullanılmaktadır. Veritabanında hangi tabloların bulunacağı, bu tabloların hangi alanlardan oluşacağı, bu alanlardaki verilerin tipleri, hangi alanların anahtar alan, hangi alanların indeks olacağı gibi yapısal tanımlamalar veri tanımlama dili komutlarıyla yapılmaktadır. VERİTABANI YÖNETİMİ CREATE Veritabanı, tablo, gösterim vb. veritabanı nesnelerini yaratmak için kullanılan komuttur. Veritabanı oluşturulurken "CREATE DATABASE VERİTABANI_İSMİ" şeklinde kullanılır. Örneğin vatandaş ve turizm veritabanları oluşturmak istenirse CREATE DATABASE VATANDAS; CREATE DATABASE TURIZM; şeklinde CREATE komutu kullanılarak veritabanları oluşturulur. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ Veritabanı oluşturulduktan sonra veritabanında yer alacak tablolar oluşturulmaktadır. Tablo oluşturmak için CREATE TABLE komutu kullanılır. Ancak tablo oluşturmadan önce hangi veritabanına tablo eklenecek ise o veritabannıın aktif hale getirilmesi gereklidir. Veritabanını aktif hale getirmek için ise USE komutu kullanılır. Örneğin vatandaş veritabanına tablo eklenecek ise; USE VATANDAS; şeklinde USE komutu kullanılarak vatandaş veritabanı aktif hale getirilmeli bundan sonra tabloların eklenmesi için komutlar çalıştırılmalıdır. VERİTABANI YÖNETİMİ Örnekte belirtilen vatandaş veritabanı adres ve kimlik tablolarından oluşmaktadır. Adres ve kimlik tablolarındaki alanlar ve bu alanlardaki verilerin tiplerinin tanımlanması da tablo oluşturulurken yapılmaktadır. VERİTABANI YÖNETİMİ Kimlik tablosu ise; VERİTABANI YÖNETİMİ Burada dikkat edilmesi gereken veri tipleri tanımlanırken verinin uzunluğunun da tanımlanmasıdır. Veri uzunluğunun uygun şekilde tanımlanması verilerin bellekte daha az yer kaplamasını sağlamaktadır. Veri uzunlukları tanımlanmadığı zaman, veri için veritabanı yönetim sistemi yazılımı tarafından bellekte varsayılan en yüksek değerde yer ayrılacaktır. Bu nedenle örneğin T.C. Kimlik Numarası 11 karakterden oluşan bir sayı olduğuna göre, veri tipi tanımlanırken sadece NUMBER şeklinde değil NUMBER(11) şeklinde tanımlanmalıdır. Ayrıca tabloda bulunan alanlara veri girilmesinin zorunlu olup olmadığı NOT NULL komutu ile tablo oluşturulurken belirtilebilir. VERİTABANI YÖNETİMİ Tablolarda bulunacak alanlar ve veri tipleri ile uzunlukları belirlendikten sonra ADRES tablosunu oluşturmak için; CREATE TABLE ADRES (ADRES_ID NUMBER NOT NULL, ULKE TEXT, IL TEXT, ILCE TEXT, MAHALLE TEXT, KOY TEXT, BULVAR_CADDE_SOKAK TEXT, KAPI_NO NUMBER, BLOK TEXT, DAIRE_NO NUMBER); ifadesi kullanılır. Bu SQL ifadesi ile ADRES tablosu oluşturulurken aynı zamanda bu tabloda bulunan alanlar ile bu alanların özellikleri tanımlanmıştır. VERİTABANI YÖNETİMİ KIMLIK tablosunu oluşturmak için; CREATE TABLE KIMLIK (T_C_KIMLIK_NO NUMBER(11) NOT NULL, CINSIYETI TEXT(5), SOYADI TEXT, ADI TEXT, BABA_ADI TEXT, ANA_ADI TEXT, DOGUM_YERI TEXT, DOGUM_TARIHI DATE, MEDENI_HALI TEXT, DINI TEXT, KAN_GRUBU TEXT, IL TEXT, ILCE TEXT, MAHALLE_KOY TEXT, CILT_NO NUMBER, AILE_SIRA_NO NUMBER, SIRA_NO NUMBER); Burada kullanılan komutlar standart SQL komutlarıdır. Tüm veritabanı yönetim sistemi yazılımlarında CREATE komutu veritabanı, tablo ve gösterim yaratmakta kullanılmaktadır. Ancak alanların özelliklerinin tanımlanmasında kullanılan veri tipleri veritabanı yönetim sistemi yazılımlarına göre değişiklikler göstermektedir. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ ALTER Tablonun yapısında değişiklik yapmak için kullanılan komuttur. ALTER TABLE şeklinde kullanılarak; Tabloya alan ekleme, Tablodan alan silme, Mevcut tablo alanları içindeki veri türünü değiştirme, Alanlara kaydedilecek verilerin uzunluklarını değiştirme, Kısıtlamaları ekleme, silme ve değiştirme işlemleri yapılmaktadır. VERİTABANI YÖNETİMİ Tabloya alan eklemek için ALTER TABLE komutuna ADD komutu da eklenmelidir. Örneğin adres tablosuna belde alanı eklemek için; ALTER TABLE ADRES ADD BELDE TEXT ifadesi kullanılır. Bu SQL ifadesi ile ADRES tablosuna TEXT veri tipinde BELDE adında bir alan eklenmiştir VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ Tabloda bulunan bir alan silinmek istendiğinde ise ALTER TABLE komutuna DROP COLUMN komutunun eklenmesi gereklidir. Örneğin adres tablosunda oluşturulan belde alanını silmek için; ALTER TABLE ADRES DROP COLUMN BELDE; ifadesi kullanılır. Bu SQL ifadesi ile ADRES tablosunda bulunan BELDE adındaki alan silinmiş olur VERİTABANI YÖNETİMİ Tabloda bulunan bir alanın veri tipinin değiştirilmesi istendiğinde ise ALTER TABLE komutuna ALTER COLUMN komutu eklenmelidir. Örneğin adres tablosunda bulunan KAPI_NO alanının NUMBER olan veri tipi; ALTER TABLE ADRES ALTER COLUMN KAPI_NO TEXT; komutu ile TEXT veri tipine dönüştülebilmektedir. VERİTABANI YÖNETİMİ Tabloda bulunan bir alandaki verinin uzunluğunun değiştirilmesi istenildiğinde ALTER TABLE komutuna MODIFY komutu eklenmektedir. Örneğin kimlik tablosunda bulunan T_C_KIMLIK_NO alanının uzunluğu 11 karakterken, ALTER TABLE KIMLIK MODIFY T_C_KIMLIK_NO NUMBER(15); komutu ile 15 karaktere çıkarılabilir. Tabloda mevcut bir alanın isminin değiştirilmesi gerektiğinde ALTER TABLE komutuna RENAME komutu eklenmelidir. Örneğin kimlik tablosunda bulunan ADI alanının ismi; ALTER TABLE KIMLIK RENAME ADI KISI_ADI; komutu ile KISI_ADI olarak değiştirilir. VERİTABANI YÖNETİMİ Tabloda birincil anahtar tanımlaması CREATE komutu ile yapılabildiği gibi aynı şekilde ALTER komuta ile de yapılabilmektedir. Örneğin kimlik tablosunda bulunan T_C_KIMLIK_NO alanı kimlik tablosunun birincil anahtarı olarak tanımlanmalıdır. Çünkü her kişinin birbirinden farklı benzersiz bir kimlik numarası bulunmaktadır. Tabloda T_C_KIMLIK_NO alanını birincil anahtar olarak tanımlamak için; ALTER TABLE KIMLIK PRIMARY KEY (T_C_KIMLIK_NO); ifadesi kullanılır. Bu şekilde tabloda T_C_KIMLIK_NO alanı birincil anahtar olarak tanımlanır. Tabloda yabancı anahtar tanımlamak içinde ALTER TABLE komutuna FOREIGN KEY komutu eklenmektedir. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ DROP Veritabanında bulunan bir tabloyu silmek için kullanılır. Örneğin vatandaş veritabanında bulunan kimlik tablosu; DROP TABLE KIMLIK; ifadesi ile tümüyle silinmektedir. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİ KONTROL DİLİ (DATA CONTROL LANGU AGE) Veri Kontrol Dili kullanıcıların veritabanına erişimlerinin ve yetkilerinin tanımlanması işlemlerinin yapılmasını sağlamaktadır. Veritabanında yeni kullanıcı hesabı oluşturma veya veritabanma bağlantı izinlerinin düzenlenmesi işlemleri ile veritabanında bulunan veriler üzerinde okuma, yazma, değiştirme gibi işlemlerin yapılabilmesi için izinleri düzenlemekte kullanılır. GRANT: Kullanıcılara veritabanı ile ilgili yetkilendirilmenin yapılmasını sağlar. Veritabanı üzerinde tabloyu oluşturan kullanıcı, tablo ile ilgili tüm yetkilere sahiptir. Tablonun sahibi diğer kullanıcıları yetkilendirmemiş ise tabloya kendinden başka kullanıcı erişemez. Tablo sahibi tabloya erişme, tablo üzerinde değişiklik yapabilme gibi izinleri GRANT komutu ile tanımlar. VERİTABANI YÖNETİMİ CREATE LOGIN KULLANICI_1 WITH PASSWORD= "123456 " komutuyla "123456" şifresine sahip KULLANICI_1 adında bir kullanıcı oluşturduk. GRANT CONNECT TO KULLANICI_1; Kullanıcının tablo üzerinde seçme, ekleme, silme, güncelleme vb. işlemler için yetkilendirmesi de bu komut ile yapılmaktadır. Örneğin bütün kullanıcılara KİMLİK adlı tabloya erişip seçme (SELECT), satır ekleme (INSERT), tabloda değişiklik yapma (UPDATE), satır silme (DELETE), tablonun yapısında değişiklik yapma (ALTER), indeksleme (INDEX) ve kümeleme (CLUSTER) yetkisi; GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX, CLUSTER ON KIMLIK TO KULLANICI_1; komutu ile tanımlanır. VERİTABANI YÖNETİMİ Eğer bu şekilde tüm yetkiler verilecek ise kısaca; GRANT ALL ON KIMLIK TO KULLANICI_1; Kullanıcıya sadece seçme (SELECT) yetkisi ise; GRANT SELECT ON KIMLIK TO KULLANICI_1; Veritabanında bulunan iki tabloya aynı anda yetkilendirme yapılabilir. Örneğin KIMLIK ve ADRES tablolarına KULLANICI_1 için seçme yetkisi; GRANT SELECT ON KIMLIK, ADRES TO KULLANICI_1; komutu yazılarak verilebilmektedir. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ DENY Kullanıcıların veya grupların veritabanına erişim ve veritabanı işlemlerini yapabilme izinlerini kısıtlamakta kullanılan komuttur. Örneğin veritabanında KULLANICI_1 isimli kullanıcının tablo yaratma yetkisi; DENY CREATE TABLE TO KULLANICI_1; komutu ile engellenebilir. Ayrıca KULLANICI_1 isimli kullanıcının ADRES tablosunda seçme (SELECT) yetkisi yasaklanmak isteniyor ise; DENY SELECT ON ADRES TO KULLANICI_1; komutu kullanılabilir. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ REVOKE Kullanıcılara verilmiş olan izin ve kısıtlamaları iptal etmek için kullanılan bir komuttur. Örneğin KIMLIK tablosunda KULLANICI_1 için verilen seçme (SELECT) yetkisi; REVOKE SELECT ON KIMLIK TO KULLANICI_1; komutu ile kaldırılmaktadır. Veritabanına erişim izni ise; REVOKE CONNECT TO KULLANICI_1; komutu ile iptal edilebilmektedir. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİ İŞLEME DİLİ (DATA MANIPULATION LANGUAGE) Veri İşleme Dili veritabanı içerisinde bulunan veriler üzerinde ekleme (INSERT), silme (DELETE) ve güncelleştirme (UPDATE) gibi işlemlerin yapılmasını sağlamaktadır. Veri işleme dili komutlarından bazıları şunlardır. INSERT INTO Tabloya kayıt eklemek için kullanılan komuttur. Kullanım Şekli: INSERT INTO tablo_adı VALUES (değer1, değer2, değer3, ...) INSERT INTO tablo_adı (Alan1, Alan2, Alan3, ...) VALUES (değer1, değer2, değer3, ...) VERİTABANI YÖNETİMİ INSERT INTO ADRES VALUES ('Türkiye', 'Eskişehir', 'Tepebaşı', 'Yeni', 'Seylap', 5,1); veya INSERT INTO ADRES (ULKE, IL, ILCE, MAHALLE, BULVAR_CADDE_SOKAK, KAPI_NO, DAIRE_NO) VALUES ('Türkiye', 'Eskişehir', 'Tepebaşı', 'Yeni', 'Seylap', 5,1); komutu kullanılarak bir kayıt eklenmektedir. Komut çalıştırıldıktan sonra tablo de görüldüğü gibi olacaktır. VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ UPDATE Tabloda bulunan verileri güncellemek için kullanılan komuttur. Kullanım Şekli: UPDATE tablo_adı SET alan_adı = yeni_değer WHERE alan_adı = değer Örneğin KİMLİK isimli tabloda T.C. Kimlik numarası 12345678901 olan kaydın doğum yeri UPDATE KİMLİK SET DOGUM_YERI = 'Eskişehir' WHERE T_C_KIMLIK_NO = 12345678901; komutu ile "Eskişehir" olarak güncellenecektir. Komut çalıştırıldıktan sonra VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ DELETE: Tabloda bulunan tüm kayıtların veya seçilen kayıtların silinmesi için kullanılan komuttur. Kullanım Şekli: DELETE FROM tablo_adi; DELETE FROM tablo_adı WHERE alan_adı= değer; Örneğin KİMLİK isimli tabloda T.C. Kimlik numarası 12345678901 olan kayıt; DELETE FROM KİMLİK WHERE T_C_KIMLIK_NO = 12345678901; komutu ile silinmektedir. Komut çalıştırıldıktan sonra; VERİTABANI YÖNETİMİ VERİTABANI YÖNETİMİ