Kurs
SQL'de temel olarak üç tür komut vardır -
-
DDL - Veri Tanımlama Dili (Data Definition Language). Veritabanını tanımlamak için kullanılan SQL komutlarını kapsar; tabloların oluşturulması, özelliklerin belirlenmesi, tabloların değiştirilmesi vb. DDL'ye örnek olarak
CREATE,DROP,ALTERverilebilir. DDL komutlarıyla yapılan değişiklikler geri alınamaz. -
DML - Veri İşleme Dili (Data Manipulation Language). Seçme, ekleme, güncelleme ve silme sorgularını çalıştırmanıza olanak tanır. DML komutlarıyla yapılan değişiklikler geri alınabilir. Örnekler:
SELECT,INSERT,UPDATEveDELETE. -
DCL - Veri Denetim Dili (Data Control Language). Veritabanı sisteminizin haklarını, izinlerini ve diğer denetimlerini belirtmenize olanak tanır.
Bu eğitimde, doğası gereği bir DDL olan ALTER TABLE deyiminin kullanımını göreceksiniz. Aşağıdaki içerikler bu eğitimde ele alınacaktır -
ALTER TABLEdeyimine duyulan ihtiyaç- PostgreSQL veritabanında tablo oluşturma
- PostgreSQL'de farklı
ALTER TABLEdeyimlerini çalıştırma
Not: Bu eğitim, PostgreSQL'de nasıl tablo oluşturulacağını, tabloya veri ekleneceğini veya tablodan veri seçileceğini öğretmeyecektir. Bu konuları tazelemek isterseniz, bu makaleye göz atabilirsiniz.
ALTER TABLE Deyimine Duyulan İhtiyaç
Bir veritabanının özellikleri zamanla değişebilir. Örneğin belirli bir tabloya bir sütun eklemeniz gerekebilir ya da bir tabloya başka bir birincil anahtar eklemeniz gerekebilir. Ayrıca bir tablodaki belirli bir sütunun veri türünü değiştirmeniz de gerekebilir. Bir tabloyu silip baştan oluşturmak çoğu zaman mümkün olmayabilir. Alter Table deyimi tüm bunları oldukça sorunsuz yapmanızı sağlar. Alter Table ile şunları yapabilirsiniz -
- Bir sütun eklemek, değiştirmek veya silmek
- Bir kısıt eklemek veya silmek
Kısıtları etkinleştirip devre dışı da bırakabilirsiniz, ancak bu bu eğitimin kapsamı dışındadır.
Yukarıdaki kullanım örneklerinin her birini bu eğitimde göreceksiniz, ancak önce başlamak için PostgreSQL'de bir tabloya ihtiyacınız olacak. Sonraki bölümde basit bir tablo oluşturacaksınız.
PostgreSQL veritabanında bir tablo oluşturma
PostgreSQL'de (pgAdmin aracını kullanarak) aşağıdaki sütunlar ve veri türleriyle student_details adlı bir tablo oluşturacaksınız -
- student_id (integer)
- student_full_name (character)
- student_year (integer)
Sadece üç sütundan oluşan bu tabloyla başlayacaksınız. Daha sonra, eğitim boyunca ilerledikçe bu tabloya daha fazla sütun ekleyecek ve tabloyu farklı şekillerde değiştireceksiniz. Aşağıdaki create sorgusu, yukarıdaki özelliklere uygun bir tablo oluşturacaktır -
CREATE TABLE student_details(
student_id SERIAL,
student_full_name VARCHAR (50),
student_year VARCHAR (100)
);
Bu tabloya birkaç kayıt da ekleyelim -
INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');
student_id sütununun veri türü SERIAL olarak ayarlandığından, PostgreSQL sütun değerini otomatik olarak artırır ve bu veri türünü varsayılan olarak integer olarak yorumlar.
student_details tablosu şu şekilde görünmelidir -

Artık PostgreSQL'de bir tablonuz hazır. Şimdi bir sonraki bölümde Alter Table'ın farklı bir uygulamasını görelim.
PostgreSQL'de farklı ALTER TABLE deyimlerini çalıştırma
Bu bölümde, yukarıda belirtildiği gibi Alter Table deyiminin kullanımını iki açıdan göreceksiniz -
- Bir sütun eklemek, değiştirmek ve silmek
- Bir kısıt eklemek ve silmek
Bir sütun eklemek, değiştirmek veya silmek
Tabloya karakter türünde student_grade adlı bir sütun daha ekleyerek başlayalım -
ALTER TABLE student_details ADD student_grade VARCHAR(5);
Şimdi, tablo aşağıdaki gibi olmalıdır -

Girdiğiniz kayıtlar için student_grade sütunundaki değerlerin null olduğuna dikkat edin. Bu durum çoğu İlişkisel Veritabanı Yönetim Sistemi tarafından örtük olarak yapılır. Ancak bir güncelleme sorgusu çalıştırarak değerleri güncelleyebilirsiniz. Şimdi Alter Table kullanarak bir sütunun nasıl değiştirileceğine bakalım. student_year sütununun izin verilen en yüksek boyutunu 100'den 10'a düşüreceksiniz; çünkü sadece üç karakter için (student_year 1st, 2nd veya 3rd olabilir) çok fazla alan ayırmak pratik değildir.
ALTER TABLE student_details ALTER COLUMN student_year TYPE VARCHAR(10);
Sonucu aşağıdaki şekilde görebilirsiniz -

Bir sütunun adını da değiştirebilirsiniz. Nasıl yapıldığına bakalım -
ALTER TABLE student_details RENAME student_id TO student_roll;
Yukarıdaki sorgu, student_id sütununun adını student_roll olarak değiştirir. Bunu bir select sorgusuyla da doğrulayabilirsiniz; sonucunuz aşağıdaki şekle benzer olmalıdır -

Şimdi bir tablodan nasıl sütun düşürebileceğinizi görelim -
ALTER TABLE student_details DROP COLUMN student_year;
Bu sorgu student_year sütununu düşürür ve sorgu çalıştırıldıktan sonra tablo şöyle olmalıdır -

Düşürdüğünüz sütuna başka bir tablo tarafından başvuruluyorsa, başvuru bütünlüğü ihlali hataları alabileceğinizi unutmayın.
Şimdi tabloya nasıl kısıt ekleneceğini ve kısıtın nasıl düşürüleceğini göreceksiniz.
Bir kısıt eklemek ve düşürmek.
student_details tablosunda birincil anahtar yok. Birincil anahtar, not null ve unique kısıtlarının birleşimidir. student_roll sütununu (student_id'den güncellenmişti) student_details tablosunun birincil anahtarı olarak belirtelim -
ALTER TABLE student_details ADD PRIMARY KEY (student_roll);
Başka kısıtlar da ekleyebilirsiniz; örneğin, student_grade sütununa bir check kısıtı ekleyerek değerlerinin her zaman A, B veya C olmasını sağlayabilirsiniz.
ALTER TABLE student_details ADD CONSTRAINT year_check CHECK (student_grade IN ('A', 'B', 'C'));
year_check, tabloya eklediğiniz kısıt için bir yer tutucudur. Şimdi tabloya aşağıdaki girişi eklemeye kalkarsanız bir hata almanız gerekir -
INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd');
Hata aşağıdaki gibi görünür -

Bir kısıtı düşürmek de benzerdir. Düşürmek istediğiniz kısıtın adını belirtmeniz gerekir. year_check adını verdiğiniz kısıtı düşürelim -
ALTER TABLE student_details DROP CONSTRAINT year_check;
Bunu doğrulayalım. year_check kısıtı gerçekten düşürüldüyse, şu sorgu INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd'); herhangi bir hataya neden olmamalıdır. Tablo artık kaydı içermektedir -

Diğer check kısıtlarıyla da deneyebilirsiniz.
Bu eğitim bu kadar!
Bu eğitim, bir tablonun şemasını etkin bir şekilde değiştirmek için Alter Table deyimini tanıttı. SQL becerilerinizi bir üst seviyeye taşımak isterseniz, DataCamp'in sunduğu aşağıdaki kurslar ilginizi çekebilir -
