Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'te
ambarMicrosoft Fabric'te SQL veritabanı
SQL Server'da bir tablo veya görünümden bir veya daha fazla satırı kaldırır.
Transact-SQL söz dizimi kuralları
Syntax
-- Syntax for SQL Server and Azure SQL Database
[ WITH <common_table_expression> [ ,...n ] ]
DELETE
[ TOP ( expression ) [ PERCENT ] ]
[ FROM ]
{ { table_alias
| <object>
| rowset_function_limited
[ WITH ( table_hint_limited [ ...n ] ) ] }
| @table_variable
}
[ <OUTPUT Clause> ]
[ FROM table_source [ ,...n ] ]
[ WHERE { <search_condition>
| { [ CURRENT OF
{ { [ GLOBAL ] cursor_name }
| cursor_variable_name
}
]
}
}
]
[ OPTION ( <Query Hint> [ ,...n ] ) ]
[; ]
<object> ::=
{
[ server_name.database_name.schema_name.
| database_name. [ schema_name ] .
| schema_name.
]
table_or_view_name
}
-- Syntax for Azure Synapse Analytics and Microsoft Fabric
[ WITH <common_table_expression> [ ,...n ] ]
DELETE [database_name . [ schema ] . | schema. ] table_name
FROM [database_name . [ schema ] . | schema. ] table_name
JOIN {<join_table_source>}[ ,...n ]
ON <join_condition>
[ WHERE <search_condition> ]
[ OPTION ( <query_options> [ ,...n ] ) ]
[; ]
<join_table_source> ::=
{
[ database_name . [ schema_name ] . | schema_name . ] table_or_view_name [ AS ] table_or_view_alias
[ <tablesample_clause>]
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
}
-- Syntax for Parallel Data Warehouse
DELETE
[ FROM [database_name . [ schema ] . | schema. ] table_name ]
[ WHERE <search_condition> ]
[ OPTION ( <query_options> [ ,...n ] ) ]
[; ]
Arguments
ILE <common_table_expression>
DELETE deyimi kapsamında tanımlanan ve ortak tablo ifadesi olarak da bilinen geçici adlandırılmış sonuç kümesini belirtir. Sonuç kümesi bir SELECT deyiminden türetilir.
Ortak tablo ifadeleri SELECT, INSERT, UPDATE ve CREATE VIEW deyimleriyle de kullanılabilir. Daha fazla bilgi için bkz. WITH common_table_expression (Transact-SQL).
TOP (ifade) [ YÜZDE ]
Silinecek rastgele satırların sayısını veya yüzdesini belirtir.
ifade bir sayı veya satırların yüzdesi olabilir. INSERT, UPDATE veya DELETE ile kullanılan TOP ifadesinde başvuruda bulunan satırlar herhangi bir sırada düzenlenmez. Daha fazla bilgi için bkz. TOP (Transact-SQL).
FROM
DELETE anahtar sözcüğü ile hedef table_or_view_namearasında kullanılabilecek isteğe bağlı bir anahtar sözcük veya rowset_function_limited.
table_alias
Satırların silindiği tabloyu veya görünümü temsil eden FROM table_source yan tümcesinde belirtilen diğer ad.
server_name
için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
Tablonun veya görünümün bulunduğu sunucunun adı (bağlı sunucu adı veya sunucu adı olarak OPENDATASOURCE işlevi). server_name belirtilirse database_name ve schema_name gerekir.
database_name
Veritabanının adı.
schema_name
Tablo veya görünümün ait olduğu şemanın adı.
table_or_view_name
Satırların kaldırılacağı tablonun veya görünümün adı.
Kapsam dahilindeki bir tablo değişkeni, DELETE deyiminde tablo kaynağı olarak da kullanılabilir.
table_or_view_name tarafından başvuruda bulunılan görünümün güncelleştirilebilir olması ve görünüm tanımının FROM yan tümcesinde tam olarak bir temel tabloya başvurması gerekir. Güncelleştirilebilir görünümler hakkında daha fazla bilgi için bkz. CREATE VIEW (Transact-SQL).
rowset_function_limited
için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
Sağlayıcı özelliklerine bağlı olarak OPENQUERY veya OPENROWSET işlevini.
(<table_hint_limited> [... n] )
Hedef tablo için izin verilen bir veya daha fazla tablo ipucunu belirtir. WITH anahtar sözcüğü ve parantezler gereklidir. NOLOCK ve READUNCOMMITTED'a izin verilmiyor. Tablo ipuçları hakkında daha fazla bilgi için bkz. Tablo İpuçları (Transact-SQL).
<OUTPUT_Clause>
DELETE işleminin bir parçası olarak silinen satırları veya bunları temel alan ifadeleri döndürür. OUTPUT yan tümcesi, görünümleri veya uzak tabloları hedefleyen hiçbir DML deyiminde desteklenmez. Bu yan tümcenin bağımsız değişkenleri ve davranışı hakkında daha fazla bilgi için bkz. OUTPUT Yan Tümcesi (Transact-SQL).
table_source
Ek bir FROM yan tümcesi belirtir. DELETE için bu Transact-SQL uzantısı, <table_source> verilerinin belirtilmesine ve ilk FROM yan tümcesindeki tablodan ilgili satırların silinmesine olanak tanır.
Kaldırılacak satırları tanımlamak için WHERE yan tümcesindeki bir alt sorgu yerine birleştirme belirten bu uzantı kullanılabilir.
Daha fazla bilgi için bkz. from (Transact-SQL) .
WHERE
Silinen satır sayısını sınırlamak için kullanılan koşulları belirtir. WHERE yan tümcesi sağlanmazsa, DELETE tablodan tüm satırları kaldırır.
WHERE yan tümcesinde belirtilenlere bağlı olarak iki silme işlemi biçimi vardır:
Arama yapılan silmeler, silinecek satırları niteleme amacıyla bir arama koşulu belirtir. Örneğin WHERE column_name = değeri.
Konumlandırılan silme işlemleri, bir imleç belirtmek için CURRENT OF yan tümcesini kullanır. Silme işlemi imlecin geçerli konumunda gerçekleşir. Bu, silinecek satırları niteleyen WHERE search_condition yan tümcesi kullanan arama yapılan DELETE deyiminden daha doğru olabilir. Arama koşulu tek bir satırı benzersiz olarak tanımlamıyorsa, aranan DELETE deyimi birden çok satırı siler.
<search_condition>
Silinecek satırların kısıtlayıcı koşullarını belirtir. Arama koşuluna dahil edilebilecek koşul sayısıyla ilgili bir sınır yoktur. Daha fazla bilgi için bkz. Arama Koşulu (Transact-SQL).
GÜNCEL
DELETE işleminin belirtilen imlecin geçerli konumunda gerçekleştirildiğini belirtir.
GLOBAL
cursor_name genel bir imleç başvurduğunu belirtir.
cursor_name
Getirme işleminin yapıldığı açık imlecin adıdır. Hem genel hem de adı cursor_name olan yerel bir imleç varsa, genel imleç belirtilirse bu bağımsız değişken genel imleç anlamına gelir; aksi takdirde, yerel imleç anlamına gelir. İmleç güncelleştirmelere izin vermelidir.
cursor_variable_name
İmleç değişkeninin adı. İmleç değişkeni, güncelleştirmelere izin veren bir imleç başvurmalıdır.
SEÇENEK (<query_hint> [ ,... n] )
Veritabanı Altyapısı'nın deyimi işleme biçimini özelleştirmek için hangi iyileştirici ipuçlarının kullanıldığını gösteren anahtar sözcükler. Daha fazla bilgi için bkz. Sorgu İpuçları (Transact-SQL).
En İyi Yöntemler
Tablodaki tüm satırları silmek için TRUNCATE TABLEkullanın.
TRUNCATE TABLE DELETE'den daha hızlıdır ve daha az sistem ve işlem günlüğü kaynağı kullanır.
TRUNCATE TABLE kısıtlamaları vardır; örneğin, tablo çoğaltmaya katılamaz. Daha fazla bilgi için bkz. TRUNCATE TABLE (Transact-SQL)
İstemci uygulamasına silinen satır sayısını döndürmek için @@ROWCOUNT işlevini kullanın. Daha fazla bilgi için bkz. @@ROWCOUNT (Transact-SQL).
Hata İşleme
bir TRY...CATCH yapısında deyimini belirterek DELETE deyimi için hata işleme uygulayabilirsiniz.
DELETE deyimi tetikleyiciyi ihlal ederse veya FOREIGN KEY kısıtlaması olan başka bir tablodaki veriler tarafından başvuruda bulunan bir satırı kaldırmaya çalışırsa başarısız olabilir.
DELETE birden çok satırı kaldırırsa ve kaldırılan satırlardan herhangi biri tetikleyiciyi veya kısıtlamayı ihlal ederse, deyim iptal edilir, bir hata döndürülür ve hiçbir satır kaldırılmaz.
Bir DELETE deyimi ifade değerlendirmesi sırasında oluşan bir aritmetik hatayla (taşma, sıfıra bölme veya etki alanı hatası) karşılaştığında, Veritabanı Altyapısı bu hataları SET ARITHABORT AÇıK olarak işler. Toplu işleminin geri kalanı iptal edilir ve bir hata iletisi döndürülür.
Interoperability
Değiştirilen nesne bir tablo değişkeniyse DELETE, kullanıcı tanımlı bir işlevin gövdesinde kullanılabilir.
FILESTREAM sütunu içeren bir satırı sildiğinizde, temel alınan dosya sistemi dosyalarını da silersiniz. Temel alınan dosyalar FILESTREAM çöp toplayıcısı tarafından kaldırılır. Daha fazla bilgi için bkz. Transact-SQLile FILESTREAM Verilerine Erişme.
FROM yan tümcesi, doğrudan veya dolaylı olarak, üzerinde tanımlanmış bir INSTEAD OF tetikleyicisi olan bir görünüme başvuran bir DELETE deyiminde belirtilemez. TETIKLEYICILER YERİNE hakkında daha fazla bilgi için bkz. CREATE TRIGGER (Transact-SQL).
Şu anda FROM yan tümcesi Microsoft Fabric'teki Ambar'daki DELETE deyiminde belirtilemez.
Sınırlamalar ve Kısıtlamalar
TOPile DELETE kullanıldığında, başvuruda bulunılan satırlar herhangi bir sırayla düzenlenmez ve ORDER BY yan tümcesi bu deyimde doğrudan belirtilmez. Satırları anlamlı bir kronolojik sırada silmek için TOP kullanmanız gerekiyorsa, TOP bir alt seçim deyimindeki ORDER BY yan tümcesiyle birlikte kullanmanız gerekir. Bu konu başlığında yer alan Örnekler bölümüne bakın.
TOP bölümlenmiş görünümlerde DELETE deyiminde kullanılamaz.
Kilitleme Davranışı
Varsayılan olarak, DELETE deyimi her zaman tablo nesnesine ve değiştirdiği sayfalara özel bir amaç (IX) kilidi, değiştirdiği satırlarda özel (X) kilidi alır ve işlem tamamlanana kadar bu kilitleri tutar.
Özel amaçlı (IX) kilit ile, başka hiçbir işlem aynı veri kümesini değiştiremez; okuma işlemleri yalnızca NOLOCK ipucunun kullanılmasıyla veya kaydedilmemiş yalıtım düzeyinin okunmasıyla gerçekleşebilir. Başka bir kilitleme yöntemi belirterek DELETE deyimi süresince bu varsayılan davranışı geçersiz kılmak için tablo ipuçları belirtebilirsiniz, ancak ipuçlarının yalnızca deneyimli geliştiriciler ve veritabanı yöneticileri tarafından son çare olarak kullanılmasını öneririz. Daha fazla bilgi için bkz. Tablo İpuçları (Transact-SQL).
Bir yığından satırlar silindiğinde, Veritabanı Altyapısı işlem için satır veya sayfa kilitleme kullanabilir. Sonuç olarak, silme işlemi tarafından boş yapılan sayfalar yığına ayrılmış olarak kalır. Boş sayfalar serbest bırakılmadığında, ilişkili alan veritabanındaki diğer nesneler tarafından yeniden kullanılamaz.
Bir yığındaki satırları silmek ve sayfaları serbest bırakmak için aşağıdaki yöntemlerden birini kullanın.
TABLOCKdeyimindeDELETEipucunu belirtin.TABLOCKipucunu kullanmak, silme işleminin satır veya sayfa kilidi yerine nesne üzerinde IX kilidi almasına neden olur. Bu, sayfaların serbest bırakılmasına olanak tanır.TABLOCKipucu hakkında daha fazla bilgi için bkz. Tablo İpuçları (Transact-SQL).Tüm satırlar tablodan silinecekse
TRUNCATE TABLEkullanın.Satırları silmeden önce yığında kümelenmiş bir dizin oluşturun. Satırlar silindikten sonra kümelenmiş dizini bırakabilirsiniz. Bu yöntem önceki yöntemlere göre daha fazla zaman alır ve daha fazla geçici kaynak kullanır.
Note
boş sayfalar, ALTER TABLE <table_name> REBUILD deyimi kullanılarak herhangi bir zamanda bir yığından kaldırılabilir.
İyileştirilmiş kilitleme etkinleştirilirse, DELETE için kilitleme davranışının bazı yönleri değişir. Örneğin, işlem tamamlanana kadar özel (X) kilitler tutulmaz. Daha fazla bilgi için bkz. İyileştirilmiş kilitleme.
Kayıt Davranışı
DELETE deyimi her zaman tam olarak günlüğe kaydedilir.
Security
Permissions
hedef tabloda DELETE izinleri gereklidir. deyimi where yan tümcesi içeriyorsa SELECT izinleri de gereklidir.
DELETE izinleri varsayılan olarak sysadmin sabit sunucu rolünün üyeleri, db_owner ve db_datawriter sabit veritabanı rolleri ve tablo sahibidir.
sysadmin, db_ownerve db_securityadmin rollerinin üyeleri ve tablo sahibi izinleri diğer kullanıcılara aktarabilir.
Examples
| Category | Öne çıkan söz dizimi öğeleri |
|---|---|
| Temel sözdizimi | DELETE |
| Silinen satırları sınırlama | WHERE * FROM * imleç * |
| Uzak tablodaki satırları silme | Bağlı sunucu * OPENQUERY satır kümesi işlevi * OPENDATASOURCE satır kümesi işlevi |
| DELETE deyiminin sonuçlarını yakalama | OUTPUT cümlesi |
Temel Söz Dizimi
Bu bölümdeki örnekler, gereken en düşük söz dizimini kullanarak DELETE deyiminin temel işlevselliğini gösterir.
A. DELETE'i WHERE yan tümcesi olmadan kullanma
Aşağıdaki örnek, silinen satır sayısını sınırlamak için WHERE maddesi kullanılmadığı için AdventureWorks2025 veritabanındaki tüm satırları SalesPersonQuotaHistory siler.
DELETE FROM Sales.SalesPersonQuotaHistory;
GO
Silinen Satırları Sınırlama
Bu bölümdeki örneklerde, silinecek satır sayısının nasıl sınırlanacağı gösterilmektedir.
B. Bir satır kümesini silmek için WHERE yan tümcesini kullanma
Aşağıdaki örnek, AdventureWorks2025 veritabanındaki tablodaki tüm satırları ProductCostHistory siler; sütundaki StandardCost değer 'den fazla 1000.00.
DELETE FROM Production.ProductCostHistory
WHERE StandardCost > 1000.00;
GO
Aşağıdaki örnekte daha karmaşık bir WHERE yan tümcesi gösterilmektedir. WHERE yan tümcesi, silinecek satırları belirlemek için karşılanması gereken iki koşulu tanımlar.
StandardCost sütunundaki değer 12.00 ile 14.00 arasında olmalı ve SellEndDate sütundaki değer null olmalıdır. Örnek, silinen satır sayısını döndürmek için @@ROWCOUNT işlevindeki değeri de yazdırır.
DELETE Production.ProductCostHistory
WHERE StandardCost BETWEEN 12.00 AND 14.00
AND EndDate IS NULL;
PRINT 'Number of rows deleted is ' + CAST(@@ROWCOUNT as char(3));
C. Silinecek satırı belirlemek için imleç kullanma
Aşağıdaki örnek, AdventureWorks2025 veritabanındaki tablodan tek bir satırı EmployeePayHistory . adlı bir imleç complex_cursorkullanarak siler. Silme işlemi, imleçten şu anda getirilen tek satırı etkiler.
DECLARE complex_cursor CURSOR FOR
SELECT a.BusinessEntityID
FROM HumanResources.EmployeePayHistory AS a
WHERE RateChangeDate <>
(SELECT MAX(RateChangeDate)
FROM HumanResources.EmployeePayHistory AS b
WHERE a.BusinessEntityID = b.BusinessEntityID) ;
OPEN complex_cursor;
FETCH FROM complex_cursor;
DELETE FROM HumanResources.EmployeePayHistory
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO
D. Başka bir tablodaki satırları silmek için bir tablodaki verilere birleştirmeler ve alt sorgular kullanma
Aşağıdaki örneklerde, bir tablodaki satırları başka bir tablodaki verilere göre silmenin iki yolu gösterilmektedir. Her iki örnekte de, AdventureWorks2025 veritabanındaki tablodaki satırlar, SalesPersonQuotaHistory tabloda saklanan yıl başından buya satışlara SalesPerson göre silinir. İlk DELETE deyimi ISO uyumlu alt sorgu çözümünü, ikinci DELETE deyimi ise iki tabloyu birleştirmek için from uzantısını Transact-SQL gösterir.
-- SQL-2003 Standard subquery
DELETE FROM Sales.SalesPersonQuotaHistory
WHERE BusinessEntityID IN
(SELECT BusinessEntityID
FROM Sales.SalesPerson
WHERE SalesYTD > 2500000.00);
GO
-- Transact-SQL extension
DELETE FROM Sales.SalesPersonQuotaHistory
FROM Sales.SalesPersonQuotaHistory AS spqh
INNER JOIN Sales.SalesPerson AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
GO
-- No need to mention target table more than once.
DELETE spqh
FROM
Sales.SalesPersonQuotaHistory AS spqh
INNER JOIN Sales.SalesPerson AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
E. Silinen satır sayısını sınırlamak için TOP kullanma
DELETE ile top (n) yan tümcesi kullanıldığında, silme işlemi n satır sayısı rastgele seçiminde gerçekleştirilir. Aşağıdaki örnek, AdventureWorks2025 veritabanındaki rastgele satırlar ve son teslim tarihleri 1 Temmuz 2006'dan daha erken olan rastgele satırlar siler 20PurchaseOrderDetail .
DELETE TOP (20)
FROM Purchasing.PurchaseOrderDetail
WHERE DueDate < '20020701';
GO
Satırları anlamlı bir kronolojik sırada silmek için TOP kullanmanız gerekiyorsa, bir alt seçim deyiminde ORDER BY ile birlikte TOP kullanmanız gerekir. Aşağıdaki sorgu, PurchaseOrderDetail tablosunun en erken son tarihlere sahip 10 satırını siler. Yalnızca 10 satırın silindiğinden emin olmak için, alt seçim deyiminde (PurchaseOrderID) belirtilen sütun tablonun birincil anahtarıdır. Subselect deyiminde anahtar olmayan bir sütun kullanılması, belirtilen sütun yinelenen değerler içeriyorsa 10'dan fazla satırın silinmesine neden olabilir.
DELETE FROM Purchasing.PurchaseOrderDetail
WHERE PurchaseOrderDetailID IN
(SELECT TOP 10 PurchaseOrderDetailID
FROM Purchasing.PurchaseOrderDetail
ORDER BY DueDate ASC);
GO
Uzak Tablodan Satır Silme
Bu bölümdeki örneklerde, uzak tabloya başvurmak için bağlı sunucu veya satır kümesi işlevi kullanarak uzak tablodaki satırları silme işlemi gösterilmektedir. Sql Server'ın farklı bir sunucusunda veya örneğinde bir uzak tablo var.
için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
F. Bağlı sunucu kullanarak uzak tablodan veri silme
Aşağıdaki örnek, uzak bir tablodan satırları siler. Örnek, sp_addlinkedserverkullanarak uzak veri kaynağına bir bağlantı oluşturarak başlar.
MyLinkServerbağlı sunucu adı, server.catalog.schema.object biçimindeki dört parçalı nesne adının bir parçası olarak belirtilir.
USE master;
GO
-- Create a link to the remote data source.
-- Specify a valid server name for @datasrc as 'server_name' or 'server_name\instance_name'.
EXEC sp_addlinkedserver @server = N'MyLinkServer',
@srvproduct = N' ',
@provider = N'SQLNCLI',
@datasrc = N'server_name',
@catalog = N'AdventureWorks2022';
GO
-- Specify the remote data source using a four-part name
-- in the form linked_server.catalog.schema.object.
DELETE MyLinkServer.AdventureWorks2022.HumanResources.Department
WHERE DepartmentID > 16;
GO
G. OPENQUERY işlevini kullanarak uzak tablodan veri silme
Aşağıdaki örnek, OPENQUERY satır kümesi işlevini belirterek uzak bir tablodaki satırları siler. Önceki örnekte oluşturulan bağlı sunucu adı bu örnekte kullanılmıştır.
DELETE OPENQUERY (MyLinkServer, 'SELECT Name, GroupName
FROM AdventureWorks2022.HumanResources.Department
WHERE DepartmentID = 18');
GO
H. OPENDATASOURCE işlevini kullanarak uzak tablodan veri silme
Aşağıdaki örnek, OPENDATASOURCE satır kümesi işlevini belirterek uzak bir tablodan satırları siler. server_name veya server_name\instance_namebiçimini kullanarak veri kaynağı için geçerli bir sunucu adı belirtin.
DELETE FROM OPENDATASOURCE('SQLNCLI',
'Data Source= <server_name>; Integrated Security=SSPI')
.AdventureWorks2022.HumanResources.Department
WHERE DepartmentID = 17;
DELETE deyiminin sonuçlarını yakalama
I. OUTPUT yan tümcesiyle DELETE kullanma
Aşağıdaki örnek, bir DELETE ifadenin sonuçlarının AdventureWorks2025 veritabanındaki bir tablo değişkenine nasıl kaydedileceğini gösterir.
DELETE Sales.ShoppingCartItem
OUTPUT DELETED.*
WHERE ShoppingCartID = 20621;
--Verify the rows in the table matching the WHERE clause have been deleted.
SELECT COUNT(*) AS [Rows in Table]
FROM Sales.ShoppingCartItem
WHERE ShoppingCartID = 20621;
GO
J. DELETE deyiminde <from_table_name> ile OUTPUT kullanma
Aşağıdaki örnek, ifadenin maddesinde FROMDELETE tanımlanan arama kriterlerine göre AdventureWorks2025 veritabanındaki tablodaki satırları ProductProductPhoto siler.
OUTPUT yan tümcesi, silinen tablodaki sütunları, DELETED.ProductID, DELETED.ProductPhotoIDve Product tablosundaki sütunları döndürür. Bu, silinecek satırları belirtmek için FROM yan tümcesinde kullanılır.
DECLARE @MyTableVar table (
ProductID int NOT NULL,
ProductName nvarchar(50)NOT NULL,
ProductModelID int NOT NULL,
PhotoID int NOT NULL);
DELETE Production.ProductProductPhoto
OUTPUT DELETED.ProductID,
p.Name,
p.ProductModelID,
DELETED.ProductPhotoID
INTO @MyTableVar
FROM Production.ProductProductPhoto AS ph
JOIN Production.Product as p
ON ph.ProductID = p.ProductID
WHERE p.ProductModelID BETWEEN 120 and 130;
--Display the results of the table variable.
SELECT ProductID, ProductName, ProductModelID, PhotoID
FROM @MyTableVar
ORDER BY ProductModelID;
GO
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
K. Tablodan tüm satırları silme
Aşağıdaki örnek, silinen satır sayısını sınırlamak için WHERE yan tümcesi kullanılmadığından Table1 tablosundaki tüm satırları siler.
DELETE FROM Table1;
L. Tablodan satır kümesini SILME
Aşağıdaki örnek, Table1 sütununda 1000,00'den büyük bir değere sahip olan StandardCost tablosundaki tüm satırları siler.
DELETE FROM Table1
WHERE StandardCost > 1000.00;
M. DELETE deyimiyle LABEL kullanma
Aşağıdaki örnekte DELETE deyimiyle bir etiket kullanılır.
DELETE FROM Table1
OPTION ( LABEL = N'label1' );
N. DELETE deyimiyle etiket ve sorgu ipucu kullanma
Bu sorgu, DELETE deyimiyle sorgu birleştirme ipucu kullanmaya yönelik temel söz dizimini gösterir. Birleştirme ipuçları ve OPTION yan tümcesini kullanma hakkında daha fazla bilgi için bkz. OPTION Yan Tümcesi (Transact-SQL).
-- Uses AdventureWorks
DELETE FROM dbo.FactInternetSales
WHERE ProductKey IN (
SELECT T1.ProductKey FROM dbo.DimProduct T1
JOIN dbo.DimProductSubcategory T2
ON T1.ProductSubcategoryKey = T2.ProductSubcategoryKey
WHERE T2.EnglishProductSubcategoryName = 'Road Bikes' )
OPTION ( LABEL = N'CustomJoin', HASH JOIN ) ;
O. WHERE yan tümcesi kullanarak silme
Bu sorgu, FROM yan tümcesi kullanmadan WHERE yan tümcesi kullanarak silmeyi gösterir.
DELETE tableA WHERE EXISTS (
SELECT TOP 1 FROM tableB tb WHERE tb.col1 = tableA.col1
)
P. Başka bir tabloyla birleştirmenin sonucuna göre silme
Bu örnekte, başka bir tabloyla birleştirme sonucuna bağlı olarak tablodan silme işlemi gösterilmektedir.
CREATE TABLE dbo.Table1
(ColA int NOT NULL, ColB decimal(10,3) NOT NULL);
GO
CREATE TABLE dbo.Table2
(ColA int PRIMARY KEY NOT NULL, ColB decimal(10,3) NOT NULL);
GO
INSERT INTO dbo.Table1 VALUES(1, 10.0), (1, 20.0);
INSERT INTO dbo.Table2 VALUES(1, 0.0);
GO
DELETE dbo.Table2
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA)
WHERE dbo.Table2.ColA = 1;
Ayrıca Bkz.
CREATE TRIGGER (Transact-SQL)
INSERT (Transact-SQL)
SEÇ (Transact-SQL)
TRUNCATE MASA (Transact-SQL)
GÜNCELLEME (Transact-SQL)
WITH common_table_expression (Transact-SQL)
@@ROWCOUNT (Transact-SQL)