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

SQL सर्वर की मूल बातें ALTER TABLE Statement

यह आलेख SQL सर्वर में ALTER TABLE कथन और SQL सर्वर तालिकाओं पर निम्न कार्यों पर केंद्रित है:

  1. मौजूदा तालिका में एक या एक से अधिक कॉलम जोड़ें।
  2. किसी तालिका के एक या एकाधिक स्तंभों को संशोधित करें, विशेष रूप से:
    • कॉलम पर बाधाएं जोड़ें।
    • कॉलम का डेटा प्रकार बदलें।
  3. SQL तालिका के कॉलम को ड्रॉप करें।

प्रदर्शन उद्देश्यों के लिए, मैंने VSDatabase . नामक एक डेटाबेस बनाया है जिसमें मरीजों का डाटा डाला जाएगा। वहां, मैंने tblPatents . नाम की एक तालिका जोड़ी है . तालिका संरचना इस प्रकार है:

तालिका बनाने की स्क्रिप्ट निम्नलिखित है:

Use VSDatabase
Go
create table tblpatients
(
Patient_ID varchar(10),
Patient_name varchar(50),
Address varchar(500),
City varchar(50),
AppointmentDate datetime
)

निम्न स्क्रिप्ट डमी डेटा को tblPatents . में सम्मिलित करती है तालिका:

insert into tblpatients (Patient_ID,Patient_name,Address,City,AppointmentDate)
values
('OPD00001','Nisarg Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-10'),
('OPD00002','Nirali Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-11'),
('OPD00003','Manushi Bhatt ','B-50, Suramya Flats','Surat','2021-02-10'),
('OPD00004','Arjun Bhatt','B-50, Suramya Flats','Surat','2021-02-12'),
('OPD00005','Dixit Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-09')

अब, उदाहरण के द्वारा ALTER TABLE कथन को समझते हैं।

मौजूदा तालिका में एक या गुणक कॉलम जोड़ें

हम ALTER TABLE कमांड का उपयोग करके एक या एक से अधिक कॉलम जोड़ सकते हैं। कॉलम जोड़ने का सिंटैक्स इस प्रकार है:

ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

कहां,

  1. tbl_name :उस तालिका का नाम निर्दिष्ट करें जहाँ आप एक नया कॉलम जोड़ना चाहते हैं।
  2. Column_name_1 डेटाटाइप :कॉलम का नाम और उसका डेटा प्रकार निर्दिष्ट करें। जब आप एक से अधिक कॉलम जोड़ते हैं, तो उनमें से प्रत्येक को अल्पविराम (,) द्वारा अलग किया जाना चाहिए

उदाहरण

मैं first_name . नामक एक नया कॉलम जोड़ना चाहता हूं करने के लिए tblमरीजों . कॉलम जोड़ने के लिए, हम निम्नलिखित क्वेरी चलाते हैं:

ALTER TABLE tblpatients ADD first_name VARCHAR(50)

अब हम कई कॉलम जोड़ते हैं, middle_name और last_name tblPatents . के लिए कॉलम टेबल। ऐसा करने के लिए, हम निम्नलिखित क्वेरी चलाते हैं:

ALTER TABLE tblpatients ADD middle_name VARCHAR(50),last_name VARCHAR(50)

हम information_schema.columns को क्वेरी कर सकते हैं या sys.columns नए जोड़े गए कॉलम की जांच करने के लिए टेबल। प्रश्न निम्नलिखित हैं:

क्वेरी करने के लिए information_schema.columns :

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

आउटपुट:

क्वेरी करने के लिए Sys.columns:

select object_name(object_id) [Table Name],name,max_length from sys.columns where object_id =object_id('tblpatients')

आउटपुट:

जैसा कि आप देख सकते हैं, कॉलम जोड़ दिए गए हैं।

तालिका के स्तंभों को संशोधित करें

अब हम एक टेबल के संशोधित कॉलम का पता लगाना चाहते हैं। सबसे पहले, हमें यह समझना होगा कि हम टेबल के कॉलम का नाम कैसे बदल सकते हैं।

मौजूदा तालिका का डेटा प्रकार बदलें

कॉलम के डेटाटाइप को बदलने के लिए ALTER TABLE का सिंटैक्स है:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype

कहां,

  • tbl_name :टेबल का नाम जहां आपको कॉलम के डेटाटाइप को बदलने की जरूरत है।
  • Column_name :कॉलम का नाम और डेटा प्रकार। हमें नए डेटा प्रकार को ALTER COLUMN कीवर्ड के बाद निर्दिष्ट करना होगा।

आइए एड्रेस कॉलम के डेटाटाइप को बदलें। पता कॉलम की वर्तमान लंबाई वर्कर (1000) है। हमें कॉलम की लंबाई को varchar(50) में बदलना होगा।

डेटा प्रकार को संशोधित करने की क्वेरी इस प्रकार है:

Alter table tblpatients alter column address varchar(50)

जब हम SQL क्वेरी चलाते हैं, तो हमें निम्न त्रुटि प्राप्त होती है:

Msg 2628, Level 16, State 1, Line 1
String or binary data would be truncated in table 'VSDatabase.dbo.tblpatients', column 'Address'. Truncated value: ''.

इसलिए, कॉलम की लंबाई को कम करते हुए, हमें रिकॉर्ड की अधिकतम लंबाई की समीक्षा करनी चाहिए और उसके आधार पर इसे बदलना चाहिए। हमारे मामले में, हम पते में रिकॉर्ड की अधिकतम लंबाई की पहचान करने के लिए निम्न क्वेरी चलाते हैं कॉलम:

select len(Address) [Maximum length of column],Address from tblpatients

आउटपुट:

आउटपुट के अनुसार, एड्रेस कॉलम की न्यूनतम लंबाई वर्चर (25) होनी चाहिए।

कॉलम की लंबाई बदलने के लिए निम्न क्वेरी चलाएँ:

Alter table tblpatients alter column address varchar(25)

लंबाई सत्यापित करने के लिए निम्न क्वेरी चलाएँ:

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

आउटपुट:

जैसा कि आप देख सकते हैं, कॉलम की लंबाई सफलतापूर्वक बदल दी गई है।

कॉलम पर प्रतिबंध जोड़ें

हम ALTER TABLE स्टेटमेंट का उपयोग करके कॉलम में एक बाधा जोड़ सकते हैं। ALTER TABLE सिंटैक्स इस प्रकार है:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

कहां,

  • tbl_name :टेबल का नाम जहां आपको कॉलम के डेटाटाइप को बदलने की जरूरत है।
  • Column_name :कॉलम का नाम और डेटा प्रकार। ALTER COLUMN कीवर्ड के बाद नया डेटाटाइप निर्दिष्ट करें।
  • Constraint_name :बाधा का प्रकार। यह निम्न में से कोई भी बाधा होनी चाहिए:
    • अद्वितीय
    • शून्य नहीं
    • जांचें
    • डिफ़ॉल्ट
    • प्राथमिक कुंजी
    • विदेशी कुंजी

मान लीजिए कि आप एक NOT NULL add जोड़ना चाहते हैं शहर . पर प्रतिबंध कॉलम। निम्न तालिका बदलें चलाएँ कथन:

Alter table tblpatients alter column Patient_name varchar(50) not null

प्राथमिक कुंजी . जोड़ने का सिंटैक्स यदि आप रोगी_आईडी . पर प्राथमिक कुंजी जोड़ना चाहते हैं तो बाधा भिन्न है कॉलम। बाधा जोड़ने के लिए, निम्न क्वेरी निष्पादित करें:

Alter table tblpatients add primary key (Patient_ID)

आपको निम्न त्रुटि प्राप्त होगी:

Msg 8111, Level 16, State 1, Line 17
Cannot define PRIMARY KEY constraint on nullable column in table 'tblpatients'.
Msg 1750, Level 16, State 0, Line 17
Could not create constraint or index. See previous errors.

त्रुटि को ठीक करने के लिए, हमें Patient_ID पर एक NOT NULL बाधा बनानी होगी कॉलम। निम्नलिखित क्वेरी चलाएँ:

Alter table tblpatients alter column Patient_ID varchar(50) not null

एक बार बाधा जोड़ने के बाद, हम निम्नलिखित क्वेरी चलाकर प्राथमिक कुंजी जोड़ते हैं:

Alter table tblpatients add primary key (Patient_ID)

प्राथमिक कुंजी सफलतापूर्वक जोड़ दी जाएगी।

टेबल पर बाधा देखने के लिए, निम्न क्वेरी चलाएँ:

SELECT OBJECT_NAME(object_id) AS ConstraintName,
SCHEMA_NAME(schema_id) AS SchemaName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT' AND OBJECT_NAME(parent_object_id)='tblpatients'

आउटपुट:

इस तरह, प्राथमिक कुंजी बाधा बनाई गई है।

तालिका का एक स्तंभ छोड़ें

हम ALTER TABLE स्टेटमेंट का उपयोग करके एक कॉलम ड्रॉप कर सकते हैं। वाक्य रचना है:

ALTER TABLE tbl_name DROP Column column_name

कहां,

  • tbl_name :तालिका का नाम जहां आप एक कॉलम छोड़ना चाहते हैं।
  • Column_name:वह कॉलम जिसे आप टेबल से छोड़ना चाहते हैं।

हमने first_name . जोड़ दिया है और last_name tblPatents . के लिए कॉलम टेबल। इसलिए, हमें रोगी_नाम . की आवश्यकता नहीं है कॉलम।

कॉलम ड्रॉप करने के लिए, निम्न क्वेरी चलाएँ:

Alter table tblpatients drop column Patient_name

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

सारांश

लेख ने ALTER TABLE स्टेटमेंट के उद्देश्य और मूल उपयोग के मामलों की खोज की है। हम टेबल के कॉलम को जोड़, संशोधित और छोड़ सकते हैं, साथ ही ALTER TABLE स्टेटमेंट का उपयोग करके टेबल में बाधाओं को जोड़ सकते हैं। अगले लेख में, मैं कुछ उन्नत प्रबंधन विकल्पों के बारे में बताऊंगा।

यह भी पढ़ें

SQL सर्वर को समझना ALTER TABLE ADD COLUMN स्टेटमेंट


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. M1 Mac (ARM64) पर SQL सर्वर कैसे स्थापित करें

  2. AT TIME ZONE - SQL Server 2016 में एक नई पसंदीदा विशेषता

  3. SQL सर्वर भूगोल डेटा प्रकार की समझ कैसे बनाएं

  4. एकाधिक रिकॉर्ड कैसे सम्मिलित करें और पहचान मूल्य कैसे प्राप्त करें?

  5. SQL सर्वर पूर्ण पाठ खोज एस्केप वर्ण?