MySQL Tables

Introduction to MySQL Tables

एक बार जब आप database create कर लें तो इसके बाद आप उस database में tables create कर सकते है। MySQL में tables rows और columns का combination होती है। Rows को tuples कहा जाता है और columns को fields कहा जाता है। इसका उदाहरण नीचे दिया जा रहा है।

Properties of a MySQL Table

एक MySQL table की 4 basic properties होती है। इन properties को options भी कहा जाता है। इन properties को table create करते समय define किया जाता है। Properties define करने का structure और example आपको next section में बताया जायेगा।

एक बार define करने के बाद कुछ properties की value को बाद में ALTER command द्वारा change किया जा सकता है। इन properties के बारे में नीचे दिया जा रहा है।

  1. ENGINE – इस property के द्वारा आप ये define करते है की table कौनसा storage engine यूज़ करेगी। MySQL आपको 4 storage engines provide करती है। आप अपनी need के according इन्हें यूज़ कर सकते है। MySQL द्वारा provide किये गए storage engines इस प्रकार है।
    1. MyISAM
    2. InnoDB
    3. MEMORY
    4. MERGE
  2. COMMENT – इस property के द्वारा आप table का description define कर सकते है। इसे documentation purpose के लिए यूज़ किया जाता है। इस property की value 60 characters तक हो सकती है। Text को single quotes के अंदर लिखा जाता है।
  3. CHARACTER SET – इस property के द्वारा character set define किया जाता है।
  4. COLLATE – ये property table के लिए collation define करती है।

Creating MySQL Tables

एक database में tables सबसे महत्वपूर्ण unit होती है। Tables के द्वारा ही database structure define होता है। Tables create करने से पहले किसी भी database में से tables की जानकारी प्राप्त करने के लिए आप SHOW TABLES statement यूज़ कर सकते है। इसका उदाहरण नीचे दिया जा रहा है।

mysql > show tables;

Execute होने पर ये statement उन सभी tables की list show करता है जो database में पहले से exist करती है। ये information कई प्रकार से यूज़ की जा सकती है। आइये अब देखते है की MySQL में tables कैसे create की जाती है।

MySQL में tables create करने का basic syntax नीचे दिया जा रहा है।

CREATE TABLE <table-name>
(
   <column-name>  <column-type> <options>,
   <column-name> <column-type> <options>,
  <constraints>
) <table-options>

इसे create table statement कहा जाता है। आइये अब इस syntax को समझने का प्रयास करते है।

CREATE TABLE एक statement है जो MySQL में tables create करने के लिए यूज़ किया जाता है। इस statement के बाद table का unique नाम दिया जाता है।

<column-name> उस column का नाम होता है जो आप table में create करना चाहते है। ये नाम पूरी table में unique होना चाहिए।

<column-type> के द्वारा ये define किया जाता है की एक particular column में किस तरह का data store किया जायेगा। जैसे character, integer आदि।

Column Options

<options> individual columns के लिए define किये जाते है। ये options किसी भी column के additional behaviour को define करते है। उदाहरण के लिए यदि आप चाहते है की column की value automatically increase हो जाये तो इसके लिए आप AUTO_INCREMENT option यूज़ कर सकते है।

नीचे कुछ column options के बारे में दिया जा रहा है।

  • NULL – ये option define करता है की particular column में NULL values store की जा सकती है।
  • NOT NULL – इस option के द्वारा define किया जाता है की particular column में NULL values allowed नहीं है।
  • DEFAULT – इस option के द्वारा आप column के लिए default value provide कर सकते है। Insertion के समय यदि किसी column की value नहीं दी जाती तो default value store होती है।
  • AUTO_INCREMENT – जैसा की मैने आपको पहले बताया ये option column की values को automatically increase होने के लिए define करता है। ये option integer values के लिए ही define किया जाता है।

Constraints

<constraints> rules होते है जो tables की rows पर apply होने वाले restrictions को define करते है। Constraints को columns पर apply किया जाता है। Constraints की मदद से आप table में किसी भी प्रकार के change को रोक सकते है। Constraints database को consistency provide करते है।

उदाहरण के लिए यदि किसी beginner user को किसी important table का full access दे दिया जाये तो वह उस data को खराब कर सकता है। ऐसी situation में constraints उसे वह action लेने से रोकते है जो database की consistency के लिए appropriate नहीं है। MySQL में यूज़ होने वाले common constraints के बारे में नीचे बताया जा रहा है।

  • Primary Key – Primary key constraint ये बताता है की किसी particular column की value NULL नहीं हो सकती है। और साथ ही इस column की values पूरी table में unique होगी। Primary key के द्वारा आप table में हर row को uniquely identify कर सकते है। ज्यादातर cases में primary key एक integer values का column होता है जैसे की ID आदि।
  • Unique Key – Unique key constraint भी primary key की तरह ही होता है लेकिन ये constraint NULL values का storage allow करता है। जिस column पर ये constraint apply होता है उस column की values पूरी table में unique होनी चाहिए। Unique constraint column में user को unique values डालने के लिए बाध्य करता है। यदि किसी भी column की value NULL नहीं है तो इस constraint के द्वारा rows को uniquely identify किया जा सकता है।
  • Foreign Key – Foreign key constraint किसी table की primary key को point करती है। एक foreign key किसी दूसरी table में primary key होती है। ये constraint 2 tables में relation बताता है। ये constraint बताता है की इस table के columns foreign key वाली table से सम्बंधित है। अब तक आपने MySQL में table create करने के basic syntax के बारे में जाना है। आइये अब इसे एक उदाहरण के माध्यम से समझने का प्रयास करते है।
mysql > create table Employee
> (
>      Id INT NOT NULL AUTO_INCREMENT,
>      Name CHAR (20) NOT NULL,
>      Salary INT,
>      primary key (Id)
> );

उपर दिए गए उदाहरण में Employee नाम से एक table create की गयी है। इस table में पहला column Id है जो की integer type का है। इस column पर NOT NULL और AUTO_INCREMENT options apply किये गए है।

दूसरा Name है जो CHAR type का है। और इसकी maximum size 20 है। इस column पर NOT NULL option apply किया गया है। तीसरा column salary है जो की INT type का है। इसके बाद primary key constraint के द्वारा Id column को primary key define किया गया है।

Altering Tables

एक बार table create करने के बाद कई बार ऐसा हो सकता है की उस table का structure need के according नहीं है। ऐसी situation में आप table का structure बदल सकते है और उसमे जरुरत के हिसाब से columns add और remove कर सकते है।

साथ ही आप column definitions (type, size आदि) को भी change कर सकते है। आइये अब जानने का प्रयास करते है की existing tables के structure को कैसे change किया जाता है।

Adding Columns

किसी भी existing table में columns add करने के लिए आप ALTER TABLE statement यूज़ करते है। इसका basic syntax नीचे दिया जा रहा है।

mysql > ALTER TABLE <table_name> ADD COLUMN <column_name> <type(size)> <options>   

आइये अब इसे एक उदाहरण से समझने का प्रयास करते है। मान लीजिये आप ऊपर create की गयी employee table में एक Address नाम का column add करना चाहते है। ऐसा आप इस प्रकार कर सकते है।

mysql > alter table Employee add column Address varchar(20) NOT NULL;

जब आप इस प्रकार columns add करते है तो वह सबसे आखिरी position पर add होता है। लेकिन आप चाहे तो किसी specific location पर भी columns को add कर सकते है। ऐसा आप FIRST और AFTER clauses को यूज़ करके कर सकते है। इसका उदाहरण नीचे दिया जा रहा है।

mysql > alter table Employee add column Address varchar(20) NOT NULL after Name;

Removing Columns

किसी भी column को remove करने के लिए आप ALTER TABLE statement के साथ DROP clause यूज़ कर सकते है। उदाहरण के लिए ऊपर create की गयी table में से यदि आप salary column remove करना चाहते है तो ऐसा आप इस प्रकार कर सकते है।

mysql > alter table Employee drop column salary;  

Changing Columns Definition

यदि आप किसी column का type change करना चाहते है या फिर उसके options change करना चाहते है तो इसके लिए आप ALTER TABLE statement के साथ CHANGE clause यूज़ कर सकते है। इस clause की मदद से आप किसी भी column की definition वापस लिख सकते है।

उदाहरण के लिए मान लीजिये ऊपर create की गयी table में से आप Id column का type change करके int से bigint करना चाहते है तो ऐसा आप इस प्रकार कर सकते है।

mysql > alter table employee change Id bigint not null auto_increment;