PL SQL Ekle, Güncelle, Sil ve Seç İfadesi Nasıl Kullanılır
how use pl sql insert
Bu eğitici, programlama örnekleriyle PL SQL INSERT, UPDATE, DELETE ve SELECT komutlarının nasıl kullanılacağını açıklar:
Bu yazımıza devam edeceğiz PL / SQL serisi . İçinde PL / SQL Veri Türleri, Sabitler ve Değişken öğreticide, programlama örnekleri yardımıyla PL SQL veri türleri, değişkenler, sabitler ve değişmezler hakkında ayrıntılı bilgi edindik. Burada PL SQL DML ifadelerini ve nasıl çalıştıklarını tartışacağız.
PL / SQL tablolarındaki verileri işlemek için PL SQL INSERT, DELETE, UPDATE ve SELECT komutlarını keşfedeceğiz.
INSERT, DELETE, UPDATE ve SELECT komutlarının tablolarda uygulanmasını anlamaya başlayalım. Toplu olarak bunlara Veri İşleme Dili (DML) ifadeleri denir.
PL SQL INSERT Komutu
INSERT INTO deyimi, bir tabloya veri eklemek için kullanılır. A denir Veri işleme dili . Tablo adını ve sütun adlarını ve değerlerini girdi olarak kullanır ve tabloya değerlerin eklenmesini gerçekleştirir.
Sözdizimi:
INSERT INTO <
> VALUES (<>, <>, …..);
Eklenecek tablo adı ve değerleri, PL SQL INSERT ifadesinin zorunlu kısmıdır. İsteğe bağlı olarak, değerlerin ekleneceği sütun adlarından da bahsedebiliriz.
EMPLOYEE tablosunu aşağıda verilen SQL ifadesi yardımıyla oluşturduk:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
PL SQL INSERT ile kod uygulaması:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
Yukarıdaki kodun çıktısı şöyle olmalıdır:
SELECT * from EMPLOYEE;
SEÇİME EKLE
TÜM SÜTUNLARA EKLEYİN
INSERT INTO SELECT, SELECT deyiminin sonucuna göre hareket ederek bir tabloya satır eklemek için kullanılır. Tablodan bir satır elde etmek ve farklı bir tabloya eklemek gerekebilir.
Sözdizimi:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
INSERT INTO SELECT komutu, kaynak ve hedef tablonun veri türlerinin aynı olmasını gerektirir. Kaynak tablonun tüm satırlarını hedef tabloya kopyalamamız gerekirse, WHERE koşulunu atlayabiliriz.
Aşağıda verilen SQL deyimi yardımıyla MANAGER adlı başka bir tablo oluşturduk:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
EMPLOYEE tablosunu tekrar ele alalım.
INSERT INTO SELECT ile kod uygulaması:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Yukarıdaki kodun çıktısı:
SELECT * from MANAGER;
KISMİ VERİ EKLE
Kısmi verileri başka bir tabloya da ekleyebiliriz. Önce şunu yaratalım YÖNETİCİ DETAYI EMPLOYEE tablosundan aşağıdaki sorgu ile tablo.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Buraya, 1 = 0 NEREDE EMPLOYEE tablosunun CODE olan ilk sütununu ifade eder.
Daha sonra, EMPLOYEE tablosundaki verileri MANAGERDETAIL tablosuna kopyalamak için INSERT INTO SELECT deyimini kullanacağız.
INSERT INTO SELECT ile kod uygulaması;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Yukarıdaki kodun çıktısı:
SELECT * from MANAGERDETAIL;
Yukarıdaki örnekte, SELECT komutunun çıktısı MANAGERDETAIL tablo sütunlarıyla eşleşen değerlere sahip olduğundan INSERT komutundaki sütun adlarından bahsetmedik. Ayrıca, WHERE cümlesine bir koşul ekledik.
KISMİ VERİLERİ VE YAZILARI EKLEYİN
Bir tabloya kısmi veriler ve gerçek değer ekleyebiliriz.
Önce aşağıdaki sorgu ile MANAGERCONTACT tablosunu oluşturalım:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Şimdi tekrar EMPLOYEE tablosundan yardım alalım ve EMPLOYEE tablosundaki verileri MANAGERCONTACT tablosuna kopyalamayı deneyelim.
INSERT INTO ile kod uygulaması:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
Yukarıdaki kodun çıktısı:
SELECT * from MANAGERCONTACT;
Yukarıdaki örnekte, EMPLOYEE tablosundan değerleri elde ettik ve MANAGERCONTACT tablosunda AGE sütununun değerlerini 0 olarak değiştiren INSERT ifadesine 0 değişmezini ekledik.
TÜMÜNÜ EKLE
INSERT ALL deyimi, tek bir tabloya veya birden çok tabloya birden fazla satır eklemek için kullanılır. Aynı zamanda çoklu tablo komutu olarak da adlandırılır ve koşullu ve koşulsuz olmak üzere iki tiptir.
# 1) KOŞULSUZ TÜMÜNÜ EKLEYİN
Bir tabloya birden fazla satır eklemek için INSERT ALL deyimi kullanılır.
Sözdizimi:
INSERT ALL INTO <
> (c1, c2, c3) VALUES (v1, v2, v3) INTO <
> (c1, c2, c3) VALUES (v4, v5, v6) INTO <
> (c1, c2, c3) VALUES (v7, v8, v9)
Burada c1, c2 ve c3 sütun adlarıdır ve v1, v2 ve v3 eklenecek değerlerdir. Bu durumda, alt sorgu yerine gerçek değer kullanmamız gerekir; aşağıdaki sorguyu kullanmalıyız:
SELECT * FROM dual;
SOCCERPLAYERS tablosunu aşağıda verilen SQL ifadesi yardımıyla oluşturduk:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
INSERT ALL ile kod uygulaması:
BEGIN INSERT ALL INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (4, 'DANIEL', 'USA') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (8, 'DANNY', 'ITALY') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (7, 'FRANK', 'FRANCE') SELECT 1 FROM dual; END;
Yukarıdaki kodun çıktısı:
SELECT * from SOCCERPLAYERS;
Yukarıdaki örnekte, INSERT ALL komutuyla bir tabloya aynı anda üç satır eklenmiştir.
Birden fazla tabloya birden fazla satır eklemek için INSERT ALL deyimi kullanılır.
Sözdizimi:
INSERT ALL INTO <> (c1, c2, c3) VALUES (v1, v2, v3) INTO <> (c1, c2, c3) VALUES (v4, v5, v6) INTO <> (c1, c2, c3) VALUES (v7, v8, v9) Subquery;
Burada c1, c2 ve c3 sütun adlarıdır ve v1, v2 ve v3 eklenecek değerlerdir. Tablo_adı1, tablo_adı2 ve tablo_adı3 tablo adlarıdır.
# 2) ŞARTLI TÜMÜNÜ EKLEYİN
Bir INSERT ALL ifadesi, bazı koşullara bağlı olarak tablolara birden fazla satır ekleyebilir.
Sözdizimi:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
ALL anahtar sözcüğü, WHERE yan tümcesi altındaki tüm koşulların yürütüleceğini belirtmek için kullanılır. Bir koşul yerine getirilirse, karşılık gelen INTO yan tümcesi çalışacaktır.
İLK anahtar sözcüğü kullanılırsa, bu durumda bir alt sorgudan elde edilen her bir satır için Oracle, WHEN cümlesindeki kriterleri yukarıdan aşağıya doğru yürütür. Bir koşul yerine getirildiğinde, karşılık gelen INTO cümlesi çalışır ve o satır için başka bir WHEN tümcesine atlar.
VEHICLE, CARS, SMALLCARS ve LARGECARS tablolarını aşağıda verilen SQL ifadeleri yardımıyla oluşturduk:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Aşağıdaki değerleri ARAÇ tablosuna ekleyin:
INSERT INTO VEHICLE VALUES (1, 'AUDI', 'RED'); INSERT INTO VEHICLE VALUES (4, 'BMW', 'WHITE'); INSERT INTO VEHICLE VALUES (7, 'KIA', 'GREEN'); CREATE TABLE CARS ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) ); CREATE TABLE SMALLCARS AS SELECT * FROM CARS; CREATE TABLE LARGECARS AS SELECT * FROM CARS;
INSERT ALL ile kod uygulaması.
BEGIN INSERT ALL WHEN CARID = 1 THEN INTO CARS WHEN CARID = 4 THEN INTO SMALLCARS WHEN CARID = 7 THEN INTO LARGECARS SELECT CARID, NAME, COLOR FROM VEHICLE; END;
Yukarıdaki kodun çıktısı:
SELECT * from CARS;
SELECT * from SMALLCARS;
SELECT * from LARGECARS;
Yukarıdaki örnekte, CARDID değerine dayalı olarak üç tablonun her birine bir satır eklenmiştir.
INSERT ALL ifadesiyle ilgili belirli kısıtlamalar vardır:
Yalnızca tablolara değer eklemek için kullanılır. Görünümlerle veya somutlaşmış görünümlerle çalışmaz.
Uzak tablolara değer giremez.
Bir INSERT INTO komutunun işleyebileceği sütun sayısı 999'dan fazla olmamalıdır.
Çoklu tablo INSERT komutunda bir tablo koleksiyonu ifadesi kullanılamaz.
Çoklu tablo INSERT alt sorgusu bir dizi kullanma yeteneğine sahip değildir.
PL SQL Güncelleme Komutu
UPDATE deyimi, bir tablodaki değerleri değiştirmek için kullanılır. Aynı zamanda a Veri işleme dili . Giriş olarak tablo, sütun ve değerlerin adlarını kullanır ve tablodaki değerlerin değiştirilmesini gerçekleştirir.
Sözdizimi:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
SET anahtar sözcüğü, sütun değerini yeni değerle değiştirmek için kullanılır. İsteğe bağlı olarak, WHERE anahtar sözcüğü kullanılır, atlanırsa, tam tablodaki belirtilen sütunun değeri değiştirilir.
BİR SATIRIN TEK SÜTUNU GÜNCELLE
EMPLOYEE tablosunu tekrar ele alalım.
UPDATE ile kod uygulaması:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
Yukarıdaki kodun çıktısı:
SELECT * from EMPLOYEE;
ÇOKLU SATIRLARI GÜNCELLE
EMPLOYEE tablosunu tekrar ele alalım.
UPDATE ile kod uygulaması:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Yukarıdaki kodun çıktısı:
SELECT * from EMPLOYEE;
Yukarıdaki örnekte, tüm çalışanların yaşı 1 artmıştır.
PL SQL Silme Komutu
DELETE deyimi, tablodan bir kaydın tamamını kaldırmak için kullanılır. Aynı zamanda a Veri işleme dili.
Sözdizimi:
DELETE FROM <
> WHERE <>;
FROM anahtar sözcüğü zorunlu değildir ve bir DELETE ifadesi, sorguya FROM eklenirse veya eklenmezse aynı sonucu verir. İsteğe bağlı olarak, WHERE anahtar sözcüğü kullanılırsa, atlanırsa, tüm tablo silinir.
TABLEDEN TEK SATIRI SİL
EMPLOYEE tablosunu tekrar ele alalım.
DELETE ile kod uygulaması:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Yukarıdaki kodun çıktısı:
SELECT * from EMPLOYEE;
TABLEDEN ÇOK SAYISI SİL
MANAGERDETAIL tablosunu tekrar ele alalım.
DELETE ile kod uygulaması:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Yukarıdaki kodun çıktısı:
SELECT * from MANAGERDETAIL;
TABLEDEN TÜM SATIRLARI SİL
ARAÇ tablosunu tekrar ele alalım.
DELETE ile kod uygulaması:
BEGIN DELETE FROM VEHICLE; END;
Yukarıdaki kodun çıktısı:
SELECT * from VEHICLE;
PL SQL Seçim Komutu
SELECT deyimi, veritabanından veri almak için kullanılır. SELECT INTO deyimi, değerleri veritabanından almak ve bunları PL / SQL tarafından tanıtılan yerel değişkenlerde saklamak için kullanılır.
Yalnızca bir SELECT ifadesi kullanırsak, tek bir kayıt döndürür. Bir SELECT ifadesinin birden çok değeri getirmesi durumunda, TOO_MANY_ROWS PL / SQL tarafından istisna atılır. SELECT INTO deyimini kullanırken, değişkene en az bir değer atarız. Ancak, veritabanından hiçbir kayıt alınmazsa, VERİ BULUNAMADI istisna atılır.
Sütunların sayısı ve türleri, INTO anahtar sözcüğündeki değişkenlerin sayısına ve türlerine eşit olmalıdır. Değerler, SELECT deyiminde tanımlananla aynı sırayla veritabanından alınır.
SELECT deyiminin içindeki WHERE anahtar sözcüğü isteğe bağlıdır ve belirli kriterleri karşılayan kayıtları elde etmemize olanak tanır. DELETE, UPDATE ve INSERT komutlarına sahip SELECT sorgusunun INTO yan tümcesine sahip olmadığına dikkat etmek önemlidir.
Sözdizimi:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
TABLOLARIN TÜM SÜTUNLARINDAN FETCH VERİLERİ
EMPLOYEE tablosunu tekrar ele alalım.
SELECT ile kod uygulaması:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Yukarıdaki kodun çıktısı:
Bir istisna atan SELECT ifadesiyle kod uygulaması:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Yukarıdaki kodun çıktısı:
Veritabanında CODE 2'ye sahip bir çalışan olmadığından, SELECT ifadesi belirtilen koşulla eşleşen bir satır elde edemediğinden veri bulunamadı istisnası atılır.
BİR TABLO SÜTUNUNDAN FETCH VERİLERİ
EMPLOYEE tablosunu tekrar ele alalım.
BEGIN SELECT CODE FROM EMPLOYEE; END;
Yukarıdaki kodun çıktısı:
TABLOLARIN BİRDEN FAZLA SÜTUNUNDAN FETCH VERİLERİ
EMPLOYEE tablosunu tekrar ele alalım.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Yukarıdaki kodun çıktısı:
Yukarıdaki örnekte, SELECT deyimine CODE ve NAME iki sütun eklenmiştir.
Sıkça Sorulan Sorular ve Cevaplar
S # 1) SQL'de INSERT, UPDATE ve DELETE nedir?
Cevap: INSERT, UPDATE ve DELETE, SQL'de verilerin çalıştırılmasına ve güncellenmesine yardımcı olan komutlardır. INSERT deyimi tabloya satırlar ekler. DELETE ifadesi tablodaki satırları siler ve UPDATE ifadesi tablonun satırlarındaki değerleri günceller.
S # 2) SQL görünümünde INSERT, UPDATE ve DELETE yapabilir miyiz?
Cevap: Evet, SQL görünümünde INSERT, UPDATE ve DELETE yapabiliriz. Görünüm tablolar arasında birleştiyse, yalnızca INSERT ve UPDATE eylemlerini gerçekleştirebiliriz ancak DELETE işlemi yapamayız. DROP ifadesi bir görünümü silmek için kullanılır.
Cevap: INSERT, bir DML veya Veri Manipülasyon Dilidir). Diğer DML ifadeleri, UPDATE, DELETE ve benzerlerini içerir. DDL ifadesi tablolar, şema ve veritabanı oluşturabilir.
S # 4) Sorguyu silmek için JOIN IN kullanabilir miyiz?
Cevap: Evet, bir tablodan satırları silmek için DELETE komutundaki INNER JOIN deyimini kullanabiliriz.
S # 5) Kes ve sil komutu arasındaki fark nedir?
Cevap: TRUNCATE bir DDL ifadesidir, DELETE ise DML'dir. TRUNCATE komutu tüm tabloyu kaldırabilir. Tablonun bütünlüğünü korumaz. DELETE ifadesi yalnızca tablodaki belirli verileri silebilir. Ayrıca, silme koşulları da içerebilir.
S # 6) DML, DCL ve DDL nedir?
Cevap: SQL ifadeleri DML, DCL ve DML türlerindedir.
Veri Tanımlama Dili veya DDL, ALTER, DROP, CREATE, RENAME, TRUNCATE ve COMMENT gibi komutları içerir. Veri Manipülasyon Dili veya DML, INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE ve EXPLAIN PLAN gibi komutları içerir.
Veri Kontrol Dili veya DCL, GRANT ve REVOKE gibi komutları içerir.
S # 7) Kesmek, düşürmekten daha mı hızlıdır?
Cevap: Evet, TRUNCATE işlemi DROP'tan daha hızlıdır. TRUNCATE komutu yalnızca tablodaki verileri siler. DROP komutu tablo yapısını ve tablodaki verileri siler.
Sonuç
Bu eğitimde, üzerinde bilgi geliştirmek için gerekli olan PL SQL komutlarının bazı temel kavramlarını ayrıntılı olarak tartıştık. Aşağıda listelenen aşağıdaki konuları ele aldık: