**MySQL** (արտ.  [maɪ ˌɛskjuːˈɛl]), բաց կոդով տվյալների բազաների կառավարման համակարգ։ MySQL-ի մշակումն ու աջակցումն իրականացվում է Օրաքլ կորպորացիայի կողմից։ Վերջինս MySQL-ի նկատմամաբ իրավունքները ստացել է Sun Microsystems ընկերության գնումից հետո, որն էլ, նախքան այդ, իր հերթին գնել էր MySQL AB ընկերությունը։ MySQL-ն տարածվում է GNU GPL, ինչպես նաև սեփական կոմերցիոն արտոնագրի ներքո, չնայած մշակողներն նոր ֆունկցիաներ են ավելացնում արտոնագրված օգտագործողների պատվերներով։

MySQL-ը հիմնականում օգտագործվում է փոքր և միջին ծանրաբեռնվածության ծրագրերի համար։ Այն ներառված է մի շարք վեբ-ծրագրավորման համար նախատեսված ծրագրերի փաթեթների մեջ, ինչպիսիք են WAMP-ը, AppServ-ը, LAMP-ը, XAMPP-ը և Open Server-ը։

MySQL բավականին ճկուն է։ Այն աջակցում է աղյուսակների այնպիսի տեսակներ, ինչպիսիք են MyISAM-ը կամ InnoDB-ն։ Բացի այդ, այն տեղադրվում է հատուկ **EXAMPLE** անվանմամբ աղյուսակի տեսակով, որն ցուցադրում է նոր աղյուսակի տիպեր ստեղծելու սկզբունքները։ GPL արտանգրի շնորհիվ, MySQL-ն անընդհատ հարստանում է նոր աղյուսակի տեսակներով։

2008 թ․ փետրվարի 26-ին Sun Microsystems ընկերությունը գնեց MySQL AB-ն $1 մլրդ․-ով, իսկ 2010 թ․ հունվարի 27-ին Sun Microsystems-ը գնվեց Օրաքլ ընկերության կողմից, որն զբաղվում է տվյալների բազաների կառավարման համակարգերի ստեղծմամբ ու զարգացմամբ։

MySql -ի կիրառումը վեբ ծրագրում
-------------------------------

Եթե վեբ էջի մեջ տվյալների արտածման անհրաժեշտություն է առաջացել, ապա նախապես ունենալու ենք ունենալ տվյալների բազա, օրինակ՝ MS Access, SQL Server, MySQL: Իսկ սերվերին ներկայացնելու համար կիրառում ենք PHP կամ ASP: Էջի արտաքին տեսքի համար պատասխանատու են HTML / CSS ծրագրերը։

Բանալի բառեր
------------

Որպեսզի հասկանալի լինի, թե ինչ է բանալի բառը, հարկավոր է հաշվի առնել այն հանգամանքը, համակարգիչը աշխատում է ճշգրիտ տվյալների հիման վրա, այսինքն տվյալների բազայի ղեկավարման համակարգում պետք է տրվի առաջնային բանալի բառի մասին հասկացությունը։ Առաջնային բանալին (primary key, PK)-դաշտերի մինիմալ քանակությունն է, որը բացահայտում է աղյուսակի գրառումը։ Նշանակում է, բանալի բառը առաջին հերթին աղյուսակային դաշտերի հավաքածու է, երկրորդ հերթին այդ դաշտի յուրաքանչյուր խումբ պետք է համապատասխանեցվի եզակի գրառումի կամ տողի, իսկ հետո դաշտերի այդ հավաքածուն
պետք է պարունակի նվազագույն քանակությամբ հատկություններ։ Քանի որ առաջնային բանալին սահմանում է միայն մեկ եզակի գրառում, ապա միաժամանակ 
աղյուսակի երկու գրառումներ չեն կարող հանդիսանալ բանալի բառեր։ Բացի գրառման միանշանակ նույնականացմանը, առաջնային բանալիները կիրառվում են այլ աղյուսակների հետ կապ ստեղծելու համար։ Բոլոր աղյուսակների համար առաջնային բանալի է համարվում id (идентификатор) տողը։

Ինդեքսավորում
-------------

Տվյալների բազայի հետ աշխատելիս հիմնական խնդիրներից մեկը փնտրելու խնդիրն է։ Քանի որ տվյալների բազան պարունակում է մեծ քանակությամբ տվյալներ, ապա ծրագրավորողների համար խնդիր է առաջանում ոչ միայն գտնել տվյալ օբյեկտը, այլ կազմել այնպիսի որոնողական ծրագիր, որը հնարավորինս կարճ ժամանակահատվածում կգտնի բավարար ճշգրտությամբ։ Դրա համար կիրառվում է որոշակի աղյուսակների ինդեքսավորում։ Ինդեքսի կիրառումը հարմար է արագ փնտրման համար մեկ սյունի նշված արժեքով։ Առանց ինդեքսավորման, որոնումը կկատարվի ամբողջ աղյուսակի երկանքով՝ սկսած առաջին գրառումից և կշարունակվի մինչև համապատասխան տողը գտնելը։ Եթե աղյուսակը պարունակում է սյուների ինդեքսավորում, ապա տվյալների բազան կարող է արագորեն որոշել որոնման դիրքը տվյալների ֆայլում՝ առանց դիտարկելու բոլոր տվյալները։ Սա տեղի է ունենում, քանի որ տվյալների բազան ինդեքսավորված դաշտերը հիշողությունում տեղափոխում է ավելի մոտ, որպեսզի հնարավոր լինի ավելի արագ գտնել դրանց նշանակությունը։ Հազար տող պարունակող աղյուսակում բոլոր գրառումների հաջորդական որոնման համեմատությամբ սա արագացնում է գործընթացն ավելի քան հարյուր անգամ։ Սակայն այն դեպքում, երբ անհրաժեշտ է մուտք բոլոր հազար տողերին, գրառումների հաջորդական որոնումն ավելի արագ է։ Պատճառն այն է, որ այս դեպքում չի պահանջվում սկավառակի որոնման գործողությունը։ Այնպես որ, երբեմն ինդեքսները միայն խոչընդոտում են։ Օրինակ, եթե աղյուսակում պատճենվում է տվյալների մեծ ծավալ, նպատակահարմար է ինդեքսավորում չօգտագործել։ Սակայն որոշ դեպքերում անհրաժեշտ է միանգամից կիրառել մի քանի ինդեքս (օրինակ հաճախ օգտագործվող աղյուսակների հարցումների մշակման համար)։

Հարթակները
----------

MySQL-ը աշխատում է բազմաթիվ հարթարկների վրա՝ AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003, WinCE, Windows Vista և Windows 7։ Ինչպես նաև առկա է OpenVMS-ում աշխատող MySQL-ի տարբերակ։

Ծրագրավորման լեզուները
----------------------

MySQL-ն API ունի Delphi, C, C++, Էլֆել, Java, Lisp, Perl, PHP, Python, Ruby, Smalltalk, Pascal և Tcl ծրագրավորման լեզուների, գրադարաններ՝ .NET հարթակի լեզուների համար։

Թողարկումների պատմությունը
--------------------------

* MySQL-ի առաջին ներքին թողարկումը տեղի է ունեցել 1995 թ․-ի մայիսի 23-ին։
* Windows ընտանիքի համակարգերի (Windows 95 և NT) համար տարբերակը թողարկվել է 1998 թվականի հունվարի 8-ին։
* Տարբերակ 3.23 ― բետա տարբերակը՝ 2000 թ․ հունիսին, թողարկումը՝ 2001 թ․ հունվարին։
* Տարբերակ 4.0 ― բետան՝ 2002-ի օգոստոսին, թողարկումը՝ 2003-ի մարտին։
* Տարբերակ 4.1 ― բետան՝ 2004-ի հունիսին, թողարկումը՝ 2004-ի հոկտեմբերին։
* Տարբերակ 5.0 ― բետան՝ 2005-ի մարտին, թողարկումը՝ 2005-ի հեկտեմբերին։
* Տարբերակ 5.1 ― մշակումը սկսվել է 2005-ի նոյեմբերից, սակայն թողարկվել է միայն 2008 թ․ նոյեմբերին։
* Տարբերակ 5.4 ― բետան՝ 2009-ի ապրիլին, չի թողարկվել։
* Տարբերակ 5.5 ― թողարկվել է 2010 թ․ դեկտեմբերին։
* Տարբերակ 5.6 ― մշակման փուլում է (5.6.6 m9 տարբերակը ներկայացվել է 2012 թ․-ի օգոստոսի 7-ին)։

Տես նաև
-------

* phpMyAdmin
* MySQL Workbench
* Firebird
* PostgreSQL
* Տվյալների բազա

Ծանոթագրություններ
------------------

1. 1 2 3 4 5 6 7 8 9  Supported Platforms: MySQL Database
2. ↑
3. ↑  «1.3.1. What is MySQL?». *MySQL 5.5 Reference Manual* (անգլերեն). Oracle Corporation. Արխիվացված օրիգինալից 2011 թ․ օգոստոսի 23-ին. Վերցված է 24 դեկտեմբեր, 2010 թ.-ին.
4. ↑  MySQL :: Observations by Kaj Arnö @Sun (անգլ.)
5. ↑  Օրաքլը գնել է Sun ընկերությունը (անգլ.)

Արտաքին հղումներ
----------------

* Պաշտոնական կայք (անգլ.)
* MySQL-ի փաստաթղթերը (անգլ.)