# Outline of MySQL

The following outline is provided as an overview of and topical guide to MySQL:
MySQL ("My Structured Query Language") – world's second most widely used relational database management system (RDBMS) and most widely used open-source RDBMS. It is named after co-founder Michael Widenius's daughter, My.

## What type of thing is MySQL?

MySQL can be described as all the following:
* Software – any set of machine-readable instructions that directs a computer's processor to perform specific operations.
** Applications software – set of computer programs designed to permit the user to perform a group of coordinated functions, tasks, or activities. Application software cannot run on itself but is dependent on system software (an operating system) to execute.
*** Database management system (DBMS) – computer software application that interact with the user, other applications, and the database itself to capture and analyze data.
**** Relational database management system (RDBMS) – database management system (DBMS) based on the relational model, in which all data is represented in terms of tuples (ordered set of attribute values), grouped into relations. Most relational databases use the SQL data definition and query language.
** Open-source software – computer software with its source code made available with a license in which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose.
** Solution stack component – one of the pieces of a solution stack, which is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform. Some definitions of a platform overlap with what is known as system software.
*** AMP-stack component – MySQL is the "M" component of Apache-MySQL-Perl/PHP/Python solution stacks (which, by the way, are available across all computer platforms). AMP software bundles are used to run dynamic Web sites or servers.
* It supports php, perl, c, c++, java etc.
** Component of LAMP – Linux version of AMP
** Component of WAMP – Windows version of AMP

## Ownership and copyrights
### Owners

* Original owner: MySQL AB – former software company that was founded in 1995. It was acquired by Sun Microsystems in 2008; Sun was in turn acquired by Oracle Corporation in 2010.
* Current owner: Oracle Corporation – multinational computer technology corporation headquartered in Redwood City, California, United States. The company specializes in developing and marketing computer hardware systems and enterprise software products – particularly its own brands of database management systems.

### License

* GNU General Public License – most widely used free software license, which guarantees end users (individuals, organizations, companies) the freedoms to use, study, share (copy), and modify the software. Software that allows these rights is called free software and, if the software is copylefted, requires those rights to be retained. The GPL demands both.

## Editions

* MySQL Community Server
* MySQL Enterprise – includes MySQL Enterprise Server software (a distribution of the MySQL Server) and several other components, as a subscription-based service produced by Oracle Corporation and targeted toward the commercial market.

## Graphical user interfaces

* MySQL Workbench – official (yet 3rd-party developed) integrated environment for MySQL. It was developed by MySQL AB, and enables users to graphically administer MySQL databases and visually design database structures.
* Adminer – free MySQL front end capable of managing multiple databases, with many CSS skins available. It is a light-weight alternative to phpMyAdmin, distributed under the Apache license (or GPL v2) as a single PHP file (around 300 KiB in size).
* Database Workbench – a software application for development and administration of multiple relational databases including MySQL, with interoperationality between different database systems
* DBEdit – a free front end for MySQL and other databases
* HeidiSQL – a full featured free front end that runs on Windows, and can connect to local or remote MySQL servers to manage databases, tables, column structure, and individual data records. Also supports specialised GUI features for date/time fields and enumerated multiple-value fields
* LibreOffice Base – LibreOffice Base allows the creation and management of databases, preparation of forms and reports that provide end users easy access to data. Like Microsoft Access, it can be used as a front-end for various database systems, including Access databases (JET), ODBC data sources, and MySQL or PostgreSQL
* Navicat – a series of proprietary graphical database management applications, developed for Windows, Macintosh and Linux
* OpenOffice.org – freely available OpenOffice.org Base can manage MySQL databases if the entire suite is installed
* phpMyAdmin – a free Web-based front-end, widely installed by web hosting services since it is developed in PHP and included in the LAMP stack, and MAMP, XAMPP and WAMP software bundle installers
* SQLBuddy – a free Web-based front end, developed in PHP
* SQLyog – proprietary, but there is also a free 'community' edition available
* Toad for MySQL – a free development and administration front end for MySQL from Dell Software
* Webmin – a free Web-based management utility and a MySQL front end, developed in Perl with some parts written in Java

## MySQL storage engines

* MySQL storage engines – a storage engine (or database engine) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database. Most database management systems include their own application programming interface (API) that allows the user to interact with their underlying engine without going through the user interface of the DBMS. MySQL storage engines include:
** Aria – storage engine for the MariaDB and MySQL relational database management systems. Its goal is to make a crash-safe alternative to MyISAM. It is not yet transactional but plans to add proper support for database transactions at some point in the future. The long-term goal is for Aria to be the default transactional and non-transactional storage engine for MariaDB.
** Berkeley DB – software library that provides a high-performance embedded database for key/value data. Berkeley DB is written in C with API bindings for C++, C#, PHP, Java, Perl, Python, Ruby, Tcl, Smalltalk, and many other programming languages. Prior to v5.1, MySQL included a BDB data storage backend.
** BlitzDB –
** CassandraSE –
** CONNECT (storage engine) –
** Falcon – was a transactional storage engine being developed for the MySQL relational database management system. Development was stopped after Oracle purchased MySQL. It was based on the Netfrastructure database engine. Falcon was designed to take advantage of Sun's zfs file system.
** FederatedX –
** InfiniDB – scalable, software-only columnar database management system for analytic applications. However, on 1 October 2014 InfiniDB ceased operations and filed for bankruptcy protection in US Bankruptcy Court in the Eastern District of Texas. Existing customers may be able to receive support from other companies, notably MariaDB.
** InnoDB – storage engine for MySQL. MySQL 5.5 and later use it by default. It provides the standard ACID-compliant transaction features, along with foreign key support (Declarative Referential Integrity).
** mroonga –
** MyISAM – default storage engine for the MySQL relational database management system versions prior to 5.5. It is based on the older ISAM code but has many useful extensions.
** MySQL Archive – this analytic storage engine can be used to create a table that is “archive” only. Data cannot be deleted from this table, only added.
** MySQL Cluster – technology providing shared-nothing clustering and auto-sharding for the MySQL database management system. It is designed to provide high availability and high throughput with low latency, while allowing for near linear scalability.[2] MySQL Cluster is implemented through the NDB or NDBCLUSTER storage engine for MySQL ("NDB" stands for Network Database).
** MySQL Federated – allows a user to create a table that is a local representation of a foreign (remote) table. It utilizes the MySQL client library API as a data transport, treating the remote data source the same way other storage engines treat local data sources whether they be MYD files (MyISAM), memory (Cluster, Heap), or tablespace (InnoDB).
* NDB Cluster – storage engine for storing tables of rows. NDB Cluster can concurrently support access from many types of API processes including from a MySQL server, Memcached, JavaScript/Node.JS, Java, JPA and HTTP/REST. All API processes can operate on the same tables and data stored in the NDB Cluster.
** sequence –
** SphinxSE –
** TokuDB – open source, high-performance storage engine for MySQL and MariaDB. It achieves this by using a Fractal tree index. It is a scalable, ACID and MVCC compliant storage engine that provides indexing-based query improvements, offers online schema modifications, and reduces slave lag for both hard disk drives and flash memory.
** WiredTiger –
** XtraDB – storage engine for the MariaDB and Percona Server databases, and is intended as a drop-in replacement to InnoDB, which is one of the default engines available on the MySQL database.
* Comparison of MySQL database engines – comparison between the available database engines for the MySQL database management system (DBMS). A database engine (or "storage engine") is the underlying software component that a DBMS uses to create, read, update and delete (CRUD) data from a database.

## Applications that use MySQL databases

* Drupal
* Joomla
* MODx
* MyBB
* phpBB
* TYPO3
* WordPress

## Software stacks that include MySQL

* LAMP – solution stack, including the Linux operating system, the Apache HTTP Server, the MySQL relational database management system (RDBMS), and the PHP programming language. LAMP is suitable for building dynamic web sites and web applications.
* WAMP – MS Windows, Apache HTTP Server, MySQL, and PHP.

## Forks of MySQL

* Drizzle – free software/open source relational database management system (DBMS) that was forked from the now-defunct 6.0 development branch of the MySQL DBMS.
* MariaDB is a community-developed fork of MySQL intended to remain free under the GNU GPL, being led by the original developers of MySQL, who forked it due to concerns over its acquisition by Oracle.
* Percona Server – created by Percona, aims to retain close compatibility to the official MySQL releases, while focusing on performance and increased visibility into server operations. Also included in Percona Server is XtraDB, Percona's fork of the InnoDB Storage Engine.
* WebScaleSQL – software branch of MySQL 5.6 jointly developed by Facebook, Google, LinkedIn and Twitter to provide a centralized development structure for extending MySQL with new features specific to large-scale deployments, such as building large replicated databases running on server farms. The project's objective is to tightly follow new MySQL community releases, rather than merely be a software fork.