Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

अ याय 9: संरिचत ेरी भाषा (एस यूएल)

9.1 प रचय
हमने िपछले अ याय म रलेशनल डेटाबेस मैनेजमट िस टम (RDBMS) और इसके उ े य के बारे म सीखा है। कई RDBMS ह जैसे क MySQL,
Microsoft SQL Server, PostgreSQL, Oracle, आ द जो हम संबंध से िमलकर एक डेटाबेस बनाने क अनुमित देते ह। ये RDBMS हम ेरी के मा यम से
उस डेटाबेस पर डेटा को टोर करने, पुन ा करने और हेरफेर करने क अनुमित भी देते ह। इस अ याय म, हम सीखगे क MySQL का उपयोग करके डेटाबेस
कैसे बनाएं, पॉ युलेट और ेरी कर।
9.2 संरिचत ेरी भाषा (एस यूएल)
फ़ाइल िस टम के मामले म डेटा तक प ँचने के िलए कसी को एि लकेशन ो ाम िलखना होता है। हालाँ क, डेटाबेस बंधन णािलय के िलए िवशेष
कार क भाषाएँ होती ह िज ह ेरी भाषा कहा जाता है िजनका उपयोग डेटाबेस से डेटा तक प ँचने और हेरफेर करने के िलए कया जा सकता है। संरिचत
ेरी भाषा (एस यूएल) मुख संबंधपरक डेटाबेस बंधन णािलय जैसे क MySQL, ORACLE, SQL सवर, आ द ारा उपयोग क जाने वाली सबसे
लोकि य ेरी भाषा है।
एस यूएल सीखना आसान है य क बयान म वणना मक अं ेजी श द शािमल ह और केस संवेदनशील नह ह। हम SQL का उपयोग करके आसानी से
डेटाबेस बना सकते ह और उसके साथ इंटरै ट कर सकते ह। SQL का उपयोग करने का लाभ यह है क हम यह िन द करने क आव यकता नह है क डेटाबेस
से डेटा कैसे ा कया जाए। इसके बजाय, हम केवल िन द करते ह क या पुन ा कया जाना है, और SQL बाक करता है। हालाँ क इसे एक ेरी भाषा
कहा जाता है, SQL ेरी करने के अलावा और भी ब त कुछ कर सकता है। SQL डेटा क संरचना को प रभािषत करने, डेटाबेस म डेटा म हेरफेर करने,
बाधा क घोषणा करने और हमारी आव यकता के आधार पर डेटाबेस से डेटा को िविभ तरीक से पुन ा करने के िलए टेटमट दान करता है।
इस अ याय म, हम अ याय 8 म चचा क गई छा उपि थित का उपयोग करगे और एक डेटाबेस तैयार करगे। हम यह भी सीखगे क डेटा के साथ डेटाबेस को
कैसे पॉ युलेट कर, डेटा म हेरफेर कर और SQL ेरी के मा यम से डेटाबेस से डेटा पुन ा कर।
9.2.1 MySQL इं टाल करना
MySQL एक ओपन सोस RDBMS सॉ टवेयर है िजसे आिधका रक वेबसाइट https://dev.mysql.com/downloads से आसानी से डाउनलोड कया
जा सकता है। MySQL इं टाल करने के बाद, MySQL स वस शु कर। Mysql> ॉ ट (िच 9.1) क उपि थित का अथ है क MySQL SQL कथन को
वीकार करने के िलए तैयार है।

Figure 9.1: MySQL Shell

SQL का उपयोग करते समय यान रखने यो य कुछ मह वपूण बंदु िन िलिखत ह:
• SQL केस असंवेदनशील है। उदाहरण के िलए, कॉलम नाम 'वेतन' और 'सैलरी' SQL के िलए समान ह।
• हमेशा SQL कथन को अधिवराम (;) के साथ समा कर।
• म टीलाइन SQL टेटमट दज करने के िलए, हम ";" नह िलखते ह। पहली पंि के बाद। हम अगली लाइन पर जारी रखने के िलए एंटर क दबाते ह।
संकेत mysql> फर "->" म बदल जाता है, यह दशाता है क कथन अगली पंि म जारी है। अंितम पंि के बाद, ";" डाल और एंटर दबाएं।
9.3 MySQL म डेटा कार और बाधाएं
हम जानते ह क एक डेटाबेस म एक या अिधक संबंध होते ह और येक संबंध (तािलका) िवशेषता ( तंभ) से बना होता है। येक िवशेषता म डेटा
कार होता है। हम संबंध क येक िवशेषता के िलए बाधा को भी िन द कर सकते ह।
9.3.1 डेटा कार क िवशेषता
एक िवशेषता का डेटा कार एक िवशेषता के डेटा मान के कार को इंिगत करता है। यह उन काय को भी तय करता है जो उस िवशेषता के डेटा पर
कए जा सकते ह। उदाहरण के िलए, अंकगिणतीय संचालन सं या मक डेटा पर कया जा सकता है ले कन वण डेटा पर नह । MySQL म आमतौर पर उपयोग
कए जाने वाले डेटा कार सं या मक कार, दनांक और समय कार और ंग कार होते ह जैसा क तािलका 9.1 म दखाया गया है।
तािलका 9.1 MySQL म आमतौर पर उपयोग कए जाने वाले डेटा कार
डेटा का कार िववरण
CHAR(n) लंबाई n के वण कार के डेटा को िन द करता है जहां n 0 से 255 तक कोई भी मान हो सकता है। CHAR
िनि त लंबाई का है, िजसका अथ है, CHAR (10) घोिषत करना 10 वण के िलए र थान आरि त
करना है। य द डेटा म 10 वण नह ह (उदाहरण के िलए, 'शहर' म चार वण ह), MySQL शेष 6 वण को
दा ओर ग ेदार र थान से भरता है।
VARCHAR(n) लंबाई का वण कार डेटा िन द करता है जहां n 0 से 65535 तक कोई भी मान हो सकता है। ले कन
CHAR के िवपरीत, VARCHAR(n) एक चर-लंबाई डेटा कार है। यानी, VARCHAR (30) घोिषत करने का
मतलब है क अिधकतम 30 वण सं हीत कए जा सकते ह ले कन वा तिवक आवं टत बाइट दज क गई
ंग क लंबाई पर िनभर करेगा। तो वचर (30) म 'शहर' केवल 4 वण को सं हीत करने के िलए
आव यक थान पर क जा कर लेगा।
INT INT एक पूणाक मान िन द करता है। येक INT मान म 4 बाइट सं हण होता है। 4 बाइट पूणाक कार
म अनुमत अह ता रत मान क सीमा 0 से 4,294,967,295 है। इससे बड़े मान के िलए, हम BIGINT का
उपयोग करना होगा, िजसम 8 बाइ स होते ह।
FLOAT दशमलव बंदु के साथ सं या रखता है। येक FLOAT मान म 4 बाइ स होते ह।
Date दनांक कार 'YYYY-MM DD' ा प म ितिथय के िलए उपयोग कया जाता है। YYYY 4 अंक का वष है,
MM 2 अंक का महीना है और DD 2 अंक क तारीख है। सम थत रज '1000-01-01' से '9999-12-31'
तक है।

9.3.2 बाधाएं
ितबंध डेटा मान पर कुछ कार के ितबंध ह जो एक िवशेषता हो सकते ह। तािलका 9.2 SQL म आमतौर पर उपयोग क जाने वाली कुछ बाधा
को सूचीब करती है। उनका उपयोग डेटा क शु ता सुिनि त करने के िलए कया जाता है। हालां क, कसी तािलका क येक िवशेषता के िलए बाधा
को प रभािषत करना अिनवाय नह है।
तािलका 9.2 आमतौर पर इ तेमाल क जाने वाली SQL बाधाएं
बाधा िववरण
NOT NULL यह सुिनि त करता है क एक कॉलम म NULL मान नह हो सकते ह जहाँ NULL का अथ है
अनुपल ध/अ ात/लागू नह होने वाला मान।
UNIQUE सुिनि त करता है क एक कॉलम म सभी मान अलग/अि तीय ह।
DEFAULT य द कोई मान दान नह कया गया है तो कॉलम के िलए िन द िडफ़ॉ ट मान।
PRIMARY KEY वह कॉलम जो कसी तािलका म येक पंि / रकॉड को िविश प से पहचान सकता है।
FOREIGN KEY कॉलम जो कसी अ य तािलका म ाथिमक कुंजी के प म प रभािषत एक िवशेषता के मू य को
संद भत करता है।

9.4 डेटा प रभाषा के िलए SQL


डेटा को टोर करने म स म होने के िलए हम पहले रलेशन क मा को प रभािषत करना होगा। क मा को प रभािषत करने म संबंध बनाना और
संबंध को नाम देना, संबंध म िवशेषता क पहचान करना, येक िवशेषता के िलए डेटाटाइप पर िनणय लेना और आव यकता के अनुसार बाधा को
िन द करना शािमल है। कभी-कभी, हम संबंध क मा म भी प रवतन करने क आव यकता हो सकती है। SQL हम रलेशन क मा को प रभािषत करने,
संशोिधत करने और हटाने के िलए टेटमट िलखने क अनुमित देता है। ये डेटा डे फिनशन ल वेज (DDL) का िह सा ह।
हम पहले ही जान चुके ह क डेटा को डेटाबेस म संबंध या तािलका म सं हीत कया जाता है। इसिलए, हम कह सकते ह क डेटाबेस तािलका का
एक सं ह है। Create टेटमट का उपयोग डेटाबेस और उसके टेबल ( रलेश स) बनाने के िलए कया जाता है। डेटाबेस बनाने से पहले, हम डेटाबेस म मौजूद
तािलका क सं या, येक तािलका म कॉलम (िवशेषताएँ) के साथ-साथ येक कॉलम के डेटा कार और इसक बाधा, य द कोई हो, के बारे म प होना
चािहए।
9.4.1 डेटाबेस बनाएँ
डेटाबेस बनाने के िलए, हम CREATE DATABASE टेटमट का उपयोग करते ह जैसा क िन िलिखत संटै स म दखाया गया है:
डेटाबेस डेटाबेस नाम बनाएँ;
टूडट अटडस नामक डेटाबेस बनाने के िलए, हम mysql ॉ ट पर िन कमांड टाइप करगे।

mysql> CREATE DATABASE StudentAttendance;


Query OK, 1 row affected (0.02 sec)
नोट: LINUX वातावरण म, डेटाबेस और तािलका के नाम केस-संवेदी होते ह जब क WINDOWS म, ऐसा कोई अंतर नह होता है। हालां क, एक
अ छे अ यास के प म, डेटाबेस/टेबल का नाम उ ह अ र के मामल म िलखने का सुझाव दया जाता है जो उनके िनमाण के समय उपयोग कए गए
थे।
एक DBMS एक कं यूटर पर कई डेटाबेस को मैनेज कर सकता है। इसिलए, हम उस डेटाबेस का चयन करने क आव यकता है िजसका हम उपयोग
करना चाहते ह। मौजूदा डेटाबेस के नाम जानने के िलए, हम SHOW DATABASES टेटमट का उपयोग करते ह। सूचीब डेटाबेस से, हम उपयोग
कए जाने वाले डेटाबेस का चयन कर सकते ह। एक बार डेटाबेस का चयन करने के बाद, हम टेबल बनाने या डेटा ेरी करने के साथ आगे बढ़ सकते ह।
छा उपि थित डेटाबेस का उपयोग करने के िलए, िन िलिखत SQL कथन क आव यकता है।
mysql> USE StudentAttendance;
Database changed
ारंभ म, बनाया गया डेटाबेस खाली है। इसे शो टेबल टेटमट का उपयोग करके चेक कया जा सकता है जो डेटाबेस के भीतर सभी टेबल के नाम को
सूचीब करता है।
mysql> USE StudentAttendance;
Database changed

9.4.2 तािलका बनाएं


एक डेटाबेस छा उपि थित बनाने के बाद, हम इस डेटाबेस म संबंध को प रभािषत करने और येक िवशेषता के िलए डेटा कार और बाधा
(य द कोई हो) के साथ येक संबंध के िलए िवशेषता को िन द करने क आव यकता है। यह एट टेबल टेटमट का उपयोग करके कया जाता है।
वा य - िव यास:
CREATE TABLE tablename(
attributename1 datatype constraint,
attributename2 datatype constraint,
:
attributenameN datatype constraint);
CREATE TABLE टेटमट के संबंध म िन िलिखत बंदु का पालन करना मह वपूण है:
• एक तािलका म तंभ क सं या उस संबंध क िड ी को प रभािषत करती है, िजसे एन ारा दशाया जाता है।
• िवशेषता नाम तािलका म कॉलम का नाम िन द करता है।
• डेटाटाइप उस डेटा के कार को िन द करता है िजसे एक िवशेषता धारण कर सकती है।
• बाधा एक िवशेषता के मू य पर लगाए गए ितबंध को इंिगत करती है। िडफ़ॉ ट प से, येक िवशेषता ाथिमक कुंजी को छोड़कर NULL मान ले
सकती है।
आइए हम तािलका STUDENT क िवशेषता के डेटा कार को उनक बाधा (य द कोई हो) के साथ पहचान। एक क ा म अिधकतम छा को
100 मानते ए और 1 से 100 के म म रोल नंबर के मान, हम जानते ह क रोलनंबर िवशेषता के िलए मू य को सं हीत करने के िलए 3 अंक पया ह।
इसिलए, डेटा कार INT इस िवशेषता के िलए उपयु है। छा के नाम (SName) म वण क कुल सं या िभ हो सकती है। कसी नाम म अिधकतम वण
को 20 मानते ए, हम SName कॉलम के िलए VARCHAR(20) का उपयोग करते ह। िवशेषता के िलए डेटा कार SDateofBirth DATE है और मान लीिजए
क कूल अिभभावक के 12 अंक क आधार सं या को GUID के प म उपयोग करता है, हम GUID को CHAR (12) के प म घोिषत कर सकते ह य क
आधार सं या िनि त लंबाई क है और हम GUID पर कोई गिणतीय संचालन नह करने जा रहे ह।
तािलका 9.3, 9.4 और 9.5 मशः छा , अिभभावक और उपि थित संबंध क येक िवशेषता के िलए चुने गए डेटा कार और बाधा को दशाती है।
तािलका 9.3 संबंध छा क िवशेषता के िलए डेटा कार और बाधाएं
उ रदायी ठहराने के िलए नाम डेटा सं हीत होने क उ मीद है डाटा कार बाधा
रोल नंबर सं या मक मान िजसम अिधकतम 3 अंक ह INT ाथिमक कुंजी
SName अिधकतम 20 वण क िभ लंबाई ंग VARCHAR(20) अश नह
SDateofBirth दनांक मान दनांक अश नह
GUID सं या मक मान िजसम 12 अंक होते ह CHAR (12) िवदेशी कुंजी

तािलका 9.4 संबंध संर क क िवशेषता के िलए डेटा कार और बाधाएं


उ रदायी ठहराने के िलए नाम डेटा सं हीत होने क उ मीद है डाटा कार बाधा
GUID 12 अंक के आधार से यु सं या मक मान CHAR (12) ाथिमक कुंजी
सं या
GName अिधकतम 20 . क िभ लंबाई वाली ंग VARCHAR(20) अश नह
पा
GPhone 10 अंक से यु सं या मक मान CHAR (10) पूण अि तीय
GAddress वे रएंट क लंबाई 30 वण क ंग VARCHAR(30) अश नह

तािलका 9.5 संबंध उपि थित क िवशेषता के िलए डेटा कार और बाधाएं
उ रदायी ठहराने के िलए नाम डेटा सं हीत होने क उ मीद है डाटा कार बाधा
उपि थित दनांक दनांक मान DATE ाथिमक कुंजी*
रोल नंबर सं या मक मान िजसम अिधकतम 3 अंक ह INT ाथिमक कुंजी*
िवदेशी कुंजी
उपि थित ि थित 'पी' वतमान के िलए और 'ए' अनुपि थत के CHAR (1) अश नह
िलए
* का अथ है सम ाथिमक कुंजी का िह सा।
एक बार डेटा कार और बाधा क पहचान हो जाने के बाद, आइए हम सरलीकरण के िलए िवशेषता नाम के साथ बाधा को िन द कए िबना
टेबल बनाते ह। हम भाग 9.4.4 म िवशेषता पर बाधा को शािमल करना सीखगे।

उदाहरण 9.1 िव ाथ तािलका बनाएँ।


mysql> CREATE TABLE STUDENT(
-> RollNumber INT,
-> SName VARCHAR(20),
-> SDateofBirth DATE,
-> GUID CHAR (12),
-> PRIMARY KEY (RollNumber));
Query OK, 0 rows affected (0.91 sec)
नोट: "," का उपयोग दो िवशेषता को अलग करने के िलए कया जाता है और येक कथन अध-कॉलन (;) के साथ समा होता है। तीर (->) एक
इंटरैि टव िनरंतरता संकेत है। य द हम एक अधूरा टेटमट दज करते ह, तो SQL शेल हमारे ारा बाक टेटमट म वेश करने क ती ा करेगा।
9.4.3 तािलका का वणन कर
हम DESCRIBE टेटमट या DESC टेटमट का उपयोग करके पहले से बनाई गई टेबल क संरचना देख सकते ह।
Syntax:
DESCRIBE tablename;
mysql> DESCRIBE STUDENT;

4 rows in set (0.06 sec)


हम टूडट अटडस डेटाबेस म टेबल देखने के िलए SHOW TABLES टेटमट का उपयोग कर सकते ह। अभी तक हमारे पास केवल STUDENT
टेबल है।
mysql> SHOW TABLES;

9.4.4 प रवतन तािलका


एक तािलका बनाने के बाद, हम महसूस कर सकते ह क हम एक िवशेषता जोड़ने/िनकालने या कसी मौजूदा िवशेषता के डेटाटाइप को संशोिधत
करने या िवशेषता म बाधा जोड़ने क आव यकता है। ऐसे सभी मामल म, हम प रवतन कथन का उपयोग करके तािलका क संरचना ( क मा) को
बदलने या बदलने क आव यकता होती है।
(A) संबंध म ाथिमक कुंजी जोड़
आइए अब गितिविध 9.4 म बनाई गई सारिणय को बदल। िन िलिखत MySQL कथन गा डयन संबंध म ाथिमक कुंजी जोड़ता है:
mysql> ALTER TABLE GUARDIAN ADD PRIMARY KEY (GUID);
Query OK, 0 rows affected (1.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
अब हम ाथिमक कुंजी को ATTENDANCE संबंध म जोड़ते ह। इस संबंध क ाथिमक कुंजी दो िवशेषता - अटडसडेट और रोलनंबर से बनी
एक संयु कुंजी है।
mysql> ALTER TABLE ATTENDANCE
-> ADD PRIMARY KEY(AttendanceDate,
RollNumber);
Query OK, 0 rows affected (0.52 sec)
Records: 0 Duplicates: 0 Warnings: 0
(B) एक र ते म िवदेशी कुंजी जोड़
एक बार ाथिमक कुंजी जोड़ दए जाने के बाद, अगला कदम संबंध म िवदेशी कुंजी जोड़ना है (य द कोई हो)। कसी संबंध म िवदेशी कुंजी जोड़ते
समय िन िलिखत बात पर यान देने क आव यकता है:
• संद भत संबंध पहले से ही बनाया जाना चािहए।
• संद भत िवशेषता( ) को संद भत संबंध क ाथिमक कुंजी का िह सा होना चािहए।
• डेटा कार और संद भत और संद भत िवशेषता का आकार समान होना चािहए।
वा य - िव यास:
ALTER TABLE table_name ADD FOREIGN KEY(attribute
name) REFERENCES referenced_table_name
(attribute name);
आइए अब छा तािलका म िवदेशी कुंजी जोड़। तािलका 9.3 से पता चलता है क िवशेषता GUID (संद भत िवशेषता) एक िवदेशी कुंजी है और
यह तािलका GUARDIAN क िवशेषता GUID (संद भत िवशेषता) को संद भत करती है। इसिलए, छा संदभ तािलका है और अिभभावक संद भत
तािलका है जैसा क िपछले अ याय म िच 8.4 म दखाया गया है।
mysql> ALTER TABLE STUDENT
-> ADD FOREIGN KEY(GUID) REFERENCES
-> GUARDIAN(GUID);
Query OK, 0 rows affected (0.75 sec)
Records: 0 Duplicates: 0 Warnings: 0
(C) एक मौजूदा िवशेषता के िलए अि तीय बाधा जोड़
GUARDIAN तािलका म, िवशेषता GPhone म एक बाधा UNIQUE है िजसका अथ है क उस कॉलम म कोई भी दो मान समान नह होने
चािहए।
वा य - िव यास:
ALTER TABLE table_name ADD UNIQUE (attribute name);
आइए अब तािलका GUARDIAN क िवशेषता GPhone के साथ UNIQUE बाधा जोड़ जैसा क तािलका 9.4 म दखाया गया है।
mysql> ALTER TABLE GUARDIAN
-> ADD UNIQUE(GPhone);
Query OK, 0 rows affected (0.44 sec)
Records: 0 Duplicates: 0 Warnings: 0

(D) मौजूदा तािलका म एक िवशेषता जोड़


कभी-कभी, हम तािलका म एक अित र िवशेषता जोड़ने क आव यकता हो सकती है। यह िन िलिखत संटै स म दखाए गए अनुसार ADD
िवशेषता िववरण का उपयोग करके कया जा सकता है:
ALTER TABLE table_name ADD attribute
name DATATYPE;
मान लीिजए, कूल के ंिसपल ने कुछ ज रतमंद छा को छा वृि देने का फैसला कया है, िजसके िलए अिभभावक क आय का पता होना
चािहए। ले कन, कूल ने अब तक टेबल गा जयन के साथ आय िवशेषता को बनाए नह रखा है। इसिलए, डेटाबेस िडज़ाइनर को अब GUARDIAN
तािलका म डेटा कार INT क एक नई िवशेषता आय जोड़ने क आव यकता है।
mysql> ALTER TABLE GUARDIAN
-> ADD income INT;
Query OK, 0 rows affected (0.47 sec)
Records: 0 Duplicates: 0 Warnings: 0
(E) एक िवशेषता के डेटाटाइप को संशोिधत कर
हम िन िलिखत ALTER कथन का उपयोग करके कसी तािलका क मौजूदा िवशेषता के डेटा कार बदल सकते ह।
वा य - िव यास:
ALTER TABLE table_name MODIFY attribute DATATYPE;
मान लीिजए क हम िवशेषता GAaddress के आकार को VARCHAR(30) से VARCHAR(40) GUARDIAN तािलका म बदलने क
आव यकता है। MySQL कथन होगा:
mysql> ALTER TABLE GUARDIAN
-> MODIFY GAddress VARCHAR(40);
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
(F) एक िवशेषता क बाधा को संशोिधत कर
जब हम एक तािलका बनाते ह, तो ाथिमक कुंजी के प म प रभािषत िवशेषता को छोड़कर, िडफ़ॉ ट प से येक िवशेषता NULL मान लेती
है। हम एक प रवतन कथन का उपयोग करके एक िवशेषता क बाधा को NULL से NOT NULL म बदल सकते ह।
वा य - िव यास:
ALTER TABLE table_name MODIFY attribute DATATYPE NOT NULL;
नोट: मॉिडफाई का उपयोग करते समय हम िवशेषता के डेटा कार को बाधा NOT NULL के साथ िन द करना होगा।
तािलका छा क िवशेषता SName (तािलका 9.3) के साथ NOT NULL बाधा को जोड़ने के िलए, हम िन िलिखत MySQL कथन िलखते ह:
mysql> ALTER TABLE STUDENT
-> MODIFY SName VARCHAR(20) NOT NULL;
Query OK, 0 rows affected (0.47 sec)
Records: 0 Duplicates: 0 Warnings: 0
(G) एक िवशेषता के िलए िडफ़ॉ ट मान जोड़
य द हम कसी िवशेषता के िलए िडफ़ॉ ट मान िन द करना चाहते ह, तो िन संटै स का उपयोग कर:
ALTER TABLE table_name MODIFY attribute DATATYPE DEFAULT default_value;
छा के SDateofBirth का िडफ़ॉ ट मान 15 मई 2000 पर सेट करने के िलए, िन िलिखत कथन िलख:
mysql> ALTER TABLE STUDENT
-> MODIFY SDateofBirth DATE DEFAULT ‘2000-05-15’;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
नोट: हम MODIFY का उपयोग करते समय DEFAULT के साथ िवशेषता के डेटा कार को िन द करना होगा।
(H) एक िवशेषता िनकाल
ALTER का उपयोग करके, हम एक तािलका से िवशेषता को हटा सकते ह, जैसा क िन िलिखत संटै स म दखाया गया है:
ALTER TABLE table_name DROP attribute;
To remove the attribute income from table
GUARDIAN (Table 9.4), write the following MySQL
statement:
mysql> ALTER TABLE GUARDIAN DROP income;
Query OK, 0 rows affected (0.42 sec)
Records: 0 Duplicates: 0 Warnings: 0
(I) ाथिमक कुंजी को तािलका से हटा द
कभी-कभी तािलका से ाथिमक कुंजी बाधा को हटाने क आव यकता हो सकती है। उस ि थित म, ऑ टर टेबल कमांड का उपयोग िन िलिखत
तरीके से कया जा सकता है:
वा य - िव यास:
ALTER TABLE table_name DROP PRIMARY KEY;
GUARDIAN तािलका क ाथिमक कुंजी को हटाने के िलए (िच 9.4),िन िलिखत MySQL कथन िलख:
mysql> ALTER TABLE GUARDIAN DROP PRIMARY KEY;
Query OK, 0 rows affected (0.72 sec)
Records: 0 Duplicates: 0 Warnings: 0
नोट: हमने ाथिमक कुंजी को गा डयन तािलका से हटा दया है, ले कन िविश ता बनाए रखने के िलए येक तािलका म ाथिमक कुंजी होनी चािहए।
इसिलए, जैसा क पहले के उदाहरण म दखाया गया है, हम गा डयन टेबल के िलए ाथिमक कुंजी िन द करने के िलए ऑ टर टेबल कमांड के साथ
एडीडी टेटमट का उपयोग करना होगा।
9.4.5 ॉप टेटमट
कभी-कभी डेटाबेस या डेटाबेस म कसी तािलका को िनकालने क आव यकता होती है। हम कसी डेटाबेस या टेबल को िस टम से थायी प से
हटाने के िलए DROP टेटमट का उपयोग कर सकते ह। हालाँ क, इस कथन का उपयोग करते समय ब त सतक रहना चािहए य क इसे पूववत नह
कया जा सकता है।
एक टेबल छोड़ने के िलए संटे स:
DROP TABLE table_name;
डेटाबेस ॉप करने के िलए संटे स:
DROP DATABASE database_name;
नोट: कसी डेटाबेस को हटाने के िलए DROP टेटमट का उपयोग करने से अंततः उसके भीतर क सभी तािलकाएँ िनकल जाएँगी।
9.5 डेटा हेरफेर के िलए एस यूएल
िपछले भाग म, हमने टूडट अटडस का डेटाबेस बनाया था िजसम टूडट, गा जयन और अटडस के तीन संबंध थे। जब हम एक टेबल बनाते ह, तो
केवल उसक संरचना बनाई जाती है ले कन टेबल म कोई डेटा नह होता है। तािलका म अिभलेख को भरने के िलए, INSERT कथन का उपयोग कया
जाता है। साथ ही, DELETE और UPDATE टेटमट का उपयोग करके टेबल रकॉ स को हटाया या अपडेट कया जा सकता है। ये SQL टेटमट डेटा
मैिनपुलेशन ल वेज (DML) का िह सा ह।
डेटाबेस का उपयोग करके डेटा मैिनपुलेशन का अथ है या तो नया डेटा सि मिलत करना, मौजूदा डेटा को हटाना या डेटाबेस म मौजूदा डेटा का
संशोधन करना।
9.5.1 अिभलेख का सि मलन
INSERT INTO टेटमट का उपयोग टेबल म नए रकॉड डालने के िलए कया जाता है। इसका संटै स है:
तािलका नाम म सि मिलत कर
VALUES(मान 1, मान 2,...);
यहां, मान 1 िवशेषता 1 से मेल खाता है, मान 2 िवशेषता 2 से मेल खाता है और इसी तरह। यान द क हम सि मिलत िववरण म िवशेषता नाम
िन द करने क आव यकता नह है य द तािलका म िवशेषता क कुल सं या के प म INSERT कथन म मान क सं या समान है।
सावधानी: िवदेशी कुंजी वाली तािलका म रकॉ स को पॉ युलेट करते समय, सुिनि त कर क संद भत तािलका म रकॉड पहले से ही भरे ए
ह।
आइए हम टूडट अटडस डेटाबेस म कुछ रकॉड डाल। हम पहले गा डयन टेबल म रकॉड डालगे य क इसम कोई िवदेशी कुंजी नह है। गा जयन
तािलका के िलए नमूना अिभलेख का एक सेट दी गई तािलका (तािलका 9.6) म दखाया गया है।
तािलका 9.6 अिभभावक तािलका
िन िलिखत सि मिलत िववरण तािलका म पहला रकॉड जोड़ता है:
mysql> INSERT INTO GUARDIAN
-> VALUES (444444444444, 'Amit Ahuja',
-> 5711492685, 'G-35,Ashok vihar, Delhi' );
Query OK, 1 row affected (0.01 sec)
सि मिलत रकॉड देखने के िलए हम table_name से SQL कथन SELECT * का उपयोग कर सकते ह। अगले भाग म सेले ट टेटमट क
ा या क जाएगी।

य द हम कसी तािलका म केवल कुछ िवशेषता के िलए मान सि मिलत करना चाहते ह (मान लीिजए क अ य िवशेषताएँ िजनम NULL या
कोई अ य िडफ़ॉ ट मान है), तो हम उन िवशेषता नाम को िन द करगे िजनम INSERT INTO के िन िलिखत संटै स का उपयोग करके मान
सि मिलत कए जाने ह। बयान।
वा य - िव यास:
INSERT INTO tablename (column1, column2, ...)
VALUES (value1, value2, ...);
तािलका 9.6 के चौथे रकॉड को सि मिलत करने के िलए जहां GPhone नह दया गया है, हम अ य तीन े म मान सि मिलत करने क
आव यकता है (तािलका िनमाण के समय GPhone को िडफ़ॉ ट प से NULL पर सेट कया गया था)। इस मामले म, हम उन िवशेषता के नाम
िन द करने ह गे िजनम हम मान सि मिलत करना चाहते ह। मान उसी म म दए जाने चािहए िजस म म INSERT कथन म िवशेषताएँ िलखी गई
ह।

You might also like