SQL (poles sos sigles n'inglés Structured Query Language; n'asturianu llinguaxe de consulta estructurada) ye un llinguaxe específicu del dominiu que da accesu a un sistema de xestión de bases de datos rellacionales que dexa especificar diversos tipos d'operaciones nellos. Una de les sos carauterístiques ye'l manexu del álxebra y el cálculu relacional que dexen efectuar consultes col fin de recuperar, de forma senciella, información de bases de datos, según faer cambeos nelles.

Orixinalmente basáu na álxebra relacional y nel cálculu relacional, SQL consiste nun llinguaxe de definición de datos, un llinguaxe de manipulación de datos y un llinguaxe de control de datos. L'algame de SQL inclúi l'insertamientu de datos, consultes, actualizaciones y borráu, la creación y cambéu d'esquemes y el control d'accesu a los datos. Tamién el SQL dacuando descríbese como un llinguaxe declarativo, tamién inclúi elementos procesales.

SQL foi unu de los primeros llinguaxes comerciales pal modelu relacional d'Edgar Frank Codd como se describió nel so papel de 1970 El modelu relacional de datos pa grandes bancos de datos compartíos. A pesar de nun xuntase totalmente al modelu relacional descritu por Codd, pasó a ser el llinguaxe de base de datos más usáu.

SQL pasó a ser l'estándar del Institutu Nacional d'Estándares d'Estaos Xuníos (ANSI) en 1986 y de la Organización Internacional de Normalización (ISO) en 1987. De magar, l'estándar foi revisáu pa incluyir más carauterístiques. A pesar de la esistencia de dambos estándares, la mayoría de los códigos SQL nun son dafechu portables ente sistemes de bases de datos distintos ensin axustes.

Oríxenes y evolución Los oríxenes de SQL tán amestaos a les bases de datos de les pc o móvil entá a los de les bases de datos rellacionales. En 1970 Y. F. Codd propón el modelu relacional y acomuñáu a este un sublenguaje d'accesu a los datos basáu nel cálculu de predicaos.EF Codd; A relational model of data for large shared data banks. Comm. ACM, 13 (1970), páxs. 377-387. Basándose nestes idees, los llaboratorios d'IBM definieron el llinguaxe SEQUEL (Structured English Query Language) que más tarde foi llargamente implementáu pol sistema de xestión de bases de datos (SGBD) esperimental System R, desenvueltu en 1977 tamién por IBM. Sicasí, foi Oracle quien lo introdució per primer vegada en 1979 nun productu comercial.

El SEQUEL terminó siendo'l predecesor de SQL, que ye una versión evolucionada del primeru. SQL pasa a ser el llinguaxe por excelencia de los diversos sistemes de xestión de bases de datos relacionales surdíos nos años siguientes y foi por fin estandarizado en 1986 pol ANSI, dando llugar a la primer versión estándar d'esti llinguaxe, "SQL-86" o "SQL1". Al añu siguiente esti estándar ye tamién adoptáu por ISO.

Sicasí, esti primer estándar nun cubrir toles necesidaes de los desarrolladores ya incluyía funcionalidades de definición d'almacenamientu que consideró suprimise les. Asina que, en 1992, llanzóse un nuevu estándar ampliáu y revisáu de SQL llamáu "SQL-92" o "SQL2".

Na actualidá SQL ye l'estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, anque la diversidá d'agregos particulares qu'inclúin les distintes implementaciones comerciales del llinguaxe ye amplia, el soporte al estándar SQL-92 ye xeneral y bien ampliu.

El ANSI SQL sufrió delles revisiones y amestaos a lo llargo del tiempu:

Añu Nome Alies Comentarios 1986 SQL-86 SQL-87 Primer publicación fecha por ANSI. Confirmada por ISO en 1987. 1989 SQL-89 Revisión menor. 1992 SQL-92 SQL2 Revisión mayor. 1999 SQL:1999 SQL2000 Amestáronse espresiones regulares, consultes recursivas (pa rellaciones xerárquiques), triggers y delles carauterístiques empobinaes a oxetos. 2003 SQL:2003   Introduz delles carauterístiques de XML, cambeos nes funciones, estandarización del oxetu sequence y de les columnes autonuméricas.Eisenberg et al.: SQL:2003 Has Been Published. 2005 SQL:2005   ISO/IEC 9075-14:2005 Define les maneres nes cualos SQL puede utilizase conxuntamente con XML. Define maneres d'importar y guardar dato XML nuna base de datos SQL, manipoliándolos dientro de la base de datos y publicando el XML y los datos SQL convencionales en forma XML. Amás, apurre facilidaes que dexen a les aplicaciones integrar dientro del so códigu SQL l'usu de XQuery, llinguaxe de consulta XML publicáu pol W3C (World Wide Web Consortium) p'accesu concurrente a datos ordinarios SQL y documento XML. 2008 SQL:2008   Dexa l'usu de la cláusula ORDER BY fuera de les definiciones de los cursores. Inclúi'l disparadores del tipu INSTEAD OF. Añade la sentencia TRUNCATE. Aprobación de SQL 2008. 2011 SQL:2011 Datos temporales (PERIOD FOR). Meyores nes funciones de ventana y de la cláusula FETCH. 2016 SQL:2016 Dexa busca de patrones, funciones de tabla polimórficas y compatibilidá colos ficheros JSON.

Carauterístiques xenerales de SQL SQL ye un llinguaxe d'accesu a bases de datos qu'esplota la flexibilidá y potencia de los sistemes relacionales y dexa asina gran variedá d'operaciones.

Ye un llinguaxe declarativo de "altu nivel" o "de non procedimientu" que, gracies a la so fuerte base teórica y la so orientación al manexu de conxuntos de rexistros —y non a rexistros individuales— dexa una alta productividá en codificación y l'orientación a oxetos. D'esta forma, una sola sentencia puede equivalir a unu o más programes que s'utilizaríen nun llinguaxe de baxu nivel empobináu a rexistros. SQL tamién tien les siguientes carauterístiques:

Llinguaxe de definición de datos: El LDD de SQL apurre comandos pa la definición d'esquemes de rellación, borráu de rellaciones y cambeos de los esquemes de rellación. Llinguaxe interactivo de manipulación de datos: El LMD de SQL inclúi llinguaxes de consultes basáu tantu n'álxebra relacional como en cálculu relacional de tuplas. Integridá: El LDD de SQL inclúi comandos pa especificar les restricciones d'integridá que tienen de cumplir los datos almacenaos na base de datos. Definición de vistes: El LDD inclúi comandos pa definir les vistes. Control de transaiciones: SQL tien comandos pa especificar l'empiezu y el final d'una transaición. SQL incorporáu y dinámicu: Esto quier dicir que pueden incorporase instrucciones de SQL en llinguaxes de programación como: C++, C, Java, PHP, Cobol, Pascal y Fortran. Autorización: El LDD inclúi comandos pa especificar los derechos d'accesu a les rellaciones y a les vistes.

Tipos de datos Dalgunos de los tipos de datos básicos de SQL son:

Varchar: Recibe cadena de pallabres compuestes de lletres, númberos y calteres especiales. Date: una fecha de calendariu que contién l'añu (de cuatro cifres), el mes y el día. Time: La hora del día n'hores, minutos y segundos (el valor predetermináu ye 0). Datetime: la combinación de Date y Time.

Optimización Como yá se dixo antes, y suel ser común nos llinguaxes d'accesu a bases de datos d'altu nivel, SQL ye un llinguaxe declarativo. Esto ye, qu'especifica qué ye lo que se quier y non cómo consiguilo, polo qu'una sentencia nun establez explícitamente un orde d'execución.

L'orde d'execución internu d'una sentencia puede afectar seriamente a la eficiencia del SGBD, polo que se fai necesariu qu'ésti lleve a cabu una optimización antes de la so execución. Munches vegaes, l'usu d'índices acelera una instrucción de consulta, pero ralentiza l'actualización de los datos. Dependiendo del usu de l'aplicación, va priorizase l'accesu indexado o una rápida actualización de la información. La optimización difier sensiblemente en cada motor de base de datos y depende de munchos factores.

Esiste una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difusu) que dexa l'accesu a bases de datos difuses, usando la lóxica difusa. Esti llinguaxe foi implementáu a nivel esperimental y ta evolucionando rápido.

Llinguaxe de definición de datos (DDL) El llinguaxe de definición de datos (n'inglés Data Definition Language, o DDL), ye'l que s'encarga del cambéu de la estructura de los oxetos de la base de datos. Inclúi órdenes pa modificar, borrar o definir les tables nes que s'almacenen los datos de la base de datos. Esisten cuatro operaciones básiques: CREATE, ALTER, DROP y TRUNCATE.

CREATE | CREAR Esti comandu dexa crear oxetos de datos, como nueves bases de datos, tables, vistes y procedimientos almacenaos. Exemplu (crear una tabla) CREATE TABLE 'CUSTOMERS';

ALTER | MODIFICAR Esti comandu dexa modificar la estructura d'una tabla o oxetu. Pueden amestase/quitar campos a una tabla, modificar el tipu d'un campu, amestar/quitar índices a una tabla, modificar un trigger, etc. Exemplu (amestar columna a una tabla) ALTER TABLE 'ALUMNOS' ADD EDÁ INT UNSIGNED;

DROP | ESANICIAR Esti comandu esanicia un oxetu de la base de datos. Puede ser una tabla, vista, índiz, trigger, función, procedimientu o cualquier oxetu que'l motor de la base de datos soporte. Puede combinase cola sentencia ALTER.

Exemplu <source lang="sql"> DROP TABLE 'ALUMNOS'; </syntaxhighlight>

TRUNCATE | BORRAR TABLA Esti comandu ataya tol conteníu d'una tabla. La ventaya sobre'l comandu DROP, ye que si se quier borrar tol conteníu de la tabla, ye muncho más rápido, especialmente si la tabla ye bien grande. La desventaxa ye que TRUNCATE namái sirve cuando quier esaniciase absolutamente tolos rexistros, yá que nun se dexa la cláusula WHERE. Magar, nun principiu, esta sentencia paecería ser DML (Llinguaxe de Manipulación de Datos), ye en realidá una DDL, yá que internamente, el comandu TRUNCATE borra la tabla y volver a crear y nun executa nenguna transaición.

Exemplu <source lang="sql"> TRUNCATE TABLE 'NOME_TABLA'; </syntaxhighlight>

Llinguaxe de manipulación de datos DML(Data Manipulation Language)

Definición Un llinguaxe de manipulación de datos (Data Manipulation Language, o DML n'inglés) ye un llinguaxe proporcionáu pol sistema de xestión de base de datos que dexa a los usuarios llevar a cabu les xeres de consulta o manipulación de los datos, entamaos pol modelu de datos fayadizu.

El llinguaxe de manipulación de datos más popular güei día ye SQL, usáu pa recuperar y manipoliar datos nuna base de datos relacional.

SELECT | ESCOYER La sentencia SELECT déxanos consultar los datos almacenaos nuna tabla de la base de datos.

Forma básica SELECT [ALL | DISTINCT ] <nome_campu> [{,<nome_campu>}] FROM <nome_tabla>|<nome_vista> [{,<nome_tabla>|<nome_vista>}] [WHERE <condición> [{ AND|OR <condición>}]] [GROUP BY <nome_campu> [{,<nome_campu >}]] [HAVING <condición>[{ AND|OR <condición>}]] [ORDER BY <nome_campu>|<índiz_campu> [ASC | DESC] [{,<nome_campu>|<índiz_campu> [ASC | DESC ]}]] SELECTPallabra clave qu'indica que la sentencia de SQL que queremos executar ye de seleición.ALLIndica que queremos escoyer tolos valores. Ye'l valor por defectu y nun suel especificase casi nunca.DISTINCTIndica que queremos escoyer namái los valores distintos.FROMIndica la tabla (o tables) dende la que queremos recuperar los datos. Nel casu de qu'esista más d'una tabla denominar a la consulta "consulta combinada" o "join". Nes consultes combinaes ye necesariu aplicar una condición de combinación al traviés d'una cláusula WHERE.WHEREEspecifica una condición que tien de cumplise por que los datos sían devueltos pola consulta. Almite los operadores lóxicos AND y OR.GROUP BYEspecifica l'agrupación que se da a los datos. Úsase siempres en combinación con funciones amestaes.HAVINGEspecifica una condición que tien de cumplise por que los datos sían devueltos pola consulta. El so funcionamientu ye similar al de WHERE pero aplicáu al conxuntu de resultancies devueltes pola consulta. Tien De aplicase siempres xunto a GROUP BY y la condición tien de tar referida a los campos conteníos nella.ORDER BYPresenta la resultancia ordenada poles columnes indicaes. L'orde puede espresase con ASC (orde ascendente) y DESC (orde descendente). El valor predeterminado ye ASC.

Exemplu: