SQL (en inglés "sequel" e que é un acrónimo de Structured Query Language, linguaxe de consulta estructurada)[1][2] é unha linguaxe específica de dominio para xerar, manipular e obter datos de bases de datos relacionadas.[3] Permite a xestión de datos ben en sistemas de bases de datos con relacións (RDBMS) ou en sistemas con fluxo de datos relacionados (RDSMS). SQL permite acceder a rexistros de datos cunha única orde e sen ter que buscar onde están os datos teñen ou non teñan un rexistro.
Ao comezo fundamentouse na álxebra relacional e no cálculo de relacións por tuplas ou ringleiras e agora fundamentase nunha serie de ordes, ou clases que son sub-linguaxes, que permiten procura de datos, a linguaxe de definición de datos (DDL, Data Definition Language), a linguaxe de control de datos (DCL, Data Control Language) e a linguaxe de manipulación de datos (DML, Data Manipulation Language). SQL pretende facer buscas de datos, manipulalos (introducíndoos, actualizándoos ou borrándoos), definindo os datos (o marco de creación e modificación) e o control de acceso a datos. Inda que SQL polo xeral se considera, en boa parte, unha linguaxe declarativa (4GL), tamén inclúe elementos procesais.
SQL foi unha das primeiras linguaxes comerciais que empregou o modelo de relacións que describiu Edgar F. Codd no seu artigo de 1970 "Un modelo de relacións de datos para bancos de datos con alta cantidade de datos compartidos".[4] Aínda que non incluíu todas as regras de relacións do modelo descrito por Codd, SQL converteuse na linguaxe de base de datos máis empregada.[1][5]
SQL converteuse nu estándar do Instituto Nacional Americano de Estándares (ANSI) en 1986 e da Organización internacional de estándares (ISO) en 1987.[6] Malia a existencia destes estándares a meirande parte do código SQL non pode migrarse entre diferentes sistemas de bases de datos sen facer algúns axustes.
En SQL para obter da base de datos táboa dúas variables, campo_un e campo_dous, na que os valores da variable campo_un sexan iguais a valor, defínese:
SELECT campo_un, campo_dous FROM taboa WHERE campo_un = 'valor';