MySQL பாகம்: இரண்டு

Databases, Tables மற்றும் Indexes-ன் உருவாக்கம் மற்றும் நிர்வாக முறைகள்

இந்த பாகத்தில் நாம் MySQL-ல் structures-ஐ உருவாக்குவது பற்றியும் மற்றும் அதனை நிர்வாகம் செய்வது பற்றியும் காண்போம். இது MySQL Server-இல் தரவுகள் எவ்வாறு சேமிக்கப்பட்டு மற்றும் ஒழுங்குபடுத்தப்படுகிறது என்பது பற்றிய logical View-ஐக் கொடுக்கும்.

முதலில் நாம் databases, tables, columns மற்றும் indexes பற்றிய ஒரு சில அடிப்படை விஷயங்களைப் பற்றி தெரிந்து கொள்வோம்.

ஒரு சிறிய முன்னுரை: Databases, Tables, Columns மற்றும் Indexes

அடிப்படை MySQL Model-ல் data சேமிக்கப்பட்டு ஒழுங்குபடுத்தப்படுவது பற்றித் தெரிந்து கொள்வது மிகச் சுலபம். முதலில் இந்த அடிப்படை MySQL Model-ஐப் பற்றி தெரிந்து கொள்ளலாம்.

 

1. MySQL Server-ல் ஒன்று அல்லது அதற்கு மேற்பட்ட databases இருக்கும்.

2. ஒவ்வொரு database-ம் ஒரு name மற்றும் ஒன்று அல்லது அதற்கு மேற்பட்ட tables -ஐ கொண்டிருக்கும்.

3. ஒவ்வொரு tables -இம் ஒரு name,table definition மற்றும் ஒன்று அல்லது அதற்கு மேற்பட்ட rows-ஐ கொண்டிருக்கும்.

4. Table definition என்பது ஒன்று அல்லது அதற்கு மேற்பட்ட columns -ஐயும் மற்றும் 0அல்லது அதற்கு மேற்பட்ட Indexes -ஐயும் குறிப்பிடும்.

5. ஒவ்வொரு column -இம் ஒரு name மற்றும் column type -ஐக் கொண்டிருக்கும்.

6. இந்த column types, MySQL-ல் முன்னரே வரையறுக்கப்பட்டதாக இருக்கும். ஒவ்வொரு type-ம் ஒரு name மற்றும் அந்த column -ஆல் ஏற்றுக்கொள்ளப்படும் ஒரு வரையறுக்கப்பட்ட மதிப்புகளைக் குறிக்கும்.

7. Table-ல் இருக்கும் ஒவ்வொரு row-வும், table definition-ல் இருக்கும் ஒவ்வொரு column-இக்கும் ஒரு மதிப்பினைக் கொண்டிருக்கும்.

Indexes என்பது table-இல் ஒரு குறிப்பிட்ட மதிப்பையோ அல்லது column -ஐயோ தேடுவதற்கு MySQL Server எடுத்துக்கொள்ளும் சிரமத்தைக் குறைக்கப் பயன்படும்.

 

Table உருவான விதம்:

 

 

நாம் நமக்கு முக்கியமான ஒரு சிலருடைய தகவல்களை ஒரு சிறிய Address புத்தகத்தில் சேமித்து வைத்துக் கொள்ளும் பழக்கம் எல்லோருக்கும் இருக்கும். இந்த Address புத்தகமும், ஒருவருடைய பெயர், தொலைபேசி எண் மற்றும் முகவரியை எழுதி வைத்துக் கொள்ளும் வகையில் அச்சிடப்பட்டிருக்கும். மேலும் அந்தப் புத்தகத்தின் ஒவ்வொரு பக்கத்திலும் இருக்கும் index tab, அந்தப் பக்கத்தில் எந்த எழுத்தில் தொடங்கும் பெயர்கள் சேமித்து வைக்கப்பட்டுள்ளன என்பதை விளக்கும் வகையில் அமையும். உதாரணத்திற்கு அது போன்ற  புத்தகத்தின் பக்கங்கள் பின்வருமாறு இருக்கும்.

 

 

இவ்வகையான தகவல்களே ஒரு tableஐ உருவாக்குவதற்கு அடிப்படையாக அமைந்தது. அந்தப் புத்தகத்தில் இருக்கும் அச்சிடப்பட்ட விஷயங்களை (நாம் பூர்த்தி செய்ய வேண்டிய விவரங்கள்) columns ஆகவும், நாம் எழுதி வைக்கும் விஷயங்களை (நாம் பூர்த்தி செய்த விவரங்கள்) rows ஆகவும் மாற்றி ஒரு tableஐ பின்வருமாறு உருவாக்கலாம்.

 

அதேபோல் அந்தப் புத்தகத்தில் இருக்கும் index tabக்கு ஈடாக, இந்த tableலிலும் ஒரு columnக்கு indexஐ அமைத்து அதிலுள்ள மதிப்புகளை வரிசைப்படுத்தி வைத்துக் கொள்ளலாம். இது பின்வருமாறு அமையும்.

 

Databases-இன் உருவாக்கம் மற்றும் நிர்வாகம்:

Databases-ஐ உருவாக்கி, நிர்வாகம் செய்வது என்பது மிக எளிமையான வேலை. அவைகள் ஒரு சில பண்புகளுடன் கூடிய ஒரு எளிய containers ஆகவே கருதப்படுகின்றன. ஆகவே ஒரு database-ஐ உருவாக்கி, நிர்வாகம் செய்து கடைசியில் அதை அழிப்பதற்கு என்னென்ன தேவை என்பதை பின்வரும் phrases-ஐ கற்பதன் மூலம் அறியலாம்.

அனைத்து databases-ஐயும் பட்டியலிடல்:-

SHOW DATABASES;

இந்த command நீங்கள் connect செய்துள்ள MySQL Server -இல் இருக்கும் அனைத்து databases -இன் பெயர்களையும் பட்டியலிடப் பயன்படும். நீங்கள் புதிதாக MySQL -ஐ install செய்யும்போது, இந்த command பின்வரும் result -ஐக் கொடுக்கும்

+———-+

| Database |

+———-+

| mysql |

| test |

+———-+

2 rows in set (0.00 sec)

தேவையான databases-ஐ மட்டும் பட்டியலிடல்:-

SHOW DATABASES LIKE ‘my%’;

 

ஒரு word-இல் உள்ள ஒரு பகுதியோ அல்லது அந்த word முழுவதுமாகவோ பொருந்தும் databases -இன் பெயர்களைப் பட்டியலிட இந்த Like operator -ஐப் பயன்படுத்தலாம்.

இதில் Like Operator -இக்கு அடுத்து நாம் குறிப்பிடும் சொல் ஒரு சாதாரண சொல். இந்த Percent(%) அல்லது Underscore(_) குறிகள் தான் இந்த சொல்லுக்கு ஓர் அர்த்தத்தைக் கொடுக்கப் போகிறது.
ஒரு சொல்லுடன் underscore(_) -ஐ சேர்க்கும்போது, இந்த Like Command அந்த Underscore -ஐ ஏதேனும் ஒரே ஒரு எழுத்தால் மட்டுமே replace செய்து, அது போன்ற சொல்லை தேட ஆரம்பிக்கும்.

ஒரு சொல்லுடன் Percentage(%) -ஐ சேர்க்கும்போது, இந்த Like Command அந்த Percent -ஐ 0 அல்லது அதன் தொடர்ச்சியாக எத்தனை  எழுத்துக்கள் வேண்டுமானாலும் இணைத்து அது போன்ற சொல்லை தேட ஆரம்பிக்கும்.

இந்த command -ஐ நீங்கள் புதிதாக install செய்யப்பட்டுள்ள database -இல் run செய்தால் அது பின்வரும் result -ஐக் கொடுக்கும்.

+———-+

| Database |

+———-+

| mysql |

+———-+

1 rows in set (0.00 sec)

Default database –ஐ அமைத்தல்:

USE test;

MySQL install செய்யப்பட்ட பின்பு, அது பற்பல databases -ஐ உள்ளடக்கியிருக்கும். எனவே நாம் run செய்யும் query எந்த database -இல் run செய்யப்பட வேண்டும் என்பதை வெளிப்படையாக அந்த query -இல் குறிப்பிடலாம். இது பின்வருமாறு,

SELECT title FROM library.book;

மாறாக use command -ஐ பின்வருமாறு பயன்படுத்தலாம்.

USE library;

இந்த use command -ஐ பயன்படுத்துவதன் மூலம் நாம் database -இன் பெயரை வெளிப்படையாக query -இல் குறிப்பிடத் தேவையில்லை. use command -இல் குறிப்பிடப்பட்டுள்ள database தானாகவே அதன் பின்வரும் query -களுக்குப் பயன்படுத்தப்படும். இது பின்வருமாறு.

SELECT title FROM library.book;

USE library;

SELECT title FROM book;

 

Database –ஐ உருவாக்குதல்:

CREATE DATABASE library;

இந்த command, library எனும் பெயர் கொண்ட ஒரு புதிய database -யை உருவாக்கும். ஆனால் இந்த database மட்டுமே பயனுள்ளதாக இருக்காது. எப்போது இந்த database – இக்குள் tables உருவாக்கப்படுகிறதோ அப்போதுதான் இது பயனுள்ளதாக அமையும். Tables உருவாக்குவதைப்பற்றி “Creating and Managing Tables” எனும் பகுதியில் காணலாம்.

 

Database –ஐ அழித்தல்:

DROP DATABASE library;

இந்த drop DB Command, ஒரு database -ஐ அதற்குள் இருக்கும் அனைத்து table -களுடனும் சேர்த்து அழிப்பதற்குப் பயன்படுகிறது. இந்த command -ஐ பயன்படுத்தும் போது மிகவும் எச்சரிக்கையாக இருக்க வேண்டும் ஏனெனில் ஒரு முறை இதைப் பயன்படுத்திய பின், அழிக்கப்பட்ட tables -ஐயோ அல்லது databases -ஐயோ திரும்பிக் கொண்டு வருவதற்கு வழியே இல்லை.

Database –இக்கு பெயர் மாற்றம் செய்தல்:-

Databases பொதுவாக பெயர் மாற்றம் செய்யப்படுவதில்லை. MySQL -இல் இதற்காக தனி ஒரு SQL command -ம் இல்லை.
MySQL -இன் பழைய version-களில் பெயர் மாற்றம் என்பது பின்வரும் படிகளில் செய்யப்படுகிறது.

  1. MySQL server-ஐ நிறுத்துதல்.
    2. Database-ஐ குறிக்கும் directory-ஐ பெயர் மாற்றம் செய்தல்
    3. Server -ஐ மீண்டும் தொடங்குதல்.

மேற்கூறிய process, MySQL-இன் தற்போதைய version -களில் பயன்படுத்தப்படும்போது, server ஆல் database -இல் இருக்கும் சில வகை tables -ஐ அடையாளம் கண்டுபிடிக்க இயலவில்லை. எனவே சாதகமாக rename செய்ய பின்வரும் process பயன்படுத்தப்படுகிறது.

1. முதலில் database-இக்குள் இருக்கும் எந்த ஒரு table -இம் பயன்படுத்தப்படவில்லை என்பதை உறுதி செய்ய வேண்டும் இதற்காக MySQL Administrator tool -ஐப் பயன்படுத்தி database -ஐப் பயன்படுத்துவதற்கான அனைத்து உரிமைகளையும் நீக்கிவிட வேண்டும் இதை எவ்வாறு செய்வது என்று பின்னர் காணலாம்.

2. பின் ஒரு புதிய database -யை உருவாக்கி, பழைய database -இக்கு மற்றம் செய்யப்பட வேண்டிய பெயரை இந்த புதிய database -இக்கு கொடுக்க வேண்டும்.

 

3. பின் பழைய database -இல் இருக்கும் ஒவ்வொரு table -இக்கும் SHOW TABLES மற்றும் RENAME TABLE command -ஐப் பயன்படுத்தி, அதை புதிய database -இக்கு மாற்றம் செய்ய வேண்டும்.

4. பழைய database -இன் அனைத்து users -இக்கும், அதே வகையான permissions -ஐ புதிய database -இல் கொடுக்க வேண்டும்.

5. அனைத்தும் ஒழுங்காக இயங்குகிறதா என test செய்து பார்க்கவும்.

6. புதிய database -இல் அனைத்தும் நாம் எதிர்பார்த்தவாறு இயங்குகிறது என உறுதி செய்யப்பட்டவுடன் பழைய database -ஐ அழித்து விடவும்.

Books எனும் database -லிருந்து library எனும் database -இக்கு book,borrower & loan எனும் 3 tables -ஐ இடமாற்றம் செய்வதற்கான code பின்வருமாறு அமையும்.

— Temporarily disable permissions

CREATE DATABASE library;

RENAME TABLE books.book TO library.book;

RENAME TABLE books.borrower TO library.borrower;

RENAME TABLE books.loan TO library.loan;

— Migrate permissions

— Re-enable permission

Tables –இன் உருவாக்கம் மற்றும் நிர்வாகம்:

Table -ஐ உருவாக்கி, நிர்வாகம் செய்வது என்பது database -ஐ உருவாக்கி நிர்வாகம் செய்வதைவிட கொஞ்சம் சிரமமான வேலை.

Table -ஐ உருவாக்கும்போது, ஒரு சில சிரமமான வேலைகளைத் திட்டமிட (E.g: ஒரு column -இக்கு default collation அமைத்தல், ஒரு table -இல் எவ்வளவு terabytes of data சேமித்து வைக்கலாம் என்பதை குறிப்பிடல் போன்றவை) நூற்றுக்கணக்கான options இருக்கின்றன. எனவே நாம் Tables ஐ உருவாக்கி, அதைப் பயன்படுத்துவதற்கான ஒரு சில அடிப்படை phrases -ஐப் பற்றி இந்தப் பகுதியில் காணலாம்.

Tables –ஐ பட்டியலிடல்:-

SHOW TABLES;

SHOW TABLES IN database_name;

SHOW TABLES LIKE ‘word%’;

SHOW TABLES IN database_name LIKE ‘word%’;

முதலில் இங்கு கொடுக்கப்பட்டிருக்கும் SHOW TABLES command, default database -இல் உள்ள அனைத்து tables -ஐயும் பட்டியலிடும்.

அடுத்த command -இல் எந்த database -யைப் பயன்படுத்த வேண்டும் என்பதை நாம் குறிப்பிட்டிருப்பதால், அந்த database -இல் இருக்கும் அனைத்து tables -ஐயும் பட்டியலிடும். 3வது மற்றும் 4வது command ஆனது, Like operator -இல் நாம் குறிப்பிட்டிருக்கும் condition -ஐப் பொறுத்து tables -ஐ பட்டியலிடும்.

Tables –ஐ உருவாக்குதல்:-

CREATE TABLE book (

id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL,

title VARCHAR(255) NOT NULL,

author VARCHAR(255) NOT NULL,

cond ENUM(‘poor’,’good’,’fine’,’mint’) NOT NULL,

PRIMARY KEY (book_id),

);

Tables -ஐ உருவாக்குவது ஒரு கடினமான விஷயம் என்று 2 காரணங்களுக்காக சொல்லலாம். முதலில் tables -ஐ உருவாக்குவதற்கான syntax சற்று கடினமாகவும் மற்றும் பல elements-ஐ கொண்டதாகவும் இருக்கும். பிறகு எவ்வாறு tables -ஐ உருவாக்க வேண்டும் என்பதை விளக்கும் process அதனினும் கடினமாக இருக்கும்.
எனவே இந்த அனைத்து விஷயங்களையும் பயன்படுத்தி ஒரு table -ஐ உருவாக்குவதற்கான code மேலே கொடுக்கப்பட்டுள்ளது. இந்த code -ஐப் பற்றி மேலும் தெரிந்து கொள்ள வலை தளத்தின் உதவியை நாடவும்.

Tables –இக்கு பெயர் மாற்றம் செய்தல்:-

RENAME TABLE old_name TO new_name;
இந்த syntax ஒரு table -இக்கு சுலபமாகவும் நேரடியாகவும் பெயர்மாற்றம் செய்கிறது.

Tables –ஐ நீக்குதல்:-

DROP TABLE table_name;
இந்த syntax ஒரு table-ஐ database -லிருந்து நீக்குவதற்காகப் பயன்படும்.

Tables –ஐ பிரதியெடுத்தல் (Copy செய்தல்):-

CREATE TABLE new_table LIKE old_table;

INSERT new_table SELECT * FROM old_table;

மேலே கொடுக்கபட்டிருக்கும் phrase -இல் உள்ள அந்த இரண்டு queries -இம் ஒன்றாக இணைந்து, ஒரு table -இன் முழு அமைப்பையும் (அதன் indexes மற்றும் table options போன்றவைகளுடன் சேர்த்து) copy செய்கிறது.

Columns –இன் உருவாக்கம் மற்றும் நிர்வாகம்:

Table -ஐ உருவாக்கும் பொழுதே Columns -ம் உருவாக்கப்படுகின்றன. எனவே நாம் column -ல் செய்யும் ஒரு சிறிய மாற்றம் கூட table -ஐ மீண்டும் மறு உருவாக்கம் செய்வதற்கு வித்திடும். ஆகவே எப்பொழுதும் நாம் column -ஐ மாற்றம் செய்வதற்கு முன்பு, tables -ஐ ஒரு back-up எடுத்து வைத்துக்கொள்வது நல்லது.

Columns –ஐ கூட்டுதல்:-

ALTER TABLE table_name

ADD COLUMN [column_definition];

ALTER TABLE book

ADD COLUMN ISBN VARCHAR(10) NOT NULL;
ஏற்கனவே உள்ள table -இல் மற்றுமொரு Column-ஐ இணைப்பது என்பது மிகவும் சுலபமான வேலை.
Create table stmt. -இக்கு பொருந்தும் ஒரு Column definition -ஐ எடுத்துக்கொண்டு, அதன் முன் Alter table table_name column என்று இணைத்தால் போதுமானது.
இங்கு கொடுக்கப்பட்டிருக்கும் முதல் query, syntax -ஐயும், இரண்டாவது query -இல் எவ்வாறு ISBN எனும் Column, book எனும் table-வுடன் இணைக்கப்படுகிறது என்பதையும் குறிக்கிறது.

Column –க்கு பெயர்மாற்றம் செய்தல்:-

ALTER TABLE table_name

CHANGE COLUMN column_name [column_definition];

ALTER TABLE book

CHANGE COLUMN ISBN isbn VARCHAR(10) NOT NULL;

ஒரு table -இல் column definition -ஐ மாற்றுவது என்பது, ஒரு புதிய column-ஐ இணைப்பதற்கு நிகரான process ஆகும். ஆனால் இவ்விரண்டுக்கும் உள்ள ஒரே ஒரு வித்தியாசம் என்னவெனில், Alter table —– add column என்பதற்கு பதிலாக Alter table —– change column என்று கொடுக்க வேண்டும். column definition என்பது அதன் type மற்றும் attributes -இக்கு முன்னர் column name -ஐக் கொண்டிருக்கும். எனவே நீங்கள் column name -ஐ அல்லாமல் column definition -ஐ மட்டும் மாற்றும் போது அந்த statement –இல், column name இரண்டு முறை காணப்படும்.

இங்கு கொடுக்கப்பட்டிருக்கும் முதல் query, syntax -ஐயும், இரண்டாவது query எவ்வாறு book எனும் table -இல் இருக்கும் ISBN எனும் column-ன் name-ம் width-ம் மாற்றப்படுகிறது என்பதைக் குறிக்கிறது.

Column-ஐ நீக்குதல்:-

ALTER TABLE table_name DROP COLUMN column_name;

இது மிகவும் சுலபமான வேலை. ஆனால் column -ஐ ஒருமுறை நீக்கிய பின்பு, அதனை மீண்டும் கொண்டு வர முடியாது என்பதை நினைவில் கொள்ளவும்.

Identifiers –இன் உருவாக்கம் மற்றும் நிர்வாகம்:

Database மற்றும் column names போன்ற MySQL identifiers பெரும்பாலான தருணங்களில் case sensitive ஆகும். எனவே எப்போதும் identifier-க்கு lower case letters -ஐ பயன்படுத்துவதே நல்லது. MySQL அனைத்து platform -களிலும் ஒரே மாதிரியாக நடந்துகொள்ள lower_case_table_names எனும் configuration variable –ஐ 1 என அமைக்கவும். இது அனைத்து case sensitive identifiers -ஐயும் lowercase-ஆக நடத்த உதவும்.

இந்த Identifier names -ஐப் பற்றி மேலும் விவரங்களைத் தெரிந்து கொள்ள பின்வரும் வலை தளத்தின் உதவியை நாடவும்.

Indexes –இன் உருவாக்கம் மற்றும் நிர்வாகம்:

மிகப்பெரிய அளவிலான tables -லிருந்து எந்த அளவுக்கு விரைவாக தரவுகளை எடுக்க முடியும் அல்லது முடியாது என்பதை நிர்ணயிப்பது indexes ஆகும்.

ஒரு table-வுடன் index –ஐ இணைத்தல்:-

CREATE INDEX index_name

ON table_name (column_name, …);

 

CREATE INDEX author ON book (author);

CREATE INDEX author ON book (author(16));

CREATE INDEX title_author ON book (title, author);

Create index எனும் command -ஐப் பயன்படுத்தி ஏற்கனவே இருக்கும் table-ல் உள்ள ஒருசில columns-க்கு index -ஐ அமைக்கலாம்.

இந்த command -ஐ குறிப்பிடும்பொழுது, எந்த table-ல் index -ஐ உருவாக்க வேண்டும், அந்த புதிய index-ன் பெயர் மற்றும் எந்த column-ல் அதனை உருவாக்க வேண்டும் போன்ற தகவல்களை குறிப்பிட வேண்டும்.

மேற்கூறிய query-ல் இத்தகைய தகவல்களை குறிப்பிட்டு ஒரு index எவ்வாறு உருவாக்கப்பட்டிருக்கிறது என்பதைக் காணலாம்.

Index –க்கு பெயர் மாற்றம் செய்தல்:-

Index -க்கு பெயர் மாற்றம் செய்வது என்பது அரிதாக நடக்கும் ஒரு செயல் ஆகும். பொதுவாக ஒரு index அழிக்கப்படும் அல்லது அதன் definition மாற்றப்படும். எனவே ஒரு index -க்கு பெயர் மாற்றம் செய்யவேண்டுமெனில், பழைய index -ஐ அழித்து மீண்டும் புதிய பெயருடன் ஒரு index -ஐ உருவாக்குவதே சிறந்தது.

Index –ஐ அழித்தல்:-

DROP INDEX index_name ON table_name;

DROP INDEX author ON book;
Index -ஐ அழிப்பதற்கான syntax மிகவும் சுலபம். நாம் எந்த table -லிலிருந்து எந்த syntax -ஐ நீக்க வேண்டும் என்று குறிப்பிட்டால் போதுமானது.

 

நித்யா

இவர் cognizant நிறுவனத்தில் Data Warehouse Testing-ல் பணியாற்றி வருகிறார்.

மின்னஞ்சல் : nithyadurai87@gmail.com

வலை : nithyashrinivasan.wordpress.com

%d bloggers like this: