มายเอสคิวเอล

**MySQL** (มายเอสคิวแอล) เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System) โดยใช้ภาษา SQL แม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์ส แต่แตกต่างจากซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการพัฒนาภายใต้บริษัท MySQL AB ในประเทศสวีเดน โดยจัดการ MySQL ทั้งในแบบที่ให้ใช้ฟรี และแบบที่ใช้ในเชิงธุรกิจ

เมื่อปี ค.ศ. 2008 บริษัทซันไมโครซิสเต็มส์ (Sun Microsystems, Inc.) เข้าซื้อกิจการของ MySQL AB และ บริษัทออราเคิลคอร์ปอเรชัน (Oracle Corporation) ได้เข้าซื้อกิจการของบริษัทซันไมโครซิสเต็มส์ อีกทอดหนึ่ง เมื่อปี ค.ศ. 2010

MySQL สร้างขึ้นโดยชาวสวีเดน 2 คน และชาวฟินแลนด์ ชื่อ David Axmark, Allan Larsson และ Michael "Monty" Widenius

ชื่อ "MySQL" อ่านออกเสียงว่า "มายเอสคิวเอล" () หรือ "มายเอสคิวแอล" (ในการอ่านอักษร L ในภาษาไทย)  ซึ่งทางซอฟต์แวร์ไม่ได้อ่าน มายซีเควล หรือ มายซีควล เหมือนกับซอฟต์แวร์จัดการฐานข้อมูลตัวอื่น

## รุ่นของผลิตภัณฑ์
รุ่นของผลิตภัณฑ์นั้นแบ่งออกมาได้สามสายการผลิต ได้แก่ เวอร์ชันใช้ฟรี เวอร์ชันการค้า และเวอร์ชันที่สนับสนุนกับผลิตภัณฑ์ SAP (MAX DB) ความแตกต่างคือเวอร์ชันคอมมิวนิตี้นั้นสามารถนำไปใช้งานได้ฟรีแต่ขาดการสนับสนุนหรือการช่วยเหลือเมื่อมีปัญหาเกิดขึ้น เวอร์ชันที่เป็นคอมเมอร์เชียลนั้นให้บริการด้านความสนับสนุนเมื่อมีปัญหา (ซื้อบริการ) สรุปคร่าว ๆ ประเภทดาต้าเบสให้เลือกใช้ดังนี้

* MySQL เอนเทอร์ไพรส์ Enterprise
* MySQL คลัสเตอร์ Cluster
* MySQL Embedded
* MySQL Community (opensource เวอร์ชัน)

### ความสามารถที่เพิ่มขึ้น
ในเวอร์ชัน 5.0 มีความสามารถหลายอย่างที่สำคัญสำหรับระบบฐานข้อมูลขนาดใหญ่หรือระดับองค์กร (EnterPrise Feature) เช่น Store Procedure, database trigger, database view, database schema ซึ่งได้มีการปรับเพิ่มประสิทธิภาพในส่วนของตารางและการทำดัชนี (index) ขึ้นมาอีก ปัจจุบันเวอร์ชัน community หรือเวอร์ชันที่เสถียร (stable) 5.0 และเวอร์ชันทดสอบคือ 5.1 beta release และ 5.2 Alpha

ตั้งแต่เวอร์ชัน 5.1 เริ่มสนับสนุนการทำ Parttion Database ตารางเวลาสำหรับเหตุการณ์ต่าง ๆ (Event schedule) 111

### ประเภทการจัดเก็บข้อมูล (Database Storage Engine) ที่สนับสนุน
* MyISAM ค่าปกติ (default)
* InnoDB สนับสนุนการทำ ทรานแซคชั่น (transaction) แบบ ACID
* Memory การจัดเก็บในหน่วยความจำ ใช้เป็นตารางชั่วคราวเพื่อความรวดเร็ว เนื่องจากเก็บไว้ในหน่วยความจำ ทำให้มีความเร็วในการทำงานสูงมาก
* Merge เป็นการรวม Table หลาย ๆ ตัวให้แสดงผล หรือแก้ไข เสมือนเป็นข้อมูลจาก Table เดียว
* Archive เหมาะสำหรับการจัดเก็บข้อมูลพวก log file ข้อมูลที่ไม่ต้องมีการค้นคืนข้อมูล (query) หรือใช้บ่อย ๆ เช่น log file เพื่อประโยชน์ในการตรวจสอบย้อนหลัง (Security Audit Information)
* Federated สำหรับการจัดเก็บแบบปลายทาง (remote server) แทนที่จะเป็นการจัดเก็บแบบ local เหมือนการจัดเก็บ (Storage) แบบอื่นๆ
* NDB สำหรับการจัดเก็บแบบ คลัสเตอร์ (cluster)
* CSV เก็บข้อมูลจาก Text ไฟล์โดยอาศัยเครื่องหมาย คอมมา (comma) เป็นตัวแบ่งฟิลด์
* Blackhole
* Example

### ชนิดของข้อมูลที่สนับสนุน
ชนิดข้อมูลที่ MySQL สนับสนุนแบ่งเป็นสามประเภทหลักใหญ่ ๆ

* ชนิดข้อมูลที่เป็นตัวเลข
** BIT (มีใช้ได้กับ MyISAM, InnoDB, Memory)
** TINYINT
** SMALLINT
** MEDIUMINT
** INT
** BIGINT
** Float

* ชนิดข้อมูลที่เกี่ยวกับวันที่และเวลา
** DATETIME
** DATE
** TIMESTAMP
** TIME
** YEAR

* ชนิดข้อมูลที่เกี่ยวกับตัวอักษร
** CHAR
** VARCHAR
** BINARY
** VARBINARY
** BLOB
** TEXT
** ENUM
** SET

## การใช้งาน
MySQL เป็นที่นิยมใช้กันมากสำหรับฐานข้อมูลสำหรับเว็บไซต์ เช่น มีเดียวิกิ และ phpBB และนิยมใช้งานร่วมกับภาษาโปรแกรม PHP ซึ่งมักจะได้ชื่อว่าเป็นคู่ จะเห็นได้จากคู่มือคอมพิวเตอร์ต่าง ๆ ที่จะสอนการใช้งาน MySQL และ PHP ควบคู่กันไป นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทำงานร่วมกับฐานข้อมูล MySQL ซึ่งรวมถึง ภาษาซี ซีพลัสพลัส ปาสกาล ซีชาร์ป ภาษาจาวา ภาษาเพิร์ล พีเอชพี ไพทอน รูบี และภาษาอื่น ใช้งานผ่าน API สำหรับโปรแกรมที่ติดต่อผ่าน ODBC หรือ ส่วนเชื่อมต่อกับภาษาอื่น (database connector) เช่น เอเอสพี สามารถเรียกใช้ MySQL ผ่านทาง MyODBC,ADO,ADO.NET เป็นต้น

### โปรแกรมช่วยในการจัดการฐานข้อมูล และ ทำงานกับฐานข้อมูล
ในการจัดการฐานข้อมูล MySQL คุณสามารถใช้โปรแกรมแบบ command-line เพื่อจัดการฐานข้อมูล (โดยใช้คำสั่ง: mysql และ mysqladmin เป็นต้น) หรือจะดาวน์โหลดโปรแกรมจัดการฐานข้อมูลแบบ GUI จากเว็บไซต์ของ MySQL ซึ่งคือโปรแกรม: MySQL Administrator และ MySQL Query Browser เป็นต้น

### ส่วนเชื่อมต่อกับภาษาการพัฒนาอื่น (database connector)
มีส่วนติดต่อ (interface) เพื่อเชื่อมต่อกับภาษาในการพัฒนาอื่น ๆ เพื่อให้เข้าถึงฟังก์ชันการทำงานกับฐานข้อมูล MySQL ได้เช่น ODBC (Open Database Connector) อันเป็นมาตรฐานกลางที่กำหนดมาเพื่อให้ใช้เป็นสะพานในการเชื่อมต่อกับโปรแกรมหรือระบบอื่น ๆ เช่น MyODBC อันเป็นไดรเวอร์เพื่อใช้สำหรับการเชื่อมต่อในระบบปฏิบัติการวินโดว์, JDBC คลาสส่วนเชื่อมต่อสำหรับ Java เพื่อใช้ในการติดต่อกับ MySQL และมี API (Application Programming Interface) ต่าง ๆ มีให้เลือกใช้มากมายในการที่เข้าถึง MySQL โดยไม่ขึ้นอยู่กับภาษาการพัฒนาใดภาษาหนึ่ง

นอกเหนือจาก ตัวเชื่อมต่อกับภาษาอื่น (Connector) ที่ได้กล่าวมาแล้ว ยังมี  API  ที่สนับสนุนในขณะนี้คือ
* DBI สำหรับการเชื่อมต่อกับ ภาษา perl
* Ruby สำหรับการเชื่อมต่อกับ ภาษา ruby
* Python สำหรับการเชื่อมต่อกับภาษา python
* .NET สำหรับการเชื่อมกับภาษา .NET framework
* MySQL++ สำหรับเชื่อมต่อกับภาษา C++
* Ch สำหรับการเชื่อมต่อกับ Ch (C/C++ interpreter)
* PHP สำหรับการเชื่อมต่อกับภาษา PHP

ยังมีโปรแกรมอีกตัว เป็นโปรแกรมบริหารพัฒนาโดยผู้อื่น ซึ่งใช้กันอย่างแพร่หลายและนิยมกันเขียนในภาษาพีเอชพี เป็นโปรแกรมเว็บแอปพลิเคชัน ชื่อ phpMyAdmin

ทั้ง  MySQL server และ client libraries ถูกเผยแพร่ในลิขสิทธิ์ 2 แบบ ผู้ใช้สามารถเลือกได้ระหว่างลิขสิทธิ์ GNU General Public License http://www.mysql.com/products/licensing/opensource-license.html  หรือลิขสิทธิ์ proprietary license

ผู้ใช้บางคนพัฒนาซอฟต์แวร์ต่อจากเวอร์ชันแรก ๆ ของ client libraries ที่ใช้ลิขสิทธิ์ Lesser General Public License http://packages.debian.org/testing/libs/libmysqlclient10

## ดูเพิ่ม
* phpMyAdmin
* DBDesigner
* Database Master (Freeware MySQL Manager)

## อ้างอิง

## แหล่งข้อมูลอื่น

* เว็บไซต์อย่างเป็นทางการ
* คู่มือ MySQL

หมวดหมู่:ซอฟต์แวร์ในปี พ.ศ. 2538
หมวดหมู่:ซอฟต์แวร์เสรี
หมวดหมู่:ระบบจัดการฐานข้อมูล