Wednesday, April 2, 2008

What is SQL?

SQL is an international standard language for manipulating relational databases. It is based on an IBM product. SQL is short for Structured Query Language.

SQL can create schemas, delete them, and change them. It can also put data into schemas and remove data. It is a data handling language, but it is not a programming language.

SQL is a DSL (Data Sub Language), which is really a combination of two languages.

These are the Data Definition Language (DDL) and the Data Manipulation Language (DML).

Schema changes are part of the DDL, while data changes are part of the DML.

We will consider both parts of the DSL in this discussion of SQL.

What is SQL?

SQL stands for Structured Query Language and is the lingua franca in the database world. SQL is a standard that is used by all database vendors and programmers to define, extract and access the information that is stored in databases. SQL began life as an IBM creation but was standardized by the American National Standards Institute (ANSI) and the International Organization for Standardization (ISO) as ANSI/ISO SQL in 1988. Since then ANSI/ISO SQL standard continued to evolve. The ANSI-SQL group has since published three standards over the years:

1. SQL89 (SQL1)

2. SQL92 (SQL2)

3. SQL99 (SQL3)

SQL is a query language. It is English-like and easy to use. However, although there are more than 90 SQL reserved words, most programmers seldom use more than the following handful of commands - SELECT, INSERT, UPDATE, DELETE, FROM, WHERE, HAVING, BETWEEN, LIKE, OR, AND, NOT, IN, ORDER, GROUP and BY.

For example, if you had a database table named "employees" and you wanted to retrieve all records where the employee has the last name "goodman", you would use the following SQL statement:

SELECT * FROM employees WHERE lastname = 'goodman';

There are many different categories of SQL statements but the basic ones which all programmers should be familiar with are the SQL statements that:

1. Create tables and manipulate their definitions

2. Query the table data

3. Manipulate the table data

SQL is predominantly used by 2 types of users - programs and humans (keying in the commands through a database client) - to pass instructions to databases. SQL commands can be keyed into a database client like the MySQL Query Browser or the SQL Server Enterprise Manager and executed to either return a result or modify records in the database. SQL can also be used in conjunction with programming language or scripting language like Microsoft Visual Basic or PHP to communicate with the database.

Although SQL is a world standard, it is unfortunate that most database vendors have come up with different dialects and variations. This is because every database vendor wants to differentiate their database products from the crowd. One good example is Microsoft SQL Server's TRANSACT-SQL. TRANSACT-SQL is a superset of SQL and is designed for use only with Microsoft SQL Server.

Although it does make programming much easier for software developers, it is not compliant with other databases like Oracle or MySQL - making TRANSACT-SQL programs non database-portable. As such, although many of these features are powerful and robust, it is good practice to exercise caution and limit your SQL use to be compliant with the ANSI/ISO SQL standards and ODBC-Compliant.