# มายเอสคิวเอล
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   หรือลิขสิทธิ์ proprietary license

ผู้ใช้บางคนพัฒนาซอฟต์แวร์ต่อจากเวอร์ชันแรกๆของ client libraries ที่ใช้ลิขสิทธิ์ Lesser General Public License