Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर डिलीट स्टेटमेंट:टेबल से एक या गुणा पंक्तियों को कैसे निकालें

डेटा हटाने के लिए DELETE कथन का सही अनुप्रयोग महत्वपूर्ण है, और इसमें बहुत सारी समस्याएं शामिल हैं। फिर भी, DELETE कथन के उपयोग के मानक अभ्यास हैं जो ऐसे सभी कार्यों को सरल बनाते हैं।

यह लेख आपको DELETE कथन का सही ढंग से उपयोग करने के लिए सबसे उपयोगी युक्तियों से लैस करने के लिए कुछ पेशेवर जीवन परिदृश्यों का पता लगाएगा। आप किसी तालिका से डेटा को अलग-अलग तरीकों से हटा सकते हैं। SQL सर्वर में DELETE और TRUNCATE के बीच अंतर का अन्वेषण करें जिसे व्यावहारिक उदाहरणों के साथ कवर किया गया है।

टी-एसक्यूएल हटाएं कमांड मूल बातें

सबसे पहले, हमें यथासंभव सरलतम तरीके से T-SQL Delete कथन से परिचित होना चाहिए।

डिलीट स्टेटमेंट, जैसा कि नाम से संकेत मिलता है, एक स्टेटमेंट है जो हमें डेटाबेस टेबल से डेटा को डिलीट करने में मदद करता है।

एक टेबल एक संरचना है जिसे आप अपने डेटा को संग्रहीत करने के लिए डेटाबेस में बनाते हैं। उदाहरण के लिए, हमारे पास उन पुस्तकों से संबंधित अभिलेखों को संग्रहीत करने के लिए पुस्तकों की एक तालिका हो सकती है।

एक डेटाबेस उस डेटा को रखने के लिए डेटा और डेटा संरचनाओं का एक संगठित संग्रह है। दूसरे शब्दों में, डेटा को टेबल के रूप में डेटाबेस के अंदर संग्रहीत किया जा सकता है।

एक पंक्ति या एकाधिक पंक्तियों को कैसे हटाएं

हम डिलीट स्टेटमेंट का उपयोग करके टेबल से एक या अधिक रिकॉर्ड (आमतौर पर पंक्तियों के रूप में जाना जाता है) को हटा सकते हैं।

डिलीट स्टेटमेंट टेबल से कुछ या सभी डेटा (पंक्तियों) को हटा देता है।

Microsoft दस्तावेज़ के अनुसार, Delete कथन SQL सर्वर में तालिका या दृश्य से एक या अधिक पंक्तियों को हटा देता है।

किसी को आश्चर्य हो सकता है कि कथन कैसे परिभाषित करता है कि किसी तालिका से कुछ या सभी डेटा (पंक्तियों) को हटाना है या नहीं। उत्तर मानदंड या शर्तों में निहित है जो निर्दिष्ट करता है कि क्या हटाने की आवश्यकता है।

SQL सर्वर में कमांड हटाएं

कथन का सरलतम वाक्य विन्यास इस प्रकार है:

Delete FROM <TableName> WHERE <Condition>

आपको तालिका का नाम और तालिका से डेटा (पंक्तियों) को हटाने के लिए मानदंड/शर्त प्रदान करने की आवश्यकता है।

नोट:एक शर्त के साथ DELETE स्टेटमेंट का उपयोग करना महत्वपूर्ण है (WHERE क्लॉज) हालांकि शर्त की आवश्यकता जरूरी नहीं है।

यदि आप WHERE शर्त के बिना DELETE टेबल कमांड निष्पादित करते हैं, तो आप टेबल से सभी पंक्तियों (डेटा) को हटा देंगे। इसलिए, जब तक आप सभी पंक्तियों को हटाना नहीं चाहते, तब तक WHERE कंडीशन का उपयोग करने की आदत डालें।

संगतता

यह कथन निम्नलिखित सहित SQL सर्वर के कई संस्करणों के साथ संगत है:

  1. SQL सर्वर 2012 और ऊपर के संस्करण।
  2. क्लाउड-आधारित SQL सर्वर डेटाबेस (Azure SQL डेटाबेस)।
  3. क्लाउड-आधारित SQL डेटा वेयरहाउस (Azure Synapse Analytics)।

तालिका से पंक्तियों को हटाने के लिए चरण-दर-चरण चेकलिस्ट

अब हम कई व्यावहारिक परिदृश्यों के साथ डिलीट स्टेटमेंट के उपयोग का पता लगाने जा रहे हैं।

चरणों का सारांश

  1. नमूना डेटाबेस सेटअप करें।
  2. डेटा देखें।
  3. डेटा हटाएं।
  4. तालिका में वापस अधिक डेटा डालें।
  5. हटाने से पहले डेटा देखें।
  6. किसी शर्त के आधार पर कॉलम में डेटा कैसे हटाएं।
  7. हटाने के बाद डेटा देखें।
  8. तालिका में वापस अधिक डेटा डालें।
  9. हटाने से पहले डेटा देखें।
  10. किसी अन्य शर्त के आधार पर डेटा हटाएं।
  11. हटाने के बाद डेटा देखें।
  12. डेटा को वापस तालिका में सम्मिलित करें।
  13. इस बार दो शर्तों के आधार पर डेटा हटाएं।
  14. हटाने के बाद डेटा देखें।

सेटअप नमूना डेटाबेस (पुस्तकों का नमूना)

स्क्रिप्ट का परीक्षण करने और चलाने के लिए हमें एक नमूना डेटाबेस की आवश्यकता है। सबसे पहले, हमें निम्न चरणों को शामिल करते हुए उस नमूना डेटाबेस को सेट करना होगा:

  1. नमूना डेटाबेस बनाएं।
  2. नमूना डेटाबेस में एक तालिका बनाएं।
  3. डेटाबेस तालिका में डेटा (दो पंक्तियाँ) डालें।

SQL सर्वर प्रबंधन स्टूडियो या SQL सर्वर के लिए dbForge स्टूडियो खोलें और नमूना डेटाबेस सेट करने के लिए निम्न स्क्रिप्ट निष्पादित करें:

-- Connect to the 'master' database to run this snippet
USE master
GO
-- Create a new database if it does not already exist
IF NOT EXISTS (
    SELECT [name]
FROM sys.databases
WHERE [name] = N'BooksSample'
)
CREATE DATABASE BooksSample
GO

USE BooksSample

-- Create the table book
CREATE TABLE [dbo].[Book]
(
    [BookNumber] INT NOT NULL PRIMARY KEY,-- Primary Key column
    [Title] VARCHAR(150) NOT NULL,
    [Stock] SMALLINT NOT NULL
    
);
GO

-- Insert rows into table 'Book' 
INSERT INTO [dbo].[Book]
    ( -- Columns to insert data into
    [BookNumber], [Title], [Stock]
    )
VALUES
    ( -- First row: values for the columns in the list above
        1, 'Learn SQL in 7 Days', 50
),
    ( -- Second row: values for the columns in the list above
        2, 'Creating Databases in Minutes', 50
);

GO

डेटा देखें (पुस्तक तालिका)

आइए डेटाबेस में हाल ही में बनाई गई और आबादी वाली तालिका देखें। नीचे दी गई स्क्रिप्ट चलाएँ:

-- View data (rows) from the table (Book)
SELECT b.BookNumber, b.Title, b.Stock FROM dbo.Book b

आउटपुट है:

हम तालिका (पुस्तक) की दो पंक्तियों को देख सकते हैं। फिलहाल, ये सभी डेटा इस तालिका में मौजूद हैं।

डेटा हटाएं

जैसा कि हमें याद है, यदि हम सही विलोपन के लिए शर्त/मानदंड का उल्लेख करना भूल जाते हैं, तो तालिका में सभी पंक्तियों को हटाने का जोखिम होता है।

आकस्मिक डेटा हानि से बचने के लिए हमेशा डिलीट स्टेटमेंट के साथ WHERE क्लॉज का उपयोग करें। एकमात्र अपवाद तब होना चाहिए जब आपको जानबूझकर सभी डेटा को हटाना पड़े।

नमूना डेटाबेस तालिका से सभी डेटा (पंक्तियों) को निकालने के लिए, निम्न स्क्रिप्ट चलाएँ:

-- Delete all the data (rows) from the table Book
DELETE FROM dbo.Book

आउटपुट है:

हटाने के बाद डेटा देखें

अब, हमें यह जांचना होगा कि क्या सभी पंक्तियां हटा दी गई हैं:

-- View data (rows) from the table (Book)
SELECT b.BookNumber, b.Title, b.Stock FROM dbo.Book b

परिणाम हैं:

इस तरह, हमने पुस्तक . से सभी पंक्तियों को सफलतापूर्वक हटा दिया है टेबल। उसके लिए, हमने बिना किसी विलोपन मानदंड/शर्तों के DELETE कथन लागू किया।

डेटा को वापस तालिका में सम्मिलित करें (उसी शीर्षक के साथ)

हम डेटा (पंक्तियों) को वापस तालिका में सम्मिलित कर सकते हैं और फिर कुछ शर्तों/मानदंडों के आधार पर DELETE कथन लागू कर सकते हैं।

इस बार, हम अधिक पंक्तियों को सम्मिलित करना चुनते हैं, लेकिन जानबूझकर एक ही शीर्षक रखते हैं:

-- Insert rows into table 'Book' 
INSERT INTO [dbo].[Book]
    ( -- Columns to insert data into
    [BookNumber], [Title], [Stock]
    )
VALUES
    ( -- First row: values for the columns in the list above
        1, 'Learn SQL in 7 Days', 50
),
    ( -- Second row: values for the columns in the list above
        2, 'Creating Databases in Minutes', 50
),
	( -- Third row: values for the columns in the list above
        3, 'Creating Databases in Minutes', 50
),
    ( -- Fourth row: values for the columns in the list above
        4, 'Creating Databases in Minutes', 50
);

GO

आउटपुट इस प्रकार है:

नोट :हटाए गए या परिवर्तित डेटा को पुनर्स्थापित करने के लिए, आप समर्पित सॉफ़्टवेयर समाधानों का उपयोग कर सकते हैं। dbForge ट्रांजेक्शन लॉग समाधान आप दोनों को उन डेटा को पुनर्स्थापित करने और यह देखने की अनुमति देता है कि किसने और कब उन्हें हटाया या बदला।

हटाने से पहले डेटा देखें

डेटा देखने के लिए, निम्न स्क्रिप्ट निष्पादित करें:

-- View data (rows) from the table (Book)
SELECT b.BookNumber, b.Title, b.Stock FROM dbo.Book b

आउटपुट है:

आउटपुट दर्शाता है कि हमने गलती से एक ही पुस्तक शीर्षक के साथ तीन पंक्तियाँ सम्मिलित कर ली हैं। यह एक समस्या है। सरल उपाय यह है कि अनावश्यक पंक्तियों को हटा दिया जाए, डुप्लिकेट शीर्षक वाली पंक्तियों को हटाने के लिए विशिष्ट शर्त लागू की जाए।

एक शर्त (बुकनंबर) के आधार पर SQL कॉलम में डेटा कैसे हटाएं

महत्वपूर्ण:हम इस समस्या को हल करने के निम्नलिखित तरीकों में से एक पर विचार कर सकते हैं:

  1. बुकनंबर द्वारा हटाएं
  2. शीर्षक द्वारा हटाएं

मेरे परिदृश्य में, मैं शीर्षक से हटाना नहीं चुनता। यदि हम शीर्षक द्वारा हटाते हैं, तो हम उस शीर्षक वाली सभी पंक्तियों को हटा देते हैं, जिनमें वे भी शामिल हैं जिन्हें हमें रखने की आवश्यकता है। इसलिए, अनुशंसित तरीका BookNumber . के आधार पर तालिका को हटाना है कॉलम।

यदि हम परिणाम सेट को देखें, तो हम आसानी से समझ सकते हैं कि BookNumber:3 और बुकनंबर:4 डुप्लिकेट पंक्तियाँ हैं। पहले, यह विस्तार से बताया गया था कि SQL में डुप्लिकेट को कैसे हटाया जाए। डेटाबेस को सुसंगत रखने के लिए हमें उन्हें हटाना होगा।

फिर से, निम्नलिखित विकल्प सामने आते हैं:

  1. जहां बुक नंबर (बुकनंबर) 2 से ज्यादा है वहां डिलीट करें।
  2. जहां BookNumber 3 और 4 है वहां से हटा दें।

आइए पहला विकल्प चुनें। हालांकि, याद रखें कि यह केवल तभी मान्य होता है जब डुप्लिकेट पंक्तियों के बाद कोई पंक्तियाँ न हों, जिनके बारे में हम जानते हैं।

निम्न स्क्रिप्ट निष्पादित करें:

-- Delete all the data (rows) from the table Book where BookNumber is greater than 2
DELETE FROM dbo.Book
WHERE BookNumber>2

हटाने के बाद डेटा देखें

आइए डेटा हटाने के बाद तालिका देखें:

-- View data (rows) from the table (Book)
SELECT b.BookNumber, b.Title, b.Stock FROM dbo.Book b

आउटपुट है:

तालिका में अधिक डेटा डालें (अधिक स्टॉक)

स्टॉक से संबंधित अधिक डेटा (पंक्ति) डालने के लिए, हम नीचे दी गई स्क्रिप्ट का उपयोग करते हैं:

-- Insert rows into table 'Book' 
INSERT INTO [dbo].[Book]
    ( -- Columns to insert data into
    [BookNumber], [Title], [Stock]
    )
VALUES
    ( -- First row: values for the columns in the list above
        3, 'Basic Data Structures', 60
),
    ( -- Second row: values for the columns in the list above
        4, 'Advanced Data Structures', 0
)
GO

हटाने से पहले डेटा देखें

टेबल पर एक नजर:

-- View data (rows) from the table (Book)
SELECT b.BookNumber, b.Title, b.Stock FROM dbo.Book b

आउटपुट है:

किसी भिन्न स्थिति के आधार पर डेटा हटाएं

मान लें कि डेटाबेस में अधिक सटीक जानकारी रखने के लिए हमें स्टॉक बुक से बाहर निकालने की आवश्यकता है। ऐसा करने के लिए, हमें उन पंक्तियों को देखना चाहिए जिनका स्टॉक 0 है।

हम स्टॉक . के आधार पर शर्त के साथ DELETE कथन का उपयोग कर सकते हैं स्तंभ मान 0:

-- Delete all the out of stock (Where Stock is 0) books (rows) from the table Book 
DELETE FROM dbo.Book
WHERE Stock=0

हटाने के बाद डेटा देखें

-- View data (rows) from the table (Book)
SELECT b.BookNumber, b.Title, b.Stock FROM dbo.Book b

तालिका में अधिक डेटा डालें (अधिक शीर्षक और स्टॉक)

हम तालिका में दो और पंक्तियाँ जोड़ रहे हैं:

-- Insert rows into table 'Book' 
INSERT INTO [dbo].[Book]
    ( -- Columns to insert data into
    [BookNumber], [Title], [Stock]
    )
VALUES
    ( -- First row: values for the columns in the list above
        4, 'Learn Azure SQL Database in 10 Days', 0
),
    ( -- Second row: values for the columns in the list above
        5, 'Azure SQL Database Concepts', 1
)
GO

हटाने से पहले डेटा देखें

आवश्यकता के आधार पर आगे कुछ भी हटाने से पहले पंक्तियों की जाँच करें:

-- View data (rows) from the table (Book)
SELECT b.BookNumber, b.Title, b.Stock FROM dbo.Book b

टेबल आउटपुट है:

दो शर्तों के आधार पर डेटा हटाएं

इस बार, हमें सभी किताबें को हटाना होगा (पंक्तियाँ) जहाँ शीर्षक में SQL शब्द होता है और वे स्टॉक में नहीं हैं (उनका स्टॉक मूल्य 0 है)।

दूसरे शब्दों में, हम SQL से संबंधित सभी आउट ऑफ स्टॉक बुक्स को हटा देते हैं।

इस मामले में, हमें DELETE कथन के साथ एक से अधिक शर्तें निर्दिष्ट करनी होंगी। हमें यह सुनिश्चित करना होगा कि हम केवल आउट ऑफ स्टॉक पुस्तकों को हटा रहे हैं और केवल उन्हीं पुस्तकों को हटा रहे हैं जिनके शीर्षक में SQL शब्द है।

निम्न स्क्रिप्ट देखें:

-- Delete all the out of stock (Where Stock is 0) SQL related (Title contains SQL) books (rows) from the table Book 
DELETE FROM dbo.Book
WHERE Title LIKE '%SQL%' and Stock=0

हटाने के बाद डेटा देखें

हम अंतिम बार डेटा देखते हैं:

महत्वपूर्ण युक्ति :इससे पहले कि आप डेटा मिटाएं, उसी शर्त के आधार पर सेलेक्ट स्टेटमेंट चलाएँ जिसे आप डिलीट करने के लिए इस्तेमाल करने जा रहे हैं। इस तरह, आप सुनिश्चित करते हैं कि आपकी हटाने की गतिविधियाँ सही डेटा पर लागू होंगी।

उदाहरण के लिए, यह सुनिश्चित करने के लिए पहले SELECT क्वेरी चलाएँ कि आपको केवल वही पंक्तियाँ मिल रही हैं जो हटाने के लिए हैं:

SELECT * FROM dbo.Book
WHERE Title LIKE '%SQL%' and Stock=0

एक बार जब आप आश्वस्त हो जाते हैं, तो आप अपने चयन को DELETE कथन में बदल सकते हैं:

DELETE FROM dbo.Book
WHERE Title LIKE '%SQL%' and Stock=0

बधाई!

आपने आवश्यकता के अनुसार तालिका से एक या अधिक पंक्तियों को हटाने (हटाने) के कार्य में सफलतापूर्वक महारत हासिल कर ली है।

DELETE कथन के उपयोग के संबंध में उन्नत विलोपन परिदृश्यों और अन्य पेशेवर युक्तियों के लिए संपर्क में रहें।

करने के लिए चीज़ें

अब जब आप तालिका से पंक्तियों को सफलतापूर्वक हटा सकते हैं, तो आप अपने कौशल को और प्रशिक्षित और सुधार सकते हैं:

  1. उन पंक्तियों को निकालने का प्रयास करें जहां स्टॉक में केवल एक आइटम है।
  2. उन सभी पुस्तकों को हटा दें जिनके शीर्षक में संरचना शब्द है।
  3. पुस्तक संख्या (बुकनंबर) 1 को छोड़कर सभी पुस्तकों (पंक्तियों) को हटा दें।

SQL DELETE कथन के बारे में अधिक उन्नत परिदृश्य खोजें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में टॉप क्लॉज का उपयोग करते समय अंतिम स्थान के लिए टाई करने वाले परिणाम कैसे शामिल करें

  2. वापसी मूल्य के साथ संग्रहित प्रक्रिया को कॉल करना

  3. मैं कर्सर का उपयोग किए बिना SQL में चल रहे कुल की गणना कैसे करूं?

  4. SQL सर्वर पर INSERT या UPDATE के लिए समाधान

  5. SQL सर्वर SHOWPLAN_TEXT