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

SQL सर्वर में DROP टेबल स्टेटमेंट को समझना

SQL सर्वर DROP TABLE स्टेटमेंट डेटाबेस से टेबल को ड्रॉप करने का काम करता है। यह लेख कुछ उपयोग परिदृश्यों की व्याख्या करेगा और उदाहरण के द्वारा DROP TABLE कथन के कार्य का वर्णन करेगा।

प्रदर्शन के लिए, हम wideworldimportors . का उपयोग कर रहे हैं डेमो डेटाबेस - आप इसे यहाँ से डाउनलोड कर सकते हैं।

DROP TABLE स्टेटमेंट का सिंटैक्स इस प्रकार है:

Drop table [Database_name].[Schema_name].[table_name]
  • डेटाबेस_नाम : उस डेटाबेस का नाम जिससे आप SQL में तालिका को हटाना चाहते हैं।
  • स्कीमा_नाम : उस स्कीमा का नाम जिसके लिए तालिका मौजूद है। यदि आपने DBO स्कीमा में तालिका बनाई है, तो हम इस पैरामीटर को छोड़ सकते हैं। यदि तालिका गैर-डिफ़ॉल्ट स्कीमा में बनाई गई है, तो हमें स्कीमा नाम का नाम निर्दिष्ट करना होगा।
  • Table_Name : SQL या MySQL में तालिका का नाम जिसे आप हटाना चाहते हैं।

जब हम एक टेबल छोड़ते हैं, तो SQL सर्वर निम्नलिखित क्रियाएं करता है:

  1. डेटा के साथ टेबल ड्रॉप करता है।
  2. तालिका के आंकड़े गिराता है।
  3. उस तालिका से जुड़े इंडेक्स, बाधाओं और प्राथमिक कुंजी को छोड़ देता है। यदि हमारे पास विदेशी कुंजी संबंध हैं, तो हमें चाइल्ड टेबल को छोड़ देना चाहिए।

टेबल छोड़ने से पहले हमें निम्नलिखित बातों का ध्यान रखना चाहिए।

  1. सुनिश्चित करें कि उस तालिका पर निर्भर संग्रहीत कार्यविधियाँ, ट्रिगर और दृश्य बदल जाते हैं या संशोधित हो जाते हैं। आप sp_depends . का उपयोग करके आवश्यक डेटाबेस ऑब्जेक्ट ढूंढ सकते हैं संग्रहीत प्रक्रिया।
  2. हमेशा [database_name].[schema_name].[table_name] का इस्तेमाल करें सही तालिका छोड़ने के लिए प्रारूप।
  3. याद रखें कि SQL सर्वर बैकअप से विशिष्ट तालिका को पुनर्प्राप्त करना असंभव है। यदि आप किसी विशिष्ट तालिका को पुनर्प्राप्त करना चाहते हैं, तो आपको तृतीय-पक्ष उपकरण खरीदना होगा। यदि आपको लगता है कि तालिका को संदर्भ या कस्टम रिपोर्टिंग की आवश्यकता हो सकती है, तो सुनिश्चित करें कि आप एक अन्य प्रतिलिपि बनाकर तालिका का बैकअप तैयार करते हैं।

डेमो सेटअप

डेमो में Wideworldimportors डेटाबेस में tblBusinessEntity . नाम की टेबल हैं , tblCountryRegion, tblCity, और tblग्राहक

  • टेबल tblBusinessEntity और tblग्राहक डिफ़ॉल्ट स्कीमा में हैं, जबकि tblCountryRegion और टीबीएलसिटी देश . में हैं स्कीमा।
  • tblCity एक सिस्टम-संस्करण अस्थायी तालिका है।
  • विदेशी कुंजी बाधा tblBusinessEntity . के बीच है और tblग्राहक टेबल। BusinessEntityID tblCustomer . का कॉलम BusinessEntityID . के संदर्भ tblBusinessEntity . का कॉलम (प्राथमिक कुंजी) टेबल.

मैंने AdventureWorks2017 . से डेटा डाला है INSERT INTO SELECT * FROM स्टेटमेंट की मदद से डेटाबेस।

डेमो सेटअप तैयार करने के लिए T-SQL स्क्रिप्ट इस प्रकार हैं:

Use WideworldImportors
go
CREATE SCHEMA [country]
Go

टेबल बनाएं:

Use WideworldImportors
go
CREATE TABLE [tblBusinessEntity](
	[BusinessEntityID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
	[ModifiedDate] [datetime] NOT NULL,
 CONSTRAINT [PK_BusinessEntity_BusinessEntityID] PRIMARY KEY CLUSTERED 
([BusinessEntityID] ASC))
GO

CREATE TABLE [Country].[tblCountryRegion](
	[CountryRegionCode] [nvarchar](3) NOT NULL,
	[Name] varchar(500) NOT NULL
 CONSTRAINT [Country].[PK_CountryRegion_CountryRegionCode] PRIMARY KEY CLUSTERED 
([CountryRegionCode] ASC))
GO
CREATE TABLE [tblCustomer](
	[BusinessEntityID] [int] NOT NULL,
	[PersonType] [nchar](2) NOT NULL,
	[NameStyle] varchar(15) NOT NULL,
	[Title] [nvarchar](8) NULL,
	[FirstName] varchar(150) NOT NULL,
	[MiddleName] varchar(150) NULL,
	[LastName] varchar(150) NOT NULL,
	[Suffix] [nvarchar](10) NULL,
	[EmailPromotion] [int] NOT NULL,
	[ModifiedDate] [datetime] NOT NULL,
 CONSTRAINT [PK_Person_BusinessEntityID] PRIMARY KEY CLUSTERED 
([BusinessEntityID] ASC))
GO
CREATE TABLE [Country].[tblCity](
	[CityID] [int] NOT NULL,
	[CityName] [nvarchar](50) NOT NULL,
	[StateProvinceID] [int] NOT NULL,
	[LatestRecordedPopulation] [bigint] NULL,
	[LastEditedBy] [int] NOT NULL,
	[ValidFrom] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
	[ValidTo] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
 CONSTRAINT [PK_Country_Cities] PRIMARY KEY CLUSTERED 
(
	[CityID] ASC
),
	PERIOD FOR SYSTEM_TIME ([ValidFrom], [ValidTo])
) ON [USERDATA] TEXTIMAGE_ON [USERDATA]
WITH
(
SYSTEM_VERSIONING = ON ( HISTORY_TABLE = [Country].[City_Archive] )
)
GO

विदेशी कुंजी इंडेक्स बनाएं:

Use WideworldImportors
go
ALTER TABLE [tblCustomer]  WITH CHECK ADD  CONSTRAINT [FK_Person_BusinessEntity_BusinessEntityID] FOREIGN KEY([BusinessEntityID])
REFERENCES [tblBusinessEntity] ([BusinessEntityID])
GO

तालिकाओं में डेटा डालें:

Use WideworldImportors
Go
set identity_insert tblBusinessEntity on
Go
insert into tblBusinessEntity ([BusinessEntityID],[ModifiedDate])
select [BusinessEntityID],[ModifiedDate] from [AdventureWorks2017].[Person].[BusinessEntity]
Go
set identity_insert tblBusinessEntity off
Go
insert into tblCustomer ([BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName],[MiddleName],[LastName],[Suffix],[EmailPromotion],[ModifiedDate])
select [BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName],[MiddleName],[LastName],[Suffix],[EmailPromotion],[ModifiedDate] 
from AdventureWorks2017.Person.Person
Go
insert into [Country].[tblCountryRegion]([CountryRegionCode],[Name]) 
select  [CountryRegionCode],[Name] from [AdventureWorks2017].[Person].[CountryRegion]
Go

एक बार स्क्रिप्ट निष्पादित हो जाने के बाद, हम सत्यापित कर सकते हैं कि क्या ऑब्जेक्ट सही तरीके से बनाए गए हैं और यदि डेटा तालिकाओं में डाला गया है।

तालिकाओं की जाँच करें:

Use WideWorldImporters
Go
select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME in ('tblCustomer','tblCountryRegion','tblBusinessEntity')
Go

आउटपुट:

पंक्तियों की संख्या तालिका में प्राप्त करें:

Use WideWorldImporters
Go
select object_name(object_id) as [Table Name], rows [Total Rows] from sys.partitions 
where object_id in (object_id('tblCustomer'),object_id('country.tblCountryRegion'),object_id('tblBusinessEntity'))
Go

आउटपुट:

आइए अब उदाहरण के द्वारा ड्रॉप टेबल के उपयोग को देखें।

उदाहरण 1:ड्रॉप टेबल स्टेटमेंट का सरल अनुप्रयोग

कभी-कभी टेबल के साथ काम करते समय गलती हो सकती है। ऐसा तब होता है जब कोई उपयोगकर्ता किसी तालिका को DROP करने का प्रयास करता है जो मौजूद नहीं है। इससे बचने का एक आसान तरीका है - SQL DROP TABLE IF EXISTS कमांड का उपयोग करना।

वाक्य रचना इस प्रकार है:

-- use database
USE [MyDatabase];
GO

-- attempt to run DROP TABLE only if it exists 
DROP TABLE IF EXISTS [dbo].[MyTable0];
GO

मैन्युअल रूप से जांचने की कोई आवश्यकता नहीं है कि आप जिस तालिका को छोड़ना चाहते हैं वह पहले से मौजूद है क्योंकि SQL में DROP TABLE IF EXITS कमांड यह आपके लिए करेगा।

यदि आप सभी तालिकाओं को DROP करना चाहते हैं तो आप SQL सर्वर प्रबंधन स्टूडियो (SSMS) का उपयोग कर सकते हैं।

मान लीजिए हम tblCountryRegion . को छोड़ना चाहते हैं हमारे डेटाबेस से तालिका। उसके लिए, निम्न क्वेरी चलाएँ:

use WideWorldImporters
Go
drop table tblCountryRegion

हमें त्रुटि प्राप्त होती है:

Msg 3701, Level 11, State 5, Line 3
Cannot drop the table 'tblCountryRegion' because it does not exist 
or you do not have permission.

जैसा कि पहले उल्लेख किया गया है, गैर-डिफ़ॉल्ट स्कीमा में बनाई गई तालिका को छोड़ने के लिए, हमें [schema_name].[table_name] में DROP TABLE स्टेटमेंट लिखना होगा। प्रारूप

निम्नलिखित क्वेरी चलाएँ:

use WideWorldImporters
Go
drop table [country].[tblCountryRegion]

आउटपुट:

Commands completed successfully.

हमने तालिका को सफलतापूर्वक गिरा दिया है।

उदाहरण 2:एक विदेशी कुंजी वाली तालिका छोड़ें

आइए tblBusinessEntity . को छोड़ दें डेटाबेस से - निम्न क्वेरी चलाएँ:

use WideWorldImporters
Go
Drop table tblBusinessEntity

यह त्रुटि देता है:

Msg 3726, Level 16, State 1, Line 3
Could not drop object 'tblBusinessEntity' because it is referenced 
by a FOREIGN KEY constraint.

जब हम एक विदेशी कुंजी वाली तालिका छोड़ते हैं जो मूल तालिका की प्राथमिक कुंजी को संदर्भित करती है, तो हमें मूल तालिका को छोड़ना होगा, और फिर हम चाइल्ड तालिका को छोड़ सकते हैं।

हमारे मामले में, tblBusinessEntity . को छोड़ने के लिए तालिका, हमें tblCustomer . को छोड़ना होगा टेबल। निम्नलिखित क्वेरी चलाएँ:

use WideWorldImporters
Go
Drop table tblcustomer

इस प्रकार, तालिका को सफलतापूर्वक गिरा दिया गया है।

tblcustomer छोड़ने के बाद , tblBusinessEntity . को छोड़ने के लिए निम्न कथन चलाएँ तालिका:

use WideWorldImporters
Go
Drop table tblBusinessEntity

आउटपुट:

तालिका सफलतापूर्वक गिरा दी गई है।

उदाहरण 3:एक अस्थायी तालिका छोड़ें

सिस्टम-संस्करण वाली अस्थायी तालिकाएँ पहली बार SQL सर्वर 2016 में दिखाई दीं। ये तालिकाएँ हटाए गए और अद्यतन किए गए डेटा को पुनः प्राप्त कर सकती हैं, क्योंकि इतिहास तालिका अस्थायी तालिका में हुए परिवर्तनों को ट्रैक करती है। टेम्पोरल टेबल्स की अवधारणा के बारे में अधिक जानकारी के लिए सिस्टम-संस्करण वाले टेम्पोरल टेबल्स के साथ शुरुआत करना देखें।

टेम्पोरल टेबल को गिराना एक सामान्य टेबल को छोड़ने की प्रक्रिया से अलग है। हमें निम्न चरणों का पालन करना चाहिए:

  1. SYSTEM_VERSIONING बंद करें।
  2. टेम्पोरल टेबल को छोड़ दें।
  3. इतिहास तालिका छोड़ें।

आइए प्रक्रिया की जांच करें - [देश] को छोड़ दें।[शहर] टेबल।

चरण 1:SYSTEM_VERSIONING को बंद करने के लिए निम्न स्क्रिप्ट चलाएँ:

Alter table [Country].[tblCity] set ( SYSTEM_VERSIONING = OFF  )

चरण 2:[देश] को छोड़ दें।[शहर] निम्न DROP TABLE कथन चलाकर तालिका:

drop table [Country].[tblCity]

चरण 3:[देश] को छोड़ दें।[City_Archive] निम्न क्वेरी चलाकर तालिका:

drop table [Country].[City_Archive]

चरण 4:सत्यापित करें कि निम्न क्वेरी निष्पादित करके तालिका को हटा दिया गया है:

Use WideWorldImporters
Go
select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME in ('tblCity')

आउटपुट:

जैसा कि आप देख सकते हैं, तालिका गिरा दी गई है।

सारांश

DROP TABLE स्टेटमेंट तब आवश्यक होता है जब हमें अच्छे के लिए डेटाबेस से कुछ टेबल को हटाने की आवश्यकता होती है। हालाँकि, इस कथन के उपयोग की अपनी ख़ासियतें हैं। हमने कई मानक उपयोग के मामलों और कार्यों के दौरान होने वाली संभावित समस्याओं का पता लगाया है।

हमने यह भी सीखा कि DROP TABLE स्टेटमेंट को सिंगल टेबल, फॉरेन की वाली टेबल और सिस्टम-वर्जन्ड टेम्पोरल टेबल को कैसे लागू किया जाए। आशा है कि यह लेख सहायक होगा।

यह भी पढ़ें

SQL ड्रॉप टेबल स्टेटमेंट और विभिन्न उपयोग के मामले


  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 सर्वर मॉनिटरिंग को स्वचालित करने के लिए PowerShell और SQL डायग्नोस्टिक मैनेजर को मिलाएं

  2. डेटाबेस डिज़ाइन:एक विशाल टेबल या अलग टेबल?

  3. SQL सर्वर में किसी मौजूदा तालिका में डिफ़ॉल्ट मान वाला कॉलम जोड़ें

  4. जहां मौजूद नहीं है वहां मान डालें

  5. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में .csv या Tab सीमांकित फ़ाइल में क्वेरी परिणाम कैसे निर्यात करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 23