What Does SQL Not Do?
First, SQL is not a program or a development environment such as Access or VB. SQL is a pure
language. There is no front end built into SQL, that is, the language does not have user forms like an
Access application or Visual Basic, and SQL has no intrinsic way to talk with web pages. SQL
statements are mainly generated by a separate front-end product. Many SQL-enabled DBMS do have a
tool that allows you to type a SQL statement and run it against the data. But these tools are only for
design time, not deployment.
Second, SQL does not have a back end. There are no tools intrinsic to the language that can actually
store data. SQL is only a standard means of communicating with software products that can hold data (a
DBMS as we will see later). In other words, the data itself is contained within a DBMS such as Oracle or
SQL Server. You will also need a front end, such as VB or C++. Then you can use SQL as the language
for the front end to send instructions to the DBMS.
To take these first two points together, SQL is a language and not a software product. Consider a
spoken language; the language itself does not contain a speaker or a listener. The language only
contains the vocabulary, grammatical rules and idioms to be used by speakers and listeners. The people
are not part of, or specified in any way, by the language. SQL is like a spoken language in another way.
The listener and speaker can have any mother tongue, as long as they can translate that to SQL. So a
computer can use any operating system and any database software, as long as the software can translate
from its internal language to SQL.
SQL is a language, not a software product. Front-end software interfaces with the
user. Back-end software holds data. SQL is the standard language for the two pieces
of software to communicate with each other.
Third, SQL is not a procedural programming language. We will discuss the concepts of declarative
versus procedural languages shortly. SQL is a set-based language, which communicates in statements
that define an outcome. This is very different to procedural languages that instruct the computer how to
proceed step by step to reach an objective.
Fourth, SQL does not have its own specific development environment. When you work with Access or
Power Builder, for example, you have a highly evolved set of tools for:
- laying out your user interface
- troubleshooting
- rapid entry of code
- code reuse
But pure SQL does not include any of those tools (although most vendors include some tools in their
products, they are not part of pure SQL). To go back to our spoken language analogy, SQL is the
language. It is not a dictionary, grammar guide, printing press, loudspeaker, postal service, filing cabinet
or any of the other tools we use to work with human languages. In the sense that "English" does not
include these tools, neither does the SQL language.
Last, SQL is not network-aware. In the same sense that written English is not dependent on or aware of
being used in telephones or e-mails, neither is SQL. Whenever a SQL statement is issued there must be
a way for it to be conveyed, or connected, to its destination. Programmers create, maintain and fine-
tune those connections with code in the front and back ends.