# eXtremeDB SQL Introduction

> McObject 's eXtremeSQL is a high-performance implementation of the SQL programming language for interfacing with eXtremeDB databases. With eXtremeSQL McObject targets the real-time enterprise software market for developers using SQL for application development in fields such as banking and securities trading, where real-time responsiveness is a must and SQL is the dominant database language.

> Built on the unsurpassed performance of eXtremeDB, and a SQL optimizer tuned for main memory database access, eXtremeSQL delivers blazingly fast processing of dynamic SQL queries.

> Some of the benefits of using eXtremeSQL are:

> - Co-existence with native eXtremeDB - Use eXtremeSQL alongside the eXtremeDB API in the same application. Where maximum performance is critical, the eXtremeDB API can’t be beat. When a higher level of access would be advantageous, such as retrieving data from multiple tables or performing aggregation, then use standard SQL statements with eXtremeSQL.
> - Broad coverage of the SQL-89 standard - eXtremeSQL implements much of the ANSI SQL-89 specification.
> - Extensions to exploit eXtremeDB features and data types - In addition, eXtremeSQL implements eXtremeDB-specific extensions including support for structures, arrays and vectors, as well as query optimizations based on specific eXtremeDB capabilities.
> - Compatibility with all eXtremeDB editions - eXtremeSQL is fully compatible and interoperable with eXtremeDB APIs, eXtremeDB Transaction Logging, eXtremeDB High Availability, and eXtremeDB Cluster. There is no need to worry about the migration path within the eXtremeDB product family.
> - No client / server inter-process communications - Like eXtremeDB, eXtremeSQL can be embedded in the application, not deployed as a separate process. This eliminates client / server inter-process communication round-trips from the execution path, resulting in breakthrough performance and zero administration.
> - Interactive SQL utilities - eXtremeSQL comes with the powerful interactive SQL tool xSQL which can be used to manage eXtremeDB databases and test SQL statements independently from application programs. (Please use this link for a basic introduction to this versatile tool.)

> ## Introduction to SQL

> SQL (Structured Query Language) was developed by IBM in the mid ‘70s as a way to get information in and out of database systems. Contrary to what its name suggests, SQL is not only a query language, but also a language for manipulating (adding, changing or deleting) information already in the database.

> SQL is a declarative language, whereas conventional programming languages (C/C++, Java, etc.) are procedural languages. Practically speaking, this means that SQL has no control statements (if and while, for example).

> SQL has been widely adopted by database vendors and has been institutionalized as a standard by the ANSI and ISO organizations. SQL skills learned with one database system can be largely carried over to other SQL-capable database systems, though virtually every vendor implements proprietary extensions to the language to exploit capabilities of their own database technology.

> The ANSI SQL standard has evolved over the years, beginning with the SQL-89 standard, followed by SQL-92 and, most recently, the SQL-99 standard. eXtremeSQL provides broad implementation of the SQL-89 standard for SQL DML statements.

> SQL consists of a set of statements, which are categorized into:

> - Data Definition Language (DDL) statements
> - Data Manipulation Language (DML) statements.
> - Data Control Language (DCL) statements

> DDL statements are used to describe the data stored in the database. Examples are `CREATE TABLE` and `CREATE INDEX` statements. The DDL can also define constraints and other attributes of the data.

> DML statements manipulate or retrieve data, as opposed to define or control access to data. The DML consists of four statements:

> - SELECT
> - INSERT
> - UPDATE
> - DELETE

> DCL statements define privileges to access the data by means of statements such as GRANT and REVOKE.

> Note that eXtremeSQL does not implement SQL DCL statements.