De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

SQL ( / ˌ ɛ s ˌ k Ju ɛ l / ( escuchar )Sobre este sonido SQL , [4] / s i k w əl / "secuela"; Structured Query Language ) [5] es un lenguaje específico del dominio utilizado en la programación y diseñado para administrar los 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 manejodatos 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 llegar a un registro, por ejemplo, con o sin índice .

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

SQL fue uno de los primeros lenguajes comerciales a utilizar Edgar F. Codd ‘s modelo relacional . El modelo fue descrito en su influyente artículo de 1970, "Un modelo relacional de datos para grandes bancos de datos compartidos". [8] 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. [9] [10]

SQL se convirtió en un estándar del American National Standards Institute (ANSI) en 1986 y de la Organización Internacional de Normalización (ISO) en 1987. [11] Desde entonces, el estándar ha sido 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 trasladado a diferentes sistemas de bases de datos .

Historia [ editar ]

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

El primer intento de Chamberlin y Boyce en un lenguaje de base de datos relacional fue Square, pero fue difícil de usar debido a la notación de subíndices. Después de mudarse al Laboratorio de Investigación de San José en 1973, comenzaron a trabajar en SEQUEL. [12] El acrónimo SEQUEL se cambió más tarde a SQL porque "SEQUEL" era una marca comercial de la empresa Hawker Siddeley Dynamics Engineering Limited, con sede en el Reino Unido . [14]

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 y DB2 , que estaban disponibles comercialmente en 1979, 1981, y 1983, respectivamente. [15]

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. , Central Intelligence Agencia y otras agencias gubernamentales de EE . UU . En junio de 1979, Relational Software introdujo la primera implementación de SQL disponible comercialmente, Oracle V2 (Version2) para computadoras VAX .

En 1986, los grupos de normas ANSI e ISO adoptaron oficialmente la definición de lenguaje estándar "Lenguaje de base de datos SQL". Se publicaron nuevas versiones de la norma en 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011, [12] y, más recientemente, 2016. [16]

Sintaxis [ editar ]

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 de lenguaje, que incluyen:

  • Cláusulas , que son componentes constitutivos de declaraciones y consultas. (En algunos casos, son opcionales). [17]
  • Expresiones , que pueden producir valores escalares o tablas que constan de columnas y filas de datos
  • Predicados , que especifican condiciones que se pueden evaluar con lógica de tres valores de SQL (3VL) (verdadero / falso / desconocido) o valores de verdad booleanos y se utilizan para limitar los efectos de declaraciones y consultas, o para cambiar el flujo del programa.
  • Consultas , que recuperan los datos en base a criterios específicos. Este es un elemento importante de SQL .
  • Declaraciones , que pueden tener un efecto persistente sobre esquemas y datos, o pueden controlar transacciones , flujo de programa, conexiones, sesiones o diagnósticos.
    • Las sentencias SQL también incluyen el terminador de sentencias con punto y coma (";"). Aunque no es obligatorio en todas las plataformas, se define como una parte estándar de la gramática SQL.
  • Los espacios en blanco insignificantes generalmente se ignoran en las declaraciones y consultas de SQL, lo que facilita el formateo del código SQL para su legibilidad.

Extensiones de procedimiento [ editar ]

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 funcionalidad de lenguaje de programación de procedimientos , como construcciones de control de flujo. Éstas incluyen:

Además de las extensiones SQL / PSM estándar y las extensiones SQL patentadas, la capacidad de programación orientada a objetos y de procedimiento está disponible en muchas plataformas SQL a través de la integración 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 utiliza SQLCLR (SQL Server Common Language Runtime) para alojar 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.PostgreSQLpermite a los usuarios escribir funciones en una amplia variedad de lenguajes, incluidos Perl , Python , Tcl , JavaScript (PL / V8) y C. [21]

Interoperabilidad y estandarización [ editar ]

Resumen [ editar ]

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 de comparación varían de un proveedor a otro. Las excepciones particulares son PostgreSQL [22] y Mimer SQL [23] que se esfuerzan por cumplir con los estándares, aunque PostgreSQL no se adhiere al estándar en cómo se realiza el plegado de nombres sin comillas. El plegado de nombres sin comillas a minúsculas en PostgreSQL es incompatible con el estándar SQL, [24] que dice que los nombres sin comillas deben plegarse a mayúsculas. [25] Por lo tanto, Foodebería ser equivalente a FOOnofoo según el estándar.

Las implementaciones populares de SQL comúnmente omiten el soporte para características básicas de SQL estándar, como los tipos de datos DATEo TIME. Los ejemplos más obvios de este tipo, y por cierto los DBMS SQL comerciales y propietarios más populares, son Oracle (cuyo DATEcomportamiento es DATETIME, [26] [27] y carece de un TIMEtipo) [28] y MS SQL Server (antes de la versión 2008). Como resultado, el código SQL rara vez se puede migrar entre sistemas de bases de datos sin modificaciones.

Razones de la incompatibilidad [ editar ]

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

  • La complejidad y el tamaño del estándar SQL significa que la mayoría de los implementadores no admiten el estándar completo.
  • El estándar no especifica el comportamiento de la base de datos en varias áreas importantes (por ejemplo , índices , almacenamiento de archivos ...), dejando que las implementaciones decidan cómo comportarse.
  • El estándar SQL especifica con precisión la sintaxis que debe implementar un sistema de base de datos conforme. Sin embargo, la especificación del estándar de la semántica de las construcciones del lenguaje está menos definida, lo que genera ambigüedad.
  • Muchos proveedores de bases de datos tienen una gran base de clientes existente; cuando la versión más reciente del estándar SQL entra en conflicto con el comportamiento anterior de la base de datos del proveedor, es posible que el proveedor no esté dispuesto a romper la compatibilidad con versiones anteriores .
  • Existen pocos incentivos comerciales para que los proveedores faciliten el cambio de proveedores de bases de datos (consulte el bloqueo de proveedores ).
  • Los usuarios que evalúan el software de bases de datos tienden a colocar otros factores, como el rendimiento, entre sus prioridades más altas que la conformidad con los estándares.

Historial de estandarización [ editar ]

SQL fue adoptado como estándar por la ANSI en 1986 como SQL-86 [29] y la ISO en 1987. [11] Es mantenido por 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 gestió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. [30]

La norma original declaró que la pronunciación oficial de "SQL" era una sigla : / ˌ ɛ s ˌ k Ju ɛ l / ( "cue ess EL"). [9] En cualquier caso, muchos profesionales de la base de datos de habla Inglés (incluido el propio Donald Chamberlin [31] ) utiliza el acrónimo -como pronunciación de / s i k w əl / ( "secuela"), [32] reflejo nombre de desarrollo preliminar de la lengua , "CONTINUACIÓN". [13] [14] [31]
El estándar SQL ha pasado por una serie de revisiones:

Estándar actual [ editar ]

La norma se denota comúnmente por el patrón: ISO / IEC 9075-n: yyyy Parte n: título o, como atajo, ISO / IEC 9075 .

ISO / IEC 9075 se complementa con ISO / IEC 13249: Paquetes de aplicaciones y multimedia SQL (SQL / MM), que define interfaces y paquetes basados ​​en SQL para aplicaciones de amplia difusión, como video, audio y datos espaciales . Las partes interesadas pueden adquirir documentos de normas SQL de ISO, [37] IEC o ANSI. Un borrador de SQL: 2008 está disponible gratuitamente como archivo zip . [38]

Anatomía del estándar SQL [ editar ]

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

  • ISO / IEC 9075-1: 2016 Parte 1: Marco (SQL / Marco). Proporciona conceptos lógicos. [39]
  • ISO / IEC 9075-2: 2016 Parte 2: Fundación (SQL / Foundation). Contiene los elementos más centrales del idioma y consta de características obligatorias y opcionales .
  • ISO / IEC 9075-3: 2016 Parte 3: Interfaz de nivel de llamada ( SQL / CLI ). Define componentes de interfaz (estructuras, procedimientos, enlaces de variables) que se pueden utilizar para ejecutar sentencias SQL desde aplicaciones escritas en Ada, C respectivamente C ++, COBOL, Fortran, MUMPS, Pascal o PL / I. (Para Java, consulte la parte 10.) SQL / CLI se define de tal manera que las instrucciones SQL y las llamadas a procedimientos SQL / CLI se tratan como algo separado del código fuente de la aplicación que realiza la llamada. Open Database Connectivity es un superconjunto conocido de SQL / CLI. Esta parte del estándar consta únicamente de características obligatorias .
  • ISO / IEC 9075-4: 2016 Parte 4: Módulos almacenados persistentes ( SQL / PSM ). Estandariza las extensiones de procedimiento para SQL, incluido el flujo de control, el manejo de condiciones, señales de condición de declaraciones 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 el mantenimiento de rutinas de lenguaje de base de datos persistentes (por ejemplo, "procedimientos almacenados"). Esta parte del estándar consta únicamente de características opcionales .
  • ISO / IEC 9075-9: 2016 Parte 9: Gestión de datos externos ( SQL / MED ). Proporciona extensiones a SQL que definen envoltorios de datos externos y tipos de enlaces de datos para permitir que SQL administre datos externos. Los datos externos son datos a los que se puede acceder, pero no administrados por, un DBMS basado en SQL. Esta parte del estándar consta únicamente de características opcionales .
  • ISO / IEC 9075-10: 2016 Parte 10: Enlaces de lenguaje de objetos ( SQL / OLB ). Define la sintaxis y la semántica de SQLJ , que es SQL incrustado en Java (ver también la parte 3). El estándar también describe mecanismos para asegurar la portabilidad binaria de las aplicaciones SQLJ y especifica varios paquetes Java y sus clases contenidas. Esta parte del estándar consta únicamente de características opcionales . A diferencia de SQL / OLB, JDBC define una API y no forma parte del estándar SQL. [ cita requerida ]
  • ISO / IEC 9075-11: 2016 Parte 11: Esquemas de información y 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 objeto SQL, restricciones 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 DBMS basada en SQL y elementos de dimensionamiento, y la valores soportados por las implementaciones DBMS. [40] Esta parte de la norma contiene características obligatorias y opcionales .
  • ISO / IEC 9075-13: 2016 Parte 13: Rutinas y tipos de SQL que utilizan 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 definidos por el usuario estructurados en SQL. Esta parte del estándar consta únicamente de características opcionales .
  • ISO / IEC 9075-14: 2016 Parte 14: Especificaciones relacionadas con XML ( SQL / XML ). Especifica extensiones basadas en SQL para usar XML junto con SQL. Se introduce el tipo de datos XML , así como varias rutinas, funciones y asignaciones de tipos de datos XML a SQL para admitir la manipulación y el almacenamiento de XML en una base de datos SQL. [33] Esta parte de la norma consta únicamente de características opcionales . [ cita requerida ]
  • ISO / IEC 9075-15: 2019 Parte 15: Matrices multidimensionales (SQL / MDA). Especifica un tipo de matriz multidimensional (MDarray) para SQL, junto con operaciones en MDarrays, segmentos de MDarray, celdas de MDarray y características relacionadas. Esta parte del estándar consta únicamente de características opcionales .

Extensiones de la norma ISO / IEC [ editar ]

ISO / IEC 9075 se complementa con ISO / IEC 13249 Paquetes de aplicaciones y multimedia SQL . Esta norma estrechamente relacionada pero separada es desarrollada por el mismo comité. Define interfaces y paquetes basados ​​en SQL. El objetivo es un acceso unificado a aplicaciones típicas de bases de datos como texto, imágenes, minería de datos o datos espaciales .

  • ISO / IEC 13249-1: 2016 Parte 1: Marco
  • ISO / IEC 13249-2: 2003 Parte 2: Texto completo
  • ISO / IEC 13249-3: 2016 Parte 3: Espacial
  • ISO / IEC 13249-5: 2003 Parte 5: Imagen fija
  • 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: MRA de acceso al registro de metadatos (trabajo en curso)

Informes técnicos [ editar ]

ISO / IEC 9075 también va acompañada 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, dando ejemplos cuando sea apropiado. 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: Compatibilidad con expresiones regulares XQuery en SQL
  • ISO / IEC TR 19075-2: 2015 Parte 2: Soporte SQL para información relacionada con el tiempo
  • ISO / IEC TR 19075-3: 2015 Parte 3: SQL incrustado en programas que utilizan el lenguaje de programación Java
  • ISO / IEC TR 19075-4: 2015 Parte 4: SQL con rutinas y tipos que utilizan el lenguaje de programación Java
  • ISO / IEC TR 19075-5: 2016 Parte 5: Reconocimiento de patrones de filas en SQL
  • ISO / IEC TR 19075-6: 2017 Parte 6: Soporte SQL para la notación de objetos JavaScript (JSON)
  • ISO / IEC TR 19075-7: 2017 Parte 7: Funciones de tabla polimórfica en SQL
  • ISO / IEC TR 19075-8: 2019 Parte 8: Matrices multidimensionales (SQL / MDA)
  • ISO / IEC TR 19075-9: 2020 Parte 9: Capacidades de procesamiento analítico en línea (OLAP)

Alternativas [ editar ]

Se debe hacer una distinción entre alternativas a SQL como lenguaje y 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 conocer las alternativas al modelo relacional.

  • .QL : registro de datos orientado a objetos
  • Lenguaje de consulta 4D (4D QL)
  • Datalog : los críticos sugieren que Datalog tiene dos ventajas sobre SQL: tiene una semántica más limpia, lo que facilita la comprensión y el mantenimiento del programa, y ​​es más expresivo, en particular para consultas recursivas. [41]
  • 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 completamente relacionales, introducido en 1982
  • ISBL
  • jOOQ : SQL implementado en Java como un lenguaje interno específico del dominio
  • Lenguaje de consulta de persistencia de Java (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 : Ejecuta sentencias SQL escritas como construcciones de lenguaje para consultar colecciones directamente desde dentro del código .Net
  • Lenguaje de consulta de objetos
  • QBE ( Query By Example ) creado por Moshè Zloof, IBM 1977
  • QUEL introducido en 1974 por el proyecto UC Berkeley Ingres, más cercano al cálculo relacional de tuplas que SQL
  • Tutorial D
  • XQuery

Procesamiento de SQL distribuido [ editar ]

La Arquitectura de bases de datos relacionales distribuidas (DRDA) fue diseñada por un grupo de trabajo dentro de IBM desde 1988 hasta 1994. DRDA permite que las bases de datos relacionales conectadas a la red cooperen para cumplir con las solicitudes de SQL. [42] [43]

Un usuario o programa interactivo puede emitir sentencias SQL a una RDB local y recibir tablas de datos e indicadores de estado en respuesta de RDB remotas. Las sentencias SQL también pueden compilarse y almacenarse en RDB remotos como paquetes y luego invocarse por el nombre del 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 de SQL distribuido ala DRDA se distingue de las bases de datos SQL distribuidas contemporáneas .

Críticas [ editar ]

Diseño [ editar ]

SQL se desvía de varias formas 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 la consulta son listas de filas; la misma fila puede aparecer varias veces y el orden de las filas se puede emplear en 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 . Sin embargo, no existe ninguna prueba conocida de que tal unicidad no se pueda agregar al SQL mismo, [44] o al menos una variación de SQL. En otras palabras, es muy posible que SQL se pueda "arreglar" o al menos mejorar en este sentido, de modo que la industria no tenga que cambiar a un lenguaje de consulta completamente diferente para obtener unicidad. El debate sobre esto permanece abierto.

Otras críticas [ editar ]

Chamberlin analiza cuatro críticas históricas de SQL en un artículo de 2012: [12]

Ortogonalidad e integridad [ editar ]

Las primeras especificaciones no admitían funciones importantes, como claves primarias. No se pudieron nombrar los conjuntos de resultados y no se habían definido las subconsultas. Estos se agregaron en 1992. [12]

Nulo [ editar ]

El concepto de nulo es objeto de algunos debates . El marcador Null indica la ausencia de un valor y es distinto de un valor de 0 para una columna de número entero o una cadena vacía para una columna de texto. El concepto de nulos refuerza la lógica de 3 valores en SQL , que es una implementación concreta de la lógica general de 3 valores .

Duplicados [ editar ]

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, [12] en términos de análisis y por la ausencia de modularidad. [45]

Esto se puede evitar declarando una restricción única con uno o más campos que identifican de forma única una fila en la tabla. Esa restricción también podría convertirse en la clave principal de la tabla.

Discrepancia de impedancia [ editar ]

En un sentido similar al desajuste de impedancia relacional de objeto , 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 [ editar ]

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

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

Tipos de datos predefinidos [ editar ]

  • Tipos de caracteres
  • Carácter (CHAR)
  • Carácter variable (VARCHAR)
  • Objeto grande de carácter (CLOB)
  • Tipos de caracteres nacionales
  • Carácter nacional (NCHAR)
  • Carácter 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 (FLOTADOR, REAL, DOBLE PRECISIÓN)
  • Tipo de coma flotante decimal (DECFLOAT)
  • Tipos de fecha y hora (DATE, TIME, TIMESTAMP)
  • Tipo de intervalo (INTERVALO)
  • Booleano
  • XML
  • JSON

Tipos construidos [ editar ]

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, sobrescritura, interfaces, etc.

Ver también [ editar ]

  • Wikilibro SQL
  • Base de datos de objetos
  • Lista de sistemas de gestión de bases de datos relacionales
  • Comparación de sistemas de gestión de bases de datos relacionales
  • Comparación de sistemas de gestión de bases de datos relacionales de objetos
  • D (especificación del lenguaje de datos)
  • D4 (lenguaje de programación)
  • Consulta por ejemplo
  • Sintaxis SQL
  • Oracle PL / SQL
  • Microsoft Transact-SQL (T-SQL)
  • Procesamiento de transacciones en línea (OLTP)
  • Procesamiento analítico en línea (OLAP)
  • Almacén de datos
  • Sistema de gestión de flujo de datos relacionales
  • NoSQL
  • PAPERAS
  • Modelo jerárquico
  • Esquema de estrella
  • Esquema de copo de nieve

Notas [ editar ]

  1. ^ Formalmente, declaraciones de"datos SQL" excluyendo declaraciones de"cambio de datos SQL"; esta es principalmente ladeclaración Select .
  2. ^ Formalmente, declaraciones de "esquema SQL".
  3. ^ Formalmente, declaraciones de "cambio de datos SQL"

Referencias [ editar ]

  1. ^ Paul, Ryan. "Una visita guiada de Microsoft Command Shell" . Ars Technica . Consultado el 10 de abril de 2011 .
  2. ^ "Registro de tipo de medio para la aplicación / sql" . Autoridad de Números Asignados de Internet . 10 de abril de 2013 . Consultado el 10 de abril de 2013 .
  3. ^ "El tipo de medio de aplicación / sql, RFC 6922" . Grupo de trabajo de ingeniería de Internet . Abril de 2013. p. 3 . Consultado el 10 de abril de 2013 .
  4. ^ Beaulieu, Alan (abril de 2009). Mary E Treseler (ed.). Aprendiendo SQL (2ª ed.). Sebastopol, CA, EE.UU .: O'Reilly. ISBN 978-0-596-52083-0.
  5. Chamberlin, Donald D. (3 de octubre de 2001). "Entrevista de historia oral con Donald D. Chamberlin" . Consultado el 14 de enero de 2020 . Cambiamos el nombre original "SEQUEL" a SQL porque recibimos una carta del abogado de alguien que decía que el nombre "SEQUEL" les pertenecía. Lo reducimos a SQL, para Structured Query Language, y el producto se conocía como SQL / DS.
  6. ^ SQL-92 , 4.22 sentencias SQL, 4.22.1 Clases de sentencias SQL "Hay al menos cinco formas de clasificar sentencias SQL:", 4.22.2, sentencias SQL clasificadas por función "Las siguientes son las clases principales de Sentencias-SQL: "; SQL: 2003 4.11 sentencias SQL y revisiones posteriores.
  7. ^ Chatham, Mark (2012). Lenguaje de consulta estructurado por ejemplo - Volumen I: Lenguaje de consulta de datos . pag. 8 . ISBN 978-1-29119951-2.
  8. ^ Codd, Edgar F. (junio de 1970). "Un modelo relacional de datos para grandes bancos de datos compartidos". Comunicaciones de la ACM . 13 (6): 377–87. CiteSeerX 10.1.1.88.646 . doi : 10.1145 / 362384.362685 . S2CID 207549016 .  
  9. ^ a b Chapple, Mike. "Fundamentos de SQL" . Bases de datos . About.com . Consultado el 28 de enero de 2009 .
  10. ^ "Lenguaje de consulta estructurado (SQL)" . Máquinas de negocios internacionales. 27 de octubre de 2006 . Consultado el 10 de junio de 2007 .
  11. ^ a b "ISO 9075: 1987: tecnología de la información - lenguajes de base de datos - SQL - parte 1: marco (SQL / marco)" . 1987-06-01.
  12. ↑ a b c d e f Chamberlin, Donald (2012). "Historia temprana de SQL". IEEE Annals of the History of Computing . 34 (4): 78–82. doi : 10.1109 / MAHC.2012.61 . S2CID 1322572 . 
  13. ^ a b c Chamberlin, Donald D; Boyce, Raymond F (1974). "SEQUEL: A Structured English Query Language" (PDF) . Actas del Taller de 1974 ACM SIGFIDET sobre descripción, acceso y control de datos . Asociación de Maquinaria de Computación: 249–64. Archivado desde el original (PDF) el 26 de septiembre de 2007 . Consultado el 9 de junio de 2007 .
  14. ↑ a b Oppel, Andy (27 de febrero de 2004). Bases de datos desmitificadas . San Francisco, CA : McGraw-Hill Osborne Media. págs. 90-1. ISBN 978-0-07-146960-9.
  15. ^ "Historia de IBM, 1978" . Archivos de IBM . IBM . Consultado el 9 de junio de 2007 .
  16. ^ "ISO - ISO / IEC JTC 1 / SC 32 - Intercambio y gestión de datos" . www.iso.org . Consultado el 2 de enero de 2021 .
  17. ^ Norma internacional (IS) ANSI / ISO / IEC. Lenguaje de base de datos SQL — Parte 2: Foundation (SQL / Foundation). 1999.
  18. ^ "IBM PureData System for Analytics, versión 7.0.3" .
  19. ^ "SQL procedimental innovador" .
  20. ^ "CREAR PROCEDIMIENTO" . KnowledgeBase de MariaDB . Consultado el 23 de abril de 2019 .
  21. ^ Contribuyentes de PostgreSQL (2011). "Programación del servidor PostgreSQL" . Documentación oficial de PostgreSQL 9.1 . postgresql.org . Consultado el 9 de marzo de 2012 .
  22. ^ Contribuyentes de PostgreSQL (2012). "Acerca de PostgreSQL" . Sitio web oficial de PostgreSQL 9.1 . Grupo de desarrollo global de PostgreSQL . Consultado el 9 de marzo de 2012 . PostgreSQL se enorgullece de cumplir con los estándares. Su implementación SQL se ajusta firmemente al estándar ANSI-SQL: 2008
  23. ^ "Mimer SQL, basado en estándares" . Sitio web oficial de Mimer SQL . Tecnología de la información Mimer. 2009.
  24. ^ "4.1. Estructura léxica" . Documentación de PostgreSQL . 2018.
  25. ^ "(Segundo borrador de revisión informal) ISO / IEC 9075: 1992, Lenguaje de base de datos SQL, Sección 5.2, regla de sintaxis 11" . 30 de julio de 1992.
  26. ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, ​​Hermann; Bellamkonda, Shrikanth (octubre de 2010) [1996]. "Elementos básicos de Oracle SQL: tipos de datos" . Referencia del lenguaje SQL de la base de datos Oracle 11g versión 2 (11.2) . Biblioteca de documentación de la base de datos Oracle. Redwood City, CA: Oracle EE.UU., Inc . Consultado el 29 de diciembre de 2010 . Para cada valor, Oracle almacena la siguiente información: siglo, año, mes, fecha, hora, minuto y segundoDATE
  27. ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, ​​Hermann; Bellamkonda, Shrikanth (octubre de 2010) [1996]. "Elementos básicos de Oracle SQL: tipos de datos" . Referencia del lenguaje SQL de la base de datos Oracle 11g versión 2 (11.2) . Biblioteca de documentación de la base de datos Oracle. Redwood City, CA: Oracle EE.UU., Inc . Consultado el 29 de diciembre de 2010 . Los tipos de datos de fecha y hora son ...DATE
  28. ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, ​​Hermann; Bellamkonda, Shrikanth (octubre de 2010) [1996]. "Elementos básicos de Oracle SQL: tipos de datos" . Referencia del lenguaje SQL de la base de datos Oracle 11g versión 2 (11.2) . Biblioteca de documentación de la base de datos Oracle. Redwood City, CA: Oracle EE.UU., Inc . Consultado el 29 de diciembre de 2010 . No defina columnas con los siguientes tipos de datos SQL / DS y DB2, porque no tienen el tipo de datos Oracle correspondiente: ...TIME
  29. ^ "Búsqueda de ayuda" . Registros X3H2, 1978–95 . Instituto Americano de Estándares Nacionales.
  30. ^ Doll, Shelley (19 de junio de 2002). "¿SQL ya es un estándar?" . Builder.com de TechRepublic . TechRepublic. Archivado desde el original el 5 de julio de 2012 . Consultado el 12 de abril de 2016 .
  31. ^ a b Gillespie, Patrick. "Pronunciación de SQL: SQL o Sequel?" . Consultado el 12 de febrero de 2012 .
  32. ^ Melton, Jim; Alan R. Simon (1993). "1.2. ¿Qué es SQL?" . Comprensión del nuevo SQL: una guía completa . Morgan Kaufmann. pag. 536 . ISBN 978-1-55860-245-8. SQL (pronunciado correctamente "ess cue ell", en lugar de la algo común "secuela") ...
  33. ↑ a b Wagner, Michael (2010). SQL / XML: 2006 - Evaluierung der Standardkonformität ausgewählter Datenbanksysteme . Diplomica Verlag. pag. 100. ISBN 978-3-8366-9609-8.
  34. ^ "SQL: 2008 ahora es un estándar internacional ISO aprobado" . Sybase. Julio de 2008. Archivado desde el original el 28 de junio de 2011.
  35. ^ Krishna Kulkarni, Jan-Eike Michels (septiembre de 2012). "Características temporales en SQL: 2011" (PDF) . Registro SIGMOD . 41 (3).
  36. ^ Fred Zemke (2012). "Novedades de SQL: 2011" (PDF) . Oracle Corporation.
  37. ^ "ISO / IEC 9075-2: 2016: tecnología de la información - lenguajes de base de datos - SQL - parte 2: Foundation (SQL / Foundation)" . Diciembre de 2016.
  38. ^ SQL: borrador de 2008 (zip) , Whitemarsh Information Systems Corporation
  39. ^ "ISO / IEC 9075-1: 2016: tecnología de la información - lenguajes de base de datos - SQL - parte 1: marco (SQL / marco)" .
  40. ^ ISO / IEC 9075-11: 2008: Esquemas de información y definición (SQL / Schemata)
  41. Fernando Saenz-Perez. "Combinaciones externas en un sistema de base de datos deductivo" (PDF) . Lbd.udc.es . Consultado el 16 de enero de 2017 .
  42. ^ Reinsch, R. (1988). "Base de datos distribuida para SAA". Revista de sistemas de IBM . 27 (3): 362–389. doi : 10.1147 / sj.273.0362 .
  43. ^ Referencia de arquitectura de base de datos relacional distribuida . IBM Corp. SC26-4651-0. 1990.
  44. ^ "Khan Academy | Cursos en línea gratuitos, lecciones y práctica" . Khan Academy . Consultado el 29 de mayo de 2020 .
  45. ^ Schauder, Jen. "Por qué SQL apesta" . Schauderhaft . Consultado el 3 de febrero de 2018 .

Fuentes [ editar ]

  • Codd, Edgar F (junio de 1970). "Un modelo relacional de datos para grandes bancos de datos compartidos" . Comunicaciones de la ACM . 13 (6): 377–87. doi : 10.1145 / 362384.362685 . S2CID  207549016 . Archivado desde el original el 12 de junio de 2007.
  • Discusión sobre supuestas fallas de SQL (C2 wiki)
  • CJ Date with Hugh Darwen : A Guide to the SQL standard: a user guide to the standard database language SQL, 4th ed. , Addison Wesley, EE. UU. 1997, ISBN 978-0-201-96426-4 

Documentos de estándares SQL [ editar ]

Estándares e informes técnicos de la ITTF disponibles públicamente [ editar ]

El Grupo de Trabajo de Tecnología de la Información ISO / IEC publica estándares disponibles públicamente, incluido SQL. Allí se publican las correcciones técnicas (correcciones) y los informes técnicos (documentos de discusión).

SQL - Parte 1: Marco (SQL / Marco)

Borradores de documentos [ editar ]

Los estándares SQL formales están disponibles en ISO y ANSI por una tarifa. Para uso informativo, en contraposición al estricto cumplimiento de normas, los borradores tardíos suelen ser suficientes.

  • SQL: borrador de 2011
  • Borrador SQL-92

Enlaces externos [ editar ]

  • 1995 SQL Reunion: People, Projects, and Politics , por Paul McJones (ed.) : Transcripción de una reunión de reunión dedicada a la historia personal de las bases de datos relacionales y SQL.
  • Instituto Americano de Estándares Nacionales. Registros X3H2, 1978–1995 La colección del Instituto Charles Babbage documenta el desarrollo del comité H2 de los estándares NDL y SQL.
  • Entrevista de historia oral con Donald D. Chamberlin Charles Babbage Institute En esta historia oral, Chamberlin relata su vida temprana, su educación en Harvey Mudd College y la Universidad de Stanford , y su trabajo en tecnología de bases de datos relacionales. Chamberlin fue miembro del equipo de investigación de System R y, con Raymond F. Boyce , desarrolló el lenguaje de base de datos SQL. Chamberlin también analiza brevemente su investigación más reciente sobre lenguajes de consulta XML.
  • Comparación de diferentes implementaciones de SQL Esta comparación de varias implementaciones de SQL pretende servir como una guía para aquellos interesados ​​en portar código SQL entre varios productos RDBMS, e incluye comparaciones entre SQL: 2008, PostgreSQL, DB2, MS SQL Server, MySQL, Oracle, e Informix.
  • Procesamiento de flujo de eventos con SQL : una introducción al procesamiento en tiempo real de datos de flujo con consultas SQL continuas
  • Gramática BNF para ISO / IEC 9075: 2003, parte 2 SQL / Framework