Beyza'nın Blogu

SQL

TRANSACTIONS (İşlemler)

commit work -> Veritabanında veriler ile uğraşırken veriler uçuşmaktadır. Veritabanının bu uçuşan verileri gerçekten diske yazması gerekmektedir. Normalde veritabanı bütün verileri disk’e yazmaz bunlar RAM’de durmaktadır. Eğer veriler diske yazılmazsa bilgisayarımız kapattıktan sonra o veriler uçuşup gider yani silinir. Model veritabanları commit work komutu her çağrıldığında oraya bir işaret bir kayıt izi koyar, bu durum autosave yani otomatik kayıt gibi düşünülebilir. ▶ rollback work ile bu kayıt izlerine ulaşabiliriz.

Atomik yapılan her transactions yani bölünmesini istemediğimiz her bir işlemi rollback work yaparak otomatik olarak geri alabiliriz.

Eğer aynı veritabanıyla ilgilenen birden fazla kişi varsa yani dağıtık veritabanlarında sorun olmaması için son işlem otomatik kayıt edilerek karmaşıklığın önlenmesi commit ve rollback ile sağlanır.

INTEGRITY CONSTRAINTS (Bütünlük Kısıtlamaları)

Veritabanının bütünlük halinde çalışmasını amaçlar. Veritabanında bütünlüğü bozucu şeyler olabilir. Bu bütünlük bozucu faktörleri önlemek için kullandığımız 4 adet kısıtlama komutu vardır.

not null -> Veritabanında bir kolonun yada alanın null olamama durumudur. İllaki doldurulmak zorundadır. Boş geçilme durumu söz konusu değildir.

» isim varchar(20) not null               // 20 karakterlik boyutta boş olmayacak tipte bir isim değişkeni.

primary key -> superkey ve candidatekey’lerimizi belirledikten sonra bu candidatekeys (aday anahtar) ‘lerimizden bir tanesini seçerek primary key yapıyoruz. Bir veritabanında primarykey olmazsda olmaz değildir. Eğer bir primarykey belirlersek veriye daha hızlı ve daha kolay erişebiliriz çünkü tablolar arasında bir ilişki kurar.Primarykey bir constraint’tir yani kısıttır. Unique olmak zorundadır tekrarı olamaz.

unique -> Tekrarı olmayacak demektir. O kolonda o veriden sadece bir tane olacak demektir. Tabloda bir candidatekey olmasını da gerektirir ayrıca null olmamalıdır.

» unique(A1,A2,…,An)                     // n tane kolonun unique olacağı ifade edilmiş. Bu kolonlar tekrarlanamaz demektir. Uniqe

check (P), P bir yüklem olduğunda -> Bir verinin bir veri kümesinden kontrol edilmesini sağlar.

» create table bolum(
   ders_id varchar(8),
   bolum_id varchar(8),
   yariyil varchar(6),
   yil numeric(4,0),
   ders_binası varchar(15),
   sinif_numarasi varchar(7),
   zaman_araligi_id varchar(4),
   primary key (ders_id,bolum_id,yariyil,yil),       // Bu dört tablonun tekrar ettiği bir satır olmayacak ama tek tek tekrar edebilirler.
check (yariyil in (‘Sonbahar’,’Kış’,’İlkbahar’,’Yaz’))              // Yarıyıl içerisine Sonbahar,Kış,İlkbahar,Yaz dan başka bir şey yazılırsa bununla ilgili integrity const hatası verilecektir.
);

REFERANTIAL INTEGRITY (Referans Bütünlüğü)

foreign key(yabancı anahtar) ve ▶primary key ilişkisi durumudur.
Bir tablonun herhangi bir id ile başka tablonun değerlerine erişmesi durumunda ve o tablodaki değerlerin silinmesi veya değişmesi durumunda gerçekleşir.

» create table ders(
ders_id char(5) primary key,
ders_adi varchar(20),
departman_adi varchar(20) references departman             // departman tablosundan bir referans oluşturmuş
)
create table ders(

foreign key (departman_adi) references departman,          // departman tablosundan bir referans oluşturmuş
on delete cascade,                                                                         // silerken ve
on update cascade,                                                                      // güncellerken referans alınan tabloya bakılıp sorun oluşup                                                                                                                           oluşmayacağı kontrol edilir.
)

SELF INTEGRITY (Öz Bütünlük)

Verilerin tutarlılığını ve doğruluğunu sağlama konusunda kritik bir kavramdır. Bir veritabanı sisteminde, öz bütünlük, verilerin tanımlanmış kurallar ve kısıtlamalar çerçevesinde sürekli olarak doğru ve güvenilir kalmasını ifade eder. Bu, veri tutarsızlıklarını önleyerek sistemin verimli ve hatasız çalışmasını sağlar. Örneğin, bir öğrencinin kaydı veritabanına eklenirken, öğrenci numarasının benzersiz olması bir bütünlük kuralıdır. Veritabanında bu kurallara uyulması, hem veri doğruluğunu hem de sistemin güvenilirliğini artırır.
.

COMPLEX CHECK CLAUSES

subquery yazılarak check işlemi yapılabilir.

» check (zaman_araligi_id in (select zaman_araligi_id from zaman araligi))            // belirli bir koşula göre seçim                                                                                                                                                                                işlemlerini yapabilmede kullanılır.

BUILT IN DATA TYPES (Yerleşik Veri Türleri)

date -> Tarih belirtmek için kullanılan veri tipidir. ‘YYYY-AA-GG’ şeklinde bir sıralamaya sahiptir. İstenilirse bu format değiştirilebilir. Tarih karşılaştırması,tarihe gün ekleme, çıkartma vb. işlemler yapılabilir.

» date ‘2024-09-01’

time -> Saat, dakika ve saniye için kullanılır.

» time ’09:00:30′

timestamp -> Hem tarihi hem zamanı belirtmek için kullanılır.

» timestamp ‘2024-09-01 12:30:20.27’

interval -> Zaman aralığını belirtmek için kullanılır. 1 gün 3 gün 8 gün vs. olabilir.

INDEX CREATION (İndeks Oluşturma)

create index -> Özel olarak indeks oluşturmada kullanılır. Sorgu yaparken bize hız kazandırmasını bekleriz.

» create index ogrenciID_indeks on ogrenci(ID)

select * from öğrenci
where ID = ‘98745’

 

USER DEFINED TYPES (Kullanıcının Tanımladığı Veri Tipleri)

create type -> Sorgularımızı kolaylaştırmak amaçlı kendimizce veri tipleri tanımlarız.

» create type Dolar as numeric(34,07) final

» create table bolum
   (bolum_adi varchar(20),
    bina varchar(15),
    butce Dolar);

DOMAINS (Alan Adları)

create domain -> Belirli bir veri türü için kullanıcı tanımlı bir alan oluşturmaya yarar.

» create domain kisi_adi char(20) not null

»  create domain derece varchar(10)
    constraint derece_sinavi
    check (value in (‘Lisans’,’Yüksek Lisans’,’Doktora’));

LARGE OBJECT TYPES (Büyük Veri Tipleri)

İlişkisel veritabanında bazen kolonların içerisine çok büyük veriler koyabiliriz. Dosyalar büyük verilerdir ve binary ya da ASCII olabilirler.

blob (binary large object) -> İkilik tabanda tutulan büyük verilerdir.

clob (character large object) -> Karakter tipinde tutulan büyük verilerdir. Notepad ve benzeri ortamlarda okuduklarımız clob’ a girer.

 

AUTHORIZATION (Yetkilendirme)

Veritabanının artık kullanıcısı değil yöneticisi olduğumuzda kim ne yapabilir, ne kadar kullanabilir bu gibi şeylere artık karar vermeye başlıyoruz. Kullanıcılar oluşturuyoruz ve bu kullanıcılara yetkiler veriyoruz. Genelde 4 tip işlem için yetki verilmektedir.

Read -> Veritabanındaki bir tablodan veri okuyabiliriz.

Insert -> Veri ekleyebiliriz.

Update -> Veri güncelleyebiliriz.

Delete -> Veri silebiliriz.

Ekstra olarak:

Index -> İndeks tanımlanması, oluşturulması.

Resources -> Kaynaklar üzerinde ilişki kurulması gibi işlemler.

Alteration -> Bir tablonun değiştirilemesi, yeni bir kolon eklenmesi, yeni bir veri tipi eklenmesi.

Drop ->Bir kolonun tamamen silinmesi durumları olabilir.

YETKİ TANIMLAMA

grand

» grant <ayricalik_listesi>                 // Okuyabilir
on <ogrenci_tablosu> to <Ali>        // Ali öğrenci tablosundan

grand select

» grand select on egitmen to T1,T2,T3

▶ grand insert
▶ grand update
▶ grand delete
▶ all privileges -> Tüm yetkileri verme

YETKİLERİ GERİ ALMA

revoke -> Verdiğimiz yetkileri geri almada kullanılır.

» revoke <ayricalik_listesi>                     // geri al
on <ogrenci_tablosu> from <Ali>          // Ali’den öğrenci tablosundaki tüm yetkinliği

» revoke select on sinif from U1,U2,U3    // Sınıf tablosundaki kullanıcı 1 2 3’ün select yetkisini geri al.

 

ROLES (Roller)

Veritabanı yöneticisinin hakları kolay bir şekilde yönetmesini sağlar. Tanımlanan roller sayesinde yetkilendirme işi daha da kolaylaşır.

create role

» create role asistan

» grant asistan to eğitmen              // all priviliges yazılmamış. Tüm yetkiler asistana bu şekilde de verilebilir.

Chain of roles -> Rollerin hiyerarşik bir yapıda olması.

» create role dekan
» grant eğitmen to dekan
» grant dekan to Hakkı

Scroll to Top