Introduction to MySQL
 
Features of MySQL
 
The following list shows the most important properties of MySQL. This section is directed to the reader who already has some knowledge of relational databases.
 
We will use some terminology from the relational database world without defining our terms exactly. On the other hand, the explanations should make it possible for database novices to understand to some extent what we are talking about.
 
. Relational Database System: Like almost all other database systems on the market, MySQL is a relational database system.
 
. Client/Server Architecture: MySQL is a client/server system. There is a database server (MySQL) and arbitrarily many clients (application programs), which communicate with the server; that is, they query data, save changes, etc.
 
The clients can run on the same computer as the server or on another computer (communication via a local network or the Internet).
 
Almost all of the familiar large database systems (Oracle, Microsoft SQL Server, etc.) are client/server systems. These are in contrast to the file-server systems, which include Microsoft Access, dBase, and FoxPro.
 
The decisive drawback to file-server systems is that when run over a network, they become extremely inefficient as the number of users grows.
 
. SQL compatibility: MySQL supports as its database language-as its name suggests-SQL (Structured Query Language). SQL is a standardized language for querying and updating data and for the administration of a database.
 
There are several SQL dialects (about as many as there are database systems). MySQL adheres to the ANSI-SQL/92 standard, although with significant restrictions and many a number of extensions.
 
This topic will be dealt with more extensively later. Beyond the ANSI-SQL/92 standard, MySQL supports, among other things, several additional data types, full-text indexes, and replication.
 
. User Interface: There are a number of convenient user interfaces for administering a MySQL server.
 
. Full-text search: Full-text search simplifies and accelerates the search for words that are located within a text field. If you employ MySQL for storing text (such as in an Internet discussion group), you can use full-text search to implement simply an efficient search function.
 
. Replication: Replication allows the contents of a database to be copied (replicated) onto a number of computers. In practice, this is done for two reasons: to increase protection against system failure (so that if one computer goes down, another can be put into service) and to improve the speed of database queries.
 
. Transactions: In the context of a database system, a transaction means the execution of several database operations as a block. The database system ensures that either all of the operations are correctly executed or none of them.
 
This holds even if in the middle of a transaction there is a power failure, the computer crashes, or some other disaster occurs. Thus, for example, it cannot occur that a sum of money is withdrawn from account A but fails to be deposited in account B due to some type of system error.
 
Transactions also give programmers the possibility of interrupting a series of already executed commands (a sort of revocation). In many situations this leads to a considerable simplification of the programming process.
 
In spite of popular opinion, MySQL has supported transactions for a long time. One should note here that MySQL can store tables in a variety of formats. The default table format is called MyISAM, and this format does not support transactions.
 
But there are a number of additional formats that do support transactions. The most popular of these is InnoDB, which will be described in its own chapter.
 
. Foreign key constraints: These are rules that ensure that there are no cross references in linked tables that lead to nowhere. MySQL supports foreign key constraints for InnoDB tables.
 
. Programming languages: There are quite a number of APIs (application programming interfaces) and libraries for the development of MySQL applications. For client programming you can use, among others, the languages C, C++, Java, Perl, PHP, Python, and Tcl.
 
. ODBC: MySQL supports the ODBC interface Connector/ODBC. This allows MySQL to be addressed by all the usual programming languages that run under Microsoft Windows (Delphi, Visual Basic, etc.). The ODBC interface can also be implemented under Unix, though that is seldom necessary.
 
Windows programmers who have migrated to Microsoft's new .NET platform can, if they wish, use the ODBC provider or special MySQL providers for .NET.
 
. Platform independence: It is not only client applications that run under a variety of operating systems; MySQL itself (that is, the server) can be executed under a number of operating systems.
 
The most important are Apple Macintosh OS X, Linux, Microsoft Windows, and the countless Unix variants, such as AIX, BSDI, FreeBSD, HP-UX, OpenBSD, Net BSD, SGI Iris, and Sun Solaris.
 
. Speed: MySQL is considered a very fast database program. This speed has been backed up by a large number of benchmark tests (though such tests-regardless of the source-should be considered with a good dose of skepticism).