Sql

Ajustar Compartir Imprimir Citar
Idioma para la gestión y utilización de bases de datos relacionales

Lenguaje de consulta estructurado, abreviado como SQL (S-Q-L, a veces "secuela" por razones históricas), es un lenguaje específico de dominio utilizado en la programación y diseñado para administrar datos almacenados en un sistema de administración de bases de datos relacionales (RDBMS) o para el procesamiento de flujos en un sistema de administración de flujos de datos relacionales (RDSMS). Es particularmente útil en el manejo de datos estructurados, es decir, datos que incorporan relaciones entre entidades y variables.

SQL ofrece dos ventajas principales sobre las API de lectura y escritura más antiguas, como ISAM o VSAM. En primer lugar, introdujo el concepto de acceder a muchos registros con un solo comando. En segundo lugar, elimina la necesidad de especificar cómo alcanzar un registro, p. con o sin índice.

Originalmente basado en el álgebra relacional y el cálculo relacional de tuplas, SQL consta de muchos tipos de declaraciones, que pueden clasificarse informalmente como sublenguajes, comúnmente: un lenguaje de consulta de datos (DQL), un lenguaje de definición de datos (DDL), un lenguaje de control de datos (DCL) y un lenguaje de manipulación de datos (DML). El alcance de SQL incluye consulta de datos, manipulación de datos (inserción, actualización y eliminación), definición de datos (creación y modificación de esquemas) y control de acceso a datos. Aunque SQL es esencialmente un lenguaje declarativo (4GL), también incluye elementos de procedimiento.

SQL fue uno de los primeros lenguajes comerciales en utilizar el modelo relacional de Edgar F. Codd. El modelo se describió en su influyente artículo de 1970, "Un modelo relacional de datos para grandes bancos de datos compartidos". A pesar de no adherirse por completo al modelo relacional descrito por Codd, se convirtió en el lenguaje de base de datos más utilizado.

SQL se convirtió en un estándar del Instituto Nacional Estadounidense de Estándares (ANSI) en 1986 y de la Organización Internacional para la Estandarización (ISO) en 1987. Desde entonces, el estándar se ha revisado para incluir un conjunto más amplio de características. A pesar de la existencia de estándares, la mayoría del código SQL requiere al menos algunos cambios antes de ser portado a diferentes sistemas de bases de datos.

Historia

SQL fue desarrollado inicialmente en IBM por Donald D. Chamberlin y Raymond F. Boyce después de conocer el modelo relacional de Edgar F. Codd a principios de la década de 1970. Esta versión, inicialmente llamada SEQUEL (Structured English Query Language), fue diseñada para manipular y recuperar datos almacenados en el sistema de gestión de base de datos cuasirelacional original de IBM, System R, que un grupo del Laboratorio de Investigación de IBM San Jose había desarrollado durante la década de 1970..

El primer intento de Chamberlin y Boyce de un lenguaje de base de datos relacional fue SQUARE (Especificación de consultas en un entorno relacional), pero era difícil de usar debido a la notación de subíndice/superíndice. Después de mudarse al Laboratorio de Investigación de San José en 1973, comenzaron a trabajar en una secuela de SQUARE. El nombre original SEQUEL, que se considera un juego de palabras con QUEL, el lenguaje de consulta de Ingres, se cambió más tarde a SQL (eliminando las vocales) porque "SEQUEL" era una marca comercial de la empresa Hawker Siddeley Dynamics Engineering Limited con sede en el Reino Unido. La etiqueta SQL más tarde se convirtió en el acrónimo de Structured Query Language.

Después de probar SQL en sitios de prueba de clientes para determinar la utilidad y practicidad del sistema, IBM comenzó a desarrollar productos comerciales basados en su prototipo System R, incluidos System/38, SQL/DS e IBM Db2, que estaban disponibles comercialmente en 1979, 1981 y 1983, respectivamente.

A fines de la década de 1970, Relational Software, Inc. (ahora Oracle Corporation) vio el potencial de los conceptos descritos por Codd, Chamberlin y Boyce, y desarrolló su propio RDBMS basado en SQL con aspiraciones de venderlo a la Marina de los EE. UU., la Agencia Central de Inteligencia y otras agencias del gobierno de los Estados Unidos. En junio de 1979, Relational Software presentó una de las primeras implementaciones comerciales de SQL, Oracle V2 (Versión 2) para computadoras VAX.

En 1986, los grupos de estándares ANSI e ISO adoptaron oficialmente el estándar "Database Language SQL" definición de lenguaje. Se publicaron nuevas versiones del estándar en 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011 y, más recientemente, en 2016.

Sintaxis

UPDATEclause:{}UPDATEcountries⏞ ⏞ table}SETclause:{}SETpopulation⏞ ⏞ column=population+1⏟ ⏟ literal⏞ ⏞ expression}WHEREclause:{}WHEREname⏞ ⏞ column=.USA.⏞ ⏞ literal⏞ ⏞ expression⏟ ⏟ predicate};}declaración⏟ ⏟ SQLquerSí.{displaystyle underbrace {left.{begin{array}{rl}textstyle {fnMittt {fnMittt {fnh}}}} {\\\mtttt {\\fnMittt {f}}}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\fn}}}}}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\fn}}}}}}}}\\\\\\\\\\\\\ {\fnMittt {fnMittt} {fnMittt {\fnMittt {f}} {fnMittt {fnMittt}} {fnK} ^{Mathtt {colum # Sobrebrace {Mathtt {{population}+underbrace {fnhtt {}}\\\fnK}}\\\\\\\\\\\\\fnMitttt {}}}\\\\\\\\\\\\\fnK\\\\\\\fnhnh0h0h0hnhnhnhnKh0hKh0h3nKh0h0h0hKh0h9}}}}}}\\\\\\\\\\sh9}}}}}}\\\\\\\\\\\\\\\\\\sh9}}}}\\\\\\\\\\\\\\\\ {fnh} {fnh} {fnh} {\fnh} {\fnh} {\fnh} {fnh} {\fnh} {fnh}} {fnh} {fn}}\fnh}\fnh}}\fnh}}}\\\\fnhnh}}}\\\fnhnh}}}\\\\fnH0}}}}\\\\]}}}}}}}}}}}}}}\\\\\\\\\\\\\\\\\\\\\]}}}}}}}}}}}tttttttttttttttttttttttttttttttt}} {fnMitt {fnh}} {fnMittt {f}}\ftt {f}}}end{array}}}right}{f}{hmestilo {textttt {statement}}} - ¿Qué?
Un gráfico que muestra varios de los elementos del lenguaje SQL que componen una sola declaración

El lenguaje SQL se subdivide en varios elementos del lenguaje, que incluyen:

Extensiones de procedimiento

SQL está diseñado para un propósito específico: consultar datos contenidos en una base de datos relacional. SQL es un lenguaje de programación declarativo basado en conjuntos, no un lenguaje de programación imperativo como C o BASIC. Sin embargo, las extensiones de SQL estándar agregan funciones de lenguaje de programación de procedimientos, como construcciones de control de flujo. Éstos incluyen:

Fuente Abreviatura Nombre completo
ANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules
Interbase / Firebird PSQL SQL procesal
IBM Db2 SQL PL SQL Procedural Language (implements SQL/PSM)
IBM Informix SPL Idioma procesal almacenado
IBM Netezza NZPLSQL (basado en Postgres PL/pgSQL)
Invantive PSQL SQL de procedimiento avanzado (ejecuciones SQL/PSM y PL/SQL)
MariaDB SQL/PSM, PL/SQL SQL/Persistent Stored Module (implements SQL/PSM), Procedural Language/SQL (basado en Ada)
Microsoft / Sybase T-SQL Transact-SQL
Mimer SQL SQL/PSM SQL/Persistent Stored Module (implements SQL/PSM)
MySQL SQL/PSM SQL/Persistent Stored Module (implements SQL/PSM)
MonetDB SQL/PSM SQL/Persistent Stored Module (implements SQL/PSM)
NuoDB SSP Procedimientos almacenados por Starkey
Oracle PL/SQL Lenguaje procesal/SQL (basado en Ada)
PostgreSQL PL/pgSQL Lenguaje de procedimiento/PostgreSQL Idioma de consulta estructurado (basado en PL/SQL reducido)
SAP R/3 ABAP Programación avanzada de aplicaciones empresariales
SAP HANA SQLScript SQLScript
Sybase Watcom-SQL SQL Anywhere Watcom-SQL Dialect
Teradata SPL Idioma procesal almacenado

Además de las extensiones SQL/PSM estándar y las extensiones SQL propietarias, la programación orientada a objetos y de procedimientos está disponible en muchas plataformas SQL a través de la integración de DBMS con otros lenguajes. El estándar SQL define extensiones SQL/JRT (rutinas y tipos SQL para el lenguaje de programación Java) para admitir código Java en bases de datos SQL. Microsoft SQL Server 2005 usa SQLCLR (SQL Server Common Language Runtime) para hospedar ensamblados.NET administrados en la base de datos, mientras que las versiones anteriores de SQL Server estaban restringidas a procedimientos almacenados extendidos no administrados escritos principalmente en C. PostgreSQL permite a los usuarios escribir funciones en una amplia variedad de lenguajes, incluidos Perl, Python, Tcl, JavaScript (PL/V8) y C.

Interoperabilidad y estandarización

Resumen

Las implementaciones de SQL son incompatibles entre proveedores y no necesariamente siguen completamente los estándares. En particular, la sintaxis de fecha y hora, la concatenación de cadenas, NULLs y la distinción entre mayúsculas y minúsculas varían de un proveedor a otro. PostgreSQL y Mimer SQL se esfuerzan por cumplir con los estándares, aunque PostgreSQL no se adhiere al estándar en todos los casos. Por ejemplo, el doblado de nombres sin comillas a minúsculas en PostgreSQL es incompatible con el estándar SQL, que dice que los nombres sin comillas deben doblarse a mayúsculas. Por lo tanto, Foo debería ser equivalente a FOO y no a foo según el estándar.

Las implementaciones populares de SQL suelen omitir la compatibilidad con las funciones básicas de SQL estándar, como los tipos de datos DATE o TIME. Los ejemplos más obvios y, por cierto, los DBMS comerciales y patentados de SQL más populares son Oracle (cuyo DATE se comporta como DATETIME y carece de TIME tipo) y MS SQL Server (antes de la versión 2008). Como resultado, el código SQL rara vez se puede transferir entre sistemas de bases de datos sin modificaciones.

Razones de incompatibilidad

Varias razones de la falta de portabilidad entre sistemas de bases de datos incluyen:

Historial de estandarización

SQL fue adoptado como estándar por ANSI en 1986 como SQL-86 e ISO en 1987. Lo mantiene ISO/IEC JTC 1, Tecnología de la información, Subcomité SC 32, Gestión e intercambio de datos.

Hasta 1996, el programa de estándares de administración de datos del Instituto Nacional de Estándares y Tecnología (NIST) certificaba el cumplimiento de SQL DBMS con el estándar SQL. Los proveedores ahora autocertifican el cumplimiento de sus productos.

El estándar original declaraba que la pronunciación oficial de "SQL" era una sigla: ("ess cue el"). Independientemente, muchos profesionales de bases de datos de habla inglesa (incluido el propio Donald Chamberlin) usan la pronunciación similar a un acrónimo de ("sequel"), reflejando el nombre de desarrollo preliminar del idioma, "SEQUEL".
El estándar SQL ha pasado por varias revisiones:

Año Nombre Alias Comentarios
1986 SQL-86 SQL-87 Primera formalización de ANSI
1989 SQL-89 FIPS 127-1 Revisión menor que añadió restricciones de integridad adoptadas como FIPS 127-1
1992 SQL-92 SQL2, FIPS 127-2 Revisión principal (ISO 9075), Nivel de entrada SQL-92 adoptado como FIPS 127-2
1999 SQL:1999 SQL3 Añadida expresión regular coincidente, consultas recursivas (por ejemplo, cierre transitivo), dispara, soporte para declaraciones de procedimiento y control de flujo, tipos no escalares (arrays), y algunas características orientadas al objeto (por ejemplo, tipos estructurados), soporte para incrustar SQL en Java (SQL/OLB) y viceversa (SQL/JRT)
2003 SQL:2003 Características introducidas relacionadas con XML (SQL/XML), funciones de ventana, secuencias estandarizadas y columnas con valores autogenerados (incluyendo columnas de identidad)
2006 SQL:2006 ISO/IEC 9075-14:2006 define formas que SQL puede usarse con XML. Define formas de importar y almacenar datos XML en una base de datos SQL, manipularlo dentro de la base de datos y publicar datos SQL tanto XML como convencionales en formato XML. Además, permite que las aplicaciones integren las consultas en su código SQL con XQuery, el XML Query Language publicado por el World Wide Web Consortium (W3C), para acceder simultáneamente a documentos SQL-data y XML ordinarios.
2008 SQL:2008 Legaliza ORDER BY outside cursor definitions. Añade INSTEAD OF triggers, TRUNCATE statement, FETCH clause
2011 SQL:2011 Añade datos temporales (PERIOD FOR) (más información en la base de datos Temporal#History). Mejoras para funciones de ventana y cláusula FETCH.
2016 SQL:2016 Agrega el patrón de hilera, funciones de mesa polimorfo, JSON
2019 SQL:2019 Añade la Parte 15, arrays multidimensionales (tipo de rayosMD y operadores)

Estándar actual

La norma suele indicarse con el patrón: ISO/IEC DIS 9075-n:yyyy Parte n: título o, como abreviatura, ISO/IEC 9075 (El término 'DIS' no se usa en versiones anteriores). Las partes interesadas pueden adquirir los documentos de normas de ISO, IEC o ANSI. Algunos borradores antiguos están disponibles gratuitamente.

ISO/IEC 9075 se complementa con ISO/IEC 13249: SQL Multimedia and Application Packages y algunos informes técnicos.

Anatomía del estándar SQL

El estándar SQL se divide en 10 partes, pero con lagunas en la numeración debido a la retirada de partes obsoletas.

  • ISO/IEC 9075-1:2016 Parte 1: Marco (SQL/Framework). Proporciona conceptos lógicos.
  • ISO/IEC 9075-2:2016 Parte 2: Foundation (SQL/Fundación). Contiene los elementos más centrales del idioma y consta de ambos obligatorio y opcional características.
  • ISO/IEC 9075-3:2016 Parte 3: Interfaz de nivel de llamada (SQL/CLI). Define los componentes interfacing (estructuras, procedimientos, fijaciones variables) que pueden utilizarse para ejecutar las declaraciones SQL de aplicaciones escritas en Ada, C++, COBOL, Fortran, MUMPS, Pascal o PL/I. (Para Java ver la parte 10.) SQL/CLI se define de tal manera que las declaraciones SQL y las llamadas de procedimiento SQL/CLI se tratan como separadas del código fuente de la aplicación de llamada. Open Database Connectivity es un conocido superset de SQL/CLI. Esta parte del estándar consiste únicamente en obligatorio características.
  • ISO/IEC 9075-4:2016 Parte 4: Módulos almacenados persistentes (SQL/PSM). Estándariza extensiones de procedimiento para SQL, incluyendo flujo de control, manejo de condiciones, señales de estado de estados y resignaciones, cursores y variables locales, y asignación de expresiones a variables y parámetros. Además, SQL/PSM formaliza la declaración y mantenimiento de rutinas de lenguaje de bases de datos persistentes (por ejemplo, "procedimientos almacenados"). Esta parte del estándar consiste únicamente en opcional características.
  • ISO/IEC 9075-9:2016 Parte 9: Gestión de los datos externos (SQL/MED). Proporciona extensiones a SQL que definen envoltorios de datos extranjeros y tipos de enlace de datos para permitir a SQL gestionar datos externos. Los datos externos son datos que son accesibles, pero no gestionados por, un DBMS basado en SQL. Esta parte del estándar consiste únicamente en opcional características.
  • ISO/IEC 9075-10:2016 Parte 10: Objeción de enlaces de idiomas (SQL/OLB). Define la sintaxis y semántica de SQLJ, que es SQL incrustado en Java (ver también la parte 3). El estándar también describe mecanismos para garantizar la portabilidad binaria de aplicaciones SQLJ y especifica varios paquetes Java y sus clases contenidas. Esta parte del estándar consiste únicamente en opcional características. A diferencia de SQL/OLB JDBC define una API y no es parte del estándar SQL.
  • ISO/IEC 9075-11:2016 Parte 11: Información y esquemas de definición (SQL/Schemata). Define el esquema de información y el esquema de definición, proporcionando un conjunto común de herramientas para hacer que las bases de datos SQL y los objetos se autodescriban. Estas herramientas incluyen el identificador de objetos SQL, limitaciones de estructura e integridad, especificaciones de seguridad y autorización, características y paquetes de ISO/IEC 9075, soporte de características proporcionadas por implementaciones DBMS basadas en SQL, información de implementación de DBMS basada en SQL y elementos de tamaño, y los valores apoyados por las implementaciones DBMS. Esta parte del estándar contiene ambos obligatorio y opcional características.
  • ISO/IEC 9075-13:2016 Parte 13: SQL Routines y tipos usando el lenguaje de programación Java TM (SQL/JRT). Especifica la capacidad de invocar métodos Java estáticos como rutinas desde aplicaciones SQL ('Java-in-the-database'). También requiere la capacidad de utilizar clases Java como tipos estructurados SQL definidos por el usuario. Esta parte del estándar consiste únicamente en opcional características.
  • ISO/IEC 9075-14:2016 Parte 14: Especificaciones relacionadas con XML (SQL/XML). Especifica extensiones basadas en SQL para usar XML en conjunto con SQL. El XML se introduce el tipo de datos, así como varias rutinas, funciones y asignaciones de tipo de datos XML-to-SQL para apoyar la manipulación y el almacenamiento de XML en una base de datos SQL. Esta parte del estándar consiste únicamente en opcional características.
  • ISO/IEC 9075-15:2019 Parte 15: arrays multidimensionales (SQL/MDA). Especifica un tipo de array multidimensional (MDarray) para SQL, junto con operaciones en MDarrays, rebanadas de MDarray, células MDarray y características relacionadas. Esta parte del estándar consiste únicamente en opcional características.

Extensiones del estándar SQL

ISO/IEC 9075 se complementa con ISO/IEC 13249 Paquetes de aplicaciones y multimedia SQL. Este estándar estrechamente relacionado pero separado es desarrollado por el mismo comité. Define interfaces y paquetes basados en SQL. El objetivo es el acceso unificado a aplicaciones típicas de bases de datos como texto, imágenes, extracción de datos o datos espaciales.

  • ISO/IEC 13249-1:2016 Parte 1: Marco
  • ISO/IEC 13249-2:2003 Parte 2: Full-Text
  • ISO/IEC 13249-3:2016 Parte 3: Espacial
  • ISO/IEC 13249-5:2003 Parte 5: Imagen continua
  • ISO/IEC 13249-6:2006 Parte 6: Minería de datos
  • ISO/IEC 13249-7:2013 Parte 7: Historia
  • ISO/IEC 13249-8:xxxx Parte 8: Acceso al Registro de Metadatos MRA (trabajo en curso)

Informes técnicos

ISO/IEC 9075 también va acompañado de una serie de Informes técnicos, publicados como ISO/IEC TR 19075. Estos Informes técnicos explican la justificación y el uso de algunas características de SQL y brindan ejemplos cuando corresponde. Los Informes Técnicos no son normativos; si hay alguna discrepancia con 9075, se mantiene el texto en 9075. Los informes técnicos 19075 actualmente disponibles son:

  • ISO/IEC TR 19075-1:2011 Parte 1: XQuery Soporte de Expresión Ordinaria en SQL
  • ISO/IEC TR 19075-2:2015 Parte 2: SQL Support for Time-Related Information
  • ISO/IEC TR 19075-3:2015 Parte 3: SQL Embedded in Programs using the Java programming language
  • ISO/IEC TR 19075-4:2015 Parte 4: SQL con rutinas y tipos usando el lenguaje de programación Java
  • ISO/IEC TR 19075-5:2016 Parte 5: Reconocimiento del patrón de fila en SQL
  • ISO/IEC TR 19075-6:2017 Parte 6: Soporte SQL para notación de objetos JavaScript (JSON)
  • ISO/IEC TR 19075-7:2017 Parte 7: Funciones de tabla polimorfo en SQL
  • ISO/IEC TR 19075-8:2019 Parte 8: Arrayos multidimensionales (SQL/MDA)
  • ISO/IEC TR 19075-9:2020 Parte 9: Capacidades de procesamiento analítico en línea (OLAP)

Alternativas

Debe hacerse una distinción entre las alternativas a SQL como lenguaje y las alternativas al modelo relacional en sí. A continuación se proponen alternativas relacionales al lenguaje SQL. Consulte la base de datos de navegación y NoSQL para obtener alternativas al modelo relacional.

  • .QL: Datalog orientado a objetos
  • 4D Lenguaje de consulta (4D QL)
  • Datalog: los críticos sugieren que Datalog tiene dos ventajas sobre SQL: tiene semántica más limpia, que facilita la comprensión y el mantenimiento del programa, y es más expresiva, en particular para las consultas recursivas.
  • HTSQL: método de consulta basado en URL
  • IBM Business System 12 (IBM BS12): uno de los primeros sistemas de gestión de bases de datos totalmente relacionales, introducidos en 1982
  • ISBL
  • jOOQ: SQL implementado en Java como lenguaje interno específico
  • Java Persistence Query Language (JPQL): El lenguaje de consulta utilizado por la API de Persistencia de Java y la biblioteca de persistencia de Hibernate
  • JavaScript: MongoDB implementa su lenguaje de consulta en una API de JavaScript.
  • LINQ: Ejecute las declaraciones SQL escritas como construcciones de lenguaje a colecciones de consulta directamente desde dentro. Código neto
  • Object Query Language
  • QBE (Pregunta por ejemplo) creada por Moshè Zloof, IBM 1977
  • QUEL introducido en 1974 por el proyecto U.C. Berkeley Ingres, más cerca del cálculo relacional tuple que SQL
  • XQuery

Procesamiento de SQL distribuido

La arquitectura de base de datos relacional distribuida (DRDA) fue diseñada por un grupo de trabajo dentro de IBM entre 1988 y 1994. DRDA permite que las bases de datos relacionales conectadas a la red cooperen para cumplir con las solicitudes de SQL.

Un usuario o programa interactivo puede emitir sentencias SQL a una RDB local y recibir tablas de datos e indicadores de estado en respuesta desde RDB remotas. Las declaraciones SQL también se pueden compilar y almacenar en RDB remotos como paquetes y luego invocarse por nombre de paquete. Esto es importante para el funcionamiento eficiente de los programas de aplicación que emiten consultas complejas de alta frecuencia. Es especialmente importante cuando las tablas a las que se accede se encuentran en sistemas remotos.

Los mensajes, protocolos y componentes estructurales de DRDA están definidos por la arquitectura de administración de datos distribuidos. El procesamiento SQL distribuido ala DRDA se distingue de las bases de datos SQL distribuidas contemporáneas.

Críticas

Diseño

SQL se desvía de varias maneras de su fundamento teórico, el modelo relacional y su cálculo de tuplas. En ese modelo, una tabla es un conjunto de tuplas, mientras que en SQL, las tablas y los resultados de las consultas son listas de filas; la misma fila puede aparecer varias veces, y el orden de las filas se puede emplear en las consultas (por ejemplo, en la cláusula LIMIT). Los críticos argumentan que SQL debería ser reemplazado por un lenguaje que regrese estrictamente a la base original: por ejemplo, vea El Tercer Manifiesto.

Ortogonalidad y completitud

Las primeras especificaciones no admitían funciones importantes, como claves principales. No se pudieron nombrar los conjuntos de resultados y no se definieron las subconsultas. Estos se agregaron en 1992.

La falta de tipos de suma se ha descrito como un obstáculo para el uso completo de los tipos definidos por el usuario de SQL. La compatibilidad con JSON, por ejemplo, debía agregarse mediante un nuevo estándar en 2016.

Nulo

El concepto de Nulo es objeto de algunos debates. El marcador Nulo indica la ausencia de un valor y es distinto de un valor de 0 para una columna de enteros o una cadena vacía para una columna de texto. El concepto de Nulls aplica la lógica de 3 valores en SQL, que es una implementación concreta de la lógica general de 3 valores.

Duplicados

Otra crítica popular es que permite filas duplicadas, lo que dificulta la integración con lenguajes como Python, cuyos tipos de datos pueden dificultar la representación precisa de los datos, en términos de análisis y por la ausencia de modularidad. Esto generalmente se evita declarando una clave principal, o una restricción única, con una o más columnas que identifican de forma única una fila en la tabla.

Desajuste de impedancia

En un sentido similar al desajuste de impedancia objeto-relacional, se produce un desajuste entre el lenguaje SQL declarativo y los lenguajes de procedimiento en los que SQL suele estar incrustado.

Tipos de datos SQL

El estándar SQL define tres tipos de tipos de datos:

  • tipos de datos predefinidos
  • tipos construidos
  • tipos definidos por el usuario.

Los tipos construidos son ARRAY, MULTISET, REF(erence) o ROW. Los tipos definidos por el usuario son comparables a las clases en lenguaje orientado a objetos con sus propios constructores, observadores, mutadores, métodos, herencia, sobrecarga, sobreescritura, interfaces, etc. Los tipos de datos predefinidos son intrínsecamente compatibles con la implementación.

Tipos de datos predefinidos

  • Tipos de caracteres
  • Carácter (CHAR)
  • Características variables (VARCHAR)
  • Objeto grande de carácter (CLOB)
  • Tipos de carácter nacional
  • National character (NCHAR)
  • Caracter nacional variable (NCHAR VARYING)
  • Objeto grande de carácter nacional (NCLOB)
  • Tipos binarios
  • Binario (BINARIO)
  • Variación binaria (VARBINARIO)
  • Objeto grande binario (BLOB)
  • Tipos numéricos
  • Tipos numéricos exactos (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
  • Tipos numéricos aproximados (FLOAT, REAL, PRECISIÓN DOBLE)
  • Tipo de punto flotante decimal (DECFLOAT)
  • Tipos de fecha (Fecha, TIEMPO, TIEMPO)
  • Tipo de intervención (INTERVAL)
  • Boolean
  • XML
  • JSON