X
Bu makale editörler ve araştırmacılardan oluşan, makalenin doğruluğu ile kapsamlılığını onaylayan, eğitimli bir ekip tarafından ortaklaşa yazılmıştır.
wikiHow’ın İçerik Yönetim Ekibi, yüksek kalite standartlarımızı sağladığından emin olmak için, editör ekibimizden gelen her çalışmayı dikkatli bir şekilde denetler.
Oracle’da çalışırken bazı kayıtların kopyalarının olduğunu görebilirsin. Bu kopya satırları, onları tanımlayıp satır kimliklerini veya satır adreslerini kullanarak silebilirsin. Başlamadan önce, kayıtları sildikten sonra referans almaya ihtiyacın olursa diye yedek bir tablo oluşturmalısın.
Adımlar
Yöntem 1 / 4:
Kopyanı Tanımlamak
Yöntem 1 / 4:
-
1Kopyayı tanımla. Bu durumda, örnek kopya "Ali"yi tanımla. Aşağıdaki SQL’i girerek, silmeye çalıştığın kayıtların kopya olduğundan emin ol.
-
2"Adlar" adında bir sütundan tanımlamak. "Adlar" adındaki sütun örneğinde, "sutun_adi"ni Adlar ile değiştirirsin.
-
3Diğer sütunlardan tanımlamak. Kopyayı, mesela Ali’nin adı yerine yaşı gibi başka bir sütun ile tanımlaya çalışıyorsan "sutun_adi"na "Yaslar" yazarsın. Başka sütunlar için de aynısını yaparsın.
select sutun_adi, count(sutun_adi) from tablo group by sutun_adi having count (sutun_adi) > 1;
Reklam
Yöntem 2 / 4:
Tek Bir Kopyayı Silmek
Yöntem 2 / 4:
-
1"Adlardan ad" seç. Standard Query Language’in (Standart Sorgu Dili) kısaltması olan "SQL"den sonra "select ad from adlar" komutunu gir.
-
2Kopya adı içeren tüm satırları sil. "SQL"den sonra, "delete from adlar where ad='Ali'; yaz." Burada büyük harfin önemli olduğunu bil. Bu komut, "Ali" adındaki tüm satırları siler. "SQL"den sonra "commit" yaz. [1]
-
3Satırı kopya olmadan tekrar gir. "Ali" örnek isminde olan tüm satırları sildiğine göre "insert into ad values ('Ali') komutuyla tekrar bir kayıt girebilirsin. "SQL"den sonra yeni satırını oluşturmak için "commit" yaz.
-
4Yeni listene bak. Yukarıdaki adımları tamamladıktan sonra "select * from adlar" yazarak artık kopya kaydının olmadığından emin olabilirsin.
SQL > select ad from adlar; NAME ------------------------------ Ali Cahit Tan Ali rows selected (satırları seçildi). SQL > delete from adlar where ad='Ali'; rows deleted (satırları silindi). SQL > commit; Commit complete (işlendi). SQL > insert into adlar values ('Ali'); row created (satır oluşturuldu). SQL > commit; Commit complete (işlendi). SQL > select * from adlar; NAME ------------------------------ Ali Cahit Tan rows selected (satırları seçildi).
Reklam
Yöntem 3 / 4:
Birden Fazla Kopyayı Silmek
Yöntem 3 / 4:
-
1Silmek istediğin satır kimliğini seç. "SQL"den sonra "select satir_kimligi, ad from adlar;" yaz.
-
2Kopyayı sil. Kopya kayıtları silmek için "SQL"den sonra "delete from adlar a where satir_kimligi > (select min(satir_kimligi) from adlar b where b.ad=a.ad);" yaz. [2]
-
3Kopya var mı bak. Yukarıdakini yaptıktan sonra hâlâ kopya kayıt var mı bakmak için önce "select satir_kimligi, ad from adlar;" komutunu sonra da "commit" komutunu kullan.
SQL > select satir_kimligi,ad from adlar; SATIR_KIMLIGI AD ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Ali AABJnsAAGAAAdfOAAB Ali AABJnsAAGAAAdfOAAC Cahit AABJnsAAGAAAdfOAAD Tan AABJnsAAGAAAdfOAAF Ali rows selected (satırları seçildi). SQL > delete from adlar a where satir_kimligi > (select min(satir_kimligi) from adlar b where b.ad=a.ad ); rows deleted (satırları silindi). SQL > select satir_kimligi,ad from adlar; SATIR_KIMLIGI AD ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Ali AABJnsAAGAAAdfOAAC Cahit AABJnsAAGAAAdfOAAD Tan rows selected (satırları seçildi). SQL > commit; Commit complete (işlendi).
Reklam
Yöntem 4 / 4:
Satırları Sütunlarla Silmek
Yöntem 4 / 4:
-
1Satırlarını sil. Satırlarını görmek için "SQL"den sonra "select * from adlar;" yaz.
-
2Kopya satırları sütunlarını tanımlayarak sil. Kopya kayıtları silmek için "SQL"den sonra "delete from adlar a where satir_kimligi > (select min(satir_kimligi) from adlar b where b.ad=a.ad and b.yas=a.yas); yaz".[3]
-
3Kopya var mı diye kontrol et. Yukarıdaki adımları tamamladıktan sonra kopya kayıtları başarılı bir şekilde silip silemediğini kontrol etmek için "select * from adlar" yaz, ardından "commit" yaz.
SQL > select * from adlar; AD YAS ------------------------------ ---------- Ali 50 Cahit 51 Tan 52 Ali 50 rows selected (satırları seçildi). SQL > delete from adlar a where satir_kimligi > (select min(satir_kimligi) from adlar b where b.ad=a.ad and b.yas=a.yas ); row deleted (satır silindi). SQL > select * from adlar; AD YAS ------------------------------ ---------- Ali 50 Cahit 51 Tan 52 rows selected (satırları seçildi). SQL > commit; Commit complete (işlendi).
Reklam
Uyarılar
- Herhangi bir silme işlemi olmadan önce (soru varsa diye) tabloda ne olduğunu gösterebilmek için kendi oturumunda yedek bir tablo oluştur.
SQL > create table ali.adlar_backup as select * from adlar; Table created (tablo oluşturuldu).
Reklam
Referanslar
Bu wikiHow makalesi hakkında
Diğer dillerde
Português:Excluir Registros Duplicados no Oracle
Bahasa Indonesia:Menghapus Duplikat Rekaman di Oracle
Tiếng Việt:Xóa dữ liệu trùng lặp trong Oracle
Nederlands:Dubbele gegevens in Oracle verwijderen
Bu sayfaya 473 defa erişilmiş.
Bu makale işine yaradı mı?
Reklam