You are on page 1of 13

SQL

This article is about the database language. For the retrieve data stored in IBM’s original quasi-relational
IATA code, see San Carlos Airport (California). database management system, System R, which a group
at IBM San Jose Research Laboratory had developed
[13]
SQL (/ˈɛskjuːˈɛl/,[4] or /ˈsiːkwəl/; Structured Query during the 1970s. The acronym SEQUEL was later
Language[5][6][7][8] ) is a special-purpose programming changed to SQL because “SEQUEL” was a trademark of
language designed for managing data held in a relational the UK-based Hawker Siddeley aircraft company.[14]
database management system (RDBMS). In the late 1970s, Relational Software, Inc. (now Oracle
Originally based upon relational algebra and tuple rela- Corporation) saw the potential of the concepts described
by Codd, Chamberlin, and Boyce and developed their
tional calculus, SQL consists of a data definition language
and a data manipulation language. The scope of SQL own SQL-based RDBMS with aspirations of selling it to
includes data insert, query, update and delete, schema the U.S. Navy, Central Intelligence Agency, and other
creation and modification, and data access control. Al- U.S. government agencies. In June 1979, Relational Soft-
though SQL is often described as, and to a great extent is, ware, Inc. introduced the first commercially available
a declarative language (4GL), it also includes procedural implementation of SQL, Oracle V2 (Version2) for VAX
elements. computers.

SQL was one of the first commercial languages for Edgar After testing SQL at customer test sites to determine
F. Codd's relational model, as described in his influen- the usefulness and practicality of the system, IBM began
tial 1970 paper, “A Relational Model of Data for Large developing commercial products based on their System
Shared Data Banks.”[9] Despite not entirely adhering to R prototype including System/38, SQL/DS, and DB2,
the relational model as described by Codd, it became the which were commercially available in 1979, 1981, and
most widely used database language.[10][11] 1983, respectively.[15]

SQL became a standard of the American National Stan-


dards Institute (ANSI) in 1986, and of the International 2 Syntax
Organization for Standardization (ISO) in 1987.[12] Since
then, the standard has been enhanced several times with
added features. Despite these standards, code is not com- 2.1 Language elements
pletely portable among different database systems, which
can lead to vendor lock-in. The different makers do not
perfectly adhere to the standard, for instance by adding
extensions, and the standard itself is sometimes ambigu-
ous.

A chart showing several of the SQL language elements that com-


1 History pose a single statement

SQL was initially developed at IBM by Donald D. Cham- The SQL language is subdivided into several language el-
berlin and Raymond F. Boyce in the early 1970s.[13] ements, including:
This version, initially called SEQUEL (Structured En-
glish Query Language), was designed to manipulate and • Clauses, which are constituent components of state-

1
2 2 SYNTAX

ments and queries. (In some cases, these are For the Oracle-SQL dialect, the latter can be shortened
optional.)[16] to an equivalent DECODE construct:
• Expressions, which can produce either scalar values, SELECT DECODE(n, 1, 'one', 2, 'two', 'i cannot count
or tables consisting of columns and rows of data that high') FROM some_table;

• Predicates, which specify conditions that can


be evaluated to SQL three-valued logic (3VL) The last value is the default; if none is specified, it also de-
(true/false/unknown) or Boolean truth values and faults to NULL. However, unlike the standard’s “simple
are used to limit the effects of statements and case”, Oracle’s DECODE considers two NULLs equal
queries, or to change program flow. with each other.[17]

• Queries, which retrieve the data based on specific


criteria. This is an important element of SQL. 2.3 Queries
• Statements, which may have a persistent effect on The most common operation in SQL is the query, which
schemata and data, or may control transactions, pro- is performed with the declarative SELECT statement.
gram flow, connections, sessions, or diagnostics. SELECT retrieves data from one or more tables, or ex-
--- SQL statements also include the semicolon ( pressions. Standard SELECT statements have no per-
extquotedbl; extquotedbl) statement termina- sistent effects on the database. Some non-standard im-
tor. Though not required on every platform, it plementations of SELECT can have persistent effects,
is defined as a standard part of the SQL gram- such as the SELECT INTO syntax that exists in some
[18]
mar. databases.
Queries allow the user to describe desired data, leaving
• Insignificant whitespace is generally ignored in SQL
the database management system (DBMS) responsible
statements and queries, making it easier to format
for planning, optimizing, and performing the physical op-
SQL code for readability.
erations necessary to produce that result as it chooses.
A query includes a list of columns to include in the final
2.2 Operators result, immediately following the SELECT keyword. An
asterisk ( extquotedbl* extquotedbl) can also be used to
2.2.1 Conditional (CASE) expressions specify that the query should return all columns of the
queried tables. SELECT is the most complex statement
SQL has the case/when/then/else/end expression, which in SQL, with optional keywords and clauses that include:
was introduced in SQL-92. In its most general form,
which is called a “searched case” in the SQL standard, • The FROM clause, which indicates the table(s) to
it works like else if in other programming languages: retrieve data from. The FROM clause can include
CASE WHEN n > 0 THEN 'positive' WHEN n < 0 optional JOIN subclauses to specify the rules for
THEN 'negative' ELSE 'zero' END joining tables.
• The WHERE clause includes a comparison predi-
SQL tests WHEN conditions in the order they appear cate, which restricts the rows returned by the query.
in the source. If the source does not specify an ELSE The WHERE clause eliminates all rows from the
expression, SQL defaults to ELSE NULL. An abbrevi- result set where the comparison predicate does not
ated syntax—called “simple case” in the SQL standard— evaluate to True.
mirrors switch statements:
• The GROUP BY clause is used to project rows
CASE n WHEN 1 THEN 'one' WHEN 2 THEN 'two' having common values into a smaller set of rows.
ELSE 'i cannot count that high' END GROUP BY is often used in conjunction with SQL
aggregation functions or to eliminate duplicate rows
This syntax uses implicit equality comparisons, with the from a result set. The WHERE clause is applied be-
usual caveats for comparing with NULL. fore the GROUP BY clause.
2.3 Queries 3

• The HAVING clause includes a predicate used to fil- in the select list to project data, as in the following ex-
ter rows resulting from the GROUP BY clause. Be- ample, which returns a list of books that cost more than
cause it acts on the results of the GROUP BY clause, 100.00 with an additional sales_tax column containing a
aggregation functions can be used in the HAVING sales tax figure calculated at 6% of the price.
clause predicate. SELECT isbn, title, price, price * 0.06 AS sales_tax
FROM Book WHERE price > 100.00 ORDER BY title;
• The ORDER BY clause identifies which columns to
use to sort the resulting data, and in which direction
to sort them (ascending or descending). Without an
ORDER BY clause, the order of rows returned by 2.3.1 Subqueries
an SQL query is undefined.
Queries can be nested so that the results of one query can
The following is an example of a SELECT query that re- be used in another query via a relational operator or ag-
turns a list of expensive books. The query retrieves all gregation function. A nested query is also known as a
rows from the Book table in which the price column con- subquery. While joins and other table operations provide
tains a value greater than 100.00. The result is sorted in computationally superior (i.e. faster) alternatives in many
ascending order by title. The asterisk (*) in the select list cases, the use of subqueries introduces a hierarchy in ex-
indicates that all columns of the Book table should be in- ecution that can be useful or necessary. In the following
cluded in the result set. example, the aggregation function AVG receives as input
the result of a subquery:
SELECT * FROM Book WHERE price > 100.00
ORDER BY title; SELECT isbn, title, price FROM Book WHERE price <
(SELECT AVG(price) FROM Book) ORDER BY title;
The example below demonstrates a query of multiple ta-
bles, grouping, and aggregation, by returning a list of A subquery can use values from the outer query, in which
books and the number of authors associated with each case it is known as a correlated subquery.
book. Since 1999 the SQL standard allows named subqueries
SELECT Book.title AS Title, COUNT(*) AS Authors called common table expression (named and designed af-
FROM Book JOIN Book_author ON Book.isbn = ter the IBM DB2 version 2 implementation; Oracle calls
Book_author.isbn GROUP BY Book.title; these subquery factoring). CTEs can also be recursive by
referring to themselves; the resulting mechanism allows
tree or graph traversals (when represented as relations),
Example output might resemble the following:
and more generally fixpoint computations.
Title Authors ---------------------- ------- SQL Examples
and Guide 4 The Joy of SQL 1 An Introduction to SQL
2 Pitfalls of SQL 1 2.3.2 Null and three-valued logic (3VL)
Under the precondition that isbn is the only common col- Main article: Null (SQL)
umn name of the two tables and that a column named title
only exists in the Books table, the above query could be
rewritten in the following form: The concept of Null was introduced into SQL to handle
missing information in the relational model. The word
SELECT title, COUNT(*) AS Authors FROM Book NULL is a reserved keyword in SQL, used to identify
NATURAL JOIN Book_author GROUP BY title; the Null special marker. Comparisons with Null, for in-
stance equality (=) in WHERE clauses, results in an Un-
However, many vendors either do not support this ap- known truth value. In SELECT statements SQL returns
proach, or require certain column naming conventions for only results for which the WHERE clause returns a value
natural joins to work effectively. of True; i.e. it excludes results with values of False and
SQL includes operators and functions for calculating val- also excludes those whose value is Unknown.
ues on stored values. SQL allows the use of expressions Along with True and False, the Unknown resulting from
4 2 SYNTAX

direct comparisons with Null thus brings a fragment of 2.4 Data manipulation
three-valued logic to SQL. The truth tables SQL uses for
AND, OR, and NOT correspond to a common fragment The Data Manipulation Language (DML) is the subset of
of the Kleene and Lukasiewicz three-valued logic (which SQL used to add, update and delete data:
differ in their definition of implication, however SQL de-
fines no such operation).[19] • INSERT adds rows (formally tuples) to an existing
There are however disputes about the semantic interpre- table, e.g.:
tation of Nulls in SQL because of its treatment outside
direct comparisons. As seen in the table above direct INSERT INTO example (field1, field2, field3) VALUES
equality comparisons between two NULLs in SQL (e.g. ('test', 'N', NULL);
NULL = NULL) returns a truth value of Unknown. This
is in line with the interpretation that Null does not have
a value (and is not a member of any data domain) but • UPDATE modifies a set of existing table rows, e.g.:
is rather a placeholder or “mark” for missing informa-
tion. However, the principle that two Nulls aren't equal UPDATE example SET field1 = 'updated value' WHERE
to each other is effectively violated in the SQL specifica- field2 = 'N';
tion for the UNION and INTERSECT operators, which
do identify nulls with each other.[20] Consequently, these
set operations in SQL may produce results not represent- • DELETE removes existing rows from a table, e.g.:
ing sure information, unlike operations involving explicit
comparisons with NULL (e.g. those in a WHERE clause DELETE FROM example WHERE field2 = 'N';
discussed above). In Codd’s 1979 proposal (which was
basically adopted by SQL92) this semantic inconsistency
is rationalized by arguing that removal of duplicates in set • MERGE is used to combine the data of multiple
operations happens “at a lower level of detail than equal- tables. It combines the INSERT and UPDATE
ity testing in the evaluation of retrieval operations.”[19] elements. It is defined in the SQL:2003 stan-
However, computer science professor Ron van der Mey- dard; prior to that, some databases provided similar
den concluded that “The inconsistencies in the SQL stan- functionality via different syntax, sometimes called
dard mean that it is not possible to ascribe any intuitive extquotedblupsert extquotedbl.
logical semantics to the treatment of nulls in SQL.”[20]
Additionally, since SQL operators return Unknown when MERGE INTO TABLE_NAME USING ta-
comparing anything with Null directly, SQL provides ble_reference ON (condition) WHEN MATCHED
two Null-specific comparison predicates: IS NULL THEN UPDATE SET column1 = value1 [, column2 =
and IS NOT NULL test whether data is or is not value2 ...] WHEN NOT MATCHED THEN INSERT
Null.[21] Universal quantification is not explicitly sup- (column1 [, column2 ...]) VALUES (value1 [, value2 ...
ported by SQL, and must be worked out as a negated
existential quantification.[22][23][24] There is also the ex-
tquotedbl<row value expression> IS DISTINCT FROM 2.5 Transaction controls
<row value expression> extquotedbl infixed comparison
operator, which returns TRUE unless both operands are Transactions, if available, wrap DML operations:
equal or both are NULL. Likewise, IS NOT DISTINCT
FROM is defined as “NOT (<row value expression> IS
• START TRANSACTION (or BEGIN WORK, or
DISTINCT FROM <row value expression>) extquot-
BEGIN TRANSACTION, depending on SQL di-
edbl. SQL:1999 also introduced BOOLEAN type vari-
alect) marks the start of a database transaction,
ables, which according to the standard can also hold Un-
which either completes entirely or not at all.
known values. In practice, a number of systems (e.g.
PostgreSQL) implement the BOOLEAN Unknown as a • SAVE TRANSACTION (or SAVEPOINT) saves
BOOLEAN NULL. the state of the database at the current point in trans-
action
2.7 Data types 5

CREATE TABLE tbl_1(id INT); INSERT INTO ALTER TABLE example ADD field4 NUMBER(3)
tbl_1(id) VALUES(1); INSERT INTO tbl_1(id) VAL- NOT NULL;
UES(2); COMMIT; UPDATE tbl_1 SET id=200
WHERE id=1; SAVEPOINT id_1upd; UPDATE tbl_1
SET id=1000 WHERE id=2; ROLLBACK TO id_1upd; • TRUNCATE deletes all data from a table in a very
SELECT id FROM tbl_1; fast way, deleting the data inside the table and not
the table itself. It usually implies a subsequent
COMMIT operation, i.e., it cannot be rolled back
• COMMIT makes all data changes in a transaction (data is not written to the logs for rollback later, un-
permanent. like DELETE).
• ROLLBACK discards all data changes since the last
COMMIT or ROLLBACK, leaving the data as it TRUNCATE TABLE example;
was prior to those changes. Once the COMMIT
statement completes, the transaction’s changes can-
not be rolled back. • DROP deletes an object in the database, usually ir-
retrievably, i.e., it cannot be rolled back, e.g.:
COMMIT and ROLLBACK terminate the current trans-
action and release data locks. In the absence of a START
DROP TABLE example;
TRANSACTION or similar statement, the semantics of
SQL are implementation-dependent. The following ex-
ample shows a classic transfer of funds transaction, where
money is removed from one account and added to an-
other. If either the removal or the addition fails, the entire
2.7 Data types
transaction is rolled back.
Each column in an SQL table declares the type(s) that
START TRANSACTION; UPDATE Account SET column may contain. ANSI SQL includes the following
amount=amount-200 WHERE account_number=1234; data types.[25]
UPDATE Account SET amount=amount+200 WHERE
account_number=2345; IF ERRORS=0 COMMIT; IF
ERRORS<>0 ROLLBACK; 2.7.1 Character strings

• CHARACTER(n) or CHAR(n): fixed-width n-


character string, padded with spaces as needed
2.6 Data definition
• CHARACTER VARYING(n) or VARCHAR(n):
The Data Definition Language (DDL) manages table variable-width string with a maximum size of n
and index structure. The most basic items of DDL are characters
the CREATE, ALTER, RENAME, DROP and TRUN-
CATE statements: • NATIONAL CHARACTER(n) or NCHAR(n):
fixed width string supporting an international char-
• CREATE creates an object (a table, for example) in acter set
the database, e.g.:
• NATIONAL CHARACTER VARYING(n) or
CREATE TABLE example( field1 INTEGER, field2 NVARCHAR(n): variable-width NCHAR string
VARCHAR(50), field3 DATE NOT NULL, PRIMARY
KEY (field1, field2) );
2.7.2 Bit strings

• ALTER modifies the structure of an existing object • BIT(n): an array of n bits


in various ways, for example, adding a column to an
existing table or a constraint, e.g.: • BIT VARYING(n): an array of up to n bits
6 4 CRITICISM

2.7.3 Numbers 2.8 Data control


• INTEGER, SMALLINT and BIGINT The Data Control Language (DCL) authorizes users to
access and manipulate data. Its two main statements are:
• FLOAT, REAL and DOUBLE PRECISION

• NUMERIC(precision, scale) or DECI- • GRANT authorizes one or more users to perform an


MAL(precision, scale) operation or a set of operations on an object.

• REVOKE eliminates a grant, which may be the de-


For example, the number 123.45 has a precision of 5 and fault grant.
a scale of 2. The precision is a positive integer that de-
termines the number of significant digits in a particular
Example:
radix (binary or decimal). The scale is a non-negative
integer. A scale of 0 indicates that the number is an in- GRANT SELECT, UPDATE ON example TO
teger. For a decimal number with scale S, the exact nu- some_user, another_user; REVOKE SELECT, UP-
meric value is the integer value of the significant digits DATE ON example FROM some_user, another_user;
divided by 10S .
SQL provides a function to round numerics or dates,
called TRUNC (in Informix, DB2, PostgreSQL, Oracle
and MySQL) or ROUND (in Informix, SQLite, Sybase, 3 Procedural extensions
Oracle, PostgreSQL and Microsoft SQL Server)[26]
SQL is designed for a specific purpose: to query data
contained in a relational database. SQL is a set-based,
2.7.4 Date and time declarative query language, not an imperative language
like C or BASIC. However, extensions to Standard
• DATE: for date values (e.g. 2011-05-03) SQL add procedural programming language functional-
ity, such as control-of-flow constructs. These include:
• TIME: for time values (e.g. 15:51:36). The granu-
larity of the time value is usually a tick (100 nanosec- In addition to the standard SQL/PSM extensions and pro-
onds). prietary SQL extensions, procedural and object-oriented
programmability is available on many SQL platforms via
• TIME WITH TIME ZONE or TIMETZ: the same DBMS integration with other languages. The SQL stan-
as TIME, but including details about the time zone dard defines SQL/JRT extensions (SQL Routines and
in question. Types for the Java Programming Language) to support
Java code in SQL databases. SQL Server 2005 uses the
• TIMESTAMP: This is a DATE and a TIME put to-
SQLCLR (SQL Server Common Language Runtime) to
gether in one variable (e.g. 2011-05-03 15:51:36).
host managed .NET assemblies in the database, while
• TIMESTAMP WITH TIME ZONE or TIMES- prior versions of SQL Server were restricted to unman-
TAMPTZ: the same as TIMESTAMP, but includ- aged extended stored procedures primarily written in C.
ing details about the time zone in question. PostgreSQL lets users write functions in a wide variety
of languages—including Perl, Python, Tcl, and C.[28]
SQL provides several functions for generating a date /
time variable out of a date / time string (TO_DATE,
TO_TIME, TO_TIMESTAMP), as well as for extracting 4 Criticism
the respective members (seconds, for instance) of such
variables. The current system date / time of the database SQL deviates in several ways from its theoretical foun-
server can be called by using functions like NOW. The dation, the relational model and its tuple calculus. In that
IBM Informix implementation provides the EXTEND model, a table is a set of tuples, while in SQL, tables and
and the FRACTION functions to increase the accuracy query results are lists of rows: the same row may occur
of time, for systems requiring sub-second precision.[27] multiple times, and the order of rows can be employed
7

in queries (e.g. in the LIMIT clause). Whether this is • There is little commercial incentive for vendors to
a common practical concern, it is also a subject of de- make it easier for users to change database suppliers
bate. Furthermore, additional features (such as NULL (see vendor lock-in).
and views) were introduced without founding them di-
rectly on the relational model, which makes them more • Users evaluating database software tend to place
difficult to interpret. other factors such as performance higher in their pri-
Critics argue that SQL should be replaced with a lan- orities than standards conformance.
guage that strictly returns to the original foundation: for
example, see The Third Manifesto. Other critics suggest
that Datalog has two advantages over SQL: it has cleaner 5 Standardization
semantics, which facilitates program understanding and
maintenance, and it is more expressive, in particular for
SQL was adopted as a standard by the American Na-
recursive queries.[29]
tional Standards Institute (ANSI) in 1986 as SQL-86[34]
Another criticism is that SQL implementations are in- and the International Organization for Standardization
compatible between vendors. In particular date and (ISO) in 1987. Nowadays the standard is subject to con-
time syntax, string concatenation, NULLs, and compar- tinuous improvement by the Joint Technical Committee
ison case sensitivity vary from vendor to vendor. A ISO/IEC JTC 1, Information technology, Subcommittee SC
particular exception is PostgreSQL, which strives for 32, Data management and interchange, which affiliate to
compliance.[30] ISO as well as IEC. It is commonly denoted by the pat-
Popular implementations of SQL commonly omit sup- tern: ISO/IEC 9075-n:yyyy Part n: title, or, as a shortcut,
port for basic features of Standard SQL, such as the ISO/IEC 9075.
DATE or TIME data types. The most obvious such ISO/IEC 9075 is complemented by ISO/IEC 13249: SQL
examples, and incidentally the most popular commer- Multimedia and Application Packages (SQL/MM), which
cial and proprietary SQL DBMSs, are Oracle (whose defines SQL based interfaces and packages to widely
DATE behaves as DATETIME,[31][32] and lacks a TIME spread applications like video, audio and spatial data.
type)[33] and MS SQL Server (before the 2008 version).
Until 1996, the National Institute of Standards and
As a result, SQL code can rarely be ported between
Technology (NIST) data management standards program
database systems without modifications.
certified SQL DBMS compliance with the SQL stan-
There are several reasons for this lack of portability be- dard. Vendors now self-certify the compliance of their
tween database systems: products.[35]

• The complexity and size of the SQL standard means The original standard declared that the official pro-
that most implementors do not support the entire nunciation for “SQL” was an initialism: /ˈɛskjuːˈɛl/
standard. (“es queue el”).[10] Regardless, many English-speaking
database professionals (including Donald Chamber-
• The standard does not specify database behavior in lin himself[36] ) use the acronym-like pronunciation of
several important areas (e.g. indexes, file storage...), /ˈsiːkwəl/ (“sequel”),[37] mirroring the language’s pre-
leaving implementations to decide how to behave. release development name of “SEQUEL”.[13][14]
• The SQL standard precisely specifies the syntax The SQL standard has gone through a number of revi-
that a conforming database system must implement. sions:
However, the standard’s specification of the seman-
Interested parties may purchase SQL standards docu-
tics of language constructs is less well-defined, lead-
ments from ISO,[40] IEC or ANSI. A draft of SQL:2008
ing to ambiguity.
is freely available as a zip archive.[41]
• Many database vendors have large existing customer
The SQL standard is divided into nine parts.
bases; where the newer version of the SQL stan-
dard conflicts with the prior behavior of the ven-
dor’s database, the vendor may be unwilling to break • ISO/IEC 9075-1:2011 Part 1: Framework
backward compatibility. (SQL/Framework). It provides logical concepts.
8 5 STANDARDIZATION

• ISO/IEC 9075-2:2011 Part 2: Foundation databases and objects self-describing. These tools
(SQL/Foundation). It contains the most cen- include the SQL object identifier, structure and in-
tral elements of the language and consists of both tegrity constraints, security and authorization spec-
mandatory and optional features. ifications, features and packages of ISO/IEC 9075,
support of features provided by SQL-based DBMS
• ISO/IEC 9075-3:2008 Part 3: Call-Level Inter- implementations, SQL-based DBMS implementa-
face (SQL/CLI). It defines interfacing components tion information and sizing items, and the values
(structures, procedures, variable bindings) that can supported by the DBMS implementations.[42] This
be used to execute SQL statements from applica- part of the standard contains both mandatory and
tions written in Ada, C respectively C++, COBOL, optional features.
Fortran, MUMPS, Pascal or PL/I. (For Java see
part 10.) SQL/CLI is defined in such a way that
• ISO/IEC 9075-13:2008 Part 13: SQL Routines
SQL statements and SQL/CLI procedure calls are
and Types Using the Java Programming Language
treated as separate from the calling application’s
(SQL/JRT). It specifies the ability to invoke static
source code. Open Database Connectivity is a well-
Java methods as routines from within SQL appli-
known superset of SQL/CLI. This part of the stan-
cations ('Java-in-the-database'). It also calls for the
dard consists solely of mandatory features.
ability to use Java classes as SQL structured user-
• ISO/IEC 9075-4:2011 Part 4: Persistent Stored defined types. This part of the standard consists
Modules (SQL/PSM) It standardizes procedural ex- solely of optional features.
tensions for SQL, including flow of control, condi-
tion handling, statement condition signals and res- • ISO/IEC 9075-14:2011 Part 14: XML-Related
ignals, cursors and local variables, and assignment Specifications (SQL/XML). It specifies SQL-based
of expressions to variables and parameters. In addi- extensions for using XML in conjunction with SQL.
tion, SQL/PSM formalizes declaration and mainte- The XML data type is introduced, as well as sev-
nance of persistent database language routines (e.g., eral routines, functions, and XML-to-SQL data type
“stored procedures”). This part of the standard con- mappings to support manipulation and storage of
sists solely of optional features. XML in an SQL database.[38] This part of the stan-
dard consists solely of optional features.
• ISO/IEC 9075-9:2008 Part 9: Management of Ex-
ternal Data (SQL/MED). It provides extensions to
SQL that define foreign-data wrappers and datalink ISO/IEC 9075 is complemented by ISO/IEC 13249 SQL
types to allow SQL to manage external data. Exter- Multimedia and Application Packages. This closely re-
nal data is data that is accessible to, but not managed lated but separate standard is developed by the same com-
by, an SQL-based DBMS. This part of the standard mittee. It defines interfaces and packages based on SQL.
consists solely of optional features. The aim is a unified access to typical database applica-
tions like text, pictures, data mining or spatial data.
• ISO/IEC 9075-10:2008 Part 10: Object Language
Bindings (SQL/OLB). It defines the syntax and se-
mantics of SQLJ, which is SQL embedded in Java • ISO/IEC 13249-1:2007 Part 1: Framework
(see also part 3). The standard also describes mech-
anisms to ensure binary portability of SQLJ applica- • ISO/IEC 13249-2:2003 Part 2: Full-Text
tions, and specifies various Java packages and their
contained classes. This part of the standard consists • ISO/IEC 13249-3:2011 Part 3: Spatial
solely of optional features, as opposed to SQL/OLB
JDBC, which is not part of the SQL standard, which • ISO/IEC 13249-5:2003 Part 5: Still image
defines an API.
• ISO/IEC 9075-11:2011 Part 11: Information and • ISO/IEC 13249-6:2006 Part 6: Data mining
Definition Schemas (SQL/Schemata). It defines
the Information Schema and Definition Schema, • ISO/IEC 13249-8:xxxx Part 8: Metadata registries
providing a common set of tools to make SQL (MDR) (work in progress)
9

6 Alternatives • Comparison of relational database management sys-


tems
A distinction should be made between alternatives to • D (data language specification)
SQL as a language, and alternatives to the relational
model itself. Below are proposed relational alternatives • D4 (programming language)
to the SQL language. See navigational database and
NoSQL for alternatives to the relational model. • Hierarchical model
• List of relational database management systems
• .QL: object-oriented Datalog
• MUMPS
• 4D Query Language (4D QL)
• Microsoft SQL Server
• Datalog
• NoSQL
• HTSQL: URL based query method
• OttoQL
• IBM Business System 12 (IBM BS12): one of the
• Transact-SQL
first fully relational database management systems,
introduced in 1982

• ISBL 8 Notes
• jOOQ: SQL implemented in Java as an internal
[1] Paul, Ryan. “A guided tour of the Microsoft Command
internal domain-specific language Shell”. Ars Technica. Retrieved 10 April 2011.
• Java Persistence Query Language (JPQL): The [2] “Media Type registration for application/sql”. Internet
query language used by the Java Persistence API and Assigned Numbers Authority. 10 April 2013. Retrieved
Hibernate persistence library 10 April 2013.

• LINQ: Runs SQL statements written like language [3] “The application/sql Media Type, RFC 6922”. Internet
constructs to query collections directly from inside Engineering Task Force. April 2013. p. 3. Retrieved 10
.Net code. April 2013.

• Object Query Language [4] Beaulieu, Alan (April 2009). Mary E Treseler, ed. Learn-
ing SQL (2nd ed.). Sebastapol, CA, USA: O'Reilly. ISBN
• OttoQL 978-0-596-52083-0.

• QBE (Query By Example) created by Moshè Zloof, [5] Encyclopedia Britannica. “SQL”. Retrieved 2013-04-02.
IBM 1977 [6] From Oxford Dictionaries: “Definition of SQL - ab-
breviation, Structured Query Language, an international
• Quel introduced in 1974 by the U.C. Berkeley In-
standard for database manipulation.” Oxford Dictionar-
gres project. ies. “SQL”.
• Tutorial D [7] IBM. “SQL Guide”.
• XQuery [8] From Microsoft: “Structured Query Language, invented
at IBM in the 1970s. It is more commonly known by
its acronym, SQL ..” Microsoft. “Structured Query Lan-
7 See also guage (SQL) extquotedbl.

[9] Codd, Edgar F (June 1970). “A Relational Model of


• Wikibook SQL Data for Large Shared Data Banks”. Communications of
the ACM (Association for Computing Machinery) 13 (6):
• Comparison of object-relational database manage- 377–87. doi:10.1145/362384.362685. Retrieved 2007-
ment systems 06-09.
10 8 NOTES

[10] Chapple, Mike. “SQL Fundamentals”. Databases. [23] Fratarcangeli, Claudio (1991). Technique for universal
About.com. Retrieved 2009-01-28. quantification in SQL. Retrieved from ACM.org.

[11] “Structured Query Language (SQL) extquotedbl. Interna- [24] Kawash, Jalal (2004) Complex quantification in Struc-
tional Business Machines. October 27, 2006. Retrieved tured Query Language (SQL): a tutorial using relational
2007-06-10. calculus - Journal of Computers in Mathematics and
Science Teaching ISSN 0731-9258 Volume 23, Issue
[12] “ISO/IEC 9075-1:2008: Information technology – 2, 2004 AACE Norfolk, Virginia. Retrieved from
Database languages – SQL – Part 1: Framework Thefreelibrary.com.
(SQL/Framework) extquotedbl.
[25] Information Technology: Database Language SQL. CMU.
[13] Chamberlin, Donald D; Boyce, Raymond F (1974). (proposed revised text of DIS 9075).
“SEQUEL: A Structured English Query Language”
(PDF). Proceedings of the 1974 ACM SIGFIDET Work- [26] Arie Jones, Ryan K. Stephens, Ronald R. Plew, Alex
shop on Data Description, Access and Control (Associ- Kriegel, Robert F. Garrett (2005), SQL Functions Pro-
ation for Computing Machinery): 249–64. Retrieved grammer’s Reference. Wiley, 127 pages.
2007-06-09. [27] http://publib.boulder.ibm.com/infocenter/idshelp/v111/
index.jsp?topic=/com.ibm.sqlr.doc/sqlr150.htm
[14] Oppel, Andy (February 27, 2004). Databases Demysti-
fied. San Francisco, CA: McGraw-Hill Osborne Media. [28] PostgreSQL contributors (2011). “PostgreSQL server
pp. 90–1. ISBN 0-07-146960-5. programming”. PostgreSQL 9.1 official documentation.
postgresql.org. Retrieved 2012-03-09.
[15] “History of IBM, 1978”. IBM Archives. IBM. Retrieved
2007-06-09. [29] http://lbd.udc.es/jornadas2011/actas/PROLE/PROLE/
S5/13_article.pdf
[16] ANSI/ISO/IEC International Standard (IS). Database
Language SQL—Part 2: Foundation (SQL/Foundation). [30] PostgreSQL contributors (2012). “About PostgreSQL”.
1999. PostgreSQL 9.1 official website. PostgreSQL Global De-
velopment Group. Retrieved March 9, 2012. “Post-
[17] “DECODE”. Docs.oracle.com. Retrieved 2013-06-14. greSQL prides itself in standards compliance. Its SQL
implementation strongly conforms to the ANSI-SQL:
[18] “Transact-SQL Reference”. SQL Server Language Refer- 2008 standard”
ence. SQL Server 2005 Books Online. Microsoft. 2007-
09-15. Retrieved 2007-06-17. [31] Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep;
Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown,
[19] Hans-Joachim, K. (2003). “Null Values in Relational Lance; Baer, Hermann; Bellamkonda, Shrikanth (Octo-
Databases and Sure Information Answers”. Semantics in ber 2010) [1996]. “Basic Elements of Oracle SQL: Data
Databases. Second International Workshop Dagstuhl Cas- Types”. Oracle Database SQL Language Reference 11g
tle, Germany, January 7–12, 2001. Revised Papers. Lec- Release 2 (11.2). Oracle Database Documentation Li-
ture Notes in Computer Science 2582. pp. 119–138. brary. Redwood City, CA: Oracle USA, Inc. Retrieved
doi:10.1007/3-540-36596-6_7. ISBN 978-3-540-00957- December 29, 2010. “For each DATE value, Oracle
3. stores the following information: century, year, month,
date, hour, minute, and second”
[20] Ron van der Meyden, extquotedblLogical approaches
to incomplete information: a survey extquotedbl in [32] Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep;
Chomicki, Jan; Saake, Gunter (Eds.) Logics for Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown,
Databases and Information Systems, Kluwer Academic Lance; Baer, Hermann; Bellamkonda, Shrikanth (Oc-
Publishers ISBN 978-0-7923-8129-7, p. 344; PS preprint tober 2010) [1996]. “Basic Elements of Oracle SQL:
(note: page numbering differs in preprint from the pub- Data Types”. Oracle Database SQL Language Reference
lished version) 11g Release 2 (11.2). Oracle Database Documentation
Library. Redwood City, CA: Oracle USA, Inc. Re-
[21] ISO/IEC. ISO/IEC 9075-2:2003, “SQL/Foundation”. trieved December 29, 2010. “The datetime data types are
ISO/IEC. DATE...”

[22] M. Negri, G. Pelagatti, L. Sbattella (1989) Semantics and [33] Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep;
problems of universal quantification in SQL. Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown,
11

Lance; Baer, Hermann; Bellamkonda, Shrikanth (Octo- • C. J. Date with Hugh Darwen: A Guide to the SQL
ber 2010) [1996]. “Basic Elements of Oracle SQL: Data standard : a users guide to the standard database
Types”. Oracle Database SQL Language Reference 11g language SQL, 4th ed., Addison Wesley, USA 1997,
Release 2 (11.2). Oracle Database Documentation Li- ISBN 978-0-201-96426-4
brary. Redwood City, CA: Oracle USA, Inc. Retrieved
December 29, 2010. “Do not define columns with the fol-
lowing SQL/DS and DB2 data types, because they have no
corresponding Oracle data type:... TIME” 10 External links
[34] “Finding Aid”. X3H2 Records, 1978–95. American Na- • 1995 SQL Reunion: People, Projects, and Politics, by
tional Standards Institute. Paul McJones (ed.): transcript of a reunion meet-
ing devoted to the personal history of relational
[35] Doll, Shelley (June 19, 2002). “Is SQL a Standard
databases and SQL.
Anymore? extquotedbl. TechRepublic’s Builder.com.
TechRepublic. Archived from the original on 2013-01- • American National Standards Institute. X3H2
02. Retrieved 2010-01-07.
Records, 1978–1995 Charles Babbage Institute
[36] Gillespie, Patrick. “Pronouncing SQL: S-Q-L or Sequel?
Collection documents the H2 committee’s develop-
extquotedbl. Pronouncing SQL: S-Q-L or Sequel?. Re- ment of the NDL and SQL standards.
trieved 12 February 2012.
• Oral history interview with Donald D. Chamber-
[37] Melton, Jim; Alan R Simon (1993). “1.2. What is SQL?
lin Charles Babbage Institute In this oral history
extquotedbl. Understanding the New SQL: A Complete Chamberlin recounts his early life, his education at
Guide. Morgan Kaufmann. p. 536. ISBN 1-55860-245- Harvey Mudd College and Stanford University, and
3. “SQL (correctly pronounced “ess cue ell,” instead of his work on relational database technology. Cham-
the somewhat common “sequel”)...” berlin was a member of the System R research team
and, with Raymond F. Boyce, developed the SQL
[38] Wagner, Michael (2010). SQL/XML:2006 - Evaluierung database language. Chamberlin also briefly dis-
der Standardkonformität ausgewählter Datenbanksysteme. cusses his more recent research on XML query lan-
Diplomica Verlag. p. 100. ISBN 3-8366-9609-6. guages.
[39] SQL:2008 now an approved ISO international standard. • Comparison of Different SQL Implementations
Sybase. July 2008. This comparison of various SQL implementations
is intended to serve as a guide to those interested in
[40] “ISO/IEC 9075-2:2011: Information technology --
porting SQL code between various RDBMS prod-
Database languages -- SQL -- Part 2: Foundation
(SQL/Foundation) extquotedbl.
ucts, and includes comparisons between SQL:2008,
PostgreSQL, DB2, MS SQL Server, MySQL, Ora-
[41] SQL:2008 draft (Zip). Whitemarsh Information Systems cle, and Informix.
Corporation.
• Event stream processing with SQL - An introduc-
[42] ISO/IEC 9075-11:2008: Information and Definition tion to real-time processing of streaming data with
Schemas (SQL/Schemata). 2008. p. 1. continuous SQL queries

9 References
• Codd, Edgar F (June 1970). “A Relational
Model of Data for Large Shared Data Banks”.
Communications of the ACM 13 (6): 377–87.
doi:10.1145/362384.362685.

• Discussion on alleged SQL flaws (C2 wiki)


12 11 TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

11 Text and image sources, contributors, and licenses


11.1 Text
• SQL Source: http://en.wikipedia.org/wiki/SQL?oldid=627055727 Contributors: Damian Yerrick, Magnus Manske, Jimbo Wales, Elo-
quence, Wesley, Bryan Derksen, Zundark, The Anome, Jzcool, Sjc, Jan Hidders, Ed Poor, Andre Engels, Greg Lindahl, Hari, PierreAbbat,
William Avery, Roadrunner, Ben-Zin, Merphant, Caltrop, Heron, Arvi, BL, Hirzel, Branko, Leandrod, Frecklefoot, Edward, JohnOwens,
Michael Hardy, Modster, DopefishJustin, Lousyd, Rp, Kku, Delirium, Ahoerstemeier, Docu, Angela, Julesd, Randomned, Jonik, Mxn,
Scanos, Nikola Smolenski, Emperorbma, Charles Matthews, Timwi, Dcoetzee, Nohat, Dmsar, Dysprosia, Jay, Traal, ThomasStrohmann,
Qu1j0t3, Jeffrey Smith, Furrykef, Mdchachi, Wernher, Bevo, Nricardo, Shizhao, Toreau, Jamesday, Francs2000, Jeffq, Denelson83, Rob-
bot, Hankwang, Chealer, Craig Stuntz, Kizor, Jacek79, RedWolf, Goethean, Dittaeva, Nurg, Andr3w, Lowellian, Ashley Y, Rfc1394,
Rursus, Wikibot, Ruakh, Tobias Bergemann, Weialawaga, BenFrantzDale, Ævar Arnfjörð Bjarmason, Zigger, Peruvianllama, Alterego,
Mark T, Thetorpedodog, Alon, Duncharris, Jorge Stolfi, AlistairMcMillan, Joelm, Neilc, Stevietheman, Decoy, Chowbok, Gadfium, Slaver-
ing.dog, Mendel, SarekOfVulcan, Gzuckier, Beland, Wmaheriv, Rdsmith4, Mzajac, Maximaximax, Bumm13, Karl-Henner, Troels Arvin,
Yakovsh, Aidan W, Olivier Debre, AnandKumria, Adashiel, Asqueella, Canterbury Tail, RevRagnarok, D6, Ta bu shi da yu, Rfl, CALR,
Coffeehood, Aou, Alexrexpvt, KeyStroke, Rhobite, Schuetzm, Jpk, Paul.mcjones, Traxer, MeltBanana, Goplat, Plugwash, Elwikipedista,
Danakil, DanP, Kop, Lankiveil, Kwamikagami, Tgeller, Egrabczewski, Ronstone, Blonkm, John Vandenberg, Cwolfsheep, Safay, Lu-
oShengli, Unknown W. Brackets, Franl, Minghong, Sam Korn, Mdd, Andrisi, Iolar, HasharBot, Jumbuck, Steve Alvesteffer, Goki, Orzetto,
Alansohn, Liao, Tablizer, Nsd, Jezmck, Andrewpmk, M7, Pouya, Osmodiar, Velella, Tiha, RainbowOfLight, VoluntarySlave, Alai, Kitch,
S figueiredo, Mahanga, Crosbiesmith, Siafu, Ondrejk, Simetrical, Mindmatrix, Lost.goblin, TigerShark, Camw, Arcann, Mathmo, Uncle
G, DanBishop, Admrboltz, Paul Mackay, Ruud Koot, KymFarnik, Burgher, Bkwillwm, Wikiklrsc, KingsleyIdehen, MacTed, GregorB,
Plrk, Prashanthns, Wisq, Vivek.pandey, Turnstep, Pmcjones, Mandarax, Wulfila, Graham87, Spezied, Quantum00, Cuchullain, BD2412,
DePiep, Dpr, Sjakkalle, Rjwilmsi, Tizio, Koavf, XP1, Trlovejoy, Salix alba, Ajcumming, Ltruett, Cww, Chtirrell, Dianelos, Fred Brad-
stadt, Platypus222, Miskin, Sgkay, Wragge, FlaBot, Bobstay, RobertG, Ground Zero, Ysangkok, GnuDoyng, ApprenticeFan, Sstrader,
Intgr, Alvin-cs, MoRsE, Chobot, Visor, Bobdc, Peterl, Yzchang, Elfguy, YurikBot, MathiasRav, Todd Vierling, Hairy Dude, RussBot,
Severa, Piet Delport, Hydrargyrum, Powerlord, Stephenb, Barefootguru, CambridgeBayWeather, Bovineone, RadioKirk, NawlinWiki,
DragonHawk, Razorx, Gosub, Grafen, Reikon, Neum, Długosz, Aaron Brenneman, Hakkinen, Xdenizen, Larsinio, Mikeblas, Ezeu, Scs,
Iancarter, Dlyons493, Elkman, Alpha 4615, Saric, Vonfraginoff, Lt-wiki-bot, Chase me ladies, I'm the Cavalry, Closedmouth, Jwissick,
Cedar101, CyberShadow, GraemeL, Anclation, JLaTondre, Kubra, Allens, Ben D., Mhkay, Rwwww, GrinBot, Dan Atkinson, Jonearles,
XSTRIKEx6864, IanGB, AndrewWTaylor, Trevorloflin, DrJolo, Jsnx, SmackBot, Tcutcher, Haza-w, ElectricRay, Incnis Mrsi, Reedy,
Frando, Basil.bourque, Od Mishehu, Power piglet, Dennis forbes, Brick Thrower, Stifle, Inonit, Jpvinall, ActiveSelective, Commander
Keane bot, Unforgettableid, Gilliam, NickGarvey, KD5TVI, Michele.alessandrini, Schaef, Theone256, Davep.org, Thumperward, Oli Filth,
Jerome Charles Potts, Dlohcierekim’s sock, Octahedron80, Nbarth, DHN-bot, Thekaleb, Hongooi, SuezanneC Baskerville, Ville Oikari-
nen, Mahamoty, Jimhark, Countersubject, NYKevin, Can't sleep, clown will eat me, Rdeleonp, Frap, Jsmethers, Racklever, Kaimiddleton,
Mackseem, Opticyclic, Cybercobra, Jdlambert, Xibe, Dreadstar, A.R., Markhobley, Jon Awbrey, FelisLeo, Mersperto, Lambiam, Gen-
naro Prota, Plcsys, Rklawton, Dbtfz, Kuru, Wingnut909, Vincenzo.romano, Asix, Avé, Stratadrake, Loadmaster, Tasc, Beetstra, Ehheh,
Optakeover, Johnmc, Aresgunther, Riffic, Hu12, Norm mit, Possum, Dreftymac, Sander Säde, GregCovey, Paul Foxworthy, Beno1000,
Adrian.walker, Gil Gamesh, Az1568, Cherry Cotton, Booles, Tawkerbot2, The Letter J, Ioannes Pragensis, FatalError, SkyWalker, Comps,
Paulmlieberman, SqlPac, CRGreathouse, Ivan Pozdeev, TunaSushi, Pukkie, JohnCD, Baiji, Harperska, GHe, TheExtruder, Avillia, Max-
Ent, Gregbard, JamesNK, Badseed, Mblumber, Drgrussell, Poloolop, Dancter, Tawkerbot4, Christian75, Dsan, FrancoGG, Epbr123,
Skreyola, Ucanlookitup, Davidhorman, Klausness, Escarbot, Mentifisto, KrakatoaKatie, AntiVandalBot, Gioto, Luna Santin, Guy Ma-
con, Seaphoto, EarthPerson, Quintote, DennisWithem, Lfstevens, Hardeeps, Bodmerb, Deflective, BlindEagle, SiobhanHansa, Acrote-
rion, Kreca, Thirtyfootscrew, Magioladitis, Jaysweet, Bongwarrior, VoABot II, Sinisterstuf, Master2841, Twsx, Cic, Aka042, Bernd vdB,
Ahecht, Capnchicken, Gabrielsroka, 28421u2232nfenfcenc, Wwmbes, Allstarecho, Cpl Syx, Just James, Matt.smart, Falcor84, Ftier-
cel, Gwern, Spectrum266, MartinBot, GrandPoohBah, Grauenwolf, R'n'B, RockMFR, J.delanoy, Mojodaddy, Huzarus, Herbythyme,
Smartweb, Macaldo, Joeyjojo Junior, Cpiral, Bill Huffman, Alalia 17, Jackacon, Cometstyles, DH85868993, Channard, Kvdveer, Martin-
Rinehart, Bonadea, Sbvb, DigitalEnthusiast, Love1710, Delikedi, 28bytes, Jimmytharpe, VolkovBot, Harlock jds, Gsapient, Jeff G., Ppara-
zorback, WOSlinker, Philip Trueman, TXiKiBoT, AllanManangan, Vitund, Crowne, Anonymous Dissident, Combatentropy, Somme111,
Subflux, Thunderbritches, Swanyboy2, JhsBot, Kovianyo, MichaelSpeer, PDFbot, David Condrey, Zhenqinli, Butterscotch, Andy Din-
gley, SallyBoseman, Synthebot, Enviroboy, AgentCDE, Ulf Abrahamsson, AlleborgoBot, Anoko moonlight, S.Örvarr.S, Jeenware, En-
toaggie09, Metroking, SieBot, Gopher292, VVVBot, Winchelsea, Caltas, X-Fi6, Starius, Flyer22, Ehajiyev, MinorContributor, JCLately,
SouthLake, Harry, RW Marloe, Viridity, Legacypath, Svick, AlanUS, Peter.vanroose, Apienczy, Aarthib123, Ravi555, Escape Orbit, Core-
mayo, Startswithj, Vanished user qkqknjitkcse45u3, Mikevoxcap, ClueBot, SummerWithMorons, The Thing That Should Not Be, Mild
Bill Hiccup, DragonBot, Eboyjr, CF84, Jusdafax, Three-quarter-ten, Ferdna, Decon1985, Vivio Testarossa, Behringerdj, Aseld, Fleurydj,
Joieko, Kruusamägi, B15nes7, SF007, TimTay, XLinkBot, Fastily, Libcub, Mitch Ames, WikHead, Smu95rp, Alexius08, Osarius, Addbot,
Ghettoblaster, DOI bot, Tcncv, MrOllie, Download, Favonian, Tomtheeditor, Lucian Sunday, LinkFA-Bot, Jasper Deng, West.andrew.g,
Justinkaz, Evildeathmath, Lightbot, Sergioledesma, Zorrobot, CountryBot, Luckas-bot, Yobot, Saramar10, JackPotte, Bunnyhop11, Pt-
botgourou, Washburnmav, Infojunkie23, KamikazeBot, Wadamja, AnomieBOT, Sql pol, Coolboy1234, Galoubet, Royote, Piano non
troppo, Cuckoosnest, Jzel6201, Materialscientist, Brassrat70s, Lavarock86, Citation bot, La comadreja, Littlebluenick, ArthurBot, Que-
bec99, Xqbot, Meh222, Greco-German, Yeneesha, Doctorx0079, Nasa-verve, GrouchoBot, Jonas AGX, Frosted14, SciberDoc, Amaury,
Xjhx001, Hymek, Loveenatayal, Joaquin008, David Nemati, PM800, Cekli829, FrescoBot, Logiphile, Netfriend, Wiretse, Mark Renier,
Jc3s5h, Wei.cs, Sippsin, Finalius, Gawat123, Citation bot 1, NiceGuyEduardo, Jschnur, Philippe Perrault, Tjmoel, Alec.korba, RBarryY-
11.2 Images 13

oung, Starbeard, Weylinp, TobeBot, Lotje, Mt.toth, Vrenator, JnRouvignac, Crysb, DavidWikiuser, Yeng-Wang-Yeh, Oljtn, Bricaniwi,
Difu Wu, Ribaw1, Salvio giuliano, Smeyerinnewton, B6nb3k, Tagtool, EmausBot, WikitanvirBot, Carbo1200, K6ka, Kelti, Savh, Kpelt,
ZéroBot, Ida Shaw, Njbooher, Fæ, Shuipzv3, Jay-Sebastos, Kesava84, Donner60, Puffin, Bomazi, Tijfo098, Leave Mr Mitchell alone!,
ChuispastonBot, Moontube, Wakebrdkid, Rdmil, ClueBot NG, Peter James, Lukaseder, Bstan72, O.Koslowski, Edwinludo, Masssly, Widr,
Antiqueight, Danim, Helpful Pixie Bot, Hippo75, DefaultLocale, BG19bot, Purple Data, Smithhogg, Grigrim, Mark Arsten, Compfreak7,
Amolbot, Syzy, Pogonomyrmex, Gefstar1, Boshomi, Chmarkine, Abuyakl, Dhies88, Davidfreesefan23, Sbose7890, ItsMeowAnywhere,
Naveen0665, BattyBot, MatthewIreland, ChrisGualtieri, Thom2729, APerson, Fabius.83, Mogism, Mradkins96, Detjo, Sailee5, Feder raz,
Faizan, Epicgenius, Mark10011, I am One of Many, Deepaksogani, Suranjan91, Banannamal, Jacobnibu, Njol, Ilaydakinalan, Mgt88drcr,
Monkbot, Poepkop, Alrich44, NickoCA, Prog algo and Anonymous: 1061

11.2 Images
• File:Folder_Hexagonal_Icon.svg Source: http://upload.wikimedia.org/wikipedia/en/4/48/Folder_Hexagonal_Icon.svg License: ? Con-
tributors: ? Original artist: ?
• File:Office-book.svg Source: http://upload.wikimedia.org/wikipedia/commons/a/a8/Office-book.svg License: Public domain Contribu-
tors: This and myself. Original artist: Chris Down/Tango project
• File:SQL_ANATOMY_wiki.svg Source: http://upload.wikimedia.org/wikipedia/commons/a/aa/SQL_ANATOMY_wiki.svg License:
CC-BY-SA-3.0 Contributors: Transferred from en.wikipedia; transferred to Commons by User:MARKELLOS using CommonsHelper.
Original artist: :User:SqlPac, modified by Ferdna. Original uploader was Ferdna at en.wikipedia
• File:Wikibooks-logo.svg Source: http://upload.wikimedia.org/wikipedia/commons/f/fa/Wikibooks-logo.svg License: CC-BY-SA-3.0
Contributors: Own work Original artist: User:Bastique, User:Ramac et al.
• File:Wikiversity-logo-Snorky.svg Source: http://upload.wikimedia.org/wikipedia/commons/1/1b/Wikiversity-logo-en.svg License: ?
Contributors: Own work Original artist: Snorky
• File:Wiktionary-logo-en.svg Source: http://upload.wikimedia.org/wikipedia/commons/f/f8/Wiktionary-logo-en.svg License: Public
domain Contributors: Vector version of Image:Wiktionary-logo-en.png. Original artist: Vectorized by Fvasconcellos (talk · contribs),
based on original logo tossed together by Brion Vibber

11.3 Content license


• Creative Commons Attribution-Share Alike 3.0

You might also like