MY SQL learn in Tamil [1, 1 ed.] [PDF]

  • Author / Uploaded
  • Kumar
  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

ெபா�ளட�க� எ�ய த��� MySQL உ�ைம ந�ெகாைட Main Body MySQL - ஓ� அ��க� SQL Command line client-ஐ பய�ப���த� Databases ப��ய அ��க� Tables ப��ய அ��க� Columns - அ��க� Indexes - அ��க� Library எ�� 'மா�� Databases' -ஐ அைம�த� Library எ�� மா�� Database-�



4



data-ைவ ெச���த� Library எ�� மா�� Database-� இ���� data-ைவ எ��த� Library database-� இ���� ப�ேவ� Tables-ஐ இைண�த� Library எ�� database-� ேச��க�ப������ data-ஐ மா��த� Library எ�� database-� ேச��க�ப������ data-ஐ ���த� Users-ஐ ைகயா�த� MySQL-� Application Programming Interface - API Backup எ��த� ம��� Trouble Shooting ெச�த� Free Tamil Ebooks - எ�கைள� ப��



5



எ�ய த��� MySQL



MySQL பரவலாக பய�ப��த�ப�� ஒ� க�ட�ற



6



ெம�ெபா�� (Free Open Source Software ) வைக�லான Database System. இைத, இ�த �� எ�ைமயாக அ��க� ெச��ற�. த��� க�ட�ற ெம�ெபா��க� ப��ய தகவ�கைள “க�ய�” �� மாத இத�, 2012 �த� ெவ���� வ��ற�.இ�� ெவ�யான MySQL ப��ய க��ைரக�ட�, ேம�� ��ய ப��கைள இைண�� ஒ� �� ��தகமாக ெவ���வ�� ெப� ம���� ெகா��ேறா�. உ�க� க���கைள��, �ைழ ���த�கைள�� [email protected] �� ��ன�ச� அ��பலா�.



7



http://kaniyam.com/mysql-book-in-tamil எ�ற �கவ��� இ��� இ�த �ைல ப��ற�க� ெச�யலா�. உ�க� க���கைள�� இ�ேக ப�ரலா�. ப��� பய� ெபற��, �ற�ட� ப���� ம�ழ�� ேவ���ேறா�. க�ய� இதைழ ெதாட��� வள���� அைன�� அ�ப�க���� எம� ந��க�.



�.��யா [email protected]



8



���லா�க� : �.��யா ���� ெவ��� : FreeTamilEbooks.com உ�ைம – ��ேய��� காம��. எ�லா�� ப��கலா�, ப�ரலா�.



Creative Commons Attribution-ShareAlike 4.0 International License.



9



உ�ைம இ�த �� ��ேய�� காம�� எ�ற உ�ைம�� ெவ��ட�ப��ற� . இத� �ல�, ��க� யா�ட�� ப���� ெகா�ளலா�. ���� எ�� ெவ��டலா�. வ�க �����ய�ப��தலா�. ஆனா�, �ல� ��தக�, ஆ��ய� ம��� www.kaniyam.com ப��ய �வர�கைள ேச��� தர ேவ���. இேத உ�ைமகைள யாவ���� தர ேவ���. ��ேய�� காம�� எ�ற உ�ைம�� ெவ��ட ேவ���. Creative Commons Attribution-ShareAlike 4.0 10



International License.



11



ந�ெகாைட Creative Commons உ�ைம�� தம� ��கைள ெவ���� எ��தாளைர உ�க� ந�ெகாைடக� ஊ������. வ�� �வர�க�. Name – Nithya Duraisamy ICICI – 006101540799 Branch – Mcity branch, chengalpattu. IFSC code – ICIC0000061



12



MySQL - ஓ� அ��க�



Database எ�ப� நம�� ேவ��ய data-ைவ எ�லா� ஓ� ஒ���ப��த�ப�ட, க���ேகா�பான வ��� ேச��க உத�� ஒ� சா��ேவ� ஆ��. SQL(Structured Query Language) எ�ப� database-� data-ைவ ைகயா�வத�� நா� பய�ப���� ஒ� க�� ெமா� ஆ��. RDBMS எ�ப�, ஒ� database-இ� ப�ேவ� இட�க�� ேச��க�ப������ data-ைவ ஒ��ட� ஒ�� ெதாட�� ப��� அதைன ெமா�தமாக



13



��வாக� ெச�ய உத�� ஒ� Management software ஆ��. MySQL எ�ப� இ�வைகயான ஒ� RDBMS Software ஆ��. இ� SQL ெமா��� ம��� அ�லாம� PHP, PERL, C, C++, JAVA ேபா�ற ப�ேவ� க�� ெமா�க��� இய�கவ�ல�. இ� free software வைகைய� ேச��த� ம��� GPL என�ப�� General Public License-�ட� வர���ய�. எனேவ நா� இதைன எ�த�த க�டண�� இ�� Internet-� இ��� இலவசமாக download ெச�� நம� ேதைவ�காக� பய�ப��தலா�.



1.1 MySQL – இ� வ�வைம�� MySQL-ஆன� ப�பல ��கைள உ�ளட��ய



14



ஒ� ெம�ெபா�� அைம�பா��. ெபா�வாக இதைன MySQL server ம��� MySQL client என இர�� வைகயாக� ���கலா�. MySQL client எ�ப� ந�மா� பா��� பய�ப��த� ��ய வைக�� இ���� ஒ� front end tool ஆ��. அதாவ� Windows-� இ���� console prompt ம��� GNU/Linux–� இ���� shell prompt ேபா�றவ��� �லமாக, நா� SQL ெமா��� commands வழ�கலா�. இ�த commands-ஐ� தா� MySQL server ெப���ெகா�� அத���ய ேவைலகைள� ெச�ய� �வ���. MySQL server-� எ�ன �க��ற� எ�ப� ெபா�வாக பயன�க�� க�க���� �ல�படா�. ஆனா� இ�த MySQL server-தா� எ�லா ேவைலகைள�� ெச�� ���� result-ஐ�



15



ெகா����.



இ�த வைரபட��� ப�ேவ� MySQL clients ஆன� ஒ� MySQL Server �ட� இைண�க�ப���ள�. ஒ�ெவா� MySQL client-�� ��வ�� ேவைலகைள� ���ற�. Password ஐ ச�பா��� Authentication ஐ ெதாட��த� நா� ெகா���� SQL Queries ஐ server-�கான Tokens ஆக மா��த� Tokens-ஐ Server-�� வழ��த� Compress அ�ல� Encrypt ெச�ய�ப�ட இைண��கைள க�கா��த�



16



கைட�யாக Server-இட� இ��� �ைடகைள� ெப���ெகா�� அதைன பயன�க���� ெத���த�



MySQL server ஆன� client இட���� request-ஐ ெப���ெகா�� அத���ய response-ஐ ���ப�ெகா����.இ� Management Layer ம��� Storage Engine எ�� இர�� ெப�� ப��கைள உ�ளட����ள� .இைவதா� அ�க அள�� memory, disk ம��� network- �ட� ெதாட�� ெகா���றன.



17



Management Layer ஆன�, MySQL client இட���� ெப�� request-ஐ ைவ���ெகா��, ��வ�� ேவைலகைள� ���ற�. இைண��கைள decrypt அ�ல� decode ெச�த� Queries ஐ ச�பா��� parse ெச�த� Query Cache -���� catched queries -ஐ எ��த� தகவ�கைள Storage Engine-�� அ���த� ேம�� disk-�கான logs-ஐ எ��த� ம��� memory-� logs-ஐ ேச��த� ம��� எ��த� ேபா�ற �ல ேவைலகைள�� ெச��ற�.



18



Storage Engine ஆன� databases, tables, indexes -ஐ ��வ����ற�. ேம�� ஒ��ல logs ம��� �ல ����வர�கைள�� ��வ����ற�. இ� இ�வைகயான dataைவ disk ம��� memory-� ேச���ற�. ேம�� இதைன Network �லமாக ெதாைல�� உ�ள ேவ��ல MySQL server-�� அ���த� ேபா�ற �ல ேவைலகைள�� ெச��ற�.



1.2 MySQL-ஐ install ெச�த�



MySQL-ஐ install ெச���ேபா�, நா� கவ��க



19



ேவ��ய �ஷய�க� ��வ�மா�.



MySQL-ஐ install ெச�வத�� நம�� அ�ம� இ��க ேவ���. ெபா�வாக MySQL-� ஒ� �ர�ைய நம� machine-� install ெச�� ெகா�வ� ந�ல�. இைத �க�� க�னமான �ஷயமாக எ�� வ��த� ேதைவ��ைல. ஏென�� BSD,LinuX, Mac OS X, Solaris ம��� windows ேபா�ற ெப��பாலான platform-� இ�த MySQL-ஆன� எ�தாக install ெச�ய�ப��. MySQL server-ஐ அ��வத�� அைன�� permissions-ஐ�� ெகா�ட ஒ� account இ��க ேவ���.



20



ெபா�வாக MySQL-ஐ �த��த�� install ெச���ேபா� உ�வா�க�ப�� root account இ�வா� அைன�� permissions-ஐ�� ெகா�டதாக அைம��. ��ன� ஒ� MySQL client ேதைவ. ெபா�வாக MySQL command-line அ�ல� MySQL query browser ஆ�யவ�ைற� பய�ப���வ� �ற�த�. இ�த� ப���� உ�ள அைன�� உதாரண�க�� MySQL commandline-ஐ� க���� ெகா�ேட ெகா��க�ப���ளன.



1.3 Ubuntu Linux-� MySQL-ஐ install ெச�த�



21



ச�ப��ய உ��� �ன�� 12.10-� MySQL ���� வ�கைள இ�� கா�ேபா�. இ� debian ம��� ubuntu சா��த Linux Mint distribution-க���� ெபா����. Terminal-� ��வ�� க�டைளைய� தர��. sudo apt-get install mysql-server mysqlclient இ�ேபா� MySQL-�� ேதைவயான ெம�ெபா��க� அைன��� repository-� இ��� download ஆ� install ெச�ய�ப��. இ�ேபா� MySQL-� root user-�கான password ேக�க�ப��. �க�� ��கலான ெசா�ைலேய password ஆக தர ேவ���. MySQL-� ெசய�பா�கைள ேம�� பா�கா�க ��வ�� க�டைளைய இய�க��.



22



sudo mysql_secure_installation இ� ��வ�� ப�கைள� ெச��ற�. 1. Anonymous users-ஐ ���த� 2. localhost-� இ��� ம��ேம root-ஐ அ�ம��த� 3. test database-ஐ ���த�



By default, a MySQL installation has an anonymous user, to log into MySQL without having to have a user account them. This is intended only for testing, and to make t go a bit smoother. You should remove them before movin production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from ' ensures that someone cannot guess at the root password Disallow root login remotely? [Y/n] y ... Success! By default, MySQL comes with a database named 'test' th access. This is also intended only for testing, and sh before moving into a production environment. 23 Remove test database and access to it? [Y/n] y



- Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all cha will take effect immediately. Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, installation should now be secure. Thanks for using MySQL!



அ�வள�தா� MySQL-ஐ �����ேடா�.



1.4 Configuration இ�ேபா� MySQL-� ப�ேவ� configuration options-ஐ� ப��� பா��ேபா�. /etc/mysql எ�ற directory-தா� MySQL-� config directory ஆ��.



24



/etc/mysql/my.cnf எ�ற file ஆன� MySQL-� ெமா�த configuration options-ஐ�� ெகா���ள�. Log file, port number, ip binding, performance என ப�ேவ� options உ�ளன. இ�� �ல options ப�� இ�ேக பா��ேபா�. port=3306 இ� MySQL server-ஆன� 3306 எ�ற port-� இய��வைத� ����ற�. user=mysql �ன��� mysql எ�ற user உ�வா�, அேத user-ஆக server இய���. இதனா� �ன�� server-� பா�கா�� அ�க���ற�.



25



data dir = /var/lib/mysql MySQL-� database அைன��� இ�த folder-� ேச��க�ப���றன. Backup ெச��� ேபா�, இ�த folder-ஐ க���பாக backup ெச�ய ேவ���. bind-address = 127.0.0.1 எ�த ip address-� MySQL server இய�க ேவ��� என இ�ேக தரலா�. log_error = /var/log/mysql/error.log Configuration அ�ல� connection-� �ைழ இ��தா� இ�த file-� log ெச�ய�ப��ற�.



1.5 Query cache



26



MySQL server-� அ��க� இய��� select queries-�, results-� cache-� ேச��� ைவ�க�ப��. இதனா�, server-� �ற�� ேவக�� அ�க���ற�. இத�கான options ��வ�மா�. query_cache_limit = 1m query_cache_size = 16m இ�� m எ�ப� mb ஆ��. நம� RAM-� அளைவ� ெபா��� இைத அ�க��கலா�. உதாரண�. query_cache_limit = 2m query_cache_size=32m இ�த my.cnf file-� எ�த மா�ற� ெச�தா��, 27



MySQL server-ஐ restart ெச�ய ேவ���. MySQL server-ஐ restart ெச�த� sudo service mysql restart MySQL server-ஐ stop ெச�த� sudo service mysql stop MySQL server-ஐ start ெச�த� sudo service mysql start



1.6 MySQL clients Command line client ம����� GUI வ�யாக, MySQL-ஐ பய�ப��த ப�ேவ� clients உ��� �ன��� உ�ளன.



28



MySQL Work Bench sudo apt-get install MySQL-workbench MySQL Navigator sudo apt-get install MySQL-navigator Emma sudo apt-get install emma MySQL Admin sudo apt-get install MySQL-admin PHPMyAdmin sudo aptitude install phpmyadmin



29



1.7 CENTOS/RHEL – � ���த� Fedoro, CentOS ம��� RHEL �ன�� ேபா�ற distribution- ��வ, ��வ�� க�டைளைய இய�க��. yum install mysql mysql-server இ�� root-�� password இ��கா�. ஆனா� இ� பா�கா�பான� அ�ல. /usr/bin/mysqladmin -u root password ‘COMPLEX-PASSWORD-HERE’ எ�ற க�டைள �ல� ��கலான ஒ� password-ஐ root-�� த�� பா�கா�ைப



30



அ�க��கலா�. /usr/bin/mysql-secure-installation �ல� ேம�� பா�கா�� தரலா�.



1.8 Windows-� MySQL-ஐ install ெச�த�



MySQL-� த�ேபாைதய ப��ைப (MySQL Community Server 5.5.29) http://mysql.com /downloads -���� ப��ற�க� ெச�� ெகா�ள��. msi file-ஐ இய�க��.



31



��வ�� �ைர�����க� MySQL 5.1.35 -�கானைவ. — —



32



33



34



35



36



37



38



39



40



41



42



43



44



45



46



47



48



fire wall ஆன� enable ஆ� இ��தா� ��வ�� �ைழ ஏ�ப��.



49



இ�� Port 3306-�� அ�ம� தர��. இ�ேபா� MySQL-� �ைழ ������.



50



51



52



SQL Command line client-ஐ பய�ப���த�



MySQL-�� ப�ேவ� வைகயான clients உ�ளன. அைவக� GUI ெகா�ட desktop application, Internet வ�யாக பய�ப��த���ய web-based applications ம��� shell வ�யாக இய��� text-only applications ேபா�றைவ. இ�த� ப���� MySQL server-�ட� வ�� text-only command line client-ஐ�



53



பய�ப��� எ�வா� MySQL-ஐ அ��வ� எ�� பா��கலா�. ேவ� வைகயான tools பய�பா���� �லபமாக இ��தா��, இ�த MySQL tool-ஐ எ�வா� பய�ப���வ� எ�� க�பத� �ல�, ேவ� வைகயான tool-ஐ அ��வத��� ேதைவயான அ��பைட �ஷய�கைள� க��� ெகா�ளலா�. ேம�� இ�த MySQL tool-தா� அத� server-ஐ பய�ப���வத�� ந��ட� இ���� ஒேர tool. எனேவ இதைன ��ைமயாக க��� ெகா�வத� �ல� ந��ைடய ேவைல��றைன அ�க��கலா�.



2.1 Client �ல� Server-�ட�



54



இைண�ைப ஏ�ப��த�



MySQL-client �ல�, நம� machine-� இய��� MySQL server-ஐ ��வ�மா� இைண�கலா�.



55



இத�கான �� syntax��வ�மா�.



shell> mysql [-h host] [-u user_name] [-p] [db_name] இ�வா� இைண�ைப ஏ�ப����ேபா� பய�ப��த�ப�� optional arguments-ஐ� ��வ�மா� �ள�கலா�. -h : எ�த host-�ட� இைண�ைப ஏ�ப��த ேவ��� எ�பைத� ����ட� பய�ப��ற�. இைத� ����ட��ைலெய��, அ�த machine-� இ���� local server-�ட� இைண�ைப ஏ�ப��த �ய�����. -u : Username-ஐ� ����ட� பய�ப��. இைத� ெகா��க��ைலெய��, அ�



56



தானாகேவ உ�க�ைடய ‘UNIX’ username-ஐ எ����ெகா��, MySQL-� authenticate ெச�ய �ய�����. -p : இ� உ�க�ைடய password-ஐ ����ட� பய�ப��. ��க� உ�க��கான user account-ஐ உ�வா���ேபா�, password இ�லாம� உ�வா�����தா�, இைத� ெகா��க� ேதைவ��ைல. Database_name : ��க� பய�ப��த ����� database-� ெபயைர� ����ட உத��. இைத ��க� ெகா��க��ைலெய��, ெவ�� Use command-ஐ� பய�ப��� ��க� பய�ப��த �����, database-�



57



ெபயைர� ����டலா�.



��க�, ேம�� எ�ென�ன options உ�ள� எ�பைத அ�ய ����னா�, mysql -? என�ெகா��� shell prompt�- run ெச�ய��. இ� அைன�� வைகயான arguments-ஐ�� ப��ய���.



2.2 Client �ல� server-�ட� ஆன 58



இைண�ைப ����த�



��வ�மா� mysql> prompt-� exit என type ெச�வத� �ல� mysql-server�டனான இைண�ைப ����கலா�.



59



2.3 Batch mode-� client-ஐ� பய�ப���த�



ஒ� input file வ�யாக queries-ஐ MySQL-��



60



அ���, அத� result-ஐ ம�ெறா� output file-�� அ���வைத�தா� batch mode எ��ேறா�.



��வ�� உதாரண���, எ�வா� ஒ� எ�ய query-ஐ MySQL-�� அ��� அத� result-ஐ� கா�ப� என� பா��கலா�.



61



இத�கான syntax��வ�மா�.



echo ‘SELECT 1 + 1′ | mysql -u some_user -p



Shell commands-ஐ� ேபா�ேற, இ�த MySQL-� pipes ம��� input redirection-ஐ உ�ளட��ய பலவைகயான shell commands-ஐ� பய�ப����. ��வ�� உதாரண��� இ���� shell command , ஒ� input file-����� அைன�� commands-ஐ�� read ெச�� அைத MySQL-�� அ����ற�. ��ன� இ�த MySQL, ெகா��க�ப���ள username ம��� password-ஐ authenticate ெச�த��,



62



ெப���ெகா�ட அைன�� commands-ஐ�� execute ெச�� அத� �ைடகைள ஒ� output file-�� அ��� ைவ��ற�.



mysql -u user -p < input_file > output_file



2.4 Client-� Command line-� இட� ெபய�த� Unix,Linux ம��� Mac OS X ேபா�ற operating system-� இ���� MySQL, GNU Readline library எ�பைத� பய�ப����. இ� command line-� நா� எ�தாக இட� ெபயர உத�� ஒ� �ற�த tool ஆ��. இ�த readline, 100-��� ேம�ப�ட commands-ஐ



63



உ�ளட��ய�. அவ��� ஒ��லவ�ைற� ��வ�மா� கா�ேபா�.



CTRL+a வ��� ெதாட�க����� ெச��� CTRL+e வ��� ������ ெச��� ALT+b ஒ� வா��ைத ��ேனா��� ெச���. ALT+f ஒ� வா��ைத ��ேனா��� ெச���. CTRL+w ��ேன உ�ள வா��ைதைய ������. CTRL+u command-ஐ ������ CTRL+ l �ைர�� காண�ப�� ேதைவய�ற commands-ஐ ���, �ைரைய 64



��த� ெச��� ALT+u கட�த வா��ைதைய uppercase-ஆக மா���. ALT+l கட�த வா��ைதைய lowercase-ஆக மா��� ALT+_ தவ�தலாக ��க�ப�ட கைட� வா��ைதைய ���ப� ெகா�� வ��.



2.5 Option file-� Connection Defaults- ஐ அைம�த�



ஒ�ெவா� �ைற�� MySQL-ஐ� �வ���ேபா�, இைண����� ேதைவயான



65



�வர�கைள ���ப ���ப ெகா��பத�� ப�லாக, அ�த �வர�கைள எ�லா� ஒ� file-� ைவ��, இ�த file-ஐ MySQL பய�ப���மா� ெச�யலா�. ேதைவ�ப�டா� ��க� இ�த options-ஐ command line-� �ட மா���ெகா�ளலா�. ஒ� MySQL-� இ���� அைன�� instances��� options-ஐ� �����வத�� my.cnf file-ஐ (இ�தா� MySQL-� global configuration file) மா�� அைம�க��. Unix ேபா�ற operating system-� ஒ� �����ட user-�� இ�வைகயான options-ஐ� ����ட, அவ�ைடய home directory-� இ�த .my.cnf file-ஐ உ�வா�� அைம�க��. எ�வைகயான file-ஆக இ��தா��, ஒ�



66



file-��� options-ஐ அைம�பத��� பய�ப���� �ைற ஒ�ேறயா��. �த�� அ�த form-� தைல�ைப மா�ற��. ��ன� இ�த தைல�ைப ெதாட���, ம�ெறா� தைல�� வ��வைர அ�ல� அ�த file ���� வைர இ���� அைன���, MySQL-ஐ� �வ���ேபா� அைவ பய�ப��த� ��ய options ஆ��. இ�த file-� அைம�க�ப�� options-���, command line-� இ���� options-��� இைட�� �க���ய ���யாச�கேள உ�ளன. அைவ ��வ�மா�.



��னா� இ���� 2 ேகா�க�



67



��க�ப���றன. –host எ�பத�� ப�லாக ெவ�� host எ�� ம��� எ�த�ப��. ஒ� option-� �� வா��ைத�� பய�ப��த�ப��. அதாவ� h எ�பத�� ப�லாக host எ�� பய�ப��த�ப��. ஒ� option-� ெபய���� அத� ம������ இைட�� equal sign ேபாட�ப��. Comments-எ�லா� ��னா� ஒ� # -ஐ ைவ�� ����ட�ப��.



ேம�� எ�ென�ன உ�ள� எ�பைத� ெத��� ெகா�ள, mysql -? என run ெச�ய��.



68



2.6 MySQL-� உத�ைய நா�த�



��க� MySQL command-line client-� ேவைல பா����ேபா�, ஏேத�� ஒ� command அ�ல� function-ஐ� ப�� �வர�க� ெத���ெகா�ள,



help command_or_function_name



என ைவ�� enter ெச�ய��. இ� அ�த command அ�ல� function ப��ய ேவ��ய 69



தகவ�கைள� ெகா����. உதாரண���� ‘show tables’ எ�� command-� syntax ம��� பய�பா��ைன� ப�� அ�ய



help show tables



என ைவ�� enter ெச�ய��. இ� ��வ�� output-ஐ� ெகா����.



70



ேம�� MySQL �ல� நம�� �ைட��� உத�க�� ப��யைல� பா��க ,



71



help contents என type ெச�ய��. இ�த command, ஒ� ��ய MySQL server-ஐ பய�ப����ேபா�, நம�� �க�� பய��ளதாக இ����.



2.7 Text editor உத��ட� commands-ஐ மா��த�



MySQL command line-� ��ய queries எ�தாக enter ெச�ய�ப�டா��, ெப�ய queries-ஐ அ��� மா��வ� எ�ப� ச�� க�னமான ேவைல. எனேவ ச�� �ளமான



72



queries-ஐ மா�ற �ய�����ேபா�, அ�த query-� இ���� \e என ெச�� enter-ஐ அ��க��. இ�த $EDITOR எ�� environment variable, நம� query-ைய edit ெச��� வைக��, editor-� கா���. ��ன� ந� ேதைவேக�ப query-ைய மா�� அைம�����, file-ஐ save ெச�த��, editor-ஐ ��� ெவ�வர��. இ�த query-ஆன� MySQL-� load ெச�ய�ப��. ஆனா� execute ெச�ய�படா�. இ� execute ெச�ய�படேவ��ெம��, semicolon (;) அ�ல� \G என type ெச�� enter-ஐ அ��க��. இ� ந�மா� edit ெச�ய�ப�ட அ�த �ளமான query-ைய execute ெச�ய உத��.



73



2.8 Command-line-� Tab-� பய�பா�



ஒ� query-ைய நா� எ���ேபா�, நா� பய�ப���� database, tables அ�ல� column-� ெபய�கைள ��ைமயாக� ����ட� ேதைவ��ைல. அ�த� ெபய�க�� ெதாட�க எ����கைள ம��� எ�� tab அ��தா� ேபா�மான�. அ�த� ெதாட�க எ����கைள ம��� ைவ���ெகா��, MySQL அத� �� ெபயைர�� க������ ெபா������.



74



��க� ஒ� �� table-ஐ உ�வா��னாேலா அ�ல� server-� இ���� ஆவண�கைள மா��னாேலா, \# என type ெச�� enter-ஐ அ��க��. இ� அ�த� ெபய�க�� ப��யைல ம� உ�வா�க� ெச�ய� பய�ப��.



2.9 Command-line history-ைய� பய�ப��த�



MySQL command-line-� இ���� ம��ெமா� �ற�பான அ�ச� எ�னெவ��, ஒ� �����ட session-� இ�வைர நா� பய�ப���ய commands அைன��� buffer ப���� ேச��� ைவ�க�ப��. இ�த�



75



ப������� நம�� ேவ��ய commands-ஐ எ��� , அதைன நா� ���� பய�ப��தலா�. இ�வைர நா� எ�ென�ன commands-ஐ run ெச���ேளா� எ�பைத� பா��க up arrow அ�ல� ctrl+P ைய அ��க��. இ�வா� ��க� பா���� ெகா�ேட����� ேபா�, ��ேநா��� ெச�ல ����னா� down arrow அ�ல� ctrk+n-ஐ அ��க��. ெத���ற query-ைய ���� run ெச�ய ����னா� enter-ஐ அ��க��. ேதைவ�ப�டா�, அ�த query-ைய மா�� அைம��� �ட ���� run ெச�� பா��கலா�. Command history-� ஏேத�� ஒ� �����ட command-ஐ ேதட ேவ��ெம��, ctrl+r என 76



type ெச�� அ�த command-ஐ ��வ�மாக அ��ேதா அ�ல� அத� ஒ� ப��ைய ம��� ெகா��ேதா ேத�� பா��க��.



நா� ெகா��த வா��ைத�ட� ஒ����� ேம�ப�ட commands ெபா���யெத��, ctrl+r என ���� ���� type ெச�� நா� ����ய command வ��வைர ேத��பா��க�� Alt+> எ�ப� buffer-� ேச��� ைவ�க�ப������ கைட� command-ஐ பா��க உத��.



77



அேதேபா� Alt+< எ�ப� buffer-� உ�ள �த� command-ஐ பா��க உத��.



2.10 ேவ��ல பய��ள Tools MySQL Administrator ம��� MySQL query browser ேபா�றைவ ந� அைனவர� கவன�ைத�� ஈ��க���ய ேவ��ல பய��ள tools ஆ��. இைவ MySQL AB-ஆ� க�டண��� இலவசமாக வழ�க�ப���ற GUI Applications ஆ��. இ� open source வைகைய� ேச��த�. ேம�� Cross-Platform-� (Linux,Mac OSX &Windows) இய�கவ�ல�. இ�த MySQL Query Browser, நா� ad-hoc queries-ஐ ெசய�ப���� பா��பத��, ஓ� அ�ைமயான �ழைல உ�வா��� ெகா����. 78



MySQL Administrator-ஆன�, ஒ�� அ�ல� அத�� ேம�ப�ட MySQL server-�ட� ெதாட�� ெகா��� வைக�� ஒ� digital dashboard-ஐ அைம��, அத��ல� productivity-ைய ெவ�வாக அ�க��க� ெச�ய உத��.



79



Databases ப��ய அ��க�



Databases எ�ப� நம�� ேவ��ய data-ைவ எ�லா� ஓ� ஒ���ப��த�ப�ட, க���ேகா�பான வ��� ேச��க உத�� ஒ� container ஆ��. MySQL Server -இ� ஒ�� அ�ல� அத�� ேம�ப�ட databases இ����. ஒ�ெவா� database-� ஒ� ெபயரா� ����ட�ப��. ேம�� அ� ஒ�� அ�ல� அத�� ேம�ப�ட tables -ஐ� ெகா������. Databases -ஐ உ�வா��, ��வாக� ெச�வ� 80



எ�ப� �க�� எ�ைமயான ேவைல. அைவக� ஒ� �ல ப��க�ட� ��ய ஒ� எ�ய containers ஆகேவ க�த�ப���றன. ஆகேவ ஒ� database -ஐ எ�வா� உ�வா��வ� ம��� பய�ப���வ� எ�ப� ப�� இ�� க�கலா�.



3.1 ஒ� ��ய database-ஐ server-� உ�வா��த�



ஒ� database-ஐ உ�வா��வத�� ���, �த�� நா� server-� எ�ென�ன databases ஏ�கனேவ உ�ளன எ�� ெத��� ெகா�ள ேவ���. அத�காக� ��வ��



81



command பய�ப��.



SHOW DATABASES; இ� server-� இ���� அைன�� databases-� ெபய�கைள�� ப��ய���. ��தாக install ெச�ய�ப���ள MySQL-� இ�த command ��வ�� result -ஐ� ெகா����.



82



இ�த� ப��ய�� இ�லாத ஒ� ��ய ெபயைர�தா� நா� உ�வா�க�ேபா�� ��ய database-�� ைவ�கேவ���. இத�கான command��வ�மா�.



CREATE DATABASE exams;



83



இ�த command, “exams” எ�� ெபய� ெகா�ட ஒ� ��ய database-ஐ உ�வா���. ஆனா� தகவ�கைள ேச��பத�� இ�த database ம��� ேபாதா�. இத��� tables



84



உ�வா�க�படேவ���. அ�ேபா�தா� இ�த database ��ைம ெப��. Tables உ�வா��வைத� ப��� ��ன� காணலா�.



3.2 Database-�� ெபய�மா�ற� ெச�த�



Databases ெபா�வாக ெபய�மா�ற� ெச�ய�ப�வ��ைல. MySQL -இ� இத�காக த� ஒ� SQL command -� இ�ைல. MySQL -இ� பைழய version -க�� ெபய�மா�ற� எ�ப� ��வ�� ப�க�� ெச�ய�ப��ற�. 1. MySQL server -ஐ ����த�.



85



2. Database -ஐ ����� directory -ஐ ெபய�மா�ற� ெச�த� 3. Server -ஐ ���� ெதாட��த�. ேம���ய process, MySQL -இ� த�கால version -க�� பய�ப��த�ப��ேபா�, server ஆ� database -இ� இ���� �ல வைக tables -ஐ அைடயாள� க�����க இயல��ைல. எனேவ ஒ� database-�� ெபய�மா�ற� ெச�வ� எ�ப�, அத������ tables-��� ெபய� மா�ற� ெச�வைத� ெபா��� அட����ள�. எனேவ இைத�ப�� ��ன� பா��கலா�.



3.3 ஒ� database-ஐ server���� ���த�:



86



இ�த drop DB Command, ஒ� database -ஐ அத��� இ���� அைன�� table -க�ட�� ேச��� அ��பத��� பய�ப��ற�. இ�த command -ஐ பய�ப���� ேபா� �க�� எ�ச��ைகயாக இ��க ேவ���. ஏென�� ஒ� �ைற இைத� பய�ப���ய ��, அ��க�ப�ட tables -ஐேயா அ�ல� database -ஐேயா ����� ெகா�� வ�வத�� வ�ேய இ�ைல.



DROP DATABASE exams;



87



3.4 USE Command-� பய�பா�



88



MySQL install ெச�ய�ப�ட ���, அ� ப�பல databases -ஐ உ�ளட�������. எனேவ நா� run ெச��� query எ�த database -இ� run ெச�ய�பட ேவ��� எ�பைத ����ட use command பய�ப��.



USE library;



இ�� ����ட�ப���ள database தானாகேவ அத� ��வ�� query -க���� பய�ப��த�ப��. ஆகேவ ெவ��பைடயாக query-� database-� ெபயைர



89



ெவ��பைடயாக� ����ட� ேதைவ��ைல. அதாவ� SELECT title FROM library.book;



என� ����ட� ேதைவ��ைல. ெவ��



SELECT title FROM book;



என� ���தா� ேபா�மான�.



90



3.5 LIKE Operator -� பய�பா�



ஒ� word-� உ�ள ஒ� ப��ேயா அ�ல� அ�த word ��வ�மாகேவா ெபா���� databases-� ெபய�கைள� ப��ய�ட இ�த Like operator -ஐ� பய�ப��தலா�. SHOW DATABASES LIKE ‘my%’;



இ�த command -ஐ ��க� ��தாக install ெச�ய�ப���ள database -இ� run ெச�தா� அ� ��வ�� result -ஐ� ெகா����.



91



இ�� Like Operator-�� அ��� நா� ������ ெசா� ஒ� சாதாரண ெசா�. இ�த Percent(%) அ�ல� Underscore(_) ��க� தா� இ�த ெசா���� ஒ� அ�த�ைத� ெகா��க� ேபா�ற�. ஒ� ெசா��ட� Percentage(%) -ஐ ேச����ேபா�, இ�த Like Command அ�த



92



Percentage -ஐ 0 அ�ல� அத� ெதாட���யாக எ�தைன எ����க� ேவ��மானா�� இைண�� அ� ேபா�ற ெசா�ைல ேதட ஆர�����.



ஒ� ெசா��ட� underscore(_) -ஐ ேச����ேபா�, இ�த Like Command அ�த Underscore-ஐ ஏேத�� ஒேர ஒ� எ��தா� ம��ேம replace ெச��, அ� ேபா�ற ெசா�ைல ேதட ஆர�����.



93



Tables ப��ய அ��க�



ஒ�ெவா� database-��� ஒ�� அ�ல� அத�� ேம�ப�ட tables காண�ப��. ஒ�ெவா� table-� ஒ� ெபயரா� ����ட�ப�வேதா� அ�லாமா� அத�ெக�� ஒ� table definition -ஐ�� ெகா������. ேம�� இ� rows ம��� columns எ�� format-� data-ைவ ேச����. �த�� இ�த table எ�வா� உ�வான� எ�ப� ப�� ��வ�மா� காணலா�.



94



4.1 Table உ�வான கைத



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



95



��வ�மா� இ����.



96



இ�வைகயான தகவ�கேள ஒ� table -ஐ உ�வா��வத�� அ��பைடயாக அைம�த�. அ�த� ��தக��� இ���� அ��ட�ப�ட �ஷய�கைள (நா� ���� ெச�ய ேவ��ய �வர�க�) columns ஆக��, நா� எ�� ைவ��� �ஷய�கைள (நா� ���� ெச�த �வர�க�) rows ஆக�� மா�� ஒ� table -ஐ ��வ�மா� உ�வா�கலா�.



அேதேபா� அ�த� ��தக��� இ���� index-�� ஈடாக, இ�த table -��� ஒ� column-�� index ஐ அைம�� அ���ள ம���கைள வ�ைச�ப��� ைவ��� ெகா�ளலா�. இ� ��வ�மா� அைம��.



97



MySQL Table-� ப��க� ��வ�மா�:



Table எ�ப� ஒ���ைண�க�ப�ட data-�� ெதா���க� ஆ��. Table Body – இ� row வ�ைச�� data-ைவ உ�ளட��ய�. Table definition – இ� அ�தைகய row-�� எ�வைகயான data ேச��� ைவ�க�ப���ள� எ�பைத �வ���� Columns-ஐ உ�ளட��ய�. ஒ�ெவா� Column -� ஒ� Name(eg: book_id) ம��� Type(eg: Integer)-ஐ ெகா������. ஒ�ெவா� Type-� ஒ� வைரய��க�ப�ட ம���கைள உ�ளட��ய�. ெகா��க�ப�� data



98



இ�த வைரய��க�ப�ட எ�ைல���தா� இ��க ேவ���. உதாரண���� ஒ� Column, Integer வைகைய� ேச��த� என வைரய��க�ப�ட ��, அத� ம���கெள�லா� 1 அ�ல� 6502 எ�� இ��க ேவ��ேம த�ர 3.14 எ�ப� ேபா�ற தசம எ�களாக இ��க� �டா�. ஒ�ெவா� row-� தைல��� உ�ள ஒ�ெவா� Column-� �� ஒ� ம���ைன� ெகா������. அ�த ம���க� அ�த Column-� வைரய��க�ப�ட வைகைய� ேச��தைவயாக இ��க ேவ���. Book_id எ�� Column, SMALLINT எ�� Type-ஐ ேச��த� எ��, இ�வைகயான



99



data ம��ேம அ�த row-�� ேச��� ைவ�க�பட ேவ���. ேவ� �ல tables-�ட� ஒ� Relation-� ஈ�ப���ள Columns-� எ���ைக அ�த table-� degree என�ப��. ேவ� �ல tables-�ட� ஒ� Relation-� ஈ�ப���ள rows-� எ���ைக அ�த table-� cardinality என�ப��.



Table -ஐ உ�வா��, ��வாக� ெச�வ� எ�ப� database -ஐ உ�வா�� ��வாக� ெச�வைத�ட ெகா�ச� �ரமமான ேவைல. Table -ஐ உ�வா���ேபா�, ஒ� �ல �ரமமான ேவைலகைள� ��ட�ட (E.g: ஒ�column -இ�� default collation அைம�த�, ஒ� table 100



-இ� எ�வள� terabytes of data ேச��� ைவ�கலா� எ�பைத ����ட� ேபா�றைவ) ����கண�கான options இ����றன. எனேவ நா� Tables -ஐ உ�வா��, அைத� பய�ப���வத�கான ஒ� �ல அ��பைட phrases -ஐ� ப�� இ�த� ப���� காணலா�.



4.2 ஒ� database-� table-ஐ உ�வா��த� 1. �த�� நா� table-ஐ உ�வா��வத�� ���, எ�த database-� tables உ�வா�க�படேவ��� எ�பைத� ����ட ேவ���. இத�காக� ��வ�� command



101



பய�ப��த�ப��. USE exams;



இ�த USE command, ‘exams’ எ�� database-ஐ பய�ப���மா� ப����. எனேவ அ��த��� வ�� queries அைன��� இ�த database-� execute ெச�ய�ப��.



2. ஒ� database-� எ�ென�ன tables ஏ�கனேவ உ�ளன எ�� ெத��� ெகா�ள ��வ�� command-ஐ execute ெச�ய��.



102



SHOW TABLES; இ� database-� இ���� அைன�� tables-� ெபய�கைள�� ப��ய���. இ�த� ப��ய�� இ�லாத ஒ� ��ய ெபயைர�தா� நா� உ�வா�க�ேபா�� ��ய table-�� ைவ�கேவ���.



3. ஒ� tables -ஐ உ�வா��வ� ச�� க�னமான �ஷய� எ�� 2 காரண�க��காக ெசா�லலா�. �த�� tables -ஐ உ�வா��வத�கான syntax ச�� க�னமாக�� ம��� பல elements-ஐ ெகா�டதாக�� இ����. �ற� எ�வா� tables -ஐ உ�வா�க ேவ��� எ�பைத �ள��� process அத��� க�னமாக



103



இ����. எனேவ இ�த அைன�� �ஷய�கைள�� பய�ப��� ஒ� table -ஐ உ�வா��வத�கான code ��வ�மா�.



CREATE TABLE marksheet ( student_id INT, name VARCHAR(255) NOT NULL, marks INT );



இ�த code -ஐ� ப�� �ள�கமாக ��ன� காணலா�.



104



4. Table-ஐ உ�வா��ய�ட�, அத�



105



அைம��ைன ���� ச�பா��க, ��வ�� command-ஐ run ெச�ய��. DESC marksheet;



DESCRIBE marksheet; இ� நா� உ�வா��ய table-� அைம��ைன ெத�வாக� கா�����.



4.3 ஒ� database-� இ���� table-�� ெபய� மா�ற� ெச�த� 106



‘marksheet’ எ�� table-�� ‘marks’எ�� ெபய� மா�ற� ெச�ய ����னா�, அத�காக rename table எ�� command-ஐ பய�ப��தலா�.



RENAME TABLE marksheet TO marks;



107



இ�� marksheetஎ�� table-ஆன� marks எ�� ெபய� மா�ற� ெச�ய�ப����பைத� காணலா�.



4.4 ஒ� database-� இ����



108



table-ஐ Copy ெச�த�



��ன� உ�ள create table commnad, ‘marksheet’ எ�� table-ஐ� ேபா�ேற ‘marks’ எ�� ம�ெறா� table-ஐ உ�வா���.



அ��ததாக உ�ள insert command, ‘marksheet’ table-� இ���� அைன�� தகவ�கைள�� ‘marks’ table-��� ெச��த உத��.



109



CREATE TABLE new_table LIKE old_table;



INSERT new_table SELECT * FROM old_table;



110



ேமேல ெகா��கப������ அ�த இர�� queries -இ� ஒ�றாக இைண��, ஒ� table -இ� �� அைம�ைப�� (அத� indexes ம��� table options ேபா�றைவக�ட� ேச���) copy ெச��ற�.



111



4.5 Tables-இ� �ைண�ட� ஒ�database-�� ெபய�மா�ற� ெச�த�



MySQL -இ� ��ய version -க��, ஒ� database-�� ெபய�மா�ற� ெச�வ� எ�ப�, அத������ tables-��� ெபய� மா�ற� ெச�வைத� ெபா��� அட����ள�. எனேவ database-�� rename ெச�ய ��வ�� process பய�ப��த�ப��ற�. 1. �த�� database -இ��� இ���� எ�த ஒ� table -இ� பய�ப��த�பட��ைல எ�பைத உ�� ெச�ய ேவ���. இத�காக MySQL Administrator tool -ஐ� பய�ப��� 112



database -ஐ� பய�ப���வத�கான அைன�� உ�ைமகைள�� ����ட ேவ��� இைத எ�வா� ெச�வ� எ�� ��ன� காணலா�.



2. �� ஒ� ��ய database -ைய உ�வா��, பைழய database-�� மா�ற� ெச�ய�பட ேவ��ய ெபயைர இ�த ��ய database-�� ெகா��க ேவ���.



3. �� பைழய database -இ� இ���� ஒ�ெவா� table -இ��� SHOW TABLES ம��� RENAME TABLE command -ஐ� பய�ப���, அைத ��ய database -இ��



113



மா�ற� ெச�ய ேவ���. 4. பைழய database -இ� அைன�� users -இ���, அேத வைகயான permissions -ஐ ��ய database -இ� ெகா��க ேவ���. 5. அைன��� ஒ��காக இய���றதா என test ெச�� பா��க��.



6. ��ய database -இ� அைன��� நா� எ��பா��தவா� இய���ற� என உ�� ெச�ய�ப�ட�ட� பைழய database -ஐ அ��� �ட��.



Books எ�� database -���� library எ�� database -இ�� book,borrower & loan எ�� 114



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;



115



– Migrate permissions – Re-enable permissions



4.6 ஒ� database-���� �����ட table -ஐ ���த�



‘Drop table’ command �ல� நா� ஒ� database-���� table-ஐ ����டலா�.



116



DROP TABLE marks;



இ�� ‘marks’ எ�� table, ‘exams’ எ�� database-���� ��க�ப��ற�.



117



4.7 Tables -ஐ ப��ய��� �த�க�



��ன� உ�ள �த� command, default database-� உ�ள அைன�� tables -ஐ�� ப��ய���. 2வ� command-� எ�த database-ஐ� பய�ப��த ேவ��� எ�பைத நா� ��������பதா�, அ�த database -இ� இ���� அைன�� tables -ஐ�� ப��ய���. 3வ� command, Like operator-� நா� ���������� condition -ஐ� ெபா��� tables-ஐ� ப��ய���.



118



SHOW TABLES; SHOW TABLES IN database_name; SHOW TABLES LIKE ‘word%’;



இ�த commands-�கான outputs ��வ�மா�.



119



120



Columns - அ��க�



Table -ஐ உ�வா��� ெபா�ேத Columns -� உ�வா�க�ப���றன. எனேவ நா� column -� ெச��� ஒ� ��ய மா�ற� �ட table -ஐ ���� ம� உ�வா�க� ெச�வத�� �����. ஆகேவ எ�ெபா��� நா� column -ஐ மா�ற� ெச�வத�� ���, tables -ஐ ஒ� back-up எ��� ைவ���ெகா�வ� ந�ல�.



121



5.1 ��யதாக ஒ� column-ஐ table-� ேச��த�



ஏ�கனேவ உ�ள table -இ� ம��ெமா� Column-ஐ இைண�ப� எ�ப� �க�� �லபமான ேவைல. இத�கான syntax ��வ�மா�.



ALTER TABLE table_name ADD COLUMN [column_definition];



இ�� Create table statement.-� நா�



122



ெகா���� Column definition -ஐ� ேபாலேவ, இ��� ஒ� column definition இ��பைத� காணலா�. எனேவ, அத� �� Alter table table_name எ�� இைண�தா� ேபா�மான�.



��வ�� உதாரண��� எ�வா� rank எ�� Column, ‘marksheet’ எ�� table-�ட� இைண�க�ப��ற� எ�பைத� காணலா�.



ALTER TABLE marksheet ADD COLUMN rank VARCHAR(10) NOT NULL;



123



5.2 ஒ� Column-�� ெபய�மா�ற� ெச�த� ஒ� table-� உ�ள column-ஐ மா��வ� எ�ப�, ஒ� ��ய column-ஐ இைண�பத�� �கரான process ஆ��. ஆனா� இ��ர����� உ�ள ஒேர ஒ� ���யாச� எ�னெவ��, Alter table add column



124



எ�பத�� ப�லாக Alter table change column எ�� ெகா��க ேவ���. இத�கான syntax ��வ�மா�.



ALTER TABLE table_name CHANGE COLUMN column_name [column_definition];



column definition எ�ப� அத� type ம��� attributes -இ�� ��ன� column name -ஐ� ெகா������. எனேவ ��க� column name -ஐ அ�லாமா� column definition-ஐ ம��� மா��� ேபா� அ�த statement-�, column



125



name இர�� �ைற காண�ப��. ��வ�� query-�, ‘marksheet’ எ�� table -இ� இ���� ‘rank’ எ�� column-� ெபய� எ�வா� ‘grade’ எ�� மா�ற�ப��ற� என� காணலா�. அ�ேதா�ேச���, width-� மா�ற�ப�வைத� காணலா�.



ALTER TABLE marksheet CHANGE COLUMN rank grade CHAR(6) NOT NULL;



126



5.3 ஒ� column-ஐ table����� ���த�



இ� �க�� �லபமான ேவைல. இத�கான syntax ��வ�மா�.



127



ALTER TABLE table_name DROP COLUMN column_name;



ஆனா� column -ஐ ஒ��ைற ���ய ���, அ�த column ம��� அத� row-� இ���� அ��க�ப�ட data-ைவ ���� ெகா�� வர ��யா� எ�பைத �ைன�� ெகா�ள��.



��வ�� query-�, ‘marksheet’ எ�� table-� இ��� ‘grade’ எ�� column எ�வா� ��க�ப��ற� எ�பைத� காணலா�.



128



ALTER TABLE marksheet DROP COLUMN grade;



129



Indexes - அ��க�



Indexes எ�ப� table-இ� ஒ� �����ட ம��ைபேயா அ�ல� column -ஐேயா ேத�வத�� MySQL Server எ����ெகா��� �ரம�ைத� �ைற�க� பய�ப��. �க�ெப�ய அள�லான tables -���� எ�த அள��� �ைரவாக data -ைவ எ��க ���� அ�ல� ��யா� எ�பைத ��ண��ப� indexes ஆ��.



6.1 ஒ� Index-ஐ table-�



130



உ�வா��த�



Create index எ�� command -ஐ� பய�ப��� ஒ� table-� ஏ�கனேவ இ���� columns-�� index-ஐ அைம�கலா�. இத�கான syntax ��வ�மா�.



CREATE INDEX index_name ON table_name (column_name, …);



இ�த syntax-�, எ�த table-� index -ஐ உ�வா�க ேவ���, அ�த ��ய index-�



131



ெபய� ம��� எ�த column-� அதைன உ�வா�க ேவ��� எ�ப� ேபா�ற தகவ�க� ����ட�ப����பைத� காணலா�.



��வ�� query-� இ�தைகய தகவ�கைள ������ ஒ� index எ�வா� உ�வா�க�ப�����ற� எ�பைத� காணலா�.



CREATE INDEX a ON marksheet (student_id);



132



6.2 ஒ� Index-�� ெபய�மா�ற� ெச�த�



Index -�� ெபய�மா�ற� ெச�வ� எ�ப�



133



அ�தாக நட��� ஒ� ெசய� ஆ��. ெபா�வாக ஒ� index அ��க�ப�� அ�ல� அத� definition மா�ற�ப��. எனேவ ஒ� index -�� ெபய�மா�ற� ெச�யேவ��ெம��, பைழய index -ஐ அ��� ���� ��ய ெபய�ட� ஒ� index -ஐ உ�வா��வேத �ற�த�.



6.3 Index-ஐ அ��த�



Index -ஐ அ��பத�கான syntax �க�� �லப�. நா� எ�த table -����� எ�த index -ஐ ��க ேவ��� எ�� �����டா�



134



ேபா�மான�. இத�கான syntax ��வ�மா�.



DROP INDEX index_name ON table_name;



��வ�� query-� எ�வா� ஒ� index அ��க�ப��ற� எ�பைத� காணலா�.



DROP INDEX a ON marksheet;



135



6.4 Identifiers ப��ய �ள�க�



MySQL Identifiers எ�ப� நா� பய�ப���� database ம��� column names ேபா�றைவேய ஆ��. இைவ ெப��பாலான



136



த�ண�க�� case sensitive ஆ��. எனேவ எ�ேபா�� identifier-�� lower case letters -ஐ பய�ப���வேத ந�ல�. MySQL அைன�� platform -க��� ஒேர மா��யாக நட��ெகா�ள, my.cnf file-� lower_case_table_names எ�� configuration variable –ஐ 1 என அைம�க��. இைத� ��வ�மா� ெச�யலா�.



�த�� shell prompt-� ெச��, ‘my.cnf’-ஐ ‘gedit’-� open ெச�ய��.



137



இ� ��வ�மா�, ‘my.cnf ‘ file-ஐ gedit-� open ெச���. அத���, lower_case_table_names=1 என type ெச�ய��.



138



இ� அைன�� case sensitive identifiers -ஐ�� lowercase-ஆக நட�த உத��.



139



இ�த Identifier names -ஐ� ப�� ேம�� �வர�கைள� ெத��� ெகா�ள ��வ�� வைலதள��� உத�ைய நாட��. http://dev.MySQL.com/doc/refman/5.0/en //identifier-case-sensitivity.html



140



Library எ�� 'மா�� Databases' -ஐ அைம�த�



இ�த� ப���� நா� எ�வா� ஒ� database ம��� table-ஐ உ�வா�� பய�ப���வ� எ�ப� ப�� ��வ�மாக� க�க உ�ேளா�. �த�� நா� ஒ� database-ஐ உ�வா�கலா�. இ�த database-ஆன� ஒ� ��ய library-��� பய�பட� ��ய வைக�� ��தக�க�� �வர�கைள�� ம��� அ�த� ��தக�க� யா��� கடனாக வழ�க�ப�ட� எ��



141



�வர�கைள�� ெகா������. எனேவ இ�த database �க�� க�னமாக இ�லாம�, எ�தாக ��வ�� �வர�கைள ம��ேம ெகா������.



Library-� உ�ள ��தக�க�� தைல�� அத� எ��தாள� ெபய� ம��� அ�த� ��தக� எ�த �ைல�� உ�ள� எ�� �வர�. ஒ� ��தக� ஒ� நப��� கடனாக வழ�க�ப��றெத�� அ�த நப�� ெபய�, e-mail �கவ� ம��� எ�த� ேத��� அ�த� ��தக� அவ��� கடனாக வழ�க�ப�ட� எ�� �வர�.



142



7.1 Library Database-ஐ உ�வா��த� Database எ�ப� data sets-� ெதா���. இ�த data sets எ�ப� tables-� ேச��� ைவ�க�ப��ற�. இ�த databases ம��� tables அ���� object-ஐ ைவ�� MySQL-� பயன�க� அைத� ைகயாளலா�. இ�த� ப���� நா� library எ�� ெபய� ெகா�ட ஒ� database-ஐ உ�வா�க உ�ேளா�. எ�ெபா��� ஒ� database-ஐ உ�வா��வத�� ��� அேத ெபய�� ேவ� ஏேத�� database உ�ளதா எ�� ேசா��க ேவ���. இைத� ேசா��பத�� நா� root userஆக login ெச�� ��வ�� command-ஐ 143



அ��தா� அ� MySQL-� ஏ�கனேவ இ���� databases அைன�ைத�� ப��ய���.



SHOW DATABASES; இ�ெபா�� நா� இ�த command-ஐ ��தாக install ெச���ள MySQL-� run ெச����பதா� அ� ��வ�� இர�� databases-ஐ ம��� ப��ய���.



MySQL -இ� administrative data ம��� MySQL server-� �வர�கைள உ�ளட��ய�



144



Test -இ� ��ய ideas ம��� features-ஐ பா�கா�பாக ேசா��பத�� உத�� sandbox-ஆக� பய�ப��. இ�த output-� �ல� ‘library’ எ�� ெபய�� databases ஏ�� இ�ைல என� ெத��த�ட�, இ�த� ெபய�� ��ய database-ஐ� ��வ�மா� உ�வா�கலா�.



CREATE DATABASE library; இ�த command, execute ெச�ய�ப�ட�ட� MySQL client-ஆன� ��வ�� message-ஐ� ெகா����. Query OK, 1 row affected (0.01 sec)



145



இ�ெபா�� ��க� ����



SHOW DATABASES; என run ெச���களானா�, அ� ந��ைடய library database-ஐ� ப��ய��வத��ல� இ�த database உ�வா�க�ப�� ��டைத உ�� ெச�� ெகா�ளலா�.



146



இ�ேபா� நா� உ�வா��ய ‘library’ எ�� database, நா� உ�வா�க இ���� tablesஅைன����� ஒ� container ேபா�� ெசய�ப��.



147



7.2 நம��� ேதைவயான tables-� எ���ைகைய� ��மா��த� �த�� நா� உ�வா�க இ���� table-� எ�ென�ன �வர�கைள ேசக��க� ேபா�ேறா� எ�பைத� ப��ய�ட ேவ���. அ�ேபா�தா� நம�� எ�தைன tables ேதைவ எ�பைத ��மா��க ����.இ� ��வ�மா�.



Library-� உ�ள ��தக��� �வர� – அதாவ� ��தக��� தைல��,



148



எ��தாள� ெபய� ம��� அ�த� ��தக��� த�ேபாைதய �ைல. ஒ� ��தக�ைத கட� வா��� நப�� �வர� -அதாவ� அ�த நப�� ெபய� ம��� �கவ�. கடனாக வழ�க�ப�ட ��தக��� �வர� – அதாவ� எ�த� ��தக� எ�த நப��� எ�த� ேத��� வழ�க�ப�ட� . எனேவ இ�ெபா�� நா� table-� ேசக��க ேவ��ய ���யமான �வர�களாவன:- book title, book author,book condition, person name, person email-id ம��� பல. இ�தைகய �வர�க� அைன�ைத�� நா� ஒேர table-� ஒ�றாக ேசக��பத� �ல� உ�டா�� �ர�சைன எ�னெவ��, ஒ� நப� இர����� ேம�ப�ட ��தக�கைள�



149



கடனாக� ெப��ேபா� , அ�த நப�� �வர�க� அைன��� 2 �ைற ெவ�ேவ� ��தக���காக table-� ெச��த�ப��. இ� ேதைவ��லாம� memory space-ஐ �ண���� வைக�� redundant data-ைவ table-� ெச���வதா��. எனேவ நம�� ேவ��ய எ�லா� தகவ�கைள�� ஒேர table-� ெச���வத�� ப�லாக, ெவ�ேவ� table-� ெச��� இ�த duplicate data-ஐ� த���கலா�.



அதாவ� ��தக�க�� �வர�க��, அ�த� ��தக�கைள� கடனாக�ெப�ற நப�க�� �வர�க�� தா� duplicate ஆக���யைவ. எனேவ இ�வாறான இர�� வைக



150



�வர�கைள�� இர�� த��த� table-� ஒேர ஒ� �ைற ெச��� ���, நம�� எ�ெபா�ெத�லா� இ�த �வர�க� ேதைவ�ப��றேதா அ�ேபாெத�லா� இ�த table-ஐ query ெச�வத� �ல� ெப���ெகா�ளலா�. Reference-�காக book ம��� person எ�� இர�� tables உ�வா��, ��ன� இ�த இர�� table-ஐ�� refer ெச�� எ�ெபா�� transaction �க��த� எ�பைத �ள��� வைக�� ��றாவதாக loan எ�� table-ஐ உ�வா�கலா�.



எனேவ இ�ெபா�� நா� 3 த��த� table-ஐ உ�வா�க�ேபா�ேறா�.



151



7.3 ‘Book’ எ�� �தலாவ� table-ஐ உ�வா��த�



��வ�� command-ஆன� book எ�� table-ஐ உ�வா��� . இ�த query-ைய command line-� enter ெச���ேபா�, அ��த��த line-இ� enter ெச�யலா�. இ� எ�த ஒ� பா��ைப�� ஏ�ப��தா�. இ�வா� அைம�க�ப�� sql queries-ஆன� MySQL-ஆ�� ந�ைம� ேபா�ற பயன�களா�� எ��� ப��� ���� ெகா�ள���ய வைக�� இ���� (ஆனா� string literals-�� இைட�� நா� எ�த ஒ�



152



இைடெவ��� தர��டா�. அதாவ� “library” எ�� ெசா��� “lib rary” எ�� ெசா��� MySQL-ஐ� ெபா��தவைர ேவ� ேவ� ெசா� ஆ��).



CREATE TABLE book ( book_id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, author VARCHAR(255) NOT NULL, cond ENUM(‘poor’,’good’,’middle’) NOT NULL, PRIMARY KEY (book_id)



153



);



ேமேல �������ள code-�கான �ள�க�



154



��வ�மா�.



Candidate Keys:



இ�த ‘book’ எ�� table-� நா� எ�லா� ��தக���ைடய title, author ம��� condition ேபா�ற 3 வைகயான �வர�கைள� ேசக��க� ேபா�ேறா�. எனேவ இதைன 3 columns-ஆக வ�வைம�க ேவ���. இைவ தா� இ�த table-� candidate keys என�ப��.



Primary Key:



155



நம� table-� உ�ள ஒ�ெவா� column-� title-� ஒ� candidate key என� ���� ெகா�ேடா�. இ�� primary key எ�ப� duplicate ம���க� ஏ�� இ�லாத வைக�� அைம�� ஒ� column-� title ஆ��. எனேவ நா� duplicate ம���க� ஏ�� இ�லாத வைக�� இ���� ஏேத�� ஒ� candidate key-ைய நம� table-� primary key-ஆக� ேத��ெத��கலா�.



அ�ப� ெச�யாம�, synthetic primary key என�ப�� வைக�� unique ம���கைள� ெகா�ட ஒ� column-ஐ உ�வா�� அதைன primary key-யாக�� அைம�கலா�. எனேவ candidate keys எ�ப� நம� table-�



156



இ���� columns தா� என இ�ெபா� ெத�வா� ��ட�. ஆகேவ primary key-� ஒ� candidate key-ஆகேவ க�த�ப��. இ�ேபா� நம� “book” எ�� table-� ��வ�� 3 candidate keys உ�ளன. அைவ book title, book author & book condition. ஆனா� இ�த ��� columns-�� duplicate ம���க� இட�ெபற வா��� உ�ளன. Duplicate எ�ப� எ�னெவ�� ஒ� column-� இ���� ஏேத�� ஒ� ம��� அேத column-� ஒ����� ேம�ப�ட இட�க�� ெத�ப�வேத duplicates என�ப��. இ�த 3 column-�� இ�வாறான duplicate ம���க� இட�ெபற �ைறயேவ வா��� உ�ளன. ஆகேவ நா� நா�காவதாக “book_id”



157



என�ப�� ஒ� synthetic primary key-ஐ உ�வா�� அ�� ெதாட� வ�ைச�னா� அைம�த எ�கைள� ெகா�� �ர���டலா�. இ�வா� இ�த column �ர�ப�ப��ேபா� அ�� duplicate ம���க� இட�ெபற வா��� இ�ைல. இ�த column தா� அ�த table-� ஒ�ெவா� row-ைவ�� identify ெச�ய உத�� primary key ஆ��.



Auto increment – primary key இ� ஒ� அ�க�: Auto-increment எ�� அைம�க�ப�� column -ஆன�, அ�த table-� ஒ�ெவா� �ைற rows insert ெச�ய�ப��ேபா��, அத�கான வ�ைச எ�கைள அ�த column-� 158



தானாகேவ உ�வா���. இ�த book எ�� table-� book_id எ�� primary key column-ஆன� auto increment ப��ட� உ�வா�க�ப���ள�. ஒ� table-� ஒேர ஒ� AUTO-INCREMENT column தா� இ���� ம��� அ� primary key-� ஓ� அ�கமாக�� இ���� எ�பைத �ைன�� ெகா�க.



7.4 Data Types: Table-� இ���� ஒ�ெவா� column-� ஒ� ெபய�, அ�த column-� ேச��க� ேபா�� data-�� datatype ம��� அ�த column-�



159



அ�கப�ச� எ�வள� �ளமான data ேச��க ���� எ�பைத� ெபா��� வைரய��க�ப��ற�. இ�த book எ�� table-� இ���� நா�� columns-� ேம���யவ��� அ��பைட�� எ�வா� வைரய��க�ப���ளன எ�பைத� ��வ�மா� காணலா� “book_id” எ�� column-� நா� எ�கைள� ேச��க�ேபா�ேறா�. எனேவ அத� column type-ஐ வைரய��பத�� ��� இ�த column-� அ�கப�ச� எ�வள� எ�க� ேச��க�ேபா�ேறா� எ�பைத ேதாரயமாக கண�ெக��க ேவ���. இ� library-�கான database எ�பதா� இ�� அ�கப�ச� 50,000 ��தக�கைள�



160



ேச��கலா� என ைவ���ெகா�ேவா�. எனேவ நா� இ�த column-�காக UNSIGNED SMALLINT எ�� datatype-ஐ� பய�ப��தலா�. இ� 0-���� 65,535 எ�க� வைர ேச��க உத�� ஒ� datatype ஆ��.



அ��ததாக book title ம��� book author எ�� columns-� நா� எ����கைள ேச��க�ேபா�ேறா�. இ�வா� எ����கைள� ேச��பத�காக CHAR ம��� VARCHAR எ�� இர�� datatypes பய�ப��த�ப���றன. Char எ�ப� fixedlength ம���கைள ேச��க உத�� ம��� varchar எ�ப� மாற���ய ம���கைள



161



(variable length) ேச��க உத�� data type ஆ��. இைவ 0-���� 255 characters வைர எ����கைள� ேச��க உத��. நா� condition எ�� column-�� எ����கைள ம��ேம ேச��க உ�ேளா�. ஆனா� இ�த column-� good அ�ல� poor எ�ப� ேபா�ற ஒ��ல வா��ைதக� ம��ேம ெதாட���யாக ���� ���� இட�ெப��. இ�வா� ஒேர வா��ைதக�தா� ���ப ���ப ெவ�ேவ� row-�� இட�ெப�� எ�� நம��� ெத��தா� இவ�ைற வைரய��பத�ெக�ேற ENUM எ�� ஒ� �ற�� வைக data type உ�ள�. எனேவ ஒ� column-ஐ நா� ENUM எ�� ஒ� data type ெகா�� வைரய����ேபா�, இ�த 162



column-� எ�ென�ன வா��ைதக� இட�ெபறலா� எ�பைத�� நா� ஒ� list-� ��னேர வைரய���� ���டேவ���. இ�வா� நா� இ�த column-ஐ வைரய��பத� �ல� ேதைவ��லாம� �ைறய memory space �ணாவைத� த���கலா�.



7.5 Column Names: ஒ� table-� column-�� நா� ெபய� ைவ���ேபா� ��வ�� ���ைறகைள மன�� ெகா�வ� ந�ல�.



எ�ெபா��� lowercase letters-ஐ�



163



பய�ப���த� ஒ� table-� primary key-யாக இ���� அேத column-தா� ம�ெறா� table-� foreign key-யாக இ����. எனேவ இர�� table-��� பய�ப��த�ப�� ஒேர மா��யான column-�� ஒேர மா��யாக ெபய�ைவ�தா�, primary key – foreign key ெதாட�ைப நா� �லபமாக அைடயாள� க�� ெகா�ள ����. Column-� எ�வைகயான தகவ� ேச��க�ப��ற� எ�பைத, அ�த column-� தைல�ைப பா��ேத ����ெகா��� வைக�� அ�த column-� title அைம�க�படேவ���. ஆனா� sql keywords-ஆக இ���� date அ�ல� index ேபா�றவ�ைற நா� 164



column title-ஆக அைம�க��டா�. ஒ� column-� title-ஆக இர�� வா��ைதக� ெகா�ட ஒ� ெபய� அைம�க�ப��ரெத��, அ�த இர�� வா��ைத��� இைட�� Underscore(_) அைம�க ேவ���. இைடெவ� வர��டா�.



எனேவ நா� ேம���ய அைன�� ���ைறகைள�� மன�� ெகா�� “book” எ�� table-� இ���� columns-��� ��வ�மா� ெபய�ட� ேபா�ேறா� அைவ,



165



Book_id Title Author Cond



7.6 Person எ�� இர�டாவ� table-ஐ உ�வா��த� இ�த person எ�� table-� நா� ஒ� நப�� ெபய� ம��� அவ�� e-mail �கவ� ேபா�ற �வர�கைள� ேசக��க� ேபா�ேறா�. எனேவ இ�த person table-� person name ம��� email address ேபா�ற இர�� candidate



166



keys உ�ளன. ெச�ற table-� நா� உ�வா��யவாேற இ�த table-��� ��றாவதாக person_id எ�� ஒ� primary key-ைய நா� உ�வா�க ேவ���. இ� தா� இ�த table-� இ���� அைன�� row-ைவ�� refer ெச�ய உத�� primary key ஆ��. இ�த person_id எ�� column-� data type-ஐ நா� வைரய��பத�� ��ன�, இ�த table-� அ�கப�ச� நா� எ�வள� data ேச��க�ேபா�ேறா� எ�பைத ேதாராயமாக நா� வைரய��க ேவ���. இ�த library-ைய பய�ப��த� ேபா�� நப�க�� எ���ைக எ�ப��� ����கண���தா� இ����. எனேவ இ�த column-ஐ நா� UNSIGNED TINYINT எ�� data type ெகா�� வைரய��கலா�. இ�



167



0-���� 255 எ�க� வைர ேச��க உத�� ஒ� data type ஆ��. அ��ததாக name ம��� e-mail ேபா�ற columns-� நா� ெவ�� எ����கைள ம��� ேச��க�ேபாவதா�, 0-���� 255 எ����க� வைர ேச��க உத�� VARCHAR(255) எ�� datatype-ஐேய நா� பய�ப��தலா�. இ�வாறாக person எ�� table-ஐ உ�வா��வத�கான query ��வ�மா� அைம��. CREATE TABLE person ( person_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,



168



name VARCHAR(255) COMMENT “The person’s name”, email VARCHAR(255) COMMENT “The person’s email address”, PRIMARY KEY (person_id) ) COMMENT “Basic information about book borrowers”;



169



இ�த query ��ன� �������ள query-ஐ� ேபா�ேற இ��தா�� இ�� COMMENT எ�� ஒ� keyword ம��� ��தாக இைண�க�ப���ளைத� காணலா�. இ�த keyword, ஒ� column அ�ல� table எ�த



170



மா��யான data-ைவ� தா����ள� எ�பைத �வ��க உத�� ஒ� optional keyword ஆ��.



7.7 loan எ�� ��றாவ� table-ஐ உ�வா��த�



இ�த table-� இ���� candidate keys ேவ��ல table-� இ���� primary keys-ஐ refer ெச�ய உத�� foreign key-யாக அைம��. எனேவ இ�த loan table-� அைமய�ேபா�� 3 candidate keys ��வ�மா�.



171



book_id என�ப�� book table-� primary key person_id என�ப�� person table-� primary key date_lent எ�� column, எ�த� ேத��� ஒ� ��தக� ஒ� நப��� வழ�க�ப��ற� எ�பைத ேச��க உத��. ேம�� நா�காவதாக loan_id எ�� ஒ� primary key-ைய இ�த table-�காக நா� உ�வா�க ேவ���. எனேவ இத�கான syntax ��வ�மா� அைம��.



172



CREATE TABLE loan ( loan_id INT UNSIGNED NOT NULL AUTO_INCREMENT, person_id TINYINT UNSIGNED NOT NULL, book_id SMALLINT UNSIGNED NOT NULL, date_lent DATE NOT NULL, PRIMARY KEY (loan_id) ) COMMENT “Store info on book loans”;



173



இ�த query-� இ���� DATE எ�� datatype த�ர ம�ற அைன�� data type ப���� நா� ��னேர பா��� ��ேடா�. இ�த DATE எ�� data type-ஆ� வைரய��க�ப��



174



column-ஆன� 1000-01-01-� ெதாட�� 9999-12-31 வைர�லான ேத�க� வைர ேச��க உத�� data type ஆ��.



இ�வாறாக book, person ம��� loan எ�� 3 tables-� ‘library’ எ�� database-��� உ�வா�க�ப����ட�.



175



அ��ததாக இ�த tables-��� எ�வா� data-ைவ ெச���வ� எ�� பா��கலா�.



176



Library எ�� மா�� Database-� data-ைவ ெச���த�



ஒ� table-� data-ைவ ெச���வத�� ப�ேவ� வ��ைறக� இ��தா��, ெபா�வாக insert statement �ல� ெச���வ� நைட�ைற�� அ�கமாக� பய�ப��த�ப��ற�. இத�கான syntax ��வ�மா�.



177



INSERT [INTO] [db_name.]table_name (list, of, columns, …) VALUES (list, of, values, …)



Insert [into] – இ�தா� command-� ெதாட�க�. Into எ�ப� optional keyword ஆ��. table_name – நா� data-ைவ எ�த table��� �ைழ�கேவ��ேமா அ�த table-� ெபய�. (list,of,columns….) – எ�ெத�த column-� data ைவ ெச��த ேவ��ேமா அ�த columns-ஐ ஒ�ற� �� ஒ�றாக parenthesis-��� ெகா��க ேவ���.



178



இத��� ெகா��க�படாத columns ஒ� row உ�வா�க�ப�� ேபா� default ம���கைள� ெப�����. values – இ�த command �ல� MySQL இத� ெதாட���யாக ஒ��ல ம���க� வர�ேபா�ற� எ�� ெத��� ெகா���. (list, of, values,….) – எ�ெத�த ம���க� column-� ெகா��க�பட ேவ��ேமா, அ�த ம���கைள ஒ�ற� �� ஒ�றாக ஒ� parenthesis -��� ெகா��க ேவ���. இ�த insert statement ஆன� table-� இ���� ஒ� row-ைவ insert ெச���. அத� ��ன� ெகா��க�ப�� ம���கைள அ�த row-�� ெச������.



179



8.1 book எ�� table-� data-ைவ ெச���த� book எ�� table-� ஒ� row எ�வா� ெச��த�ப��ற� எ�பைத ��வ�� உதாரண��� �ல� காணலா�.



INSERT book (title, author, cond) VALUES (‘Sila nerangalil sila manithargal’,’Jayakanthan’,



180



‘good’);



நா� ெச���ய தகவ�க� table-���



181



ெச����டதா எ�பைத select statement �ல� ச�பா���� ெகா�ளலா�.



இ�� Insert எ�� keyword-ஐ� ெதாட��� ேநர�யாக “book” எ�� tablename ெகா��க�ப����ட�. இைட�� இ���� INTO எ�� optional keyword ��க�ப����பைத� காணலா�. அ��ததாக book எ�� tablename-ஐ� ெதாட���, எ�ெத�த column-� ம���க� ெச��த�பட ேவ��� எ�� column list ெகா��க�ப���ள�. ஒ� row-ஆன� insert ெச�ய�ப��ேபா� இ�த list-��� இ�லாத columns-�� default ம���க� insert ெச�ய�ப��.



182



இ�த list-��� “book_id” எ�� primary key column-ஐ� ெகா��க�ேதைவ��ைல. ஏென�� ஒ�ெவா� row, insert ெச�ய�ப��ேபா�� இ�த column-ஆன� auto-increment �ல� ம���கைள� ெப����� எனேவ இ�த column-ஐ ெவ��பைடயாக list-��� ெகா��க� ேதைவ��ைல. இ�த list-� optional-ஆகேவ பய�ப��த�ப��ற�. இ�த list ெகா��க�பட��ைல எ�றா��, ம���க� அைன��� table-� இ���� columns-� ெதாட���யாக ெச��த�ப�����. ஆனா� எ�த ம���க� எ�த column-� ெச��த�ப���றன எ�� �ஷய��� ெப�� �ழ�ப� ஏ�பட ேந���. எனேவ இதைன�



183



த���பத�காக இ�வா� ெவ��பைடயாக ெகா��� ��வ� ந�ல�. கைட�யாக VALUES எ�� keyword-ஐ� ெதாட��� எ�ெத�த ம���க� table-� ெச��த�பட ேவ��ேமா அ�த ம���க� அைன��� ஒ� parenthesis-��� ெகா��க�ப��. இ�த parenthesis-��� இ���� ஒ�ெவா� ம���� ஒ� comma-ஆ� ேவ�ப��த�ப������. ேம�� இ�த ம���க� எ����களாக இ��தா� அதைன quotes-��� ெகா��க ேவ���. எ�களாக இ��தா� அ� ேதைவ��ைல. அ��ததாக, ஒ����� ேம�ப�ட rows-ஐ table-� ெச���வத��, ம���கைள�



184



ெகா���ள parenthesis-ஐ ெதாட���யாக comma-ஆ� இைண��� ெகா�ேட ெச�லலா�. இ��யாக உ�ள parenthesis-� ���� semicolon(;) -ஐ அைம�பத� �ல� நா� கைட�யாக insert ெச�ய�ப�� row-ைவ ����கா�ட ����. ��வ�� உதாரண��� book எ�� table-� எ�வா� 3 rows ெச��த�ப���றன எ�பைத� காணலா�.



INSERT book (author, title, cond) VALUES



185



(‘Stephen R. Covey’,’The 7 Habits Of Highly Effective People’,’middle’), (‘Amish Tripathi’,’The Immortals of Meluha’,’poor’), (‘Mitch Albom’, ‘Tuesdays with Morrie’, ‘good’);



186



த��த�யாக ஒ�ெவா� query எ��வத�� ப�லாக ேம���ய �ைற �ல� நா� ஒேர query-� �றைமயாக பல rows-ஐ insert



187



ெச�யலா�.



8.2 Auto increment column-� data-ஐ ெச����



��க� ஒ� row -ைவ insert ெச��� ேபா�, auto-increment எ�� இ���� column-�� ஏேத�� ஒ� ம���ைன� ெகா����களானா�, அ�த column அ�த ம���ைன� ெப�����. அ�ப� இ�ைலெய��, அ�த column தானாகேவ ஒ�ற��� ஒ�றாக இ���� ெதாட���யான எ�களா� �ர�ப�ப��. இ�த book எ�� table-� book_id எ�� column



188



auto-increment �ல� ெதாட���யான எ�களா� �ர�ப�ப����பைத� காணலா�.



ஒ� row-ைவ நா� delete ெச���ேபா� auto-increment column-� இ���� ெதாட���யான எ�க���ைட�� ஓ� இைடெவ� ஏ�ப��. இ�த இைடெவ� பா��பத�� ���யாசமாக இ��தா��, ெதாட���யான எ�கைள அ��த��த rows-�� பய�ப��தாம� இ��ப�, அ�த data-�� �ைல���த�ைமைய உ��ப����. ஒ� row -ஆன� insert ெச�ய�ப��ேபா�, auto-increment column-�� எ�த ஒ� ம���� ெகா��கா��டாேலா அ�ல� NULL எ�� ம���ைன� ெகா��தாேலா அ� ஒ�றாகேவ 189



க���. இைத� ��வ�� எ����கா��� காணலா�.



CREATE TEMPORARY TABLE demo ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ); INSERT demo () VALUES (); SELECT id FROM demo; # id contains 1 INSERT demo (id) VALUES (NULL); SELECT id FROM demo; # id contains 1 and 2 190



191



INSERT demo (id) VALUES (4); SELECT id FROM demo; # id contains 1, 2 and 4



INSERT demo (id) VALUES (NULL); SELECT id FROM demo; # id contains 1, 2, 4 and 5



192



193



8.3 Person எ�� table-� data-ைவ ெச���த� அ��ததாக person எ�� table-� ��தக�கைள� ெபற����� நப�க�� �வர�கைள� ��வ�மா� insert ெச�யலா�.



INSERT person (name, email)



194



VALUES (‘Nithya’, ‘[email protected]‘), (‘Shrinivasan’, ‘[email protected]‘), (‘Kanmani’,‘[email protected]‘);



195



நா� ெச���ய தகவ�க� table-��� ெச����டதா எ�பைத select statement



196



�ல� ச�பா���� ெகா�ளலா�.



8.4 ஒ� file-� உ�ள queries �ல� data-ைவ table-� ெச���த� நா� பா��த ெப��பாலான SQL commands ேநர�யாக MySQL command-line -� run ெச�ய�ப�டைவ. இ�ேபா� இ�த commands-ஐ எ�லா� ஒ� ��ய text file-� ேச��� ைவ��� ெகா��, அதைன MySQL (அ�ல� ேவ� எதாவ� client) �லமாக எ�வா� run



197



ெச�யலா� எ�� பா��கலா�. இ�வா� ெச�ய�ப�வைத ‘Batch mode’ எ��ேறா�. இத�கான syntax ��வ�மா�. shell> MySQL -u username -p db_name < file_name.sql



இ�த syntax ��வ�மா� �ள�க�ப��ற�.



1. shell> prompt -� MySQL server-ஐ ெகா��க�ப���ள username-ஐ ைவ�� connect ெச�ய��. 2. �� அத�ட� authenticate ெச�வத�கான password prompt-ஐ அைம�க��.



198



3. db_name எ�ப� default database அைம�க�ப�வைத� கா���ற� 4. �� commands அட����ள file_name.sql எ�� file-ஐ server-�� அ��ப��. 5. அ��தப�யாக, இ�த commands execute ெச�ய�ப�� அத� results ெத���க�ப��. 6. கைட�யாக exit ெச�ய�ப��. ஒ�ேவைள, MySQL command-line ஏ�கனேவ பய�பா��� உ�ளெத��, query-ைய� ��வ�மா� அைம�தா� ேபா�மான�.



mysql> \. file_name.sql



199



இ�ேபா� person எ�� table-�, ‘batch mode’ �ல� எ�வா� dataெச��த�ப��ற� எ�� பா��கலா�. �த�� queries-ஐ எ�லா� ஒ� file-� enter ெச�����, அதைன ‘queries.sql’ எ�� ெபய�� save ெச��ெகா�ள��. இ� ��வ�மா�.



200



��ன� MySQL command line-�, ��வ�மா� enter ெச�ய��.



mysql> \. queries.sql



இ� file-� இ���� data-ைவ, table-� insert ெச�����.



201



8.5 ஒ� table-� உ�ள data-ைவ ம�ெறா� table-� insert ெச�த� 202



Insert command-ஆன� select command-�ட� ஒ�றாக இைண�� ஒ� table-����� copy ெச�ய�ப�� rows-ஐ ம�ெறா� table-��� insert ெச�ய� பய�ப��ற�. இ�த INSERT—-SELECT command-�கான syntax �க�� �லபமான�. Insert command-� �த� ப��ைய (VALUES clause வைர) Select command-�ட� இைண�க ேவ���. இ� ��வ�மா�.



INSERT table_one (list, of, columns) SELECT …;



203



உதாரண����, ‘person’ எ�� table-� இ���� அைன�� data-ைவ��, ‘info’ எ�� table-�� மா�ற query-ைய� ��வ�மா� அைம�கலா�.



INSERT info (id,name,email) SELECT * from person;



204



இ�� Insert command-� இ���� ஒ�ெவா� column-���, select statement-� இ��� ஒ� column, return ெச�ய�ப��றதா எ�பைத உ�� ெச�� ெகா�ள��.



8.6 ஒ� file-� உ�ள 205



data-ைவ ேநர�யாக table-� ெச���த�



Data-ைவ �ற applications-���� MySQL-�� import ெச���ேபா�, �த�� அ�த data-ைவ ஒ���ப��த�ப�ட text format ஆக மா�� (Eg: tab-separated values) அத��� MySQL-� import ெச�ய ேவ���. இ�வா� அ�லாம� அ�த data-ைவ ஒ� set of SQL queries-ஆக மா�� அத� ��ன�� import ெச�யலா�. ஆனா� இ�வா� ெச�வ�, அ�க ேநர� ���க���யதாக��, ���யான தவ�க��� ந�ைம உ�ப��த���யதாக��



206



இ����. எனேவ LOAD DATA INFILE எ�� command, text files-� இ���� வ�வைம�க�ப�ட data-ைவ MySQL-��� ெச��த� பய�ப�� ஓ� எ�ைமயான வ�யா��. இத�கான syntax ��வ�மா�.



LOAD DATA INFILE ‘some_file.txt’ INTO TABLE ‘some_table’ (list, of, columns, …);



இ�த text file-��� இ���� data-�� ஒ�ெவா� field-� ஒ� tab-ஆ��, ஒ�ெவா� 207



row-� ஒ� ��ய line-ஆ�� ஒ���ப��த�ப������.



இ�த LOAD DATA INFILE எ�� command, இ�தைகய ஒ���ப��த�ப�ட file-ஐ எ�வா� import ெச�வ� எ�பைத தானாகேவ ����ெகா��� வைக�� இ����. file-� இ���� ஒ�ெவா� row-� இ�த command-ஆ� read ெச�ய�ப�� ��ன� அத���ய table-� column mapping-ஐ பய�ப��� அ�த row ெச��த�ப��. உதாரண���� /home/nithya/data.txt எ�� இட��� ேச���ைவ�க�ப���ள ��வ�� சார�ைத உ�ளட��ய இ�த file எ�வா� person எ�� table-�� மா�ற�ப��ற� எ�� 208



பா��கலா�.



இதைன upload ெச�வத�கான command ��வ�மா� அைம��. LOAD DATA INFILE ‘/home/nithya/data.txt’ INTO TABLE person (name,email); இ�த command, run ெச�ய�ப�ட ��ன�, book எ�� table-�, file-� உ�ள data அைன��� ெச��த�ப����பைத



209



��வ�மா� காணலா�.



LOAD DATA INFILE எ�� command-� ��வ�வனவ�ைற கவ��க��. MySQL server இய��� அேத machine-� datafile இ��க ேவ���. Data load ெச�ய�படேவ��ய file-ஐ ������ேபா� அத� ெபயைர ம��� 210



����டாம� அத� �� path-ஐ�� ����ட ேவ���. இ�ைலெய��, இ�த MySQL server �����ட path-� ேதடாம�, ேவ� எ�காவ� அத� data directory-� ேத��ெகா������ Windows systems-� �ட ��க� blackslashes-�� ப�லாக forward slash-ஐ பய�ப��� path-ஐ ����டலா�. உதாரண���� unix-style path (‘/home/nithya/data.txt’) எ�� ����ட�ப��ற� எ�றா�, அ� windows-� ‘C:/Desktop/data.txt’ எ�� ����ட�ப��. இ�� ��க� blackslashes-ஐ பய�ப���னா� அ� character escape sequences-ஆக interpret ெச�ய�ப��.



211



ேம�� ��வ�� ����க�, இ�த load data infile -� பய�பா�ைட இ��� �லபமாக அைம���. இ�த command-� output ஒ� warning அ�ல� error-�ட� வ��ற� எ�� (eg: Query OK, 3 rows affected, 1 warning (0.01 sec)) SHOW WARNINGS அ�ல� SHOW ERRORS எ�� command-ஐ� பய�ப��� அ� எ�வைகயான �ர�சைனகைள� ெகா���ள� எ�� பா��கலா�.



8.7 loan எ�� table-� data-ைவ insert ெச�த�



212



இ�� data-ைவ insert ெச�வத�� நம�� book ம��� person எ�� இர�� table-� உத��� ேதைவ. அதாவ� “��யா” எ�� நப� “�ல ேநர�க�� �ல ம�த�க�” எ�� ��தக�ைத� ெபற �����றா� எ�� �த�� இ�த நப� ம��� ��தக��� primary key-ைய நா� ெத��� ெகா�ள ேவ���. அத� ��ன� தா� இ�த primary key-ைய� பய�ப��� ம���கைள loan எ�� table-� ெச��த ேவ���. ��யா எ�� நப�� primary key-ைய� ெத��� ெகா�ள, query-ைய� ��வ�மா� அைம�க��.



SELECT person_id FROM person WHERE



213



name = ‘ Nithya’;



இ�த output �ல� ��யா எ�� நப�� primary key ’1′ என� ெத�யவ���ள�. அ��ததாக “�ல ேநர�க�� �ல ம�த�க�” எ�� ��தக��� primary key-ைய� ெத��� ெகா�ள, query-ைய� ��வ�மா� அைம�க��. SELECT book_id FROM book WHERE title =



214



‘sila nerangalil sila manithargal’;



இ�த output �ல� “�ல ேநர�க�� �ல ம�த�க�” எ�� ��தக��� primary key ’1′ என� ெத�யவ���ள�. இ�ேபா� இ�த இர�� ம���கைள�� ைவ���ெகா�� ��யா எ�த� ேத��� “�ல ேநர�க�� �ல ம�த�க�” எ��



215



��தக�ைத� ெப���ளா� எ�� �வர�ைத loan எ�� table-� ��வ�மா� ெச��தலா�.



INSERT loan (book_id, person_id, date_lent) VALUES (1, 1, ’2012-11-19′);



216



இ�வா� ம���கைள ேநர�யாக table-� ெச��தாம� அதைன ஒ� user variable-�� assign ெச�����, அ�த user variable-ஐ நா� query-� பய�ப��தலா�. ஒ� user variable-�கான format, @name எ�� இ����. இ�த name எ�� இட��� நா� A-Z வைர�லான எ����கைளேயா, 0-9 ��ய இ���� எ�கைளேயா அ�ல�



217



$,-ேபா�ற ��கைளேயா பய�ப��� ஒ� user variable-ஐ உ�வா�கலா�. இ�வா� உ�வா�க�ப�ட ஒ� variable-�� := எ�� operator-ஐ� பய�ப��� ம���கைள assign ெச�யலா�. உதாரண�:



SELECT @place1 := ‘Kanchipuram’; இ�� ‘Kanchipuram’ எ�� ம��ைப உ�ளட��ய ஒ� ‘@place1′ எ�� user variable உ�வா�க�ப���ள�. இ�ேபா� ��வ�� query-ஐ அைம��, run ெச�தா� அ�த variable அத� ம���ைன ெவ��ப����.



218



SELECT @place1;



இ�வாறாக நா� loan எ�� table-� user variable-ஐ� பய�ப��� , ம���கைள ��வ�மா� ெச��தலா�. இ�வா� user variable �ல� data-ஆன� table-�� ெச��த�ப��ேபா�, ெத�யாம� ஏ�ப��



219



தவ�க� த���க�ப���றன.



SELECT @person_id := person_id FROM person WHERE name = ‘Shrinivasan’; SELECT @book_id := book_id FROM book WHERE title = ‘Tuesdays with Morrie’; SELECT @date := ’2012-08-04′; INSERT loan (book_id, person_id, date_lent) VALUES (@book_id, @person_id, @date);



220



இ�� த��த�யான select statement-ஐ� பய�ப��� user variable உ�வா�க�ப���ள�. இதைன ஒேர select



221



statement-ஐ� பய�ப����� நா� ��வ�மா� உ�வா�� அதைன table-� insert ெச�யலா�. SELECT @book_id := book_id, @person_id := person_id, @date := ’2012-12-12′ FROM book, person WHERE book.title = ‘sila nerangalil sila manithargal’ AND person.name = ‘Kanmani’; INSERT loan (book_id, person_id, date_lent) VALUES (@book_id, @person_id, @date); 222



இ�த இர�� queries-ஐ���ட நா� user variables ஏ�� இ�லாம� ஒேர query-யாக மா�� இ��� optimize ெச�யலா�. இ�



223



��வ�மா�.



INSERT loan (book_id, person_id, date_lent) SELECT book_id, person_id, ’2012-12-31′ FROM book, person WHERE book.title = ‘sila nerangalil sila manithargal’ AND person.name = ‘Shrinivasan’;



224



இ�வாறாக நா� ஒ� �ஷய�ைதேய ப�ேவ� வ�வைகக�� ெவ�ேவறாக� ெச�யலா� என இ�ேபா� க��� ெகா�ேடா�. ேம�� ஒ� ெப�ய query-யான� ப�ேவ� எ�ய



225



queries-ஐ� ெகா�ேட உ�வா�க�ப��ற� என�� ெத��� ெகா�ேடா�.



8.8 Function �ல� date-ஐ insert ெச�த� 226



Now() எ�� function, ஒ� query-� அைழ�க�ப��ேபா�, அத� MySQL server எ�த machine-� ஓ��ெகா�����றேதா, அ�த machine-� date ம��� time-ஐ insert ெச���. இத�கான syntax ��வ�மா�.



INSERT some_table (some_column) VALUES (NOW ()); ேமேல இ���� SQL-� பய�ப��த�ப���ள Now ()-எ�� function த�ேபாைதய date ம��� time-ஐ ெகா��க�ப���ள column-� insert ெச�ய�பய�ப��. ெபா�வாக இ�த function return ெச��� text-ஆன� ேதைவயான இைடெவ� ம��� 227



punctuation-ஐ� ெப�� நா� �லபமாக ப���� வைக�� அைம��. உதாரண����,



SELECT NOW();



என ைவ�� run ெச�� பா��க��. இ� ��வ�� format-� date ம��� time-ஐ return ெச���.



228



ேம��,



SELECT NOW()+0;



என ைவ�� run ெச���ேபா�, இ� ��வ�� format-� date-ஐ return ெச���.



229



எனேவ ‘loan’ எ�� table-�, ஒ� �ல ��தக�க��� த�ேபாைதய ேத�ைய insert ெச�ய ����னா�, now() எ�� function-ஐ� ��வ�மா� பய�ப��தலா�,



INSERT loan (person_id,book_id,date_lent) 230



VALUES (’3′,’2′,NOW());



231



Library எ�� மா�� Database-� இ���� data-ைவ எ��த�



இ�� நா� எ�வா� தகவ�கைள table����� எ�ய queries-ஐ� பய�ப���� ெப�வ� எ�� பா��கலா�. ��வ�� query ஒ� table-� இ���� அைன�� data-ைவ�� return ெச���.



232



SELECT * FROM book;



9.1 Limit Clause-� பய�பா� LIMIT Clause-ஐ� பய�ப��� நம�� ேவ��ய rows-ஐ ம��� ெகா���மா� query-ைய அைம�கலா�. இ� ��வ�மா�. SELECT author FROM book LIMIT 2;



233



# இ� �த� 2 rows-ஐ return ெச���.



SELECT author FROM book LIMIT 2, 2; # இ� �த� 2 rows-ஐ ������, அ��த 2 rows-ஐ return ெச���.



SELECT author FROM book LIMIT 3, 2; # இ� �த� 3 rows-ஐ ������, அ��த 2 rows-ஐ return ெச���.



234



இ�வாறாக LIMIT Clause �ல� நம�� ேவ��ய rows-ஐ ம��� நா� ெப���ெகா�ளலா�.



9.2 Order by �ல� result-ஐ235



வ�ைச�ப���த�



MySQL-����� எ��க�ப�� rows வ�ைச�ப�த�ப�ேடா அ�ல� வ�ைச�ப��த�படமேலா இ����. ஆனா� இ�த� தகவ�க� எ�வா� வ�ைச�ப��த�பட ேவ��� எ�பைத order by clause-ஐ� பய�ப���� �றலா�. இ�த order by clause-� ெகா����ள column-� ம���க��� ஏ�றவா� table-� உ�ள தகவ�கெள�லா� வ�ைச�ப��த�ப�� ெவ�வ��. இைத� ��வ�மா� காணலா�.



236



SELECT * FROM book ORDER BY title;



# ‘book’ எ�� table-� இ��� எ��க�ப�� அைன�� records-�, title-� அ��பைட�� வ�ைச�ப��த�ப������.



ேமேல ெகா��க�ப���ள code-�கான



237



�ள�க� ��வ�மா�.



�த�� ��வ�� query, server-�� ெச��த�ப��. SELECT * FROM book ORDER BY title; இ�த query, return ெச��� ஒ�ெவா� row-�� title-� ஒ� list-��� ெச��த�ப��. இ� ��வ�மா�.



Sila nerangalil sila manithargal (Row 1) The 7 Habits of Highly Effective People (Row 2)



238



The Immortals of Meluha (Row 3) Tuesdays with Morrie (Row 4) Kallo kaaviyamo (Row 5) Thanneer thesam (Row 6) Yen Yetherku Yeppadi (Row 7)



ேம�� இ�த title எ�த row-�ட� ெதாட��ைடய� எ�ப� server-�� ெத�������.



��ன� இ�த list-ஆன� alphabetical �ைற�ப� வ�ைச�ப��த�ப��



239



��வ�மா� அைம��. இ� case-sensitive �ைடயா�.



Kallo kaaviyamo (Row 5) Sila nerangalil sila manithargal (Row 1) Thanneer thesam (Row 6) The 7 Habits of Highly Effective People (Row 2) The Immortals of Meluha (Row 3) Tuesdays with Morrie (Row 4) Yen Yetherku Yeppadi (Row 7)



240



இ�த வ�ைச�ப��த�ப�ட list-� �ைற�ப�, அைன�� rows-� ெவ�வர� ெதாட���.



9.3 DISTINCT �ல� ஒேர மா��யான data-ைவ ஒ� �ைற ம��� ெவ��கா��த�



Distinct எ�� keywordஒ� data-ைவ ஒேர ஒ� �ைற ம��� ெவ��கா�ட� பய�ப��ற�.



241



உதாரண���� ‘book’ எ�� table-� இ���� ‘cond’ எ�� column-ஐ, ‘distinct’ keyword இ�லாம� ெவ��ப���� ேபா� அ� அைன�� data-ைவ�� ெவ��ப����. அைதேய நா� ‘distinct’ என� ெகா��� ெவ��ப����ேபா� ஒ� data-ைவ ஒ��ைற ம��� தா� ெவ��ப����. இ� ��வ�மா�.



SELECT cond FROM book; SELECT DISTINCT cond FROM book;



242



இ�� உ�ள �த� query, ‘cond’ எ�� column-� இ���� data-ஐ பல rows -� இ��� எ���, ஒ�ெவா� �ைற�� அேத data-ைவ return ெச���.



அ��ததாக உ�ள query-� select-ஐ



243



ெதாட��� distinct எ�� clause -ஐ ேச��ததா�, அ� ஒேர மா��யான data-ஐ ஒேர ஒ��ைற ம��� return ெச����� ம�ற duplicate data-ஐ �ற�க��� ��ட�.



9.4 ஒேர மா��யான data-ைவ ‘like’ �ல� க������ ெவ��கா��த�



Like operator-ஐ� பய�ப��� ஒேர மா��யான pattern-� இ���� பல ெசா�கைள� க�����கலா�.



244



உதாரண���� book-எ�� table-� இ���, T-� ெதாட��� அைன�� ��தக��� ெபய�கைள�� ப��ய�ட, query-ைய� ��வ�மா� அைம�கலா�.



SELECT title FROM book WHERE title LIKE ‘T%’;



245



அேதேபா� eஎ�� எ���� ���� அைன�� ��தக��� ெபய�கைள�� ப��ய�ட, query-ைய� ��வ�மா� அைம�கலா�.



SELECT title FROM book WHERE title LIKE ‘%e’;



246



Like operator ஆன� ெசா�கைள� ெபா���� பா��பத�காக� பய�ப���� இர�� wildcard characters ��வ�மா�.



%(Percent) – இ� 0அ�ல� அத�� ேம�ப�ட எ�த வைகயான characters�ட�� ெபா����. _(Underscore) – இ� எ�த வைகயான character-ஆக இ��தா�� ஒேர ஒ� character-� தா� ெபா����.



247



உதாரண���� ��க� book-எ�� table-� இ��� S எ�� எ���� ெதாட���யாக, �ைற�த� 8 எ��தாவ� இ��ப� ேபா�ற author-� ெபய�கைள� ப��ய�ட query-ைய� ��வ�மா� அைம�க ேவ���.



SELECT author FROM book WHERE author LIKE ‘S________%’;



248



இ�� ‘Sujatha’ எ�� author-� ெபய� ெவ��படாதைத கவ��க��. ஏென�� இ� 7 எ��� ெகா�ட ெபய� ஆ��.



9.5 Aggregate functions �ல� data-ைவ� ெகா�� 249



கண���க� ெச�த�



MySQL-� ஒ� column-� இ���� ம���கைள� ெகா�� கண��க� ேபா�வத�ேகா அ�ல� அதைன group ெச�வத�ேகா பல functions உ�ளன. min() எ�� function ஒ� column-� ேச��� ைவ�க�ப������ ம���க��, �க���ய ம���ைன� க�����க�பய�ப��. max() எ�� function ஒ� column-� ேச��� ைவ�க�ப������ ம���க�� �க�ெப�ய ம���ைன� க�����க� பய�ப��. அ�ேபாலேவ avg() எ�� function அ�த column-� ேச��� ைவ�க�ப������



250



அைன�� ம���க�� average ம���ைன� க������ அதைன தசம எ��� ெவ��ப����.



இதைன ��வ�� உதாரண��� காணலா�.



SELECT MIN(marks), AVG(marks), MAX(marks) FROM person;



251



9.6 Date functions �ல� ேத� ம��� ேநர��ைன� ைகயா�த� 252



Date ம��� time-ஐ ஒ��� ெச�� அதைன� ைகயா�வத�� MySQL-� பல functions உ�ளன. MySQL-ஆன� ேத� ம��� ேநர� ப��ய தகவ�கைள ��வ�� இர�� வ�வ��� �������ற�.



YYYY-MM-DD HH:MM:SS (Eg: ’2005-09-30 18:43:01′) YYYYMMDDHHMMSS (Eg: 20050930184301)



253



CURDATE() எ�� function இ�ைறய ேத�ைய��, CURTIME() எ�� function த�ேபாைதய ேநர�ைத��, அேதேபா� now() எ�� function த�ேபாைதய ேத� ம��� ேநர�ைத�� ெகா��கவ�ல�. இ� ��வ�மா�.



254



DATE_ADD() ம��� DATE_SUB() எ�ப� ேபா�ற functions ேத�கைள ைவ�� கண��� ேபா�வத�ேகா அ�ல� date/time���� ேநர� அ�ல� வ�ட� ேபா�ற தகவ�கைள ம��� ���ெத��பத�ேகா பய�ப���றன.



ேம�� க�த ஒ���� ��களான, greater than(>),less than( 5.0.2-�� ம��ேம காண�ப��. அத�� ��ைதய version-க�� ஒ� பயனைர ���வத�� delete commandதா� பய�ப�� . இ� ��வ�மா�.



DELETE FROM user WHERE User = ‘Nithya’ AND Host = ’192.168.1.10′; FLUSH PRIVILEGES;



351



13.3 ஒ� user-�� ெபய� மா�ற� ெச�த�



இ� �க அ�தாக நைடெப�� ெசய� ஆ��. ஒ� username எ�ேபா� மா�ற�ப�ெம��, ஒ� �ல அ�வலக�க�� ஒ� நப��� ெகா��க�ப�� username அவ�ைடய surname-ஐ� ெபா��� அைம��. அ�ேபா� அ�த நப�� ��மண����� �� அவ��



352



surname மா�ற�ப�வதா�, அவ�ைடய username-� அைத�ெபா��� மா�ற�பட ேவ�������.



எனேவ “��யா �ைரசா�” எ�� இ���� ஒ�வ�ைடய ெபய�, ��மண����� �� “��யா ��வாச�” என மா�ற�ப��ற� எ��, RENAME USER command -ஐ� பய�ப���, இதைன ��வ�மா� மா�றலா�. RENAME USER old_user@host TO new_user@host; ஆனா� இ�த rename user எ�� command, MySQL version >= 5.0.2-�� ம��ேம காண�ப��. அத�� ��ைதய version-க�� ஒ� பயன��� ெபய� மா�ற� ெச�ய update 353



commandதா� பய�ப�� . இ� ��வ�மா�.



UPDATE user SET User = ‘Nithya_Shrinivasan’ WHERE User = ‘Nithya_Duraisamy’ AND Host = ‘localhost’; UPDATE db SET User = ‘Nithya_Shrinivasan’ WHERE User = ‘Nithya_Duraisamy’



354



AND Host = ‘localhost’; FLUSH PRIVILEGES;



இ�த update command, �த�� user table-



355



ஐ��, ��ன� அத� ெதாட�பான rows-ஐ database table-��� மா���.



13.4 Wildcards-�ல� ப�ேவ� IP address-�� ஒேர �ைற�� users-ஐ உ�வா��த�



Percent (%) ம��� Underscore(_)எ�� இர�� wildcard characters-ஐ� பய�ப��� நா� ஒேர மா��யான pattern-� இ���� ip address-ஐ� க������, ��ன� க�����க�ப�ட அைன�� IP



356



�கவ�க���� பயன�கைள உ�வா�கலா�. இ� ��வ�மா�



CREATE USER ‘Karthik’@’192.168.0.%’ IDENTIFIED BY ‘abcd’;



இ�� 192.168.0.x எ�� IP range-� �வ��� அைன�� IP�கவ�க���� பயன�க� உ�வா�க�ப���ளன�. ேம�� ஒ� �����ட �கவ��� ம��� அ�லாம�, அைன�� �கவ�க��� login ெச�வத��� ேதைவயான username ம��� password-ஐ உ�வா�க query-ைய



357



��வ�மா� அைம�கலா�.



CREATE USER ‘Karthik’@’%’ IDENTIFIED BY ‘phrasebook’;



13.5 ஒ� database/table-�� அ�ம� ெப�ற பயன�கைள� ப��ய�ட�



358



SELECT Db FROM db WHERE User = ‘user’ AND Host = ‘host’; SELECT Table_name FROM tables_priv WHERE User = ‘user’ AND Host = ‘host’ AND Db = ‘db’; ஒ� பயன� எ�ெத�த database-ஐ� பய�ப����றா� எ�பைத� க�ட�ய ‘db’ table-ஐ user ம��� host-ஐ� பய�ப��� query- இ�வத� �ல� க�ட�யலா�.



359



SELECT Db, Table_name FROM tables_priv WHERE User = ‘Nithya’ AND Host = ‘localhost’ ேம�� அ�த user, எ�ெத�த tables-ஐ� பய�ப����றா� எ�பைத� க�ட�ய tables_priv எ�� table-ஐ user, host ம��� db ேபா�ற �வர�கைள condition-� ெகா��� query-இ�வத� �ல� காணலா�.



13.6 Password -ஐ மா��த�



��க� MySQL -இ� ஒ� சாதாரண user-ஆக login ெச���ேபா�, உ�க�ைடய password-ஐ 360



மா�� அைம�க query-ைய ��வ�மா� அைம�கலா�.



SET PASSWORD = PASSWORD(‘murali’);



இ�� ‘murali’ எ�ப� ��க� ��தாக மா����ள உ�க�ைடய password ஆ��.



361



ேம�� ��க� ஒ� admin-ஆக login ெச���ேபா�, ம�றவ�க�ைடய password-ஐ மா�� அைம�க ��வ�� query-ைய� பய�ப��தலா�.



SET PASSWORD FOR kumar@localhost = PASSWORD(‘xxxx’);



362



இ�� ‘xxxx’ எ�ப� ��க� ‘kumar’-�� ��தாக மா����ள password ஆ��. ேம�� ��வ�� update query -�ட இேத ேவைலைய� ெச��ற�.



UPDATE user SET Password = PASSWORD(‘xxxx’) WHERE User = ‘kumar’ AND Host = ‘localhost’;



இ�வா� ��க� set password command-ஐ� பய�ப����ேபா� ம��� FLUSH PRIVILEGES -ஐ� பய�ப��த� ேதைவ��ைல எ�பைத �ைன�� ெகா�க.



363



13.7 Users-�� நம� tables-ஐ� பய�ப���வத�கான privileges-ஐ வழ��த�



Grant command-ஐ� பய�ப��� ஒ� database அ�ல� tables-ஐ அ��வத��� ேதைவயான அ�ம�கைள நா� �ற users-�� வழ�கலா�. இத�கான syntax ��வ�மா�. GRANT privileges ON db.table



364



TO user@host IDENTIFIED BY ‘password’; உ�ைம�� ெசா�லேபானா�, MySQL version 4.1-�� ��ன� இ�த GRANT command- ஐ� தா� ஒ� ��ய user-ஐ உ�வா�க� பய�ப��. நா� ஒ� user-�� ேவ��ய அைன�� அ�ம�கைள�� ஒ� comma �ல� ���� ஒேர வ��� ெகா����டலா�.



��வ�� எ����கா��� karthik-எ�� user-�� library database-� உ�ள ‘book’ table-ஐ select ெச�ய�� insert ெச�ய�� ம��ேம அ�ம�க� வழ�க�ப���ளன.



365



இவ��� data-ைவ மா�றேவா அ��கேவா அ�ம� �ைடயா�.



GRANT SELECT, INSERT ON library.book TO ‘karthik’@’localhost’ IDENTIFIED BY ‘bca’;



ஒ� user-�� ப��ய�� உ�ள அைன�� அ�ம�கைள�� வழ�க, “ALL PRIVILEGES”



366



அ�ல� ெவ�� “ALL” எ�� keyword-ஐ� பய�ப��தலா�. ��வ�� உதாரண��� ‘kumar’ எ�� user-�� library database-� உ�ள ‘book’ table-ஐ அ��வத�கான அைன�� அ�ம�க�� வழ�க�ப���ளன.



GRANT ALL PRIVILEGES ON library.book TO ‘karthik’@’localhost’;



367



��க� ஏ�கனேவ ��ைவ�� இ���� ஒ� user-�� அ�ம�கைள வழ��னா�, அ�ேபா� IDENTIFIED BY clause -ஐ� பய�ப��த ேதைவ��ைல.



13.8 ஒ� User தன������ privileges ��வைத�� ம�றவ��� வழ��த� 368



ஒ� User அைன�� privileges -ஐ�� ெப����தா�� �ட அவரா� த��ைடய privileges ��வைத�� ம�றவ��� வழ�க ��யா�. இ�வா� அவ� வழ�க ����னா�, �த��த�� அவ��� அ�ம�க� வழ�க�ப��ேபாேத with grant option – எ�ப�ட� ேச��� வழ�க�ப����க ேவ���. அ�ேபா�தா� அவரா� த��ைடய privileges-ஐ ம�றவ��� வழ�க ����. இத�கான syntax ��வ�மா�.



GRANT privileges ON db.table TO user@host



369



IDENTIFIED BY ‘password’ WITH GRANT OPTION;



ேம��, ஒ�வரா� தன�� இ�லாத privileges-ஐ ம�றவ��� ெகா��க ��யா��டா���ட, ெவ�ேவ� permissions ெகா�ட இர�� users த�க�ைடய privileges -ஐ� ப���� ெகா�ளலா�.



13.9 ஒ� User-�� இ���� privileges-ஐ� கா�த�



Show grants எ�� command-ஐ� பய�ப��� 370



ஒ� user-�� இ���� அைன�� privileges-ஐ�� காணலா�.



SHOW GRANTS FOR karthik;



ேம�� ��வ�� command-� �ல�, நா� அவ��� அ�ம�கைள ெகா��க�



371



பய�ப�������� Grant statements-ஐ� ப��ய�டலா�.



SHOW GRANTS FOR ‘karthik’@’localhost’;



இ�வைகயான statement-� இட�ெப��



372



password, ��க� உ�ைமயான password-ஐ அ��� ெகா�ளாத வைக�� encrypt ெச�ய�ப�டதாக இ����. FOR clause இ�லாம� ெகா��க�ப�� grant statement ஆன� user-ஐ current_user() – ஆக கண���ெகா��, அவ����ய privileges-ஐ� கா���.



13.10 ஒ� user-�கான அ�ம�கைள ���த�



Revoke-ஐ� பய�ப��� ஒ� பயன��� உ�டான privileges-ஐ ��கலா�. எ�ென�ன privileges ��க�படேவ��� எ�பைத



373



வ�ைசயாக இைட�� comma-ைவ� ெகா��ேதா, அ�ல� ALL எ�� keyword-ஐ� பய�ப���ேயா அைன�� privileges-ஐ�� ����டலா�.



��வ�� எ����கா��� உ�ள query, ‘karthik’ எ�� user-�� select privilege-ஐ ம��� library database-� உ�ள book table����� ������ற�.



REVOKE select ON library.book FROM karthik@localhost;



374



��வ�� எ����கா��� உ�ள query, ஒ� user-�� உ�டான grant option-�ட� ேச��� அைன�� privileges-ஐ�� ������ற�. REVOKE ALL PRIVILEGES, GRANT OPTION ON sampdb.mytable FROM ‘shrini’@’localhost’;



375



13.11 Network access-ஐ ெசய�ழ�க ெச�த�



TCP/IP �ல� வ�� remote access-ஐ ெசய�ழ�க ெச�ய my.cnf-�ட� skip-networking-ஐ இைண�க�� அ�ல� –skip-networking switch ஐ� பய�ப��� mysqld-ஐ start ெச�ய��. ��ன� இ�த MySQL, localhost-���� socket வ�யாக வ�� இைண�ைப ம��ேம ெப���ெகா���.



# mysqld_safe --skip-networking



&



Network access-ஆன� disable



376



ெச�ய�ப����டெத��, user-ஆ� remote hosts வ�யாக MySQL-�ட� இைண�ைப ஏ�ப��த ��யா�. ��க� MySQL-�ட� remote access-ஐ அ�ம��தா��, MySQL-��� ெவ���ற உல���� இைட������ firewall, அத���ய appropriate port-� இைண�ைப உ�டா���. ெபா�வாக, 3306 எ�� port இத�காக� பய�ப��த�ப��.



13.12 User authentication-ஐ ெசய�ழ�க ைவ�த�



377



�லசமய�க�� ��க� உ�க�ைடய password-ஐ மற���ட ேந���. அ�ேபா� உ�க�ைடய ��ய password-ஐ reset ெச�ய, இ�த MySQL-ஐ password ேக�காத வைக�� restart ெச�ய ேவ��� அ�வா� ெச�வத�� ��க� Admin rights ெப�றவராக இ��க ேவ���. �த�� MySQL server-ஐ ���� ��ட��, உ�க�ைடய master my.cnf file-�ட� skip-grant-tables எ�பைத இைண�� �� restart ெச�ய��. மாறாக – - skip-grant-tables எ�� switch-�ட� ேச���� mysqld-ஐ restart ெச�யலா�. # mysqld_safe --skip-grant-tables &



378



இ�வா� restart ெச�வத��ல�, நா� password இ�லாமேலேய ��வ�மா� இ�த MySQL-�ட� இைண�க�பட ����.



MySQL -u root இ�வா� password இ�லாம� நா� MySQL-�ட� இைண�க�ப����ட ��ன�, எ�ேபா��ேபா� நா� ந��ைடய ��ய password-ஐ அைம��� ெகா�ளலா�.



update user set password=PASSWORD("NEWROOT-PASSWORD") where User='root';



���� user authentication-ஐ enable ெச�ய 379



FLUSH PRIVILEGES command-ஐ� பய�ப��தலா� அ�ல� MySQL server-ஐ -–skip-grant-tables இ�லாம� restart ெச�யலா�.



13.13 SSL -�ல� பா�கா�பான இைண�ைப உ�வா��த�



MySQL அத� database server-��� client��� இைட�� encrypt ெச�ய�ப�ட network இைண�ைப ஏ�ப���வத�� SSL-ஐ� பய�ப����. இ�த அைம��, உ�க� server-�ைடய compile ேநர��ேலேய enable ெச�ய�பட ேவ���.



380



ேம��இ� enable ெச�ய�ப���ளதா எ�பைத ச�பா��க ��வ�� command-ஐ� பய�ப��தலா�.



SHOW VARIABLES LIKE ‘have_openssl’; இ�த command, “Yes” அ�ல� “No” எ�பைத அத� variable-�ட� ேச��� ெவ��ப����. ஒ�ேவைள இ�த அைம�� compile time-� enable ெச�ய�பட��ைலெய��, ��க� ���� உ�க� server-ஐ –with-vio ம��� –with-openssl ேபா�ற configure switches-ஐ� பய�ப��� recompile ெச�ய ேவ���. ஒ� encrypt ெச�ய�ப�ட SSL இைண�ைப ஏ�ப���வத��, ��� வைகயான certificate 381



files-ஐ ைவ����க ேவ��� அ�ல� அவ�ைற உ�வா�க ேவ���. அைவ certificate authority certificate, server certificate ம��� client certificate ஆ��. �த�� my.cnf file-� [mysqld] ப���� ��, ��வ�� வ�கைள இைண�க��. இைவ இ�த ��� வைகயான certificate files ைவ�க�ப���ள இட�ைத� ������.



ssl-ca=/path/to/CA-cert ssl-cert=/path/to/server-cert ssl-key=/path/to/client-cert



382



��ன� அேத file-� [client] ப���� �� server settings-ஐ� ேபா�ேற client settings-ஐ�� இைண�க��. எனேவ ��க� server-��� பய�ப����, அேத ��� certificate files-ஐேய client-��� பய�ப��தலா�. மாறாக, ��க� ஒ�ெவா� certificate-ஐ�� MySQL-�� command-line argument-ஆக ��வ�மா� ����டலா�.



MySQL –ssl-ca=/path/to/CA-cert \ –ssl-cert=/path/to/server-cert \



383



–ssl-key=/path/to/client-cert



384



MySQL-� Application Programming Interface API



MySQL server-ஐ ஒ� பயன� �லபமான வைக�� ெதாட�� ெகா�வத�காக உ�வா�க�ப�ட ஒ�ேற API ஆ��. ப�ேவ� programming ெமா�க�� எ�த�ப���ற இ�த API-� ஏேத�� ஒ�ைற நா� ேத��ெத���� பய�ப��தலா�. ஒ� �����ட ெமா��� API இ�ைலெய�றா��, 385



Open database connectivity என�ப���ற ODBC �ைண�ட� நா� MySQL server-ஐ ெதாட�� ெகா�ள ����.



14.1 C ெமா��� இய��� API இ�த C ெமா��� இ���� API-தா�, ம�ற ெமா�க�� இய��� API-�� அ��தளமாக �ள���ற�. அதாவ� ம�ற ெமா�க�� API-� இ���� ஒ�ெவா� function call-� , இ�த C library function-�ட� தா� ேநர�யாக ெதாட�� ெகா������. இ�த C API-ஐ பய�ப��த ��க� உ�க�ைடய program-ஐ libmysqlclient.so-�ட� இைண�க ேவ���. இ�த library-ஆன� source���� MySQL-ஐ compile ெச���ேபா�



386



தானாகேவ install ெச�ய�ப��. ெவ�ேவ� components-ஆக ���க�ப���ற binary distributions-�காக, MySQL-devel-* எ��� ெபய� ெகா�ட ஒ�ைற நம� platform-� install ெச�ய ேவ���. இ� libraries ம��� header files package-ஐ உ�ளட�������. MySQL API-ஐ பய�ப���� ஒ� C program, க���பாக MySQL.h எ�� file-ஐ உ�ளட�����க ேவ���. இ�த file உ�க� system-� ஏ�கனேவ இ���� include directory-� காண�ப��. இ� ��வ�மா�.



#include libmysqlclient.so-�ட� இைண�ப� எ�ப� 387



compiler-ஐ� ெபா��� மா�ப��. ெபா�வாக gcc �ல� எ�வா� mytest.c எ�� ெபய� ெகா�ட ஒ� program, compile ெச�ய�ப�� libmysqlclient-�ட� இைண�க�ப��ற� எ�பைத ��வ�� எ����கா��� காணலா�. shell> gcc o mytest mytest.c -lmysqlclient இ�வா� compile ெச���ேபா�, ஏேத�� “error messages” வ�தா�, mysql_config எ�� utility- ைய� பய�ப��� இ��� எ�ென�ன compiler options ேதைவ எ�பைத� க�����கலா�. ேம�� –cflags, –include ம��� –libs ேபா�ற switches-�ட� ேச��� mysql_config-ஐ run ெச���ேபா�, இ� இ��� �ல அ�கமான தகவ�கைள� 388



ெகா����. இ� ��வ�மா�.



shell> mysql_config –cflags –include –libs -I/usr/include/mysql -mcpu=i486 -fno-strength-reduce -I/usr/include/mysql -L/usr/lib/MySQL -lMySQLclient lcrypt -lnsl -lm -lz -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns lresolv



14.2 MySQL-�ட� இைணத� 389



MySQL database-�ட� இைண�பத�� mysql_init() ம��� mysql_real_connect() என�ப���ற இர�� function calls ேதைவ. �த� function, MySQL type-ஐ� ேச��த ஒ� object-ஐ initialize ெச���. இர�டாவ� function, இ�த object-ஐ அத� argument-ஆக பய�ப����ெகா���. ��ன�, அ��த��� இ���� API calls-� , இ�த object எ�த database connection-ஐ பய�ப��த ேவ��� எ�பைத வ����த உத�� “Resource argument”-ஆக� பய�ப��த�ப��. Port argument எ�ப� database-�ட� இைண�பத�� உத�� TCP/IP Port-ஆக பய�ப��த�ப��. இத� ம��� localhost



390



இைண���� 0-ஆக இ����.



MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mysql, “host”, “user”, “password”, “dbname”, port, unix_socket, client_flag); ��க� இைண���காக, ேவ� எதாவ� socket-ஐேயா அ�ல� named pipe-ஐேயா பய�ப��தாதவைர unix socket argument-� ம��� NULL-ஐ� ெப������. அேதேபா� mysql client library-� ஒ� �ல features-ஐ enable ெச�யாதவைர, client_flag argument-� ம���� NULL-ஆகேவ இ����. 391



இைண�� ெவ��கரமாக �க�����டெத�� mysql_real_connect() -ஆ� return ெச�ய�ப�� ம��� ஒ� mysql object ஆ��. இ�த object-� �த�� argument-ஆக அ��ப�ப�ட object-� ஒ�ேற ஆ��. எனேவ இதைன ஒ� ��ய variable-�� assign ெச�ய� ேதைவ��ைல. ேம��, இைண�� ஏேத�� ஒ� காரண�தா�ெவ��கரமாக �கழ ��ைலெய��, இ�த function, “NULL” ம���ைன return ெச���.



14.3 Query-ைய execute ெச�த� 392



mysql_query() function ஒ� query-ைய execute ெச�ய உத��. இ�த function-�� argument-ஆக அ��ப�ப�� query ஒ� “NULL terminated string”-ஆக இ��க ேவ���. ேம�� இ���� ெகா��க�ப�� semicolon ேதைவ��ைல. இ�த query, mysql object-ஐ� பய�ப��� உ�வா�க�ப�ட database connection-� execute ெச�ய�ப��. ஒ� query-யான�, binary data-ைவ உ�ளட������ற� எ�றா�, நா� mysql_real_query() எ�� function-ஐ� பய�ப��� அ�த query-� length-ஐ� ����ட ேவ���. ஏென�� binary data-ஆன� “” எ��



393



character-ஐ� ெகா�����றெத��, இதைன அ�த mysql_query() function, string-� இ�� எ��� ����ட�ப�வத�கான அ���யாக இ�த “”-ஐ� கண��� ெகா���. எனேவ binary data-ைவ� ெகா���ள query-�� mysql_real_query() function-ஐ� பய�ப���வ� �ற�த�.



mysql_query(&mysql, “query”); mysql_real_query(&mysql, “query”, length); Query-யான� ெவ��கரமாக execute ெச�ய�ப����டெத��, இ�த query function ெகா���� ம��� “NULL”-ஐ� ெப������. அ�ப� இ�லாம� ஏேத�� ஒ� தவ� எ�ப����டெத��, இ�த function ���� 394



அ���� ம���, ��வ�� அ�டவைண�� இ���� ம���க�� ஏேத�� ஒ�றாக இ����.



Error Codes from mysql_query() CR_COMMANDS_OUT_OF_SYNC – Commands were executed in an improper order. CR_SERVER_GONE_ERROR – The MySQL server has gone away. CR_SERVER_LOST – The connection to the server was lost during the query. CR_UNKNOWN_ERROR – An unknown error395



occurred.



14.4 Result set-���� தகவ�கைள� ெப�த�



��க� ஒ� query �ல� return ெச�ய�ப�� தகவ�கைள எ��பத�� ��னா�, அ�த query-� result-ஐ MYSQL_RES எ�� object-�� assign ெச�ய ேவ���. mysql_use_result() எ�� function கைட�யாக execute ெச�ய�ப�ட query-� result-ஐ இ�தைகய object-�� assign ெச�ய உத��. இ�வா� result-ஐ object-�� assign ெச����ட��, இ�த reference-ஐ



396



அ��காம� நா� அ��த��த query-ஐ execute ெச�யலா�. ெவ��கரமாக query-ஆன� execute ெச�ய�ப�டா�, இ�த function, “NULL” ம��ைப ���� அ����. அ�ப� இ�ைலெய��, ��ன� �����ட அ�டவைண�� இ���� ஏேத�� ஒ� error code-ஐ ���� அ����. MYSQL_RES result; MYSQL_ROW row; result = mysql_use_result(&mysql); row = mysql_fetch_row(result); mysql_fetch_row() எ�� function, execute ெச�ய�ப�ட query-���� தகவ�கைள



397



ஒ�ெவா� row-வாக எ��� அதைன mysql_row structure-� ெவ��ப����. அவ�ைற நா� row[0]-�� ெதாட��, row[n1]��ய ஒ�ெவா� row-வாக அ�கலா�. இ�� n எ�ப� அ�த data set-� இ���� column-� எ���ைகைய� ������. mysql_num_fields() எ�ப� column-� எ���ைகைய��, அ�வாேற mysql_num_rows() எ�ப� rows-� எ���ைகைய�� ெகா��க� பய�ப��.



14.5 Error Messages-ஐ ெவ��ப���த� 398



mysql_errno() ம��� mysql_error() எ�� functions தவ�க� ஏ�ப��ேபா�, அ�த தவ��� உ�டான எ�ைன�� ம��� அ� எ�வைகயான தவ� எ�பைத �ள��� ஒ� message-ஐ�� ெவ��ப����. இ�த function பய�ப���� arguments எ�ப� MySQL இைண��� object தா�. ேம�� இ�த function-ஆ� return ெச�ய�ப���ற error ப��ய தகவ�கெள�லா�, இ�த இைண��� கைட�யாக execute ெச�ய�ப�ட query-� இ���� error ப��ய தகவ�கேள ஆ��. எனேவ கைட�யாக execute ெச�ய�ப�ட query ெவ��கரமாக ெச�ய�ப�டெத�� mysql_errno() எ�� function, 0-ைவ�� ம��� mysql_error() எ�� function, NULL 399



ம��ைப�� return ெச���. mysql_errno(&mysql); mysql_error(&mysql); ��க� இ�வைகயான functions-ஐ ஒ� database-�ட� இைண���ேபாேதா அ�ல� ஒ� query-ைய execute ெச���ேபாேதா எ�வைகயான தவ�க� ஏ�ப���ளன எ�பைத� க�����க� பய�ப��தலா�.



14.6 இைண�ைப ����த� MySQL இைண�ைப� ெதாட��, அ�த இைண��� நம��� ேதைவயான ேவைலகைள� ெச�� ������ட ��ன�, அ�த இைண�ைப ����வத��



400



mysql_close() எ�� function பய�ப��. இ� mysql_init() �ல� allocate ெச�ய�ப�ட resource-ஐ de-allocate ெச�ய� பய�ப��.



mysql_close(&mysql); உதாரண� #include #include main() { MYSQL mysql; MYSQL_RES *result;



401



MYSQL_ROW row; int numrows, numcols, c; mysql_init(&mysql); /* Establish a database connection */ if (!mysql_real_connect(&mysql, “localhost”, “username”, “password”, “dbname”, 0, NULL, 0)) { fprintf(stderr, “Failed to connect to database: Error %d:



402



%s\n”, mysql_errno(&mysql), mysql_error(&mysql)); } /* Execute a query */ char query[] = “SELECT book_id, cond, title FROM book”; if (mysql_query(&mysql, query)) { fprintf(stderr, “Error executing query: Error %d: %s\n”,



403



mysql_errno(&mysql), mysql_error(&mysql)); } /* Assign the result handle */ result = mysql_use_result(&mysql); if (!result) { fprintf(stderr, “Error executing query: Error %d: %s\n”, mysql_errno(&mysql), mysql_error(&mysql)); }



404



/* Find the number of columns in the result */ numcols = mysql_num_fields(result); /* Loop through the result set to display it */ while (row = mysql_fetch_row(result)) { for(c=0; c cpan cpan> install DBI



406



ேம�� windows platform-� Activeperl distribution-ஐ� பய�ப���, ppm.bat script-� �ல� perl modules-ஐ� ��வ�மா� install ெச�யலா�.



C:\perl\bin> ppm.bat ppm> install DBI



அ�வாேற MySQL database driver-ஐ இைண�க, DBD::MySQL module-ஐ அேத �ைற�� install ெச�ய��.



407



cpan> install DBD::mysql MySQL DBD-ைய� பய�ப���� perl script-ஆன�, ��வ�� வ�ைய உ�ளட�����க ேவ���.



use Mysql;



14.8 MySQL-�ட� ெதாட�� ெகா��த�



MySQL object-� ேம� ெசய�ப�� connect method �ல� நா� database-�ட� இைண�கலா�. இ� dbh என�ப�� database 408



handle-ஐ� ெகா����. ேம�� localhost-�ட� ெதாட�ைப ஏ�ப���வத�� undef எ�பைத �த� argument-ஆக� பய�ப��தலா�. ஒேர ஒ� DBI method, C API-� உ�ள mysql_init() ம��� mysql_real_connect() எ�ற இர�� functions-ஐ�� அைழ�����. $dbh = Mysql->connect(host, dbname, user, password);



14.9 Query-ைய execute ெச�த� 409



ஒ� query-ைய execute ெச�ய, dbh-� ேம� sql statement-ஐ argument-ஆக ைவ�� , query() method-ஐ அைழ�க��. இ� sth என�ப�� statement handle-ஐ� ெகா����.



$sth = $dbh->query(query);



14.10 Result set-���� தகவ�கைள� ெப�த�



@row = $sth->fetchrow;



410



sth-� ேம� ெசய�ப�� fetchrow() method-ஆன� array அைம��� data-ைவ ெவ��ப����. �த��ைற இ�த fetchrow method அைழ�க�ப��ேபா�, அ� dataset-� இ���� �த� row-ைவ ெவ��ப����. அ�வாேற அத� அ��த��த row-ைவ ெவ��ப��த அைழ��கைள அ����. கைட��� ெவ��ப��த records ஏ�� இ�லாத �ைல��, NULL-ஐ ெவ��ப����. இ�வாேற sth-� ேம� ெசய�ப�� numrows எ�� method, rows-� எ���ைகைய��, numfields எ�� method, columns-� எ���ைகைய�� ெவ��ப����.



14.11 Error Messages-ஐ ெவ��ப���த�



411



errno ம��� errstr ேபா�ற methods �ைறேய error எ�ைண�� ம��� error ப��ய தகவைல�� ெத���க உத���றன. இ�த methods ஆன�, dbh-� �� அைழ�க�ப��ேபா�, அ� கைட�யாக execute ெச�ய�ப�ட query-� இ���� தவ�கைள� ப��ய �வர�கைள� த��ற�.



$errno = $dbh->errno; $errstr = $dbh->errstr;



அ�வாேற ஒ� connection-ஐ



412



உ�வா���ேபா� உ�டா�� தவ�கைள� ப�� ெத��� ெகா�ள, அேத methods-ஐ MySQL object-� �� அைழ�க��.



$errno = Mysql->errno; $errstr = MySQL->errstr;



14.12 இைண�ைப ����த�



இைண�ைப ����வத�ெகன எ�த ஒ� த� DBI method-� �ைடயா�. ஒ� program-ஐ exit ெச���ேபா�, resources எ�லா� தானாகேவ ����க�ப�����. Exit ெச�வத��



413



��னா�, resource-ஐ ����க ����னா� undef எ�� command-ஐ handle-� �� பய�ப���� ெச�யலா�. உதாரண� #!/usr/bin/perl use Mysql; /* Establish a database connection */ $dbh = Mysql->connect(undef, “dbname”,”username”, “password”) or die (“Failed to connect to database: Error ” . Mysql->errstr); /* Execute a query */



414



$sql_statement = “SELECT book_id, cond, title FROM book”; $sth = $dbh->query($sql_statement) or die (“Error executing query: Error ” . $dbh->errno); /* Loop through the result set to display it */ while (@row = $sth->fetchrow) { for($i=0; $inumfields; $i++) { print $row[$i] . “\t”; } print “\n”;



415



}



14.13 PHP ெமா��� இய��� API PHP Applications-� ெப��பாலானைவ MySQL database-ஐ�தா� பய�ப�����றன.



PHP enable ெச�ய�ப�ட web server-� MySQL-� support-ஐ� ப��� ெத��� ெகா�ள எ�பைத உ�ளட��ய ஓ� எ�ய script-ஐ உ�வா�க��. இ�த script-ஐ web browser-� �ற�� MySQL support அ�ல� MySQLi support எ��



416



ப��ைய� பா��க��. MySQLi அதாவ� MySQL Improved எ�ப� PHP API-� ஒ� ��ய version ஆ��. இ� MySQL 4.1.3 ம��� அத�� ேம�ப�ட version-க�� இய�க���ய�. இதைன procedural �ைற�ேலா அ�ல� object-oriented �ைற�ேலா பய�ப��தலா�. இ�த� ப���� MySQLi-ஐ� ப��� கா�ேபா�. பைழய MySQL API எ�ப�, இ�த MySQLi-� procedural பய�பா��ேலேய அட�����. Compile time-� MySQLi support-ஐ –with-mysql=/path /to/mysql_config எ�� switch-ஐ� பய�ப��� enable ெச�யலா�.



417



14.14 MySQL-�ட� இைண�த�



$conn = mysqli_connect(“host”, “user”, “password”, “dbname”); $conn = new mysqli(“host”, “user”, “password”,”dbname”); ேமேல உ�ள �த� syntax-� mysqli_connect() functions ெகா��க�ப���ள arguments-ஐ� பய�ப��� ஒ� dbh அதாவ� database connection handle-ஐ� ெகா���ற�.



418



இர�டாவதாக இ���� syntax-� இேத ேவைல, MySQLi object-� �� constructor method-ஐ� பய�ப���வத� �ல� ெச�ய�ப��ற�. இ�வா� procedural �ைற�ேலா அ�ல� object-oriented �ைற�ேலா இைண�ைப உ�வா�கலா�. இத� ��னா� ெதாட�� database operations எ�லா� mysqli_connect()-���� arguments-ஐ� பய�ப���, �ைடகைள அ���� functions-ஆகேவா அ�ல� MySQLi object-� ஒ� ��ய instance �� அைழ�க�ப�� methods ஆகேவா இ����.



14.15 Query-ைய execute ெச�த�



419



Procedural �ைற�� mysqli_query() function , ஒ� query-ைய அத� �த� argument-ஆக எ����ெகா�� ஒ� result handle-ஐ� ெகா����. ��ன� இ�தresult handle , இதைன� ெதாட��� அ��த��� வ�� “returned data”-ைவ உ�ளட��ய functions-�� argument-ஆக அ��ப�ப��.



$result = mysqli_query(query, $conn); $result = $conn->query(query); Object-oriented �ைற�� query() function,



420



ஒ� query-ைய அத� argument-ஆக எ����ெகா�� result handle-ஐ� ெகா����. இ�த result ம��ேம ஒ� object-ஆக க�த�ப�வதா�, இ�த object-� �� அ��த��� வ�� methods-ஐ அைழ�பத� �ல� நா� queries-ஐ process ெச�யலா�.



14.16 Result set-���� தகவ�கைள� ெப�த�



procedural �ைற�� mysqli_fetch_array() எ�� function ஒ�ெவா� �ைற அைழ�க�ப��ேபா��, result-���� ஒ�



421



data record-ஐ� ெகா����. அேதேபா� object-oriented �ைற�� result handle எ�� object-� �� ெசய�ப�� fetch_array() function-� இேத ேவைலைய� ெச��ற�. இ�த இர�� �ைற��� கைட��� data ஏ�� இ�லாத �ைல�� “NULL”-ஆன� return ெச�ய�ப��.



$row = mysqli_fetch_array($result); $result->fetch_array(); Array-ஆ� return ெச�ய�ப�� ம���க� numeric ம��� associative indexes-ஐ� ெப������. Numeric index-� ம���க� 0-�� ெதாட��422



select ெச�ய�ப���ள columns-ஐ� ெபா��� இட����� வல�வைர அைம��. Associative indexes-� ம���க�, column-� ெபய�க� அ�ல� query-� இ���� aliases-ஐ� ெபா��� அைம��. ஒ� query-ஆ� return ெச�ய�ப�� rows-� எ���ைகைய அ�ய procedural �ைற�� mysqli_num_rows() எ�� function-ஐ��, object-oriented �ைற�� result object-� �� num_rows() எ�� attribute-ஐ�� பய�ப��� க�ட�யலா�. அ�வாேற mysqli_num_fields அ�ல� num_fields எ�பைவ ஒ� query-ஆ� return ெச�ய�ப�� column-� எ���ைகைய அ�ய உத��.



423



14.17 Error Messages-ஐ ெவ��ப���த�



Procedural �ைற��, mysqli_error() எ�� function, “Connection handle”-ஐ அத� argument-ஆக எ����ெகா��, அ�த connection-� கைட�யாக execute ெச�ய�ப�ட query-� இ���� error ப��ய தகவ�கைள� ெகா����.



mysqli_error($conn); $conn->error();



424



Object-oriented �ைற�� connection object-� �� ெசய�ப�� error() method ஆன� இேத ேவைலைய� ெச��ற�. இ�வாேற error எ�ைண� க�����க mysqli_errno() ம��� errno() எ�பைத� பய�ப��தலா�.



14.18 இைண�ைப ����த�



ஒ� PHP script ����ேபா� MySQL resources எ�லா� தானாகேவ அ��க�ப�����.



425



mysqli_close($conn); $conn->close(); ஆனா�, ��க� இ�த resources-ஐ ����க ����னா� ேமேல �������ளவா� procedural �ைற�� mysqli_close() எ�� function-� object-oriented �ைற�� conn object-� �� ெசய�ப�� close() எ�� method-� ெச���. Database இைண�ைப ���காம�, அத� result resource-ஐ ம��� ����க ����னா� procedural �ைற�� mysqli_free_result() எ�� function ம��� object-oriented �ைற�� result object-� �� ெசய�ப�� free_result() எ�� method ெச���.



426



உதாரண�



429



Backup எ��த� ம��� Trouble Shooting ெச�த�



ந�றாக இய��� ெகா������ MySQL Server-�� பல வைகயான அபாய�க� ஏ�பட வா��� உ�ள�. எனேவ நா� இ�த� ப���� எ�வா� அ�வைகயான அபாய�கைள எ��ெகா�வ� எ�ப� ப��� பா��ேபா�.



15.1 Backup எ��த�



430



நம� database-� இ���� தகவ�கைள எ�லா� எ��� ைவ��� ெகா�வ� எ�ப� ஓ� அ��யாவ�யமான ெசய� ஆ��. ஏென�� அபாய�க� ஏ�ப�� கால�க��, நம� data-ெவ�லா� அ����ட ேந���, இ�த backup எ���ைவ�க�ப�ட file-����� நம� அ��த data-ைவ நா� ���� ெப��� ெகா�ளலா�. ஒ� database-� இ���� தகவ�கைள backup எ��� ைவ�பத�கான கால இைடெவ� பல கார�களா� ��மா��க�ப��ற�. அைவ எ�வள� �ைற ஒ� database-ஆன� update ெச�ய�ப��ற� ம��� backup எ��க�ப�� database-ஐ offline-� ைவ�பத� �ல� உ�டா�� �ர�சைனக�� �ைள�க� ேபா�றவ�ைற� 431



ெபா��� அைம��. ேம�� backup எ��க�ப�� �ைற�ைன இர�� வைக�ப��தலா�. அைவ Full backup ம��� Incremental backup எ�பதா��. இவ�ைற� ப�� ��வாக ��வ�மா� காணலா�.



15.2 Full Backup எ��த�



ஒ� database-� இ���� தகவ�க� அைன�ைத�� ெதாட���யான sql file-� backup எ��� ைவ�க mysqldump எ�� command பய�ப��.



432



இ�� database-� இ���� ஒ�ெவா� table-� ஒ� create statement-ஆக��, அ�த table-� இ���� ஒ�ெவா� row-�� ஒ� insert statement ஆக�� மா�ற�ப�� sql file-� ேச��� ைவ�க�ப��ற�.



ெபா�வாக இ�த mysqldump எ�� command அத� output-ஐ �ைர�� ெவ��ப����. எனேவ இ�த output-ஐ ஒ� file-��� redirect ெச�வத� �ல� நா� backup file-ஐ உ�வா�க ����. mysqldump –user=user –host=host –port=port \ –password=password dbname > filename.sql



433



mysqldump எ�� command-ஐ� ெதாட��� இைண��க���� ேதைவயான �வர�கைளஎ�லா� அ��த��, எ�த database-ஐ backup எ��க ேவ��ேமா அ�த database-� ெபயைர� ����ட ேவ���.



இ�த database-ஐ� ெதாட��� எ�த table-� ெபய�� ெகா��க�பட��ைலெய��, அ�த �� table-� backup எ���ைவ�க�ப��. அ�ப� இ�லாம�, அ�த database-ஐ� ெதாட��� ஏேத�� ஒ� �ல tables ெகா��க�ப������, அ�த tables ம��� backup எ��� ைவ�க�ப��.



434



��வ�� எ����கா��� library எ�� database-ஐ� ெதாட��� book ம��� person எ�� இர�� tables ெகா��க�ப����பதா� இ�த இர�� tables ம��� library.sql எ�� file-� backup எ���ைவ�க�ப��. இ�த command ‘shell’ prompt-� run ெச�ய�பட ேவ���.



mysqldump –user=root \ –password=murali library book person > library.sql;



435



இ�த command-� host ம��� port எ�� இர�� options-� ெகா��க�பட��ைல. எனேவ இ�த command, local machine-� default port-ஐ� பய�ப��� இைண�க �ய�����. ேம�� ��க� ஒ����� ேம�ப�ட databases-ஐ backup எ��க ����னா� –databases எ�� switch-ஐ� பய�ப���, அதைன� ெதாட��� ��க� backup எ��க 436



����� databases-� ெபய�கைள� ப��ய�டலா�. இ� ��வ�மா�.



mysqldump –user=root –password=murali \ –databases library exams > dump.sql



437



இ� ேபா�ேற, ஒ� MySQL server-� இ���� அைன�� databases-ஐ�� backup எ��க –all-databases எ�� switch ஐ� பய�ப��தலா�.



15.3 Incremental backup எ��த�



ஒ� database-ஐ ��வ�� backup எ��� ைவ�ப� எ�ப� ���த ேநர� ����� ஒ� ேவைல. ஏென�� full backup எ����ேபா�, ஒ� database-� இ���� tables ம��� அ�த table-� இ���� rows ேபா�ற அைன�� 438



�வர�க�� mysqldump எ�� command-�� அ��ப�பட ேவ���. இ�வா� ெச�வதா� busy-யாக இய��� ெகா������ server-� performance பா��க�ப��ற�. எனேவ இத�� மா�றாக இ��ப�தா� Incremental backup எ�பதா��. இ�த Incremental backup-� MySQL server ஆன� ஒ�ெவா��ைற restart ெச�ய�ப��ேபா�� அ�ல� FLUSH LOGS எ�� command ஒ�ெவா� �ைற வழ�க�ப��ேபா�� binary logging feature �ல� ஒ� ��ய binary log உ�வா�க�ப��. இ�த binary logging feature-ஐ enable ெச�ய log_bin எ�� option-ஐ my.cnf file-� ேச���, 439



MySQL server-ஐ restart ெச�ய�� அ�ல� mysqld-ஐ –-log-bin எ�� switch-�ட� ேச��� �வ�க��. இ�வா� உ�வா�க�ப�ட binary log-ஆன� ஒ� user-� home directory-� அதாவ� ெபா�வாக /var/lib/mysql எ�� ப����, hostname-bin.XXX எ�� ெபய�� ேச��� ைவ�க�ப��. இ�� hostname எ�ப� ஒ� server-�ைடய �கவ�யாக��, XXX எ�ப� ெதாட���யாக அைம�� எ�ணாக�� இ����.



ஒ�ெவா� �ைற MySQL server ஆன� restart ெச�ய�ப��ேபா�� அ�ல�



440



ஒ�ெவா��ைற FLUSH LOGS எ�� command-ஐ வழ���ேபா�� ஒ� ��ய binary log உ�வா�க�ப�� . இ�த binary log-ஆன� update ெச�ய�ப���ற data-�கான SQL query-ஐ உ�ளட�������. எ�த ஒ� update, Insert அ�ல� delete statement-ஆனா�� இ�த binary log-� ப�� ெச�ய�ப��.



உதாரண���� ஒ� update statement ஆன� எ�த ஒ� row-ைவ�� update ெச�ய��ைல எ�றா�� அ�த statement இ�த log-� ப��ெச�ய�ப��. இ�வா� ப�� ெச�ய�ப�வத� �ல� ந�மா� ஒ� database-� full backup-���� ச�ப��� 441



�க��த database மா�ற�க� வைர backup எ��� ைவ��� ெகா�ள ����.



இ�த binary log-ஆன� full backup எ��க�ப�ட�ட� �க�� transactions-�ட� �வ�க ேவ���. இ�த binary log-ஐ backup file-�ட� synchronize ெச�ய, mysqldump எ�� command-�ட� –flush-logs எ�� option-ஐ பய�ப��த��. இ� dump �வ���ேபாேத FLUSH LOGS command-ஐ வழ�க� பய�ப��. ��ன� database-� நைடெப�� ெசய�க� அைன��� அ��த��த binary log-� ெதாட���யாக எ�த�ப��.



442



இ�வா� binary logs-ஐ எ��வத� �ல� server-�ைடய performance பா��க�ப�டா�� அ�த performance இழ�� �க� ��ய அள�� அைம��. MySQL documentation-� binary logging, enable ெச�ய�ப�ட ஒ� server-� performance �ைறவாக இ���� என� �ற�ப���ள�



15.4 Backup-ஐ restore ெச�த� ��ெர�� நம� database-� நா� ேச��� ைவ�த தகவ�கெள�லா� அ���



443



��டெத��, ஏ�கனேவ நா� backup எ��� ைவ������ file-����� அேத தகவ�கைள ���� எ�வா� restore ெச�வ� எ�� பா��கலா�.



15.5 Full backup-ஐ restore ெச�த�



mysql –user=user –host=host –port=port \ –password=password dbname < filename.sql ேமேல �������ளவா� backup எ���ைவ�க�ப�ட file-ஐ MySQL எ��



444



command-�� input file-ஆக அைம�பத� �ல� �லபமாக நா� ஒ� database-ஐ restore ெச�யலா� ��க� backup எ��க�ப�ட database-� ெபயைரேய ���� பய�ப��� அேத ெபய�ேலேய ���� backup file-ஐ restore ெச���களானா�, அ�த database-� ஏ�கனேவ இ���� tables அைன��� overwrite ெச�ய�ப��.



mysqldump-� output-ஆன�, backup எ��க�ப�� ஒ�ெவா� table-��� ஒ� Drop Table statement-ஐ உ�ளட�������. ஒேர ஒ� database-�கான backup file-ஆன� 445



எ�த ஒ� Create Database statement-ஐ�� உ�ளட�����கா�. எனேவ ��க� இ�வைகயான file-ஐ restore ெச���ேபா� MySQL command-� அேத database-� ெபயைர ���� பய�ப��தாம� ேவெறா� database-� ெபயைர� பய�ப��� restore ெச�ய ேவ���. பல database-�கான backup file-ஆன� mysqldump எ�� command-�ட� –all-databases அ�ல� –databases எ�� option-ஐ� பய�ப��� உ�வா�க�ப��. இ�த file-� இ���� ஒ�ெவா� database-��� Create Database எ�� command ஆன� தானாகேவ ேச��க�ப������



446



15.6 Incremental Backup-ஐ restore ெச�த�



��க� ஒ� database-�கான Incremental backup-ஐ restore ெச�வத�� ��ன�, அத� full backup-ஐ restore ெச�ய ேவ���. அத�� அ��தப�யாக�தா� அ�த database-� �க��த மா�ற�க� அைன�ைத�� உ�ளட��ய binary log files-ஐ �ைற�ப� restore ெச�ய ேவ���. இத�காக mysqlbinlog எ�� utility பய�ப��த�ப��. இ�த utility ஆன� binary log format-� இ���� ஒ� backup file-ஐ sql



447



commands-ஐ உ�ளட��ய text format-� மா���. ��ன� இ�த mysqlbinlog-� output ஆன� MySQL command-�� input-ஆக அ��ப�ப��.



mysqlbinlog hostname-bin.XXX | mysql –options dbname இ�வா� நா� ஒ� command-� output-ஐ ம�ெறா� command-�� input-ஆக அ��ப pipe-�லமாகேவா அ�ல� file re-direction �லமாகேவா ெச�யலா�. ��வ�� command, ஒ� database-� இ���� ஒ�ெவா� binary log file-ஐ�� regular expression-ஐ� பய�ப���வத� �ல� ஒேர command-� restore ெச�வைத�448



காணலா�.



mysqlbinlog hostname-bin.[0-9]* | \ mysql –options dbname



இ�த regular expression, ெகா��க�ப���ள format-� ெபா���� ஒ�ெவா� file-ஐ��, இ�த command க������ அத� ஒ�ெவா�றாக MySQL-�� input-ஆக அ����. ஏென�� இ�த file name-� இ���� எ�க� எ�லா� ��னா� 0-ஆ� �ர�ப�ப����பதா�, இ�த command அ�த file-ஐ ெதாட���யான



449



�ைற�� read ெச���. ��க� ஒ����� ேம�ப�ட binary log files-ஐ manual-ஆன �ைற�� restore ெச�ய ����னா�, �ைறயான எ� வ�ைச�� அ�த file-ஐ� பய�ப��த ேவ���.



15.7 Table-� இ���� corrupt-ஆன data-ைவ� க�����த�



அ�தாக MySQL data files-� இ���� தகவ�க� corrupt ஆ�க�ப�� repair



450



ெச�ய�ப�� �ைலைம�� இ���� . எனேவ ஒ� table எ�வைகயான �ைலைம�� உ�ள� எ�பைத CHECK TABLE எ�� command-ஐ� பய�ப��� ெத��� ெகா�ளலா�. இத�கான syntax ��வ�மா�. CHECK TABLE table; REPAIR TABLE table; ��வ�� command, “book” எ�� table-� ஏேத�� error உ�ளதா எ�பைத� க�����க� பய�ப��.



CHECK TABLE book; இ�த command-� output ��வ�மா�



451



அைம�தா�, இ�த table ந�ல �ைல�� உ�ள� எ�� அ��த�. எனேவ நா� ப��பா���� ேவைலயா�� இ�த table-� ெச�ய� ேதைவ��ைல.



�லசமய�க�� இ�த output-� இ���� msg_text எ�� column-ஆன� check ெச�ய�ப�� table-� ஏேத�� error இ��தா� அ�த error-ஐ ெவ��ப����. இ�வா� error 452



ஏ�� ெவ��ப��த� ப������ REPAIR TABLE எ�� command �ல� MySQL ஆன� அ�த error-ஐ ச�ெச�ய �ய�����. ேம�� MySQL-�ட� வ�� myisamchk எ�� utility, MyISAM tables-ஐ SQL commands-ஐ �ட�� �ற�த �ைற�� ேசா��� ப�� பா����. ெவ�� myisamchk எ�� command எ�த option-� இ�லாம� run ெச�ய�ப��ேபா�, அ� ஒ� table-� ஏேத�� error உ�ளதா எ�� ம��� ேசா����. ேம�� பல வைகயான Command line switches-ஐ இைண�பத� �ல� இ��� �ல தகவ�கைள நா� ெபற ����. இ�த myisamchk எ�� utility-ஆ� ேசா��க�ப�� MyISAM table files



453



அைன��� நம� data directory-� .MYI file எ�� extension-�ட� ேச��� ைவ�க�ப������. நம� data directory-ஆன� /var/lib/mysql, எ�� “sampdb” எ�� database-� இ���� tables அைன��� ��வ�� command �ல� ேசா��க�ப��.



myisamchk /var/lib/mysql/sampdb/*.MYI



ெபா�வாக இ�த command-�ட� –fast எ�� switch-ஐ இைண�பத� �ல� அைன�� tables-ஐ�� நா� �ைரவாக ேசா��� �டலா�. இ� எ�ெத�த tables



454



�ைறயாக �ட�பட��ைல எ�பைத ம��� ேசா����. ேம�� –medium-check எ�� option �ைறயாக அைன�� �தமான ேசாதைனகைள�� table-� ேசா��� ��� ெப��பாலான errors-ஐ� க�������. இ�த –medium-check எ�� option-ஆ� �ர�சைனைய� க������ ெத�வாக� �ற ��ய��ைல எ�றா� ம��ேம –extend-check எ�� command ஐ� பய�ப��த��. ஏென�� இ�த option �க�� ெம�வாக இய���, ஆனா� இ��� ெத�வான �ைற�� table-ஐ ஆரா��� �ர�சைனைய� க������ �����. இ�வாறாக ேம���ய அைன��



455



switches-ஐ�� பய�ப���, ஒ� table file எ�வா� corrupt ஆ���ள� எ�பைத� க�ட��த�ட�, –recover எ�� switch �ல� நா� அதைன� ப�� பா��கலா�. ஆனா� ப��பா��பத�� ��ன� நா� mysqld-ஐ ���த ேவ���. ஏென�� நா� ப��பா���� சமய��� எ�த ஒ� data-�� MySQL server-ஆ� நா� repair ெச�� ெகா������ file-� எ�த�பட��டா�. �லசமய�க�� –recover எ�� switch �ல� நம� data file-� இ���� error-ஐ ச�ெச�ய ��ய��ைலெய��, –safe-recover எ�� switch �ல� நா� ச�ெச�யலா�. இ� �க�� ெம�வாக ெசய�ப�டா�� error-ஐ க������ ச�ெச�����



456



15.8 Server Crash-ஐ க�����த� எ�னதா� MySQL ��வ�மாக ப�ேசா��க� ப�டா�� �லசமய�க�� அத� server-� crash ஏ�பட வா��� உ�ள�. அ�தைகய சமய�க�� நா� இ�த server crash-ஐ� ப�� ஒ� bug report -ஐ உ�வா�க ேவ���. இைத�ப�� ��வ�மா� காணலா�. �த�� ஒ� crash ஏ�ப��ேபா� அத�� MySQL server காரணமா அ�ல� அத� client காரணமா எ�� க�����க ேவ���. இத�காக,



457



mysqladmin version



எ�� command-ஐ run ெச�ய��. இ� எ�வள� ேநரமாக UP-� உ�ள� எ�� �வர�ைத� ெகா����. இத� OUTPUT ��வ�மா�.



458



Uptime: 4 days 8 hours 20 min 3 sec இ�த output-� �ல� server-ஆன� ��ட ேநரமாக UP �ைல�� உ�ள� எ�பைத அ�யலா�. எனேவ �ர�சைன��� காரண� server அ�ல client-தா� என� ��மா��� நம� client program-ஐ ச�ெச�தா�



459



ேபா�மான�. ஒ�ேவைள இ�த output-ஆ� ெத���க�ப�� UP time �க� �ைறவாக இ��தாேலா அ�ல� mysqld ஆன� crash��� ��ன� இய�காம� இ��தாேலா, �த�� நா� நம� tables அைன�ைத�� corrupt-ஆகாம� உ�ளதா எ�� ேசா��க ேவ���. இத�காக நா� mysqld -ஐ ������� ��வ�� command-ஐ data directory-� இ��� run ெச�ய��.



myisamchk –silent –force */*.MYI இ� நம� system-� இ���� ஒ�ெவா� table-ஐ�� ேசா����. ��ன� mysqld-ஐ –log 460



எ�� switch-�ட� ேச��� restart ெச�ய��, அ�ல� my.cnf file-� [mysqld] ப���� �� log-ஐ இைண�க��. இ� execute ெச�ய�ப�� ஒ�ெவா� sql command-ஐ�� file-� log ெச���. ேம�� நா� அேத commands-ஐ ���� ���� பய�ப��� crash-ஐ ெதாட���யாக உ�வா�க �ய���க ேவ���. ��ன� ��க� http://bugs.mysql.com/ என�ப�� bug database-ஐ query ெச��, அத� ��ன� bug report-ஐ file ெச�யலா�. ேம�� crash-�கான ம�ெறா� காரண� server-இட� �ட இ��கலா�. ஏென�� ந��ைடய system-� RAM-� �ர�சைன எ�றாேலா அ�ல� hard drives-� �ர�சைன 461



எ�றாேலா அ� MySQL-� crash-ஐ உ�டா���. எனேவ நம� server crash-�� ச�யான காரண� �ைட�க��ைலெய�� ந��ைடய system-� hardware-ஐ�� ஒ��ைற ��சாக� ப�ேசா��ப� ந�ல�.



15.9 ஒ� �ல ெபா�வான ERRORS இ�த� ப���� நா� அ��க�� பா���� ஒ��ல ெபா�வான errors-ஐ�� ம��� அதைன எ�வா� ைகயா�வ� எ�ப� ப���� காணலா�.



462



Can’t Connect to MySQL Server



ெபா�வாக இ�த error, server machine-� mysqld process இய�க��ைல எ�பைத� �����.



ERROR 2002: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) ERROR 2003 (HY000): Can’t connect to MySQL server on ’123.45.67.89′ (113)



463



��க� உ�க�ைடய local MySQL server-�ட� இைண�க ��ய��ைலெய��, உ�க� system-� இ���� process list-ஐ� பா��க��. Linux-� ps -ax எ�� command-�, Windows-� Task Manager எ�� command-�, உ�க� system-� இய��� process-ஐ� ப��ய�ட� பய�ப��. இ�� mysqld process ப��ய�ட�பட��ைல எ��,உ�க� MySQL server-ஐ start ெச�ய��. அ��தப�யாக, socket file ��க�ப��ேபா�� இ�வைகயான �ர�சைன ஏ�பட வா��� உ�ள�. ெபா�வாக இ�த socket file, /tmp/mysql.sock எ�� ப���� இ����. �ல systems ெபா�வாக /tmp எ�� ப����



464



இ��பவ�ைறஎ�லா� ஒ� �����ட கால இைடெவ��� அ��� ��த�ப���� ெகா�ேட இ����. ேம�� இ�த /tmp எ�� ப��ைய எ�த user ேவ��மானா�� அ�கலா�. எனேவ இ�� இ���� mysql.sock எ�� ���யமான file-ஐ யா� ேவ��மானா�� அ��க வா��� உ�ள�. எனேவ இ�த socket file-ஐ MySQL user-�� ம��ேம அ�ம������ ம�ெறா� directory-�� மா����வ� இ�த� �ர�சைனைய� த�����. இத�காக ��வ�� வ�கைள my.cnf file-� இைண�க��.



[mysqld] socket=/path/to/mysql.sock



465



[client] socket=/path/to/mysql.sock



நா� எ��பா���� Port-� தா� mysqld ஆன� network இைண��கைள� ெப���ெகா��றதா எ�பைத ேசா��க Unix/Linux-� ��வ�� command பய�ப��ற�.



shell> netstat -ltnp | grep 3306



466



ம��� windows-� இ� ��வ�மா� பய�ப��த�ப��ற�.



> netstat a | find “LISTENING” உ�களா� remote MySQL server-�ட� இைணய��ய��ைல, ஆனா� mysqld-ஆன� இய���ெகா��தா� இ���ற� என� ெத��தா� firewall settings-ஐ ச�பா��க��. Port 3306 அ�ல�



467



எ�த port இைண���காக� பய�ப��த�ப��றேதா அ�த port-� TCP/IP traffic-ஐ அ�ம��க ேவ���. இ�த� ப���� நா� பா��த error message ஆன� “MySQL server-�ட� இைணய ��ய��ைல” எ�பைத� ����றேத த�ர “இைணய அ�ம� இ�ைல” எ�� ����ட��ைல. எ�ெபா�� ��க� MySQL server-�ட� இைண��ேபா� தவறான password-ஐ அ�����கேளா அ�ேபா�தா� “உ�க��� அ�ம� இ�ைல” எ�� error வ��. இைத�ப�� ��வ�மா� கா�ேபா�



Access Denied 468



நா� அ���� username அ�ல� password தவறாக இ��தாேலா அ�ல� நா� பய�ப��த ����� database-�� நா� அ���� username அ�ம�கைள� ெப����க��ைல எ�றாேலா இ�வைகயான error வ��.



ERROR 1045 (28000): Access denied for user ‘user’@’host’ (using password: YES)



அ�ேபா� ��க� MySQL database-� இ���� privilege table-ஐ பய�ப���, நா� இைண���காக� ெகா����ள connection arguments-யா�� ச�யாக உ�ளதா என



469



ச�பா���� ெகா�ள�� நா� –password எ�பத�� ப�லாக -p எ�� switch-ஐ� பய�ப���னா� நா� அ���� password-ஐ� ெதாட��� எ�த ஒ� இைடெவ��� ெகா��க��டா�. அ�வா� ெகா��தா� -p-ஐ� ெதாட���வ�� argument ஆன� database name ஆக� க�த�ப��.



Too Many Connections



MySQL-� நா� எ�வள� அ�கமான ெதாட� இைண��கைள உ�வா�க ���� எ�� �வர� max_connections எ�� variable-� ேச��� ைவ�க�ப������. ெபா�வாக



470



இத� ம��� 100 எ�� இ����. எனேவ எ�ேபா� நா� 100-��� ேம�ப�ட இைண��கைள உ�வா�க �ய����ேறாேமா அ�ேபா� இ�த error வ��.



ERROR 1040: Too many connections எனேவ நா� ����� ��ய ம���ைன இ�த variable-�� my.cnf file-� ��வ�மா� அ��பத� �ல� இ�த errors-ஐ த���கலா�.



[mysqld] max_connections=200



471



ஆனா� இ�வா� ெச�வ� ஒ� ந�ல ��� ஆகா�. எ�ெபா�� MySQL, அ�கப�சமான இைண��க�� எ���ைகைய� தா��� ெச��றேதா அ�ேபா� அத�கான காரண�ைத நா� க�����க ேவ���. நம� system அ�க�ப�யான இைண��கைள� தா��� எ�� ெத��தா� ம��ேம இ�த max_connections-� ம���ைன நா� அ�க��கலா�.



உ�ைம�� இ�த variable-ஆன� நா� ெகா���� அ�கப�ச எ���ைகைய� தா�� இ��� ஒ� இைண��ைன அ�ம����. இ�த இைண��



472



superuser-ஆ� பய�ப��த�ப��. எ�ெபா�� இைண��க� அ�கப�ச எ���ைகைய� தா���றேதா அ�ெபா�� இ�த இைண�� super user-��� பய�ப�� வைக�� அைம��.



ேம�� mysqladmin processlist எ�� command-ஐ� பய�ப��� ஏ� இ�வா� இைண��க� அ�க எ���ைக�� உ�ளன எ�� க�����கலா�.



MySQL Server Has Gone Away



mysqld-ஆன� அத� client-�ட�



473



ெகா���ள இைண��ைன ����� அத� ேநர� ����ேபா� இ�த error வ��.



ERROR 2006: MySQL server has gone away



ெபா�வாக இ�த இைண�� ����க�ப�வத�கான கால இைடெவ� 8 ம� ேநர�. ேவ��மானா� நா� wait_timeout எ�� system variable-ஐ� பய�ப��� இ�த ம���ைன மா�றலா�. இ�த variable-� ேநர� seconds-� ேச��க�ப������. எ�ெபா�� இ�த error, ேநர� ��வ�னா� வ��றேதா அ�ெபா�� mysql program தானாகேவ ����



474



இைண�ைப உ�வா�க �ய�����. இ�ெபா�� அேத error ���ப வ�தா�, mysqld process ���த�ப���ள� எ�� அ��த�. எனேவ mysql-ஆ� ���� இைண�க��ய��ைலஎ��, mysqld இய��� ெகா�����றதா எ�பைத ச�பா��க��.



Got Error from Table Handler



இ�த error நம� database-� table storage file-� �ர�சைன உ�ளைத� �����.



475



Error 1030: Got error 141 from table handler



ெபா�வாக இ�வைகயான �ர�சைன எ�லா� myisamchk எ�� utility-ஆ� ச�ெச�ய�ப��. இ�த message-� உ�ள error எ� , �ர�சைன�� த�ைமைய� ���க உத��ற�. இ�த error எ�ைன� பய�ப��� perror command �ல� அ�த எ���� ெதாட�பான error message-ஐ ��வ�மா� க�ட�யலா�.



shell> perror 141 141 = Duplicate unique key or constraint on



476



write or update எனேவ இ�வைகயான error வ��ேபா� myaqld-ஐ ������� myisamchk — recover எ�பைத அத� ெதாட��ைடய .MYI file-� run ெச�ய��. �லசமய� இதனா� ெத���க�ப�� error message, system �ர�சைனகைள� சா��ததாக� �ட இ��கலா�. இ� ��வ�மா�. $ perror 28 Error code 28: No space left on device



477



15.10 உத�ைய நா�த� �ல சமய� நா� �ர�சைனகைள� ���பத�� �லவ��� உத�ைய நாட ேவ�������. �த�� http://dev.mysql.com/doc/refman /5.0/en/temp0105.html எ�� ப���� இ���� online manual-� உ�க���� ேதைவயான ப��ைய� ப���� ெத��� ெகா�ள��. பலவாறான MySQL mailing list-ஆன� ப�ேவ� topics-ஐ� ப��ய �வர�கைள� ெகா����. ேம�� இ�த lists-ஆன� ப�ேவ� இட��ல இ���� பயன� ���களா�� ப�ேவ� ெமா�களா�� பய�ப��த���ய வைக�� அைம��. ச�ப��ய mailing list-ஐ� ப�� அ�ய



478



http://lists.mysql.com/ எ�� �கவ�ைய நாட��.



ேம�� �ர�சைனக� ஏ�ப��ேபா� நா� அத��� ேதைவயான உத�ைய MySQL AB-இட� இ��� �ட ெபறலா�. இ�த MySQL AB எ�ப�, வ�ட���� ஒ� �����ட ெதாைக�� support-ஐ அ����. அைன�� support packages-� MySQL knowledge base-ஐ அ��வத�கான அ�ம�ைய உ�ளட�������. இ�த MySQL Knowledge base எ�ப� நம��� ேதைவயான �ைடகைள உடன�யாக� ெகா��க உத�� technical articles-ஐ உ�ளட��ய ஒ� searchable library ஆ��



479



இத�� அ��தப�யாக 24 ம� ேநர�� , 7 நா�க�� support அ��க���ய வைக�� ெதாைலேப� ேசைவ�� உ�ள�. இ�� அவசர கால�க�� உடன�யாக �ைடய��த� ம��� MySQL expert �ல�, remote-� �ர�சைனைய� ���த� ேபா�ற ப�ேவ� வைகயான ேசைவக�� அட���. ேம�� �வர�க���