Sintaxis SQL

Conjunto de reglas que definen programas correctamente estructurados

La sintaxis del lenguaje de programación SQL está definida y mantenida por la norma ISO/IEC SC 32 como parte de la norma ISO/IEC 9075. Esta norma no está disponible de forma gratuita. A pesar de su existencia, el código SQL no es completamente portable entre diferentes sistemas de bases de datos sin realizar ajustes.

Elementos del lenguaje

PAG D A yo mi   do yo a s mi { PAG D A yo mi   do o norte a a y S mi yo   do yo a s mi { S mi yo   pag o pag yo a a i o norte =   pag o pag yo a a i o norte + 1 mi incógnita pag a mi s s i o norte Yo yo mi R mi   do yo a s mi { Yo yo mi R mi   norte a metro mi = " S A " mi incógnita pag a mi s s i o norte pag a mi d i do a a mi ; } declaración {\displaystyle \left.{\begin{array}{rl}\scriptstyle {\mathtt {UPDATE~cláusula}}&\{{\mathtt {UPDATE\ país}}\\\scriptstyle {\mathtt {SET~cláusula}}&\{{\mathtt {SET\ población=~}}\overbrace {\mathtt {población+1}} ^{\mathtt {expresión}}\\\scriptstyle {\mathtt {WHERE~cláusula}}&\{{\mathtt {WHERE\ \underbrace {{nombre=}\overbrace {'USA'} ^{expresión}} _{predicado};}}\end{array}}\right\}{\scriptstyle {\texttt {declaración}}}}
Un gráfico que muestra varios de los elementos del lenguaje SQL que componen una sola declaración. Esto suma uno a la población de los EE. UU. en la tabla de países.

El lenguaje SQL se subdivide en varios elementos de lenguaje, entre ellos:

  • Las palabras clave son palabras que se definen en el lenguaje SQL. Pueden estar reservadas (por ejemplo SELECT, COUNTy YEAR) o no (por ejemplo ASC, DOMAINy KEY). Lista de palabras reservadas de SQL .
  • Los identificadores son nombres en objetos de base de datos, como tablas , columnas y esquemas. Un identificador no puede ser igual a una palabra clave reservada, a menos que sea un identificador delimitado. Los identificadores delimitados son identificadores encerrados entre comillas dobles. Pueden contener caracteres que normalmente no son compatibles con los identificadores SQL y pueden ser idénticos a una palabra reservada, por ejemplo, una columna nombrada YEARse especifica como "YEAR".
    • En MySQL , las comillas dobles son delimitadores literales de cadena de forma predeterminada. Al habilitar el ansi_quotesmodo SQL, se aplica el comportamiento estándar de SQL. También se pueden usar independientemente de este modo mediante comillas simples invertidas: `YEAR`.
  • Cláusulas , que son componentes constitutivos de declaraciones y consultas. (En algunos casos, son opcionales). [1]
  • Expresiones , que pueden producir valores escalares o tablas que constan de columnas y filas de datos.
  • Predicados , que especifican condiciones que pueden evaluarse como lógica de tres valores (3VL) de SQL (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 datos según criterios específicos. Este es un elemento importante de SQL .
  • Declaraciones que pueden tener un efecto persistente sobre los esquemas y los datos, o pueden controlar transacciones , flujo de programas , conexiones, sesiones o diagnósticos.
    • Las sentencias SQL también incluyen el punto y coma (";") como finalizador de sentencia. 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 SQL, lo que facilita el formato del código SQL para facilitar su lectura.

Operadores

OperadorDescripciónEjemplo
=Igual aAuthor = 'Alcott'
<>No es igual a (muchos dialectos también lo aceptan !=)Dept <> 'Sales'
>Más queHire_Date > '2012-01-31'
<Menos queBonus < 50000.00
>=Mayor o igual queDependents >= 2
<=Menor o igual queRate <= 0.05
[NOT] BETWEEN [SYMMETRIC]Entre un rango inclusivo. SIMÉTRICO invierte los límites del rango si el primero es mayor que el segundo.Cost BETWEEN 100.00 AND 500.00
[NOT] LIKE [ESCAPE]Comienza con un patrón de carácter.Full_Name LIKE 'Will%'
Contiene un patrón de caracteres.Full_Name LIKE '%Will%'
[NOT] INIgual a uno de múltiples valores posiblesDeptCode IN (101, 103, 209)
ES [NO] NULOComparar con nulo (datos faltantes)Address IS NOT NULL
IS [NOT] TRUE o IS [NOT] FALSEPrueba de valor de verdad booleanoPaidVacation IS TRUE
NO ES DISTINTO DEEs igual al valor o ambos son nulos (datos faltantes)Debt IS NOT DISTINCT FROM - Receivables
ASSe utiliza para cambiar el nombre de una columna al ver los resultados.SELECT employee AS department1

En ocasiones se han sugerido o implementado otros operadores, como el operador skyline (para encontrar solo aquellas filas que no sean "peores" que otras).

SQL tiene la caseexpresión, que se introdujo en SQL-92 . En su forma más general, que se denomina "caso buscado" en el estándar SQL:

CASO CUANDO n > 0 ENTONCES 'positivo' CUANDO n < 0 ENTONCES 'negativo' DE LO CONTRARIO 'cero' FIN              

SQL prueba WHENlas condiciones en el orden en que aparecen en la fuente. Si la fuente no especifica una ELSEexpresión, SQL toma como valor predeterminado ELSE NULL. También se puede utilizar una sintaxis abreviada denominada "caso simple":

CASO n CUANDO 1 ENTONCES 'Uno' CUANDO 2 ENTONCES 'Dos' DE LO CONTRARIO 'No puedo contar tan alto' FIN           

Esta sintaxis utiliza comparaciones de igualdad implícita, con las advertencias habituales para la comparación con NULL .

Hay dos formas abreviadas para CASEexpresiones especiales: COALESCEy NULLIF.

La COALESCEexpresión devuelve el valor del primer operando no NULL, que se encuentra trabajando de izquierda a derecha, o NULL si todos los operandos son iguales a NULL.

COALESCE ( x1 , x2 )

es equivalente a:

CASO CUANDO x1 NO ES NULO ENTONCES x1 DE LO CONTRARIO x2 FIN         

La NULLIFexpresión tiene dos operandos y devuelve NULL si los operandos tienen el mismo valor; de lo contrario, tiene el valor del primer operando.

NULLIF ( x1 , x2 ) 

es equivalente a

CASO CUANDO x1 = x2 ENTONCES NULO DE LO CONTRARIO x1 FIN         

Comentarios

El SQL estándar permite dos formatos para los comentarios : -- comment, que finaliza con la primera nueva línea , y /* comment */, que puede abarcar varias líneas.

Consultas

La operación más común en SQL, la consulta, hace uso de la SELECTsentencia declarativa. SELECTrecupera datos de una o más tablas o expresiones. SELECTLas sentencias estándar no tienen efectos persistentes en la base de datos. Algunas implementaciones no estándar de SELECTpueden tener efectos persistentes, como la SELECT INTOsintaxis proporcionada en algunas bases de datos. [2]

Las consultas permiten al usuario describir los datos deseados, dejando que el sistema de gestión de bases de datos (DBMS) realice la planificación , la optimización y la ejecución de las operaciones físicas necesarias para producir ese resultado según lo elija.

Una consulta incluye una lista de columnas que se incluirán en el resultado final, normalmente inmediatamente después de la SELECTpalabra clave. *Se puede utilizar un asterisco (" ") para especificar que la consulta debe devolver todas las columnas de las tablas consultadas. SELECTes la sentencia más compleja de SQL, con palabras clave y cláusulas opcionales que incluyen:

  • La FROMcláusula que indica las tablas de las que se obtendrán datos. La FROMcláusula puede incluir subcláusulas opcionales JOINpara especificar las reglas para unir tablas.
  • La WHEREcláusula incluye un predicado de comparación que restringe las filas que devuelve la consulta. La WHEREcláusula elimina todas las filas del conjunto de resultados en las que el predicado de comparación no se evalúa como verdadero.
  • La GROUP BYcláusula proyecta filas que tienen valores comunes en un conjunto más pequeño de filas. [ Aclaración necesaria ] GROUP BY Se utiliza a menudo junto con funciones de agregación de SQL o para eliminar filas duplicadas de un conjunto de resultados. La WHEREcláusula se aplica antes de la GROUP BYcláusula.
  • La HAVINGcláusula incluye un predicado que se utiliza para filtrar las filas resultantes de la GROUP BYcláusula. Dado que actúa sobre los resultados de la GROUP BYcláusula, se pueden utilizar funciones de agregación en el HAVINGpredicado de la cláusula.
  • La ORDER BYcláusula identifica qué columna(s) se deben utilizar para ordenar los datos resultantes y en qué dirección hacerlo (ascendente o descendente). Sin una ORDER BYcláusula, el orden de las filas devueltas por una consulta SQL no está definido.
  • La DISTINCTpalabra clave [3] elimina datos duplicados. [4]
  • La OFFSETcláusula especifica el número de filas que se deben omitir antes de comenzar a devolver datos.
  • La FETCH FIRSTcláusula especifica el número de filas que se devolverán. Algunas bases de datos SQL tienen alternativas no estándar, por ejemplo LIMIT, TOPo ROWNUM.

Las cláusulas de una consulta tienen un orden de ejecución particular, [5] que se indica mediante el número del lado derecho. Es el siguiente:

SELECT <columns>5.
FROM <table>1.
WHERE <predicate on rows>2.
GROUP BY <columns>3.
HAVING <predicate on groups>4.
ORDER BY <columns>6.
OFFSET7.
FETCH FIRST8.

El siguiente ejemplo de SELECTconsulta devuelve una lista de libros caros. La consulta recupera todas las filas de la tabla Book en las que la columna price contiene un valor mayor que 100,00. El resultado se ordena en orden ascendente por título . El asterisco (*) en la lista de selección indica que todas las columnas de la tabla Book deben incluirse en el conjunto de resultados.

SELECCIONAR * DE Libro DONDE precio > 100 . 00 ORDENAR POR título ;          

El siguiente ejemplo demuestra una consulta de múltiples tablas, agrupación y agregación, devolviendo una lista de libros y la cantidad de autores asociados con cada libro.

SELECCIONAR Libro . título COMO Título , contar ( * ) COMO Autores DE Libro UNIR Libro_autor EN Libro . isbn = Libro_autor . isbn AGRUPAR POR Libro . título ;                 

El resultado de ejemplo podría parecerse al siguiente:

Título Autores---------------------- -------Ejemplos y guía de SQL 4La alegría de SQL 1Introducción a SQL 2Errores de SQL 1

Bajo la condición previa de que isbn sea el único nombre de columna común de las dos tablas y que una columna llamada título solo exista en la tabla Libro , se podría reescribir la consulta anterior en la siguiente forma:

SELECCIONAR título , contar ( * ) COMO Autores DE Libro NATURAL UNIRSE Libro_autor AGRUPAR POR título ;            

Sin embargo, muchos proveedores de [ cuantificación ] no admiten este enfoque o requieren ciertas convenciones de nombres de columnas para que las uniones naturales funcionen de manera efectiva.

SQL incluye operadores y funciones para calcular valores a partir de valores almacenados. SQL permite el uso de expresiones en la lista de selección para proyectar datos, como en el siguiente ejemplo, que devuelve una lista de libros que cuestan más de 100,00 con una columna sales_tax adicional que contiene una cifra de impuesto a las ventas calculada al 6 % del precio .

SELECCIONAR isbn , título , precio , precio * 0,06 COMO impuesto_venta DE Libro DONDE precio > 100,00 ORDENAR POR título ;                 

Subconsultas

Las consultas se pueden anidar de modo que los resultados de una consulta se puedan utilizar en otra consulta a través de un operador relacional o una función de agregación. Una consulta anidada también se conoce como subconsulta . Si bien las uniones y otras operaciones de tabla proporcionan alternativas computacionalmente superiores (es decir, más rápidas) en muchos casos, el uso de subconsultas introduce una jerarquía en la ejecución que puede ser útil o necesaria. En el siguiente ejemplo, la función de agregación AVGrecibe como entrada el resultado de una subconsulta:

SELECCIONAR isbn , título , precio DE Libro DONDE precio < ( SELECCIONAR AVG ( precio ) DE Libro ) ORDENAR POR título ;               

Una subconsulta puede utilizar valores de la consulta externa, en cuyo caso se conoce como subconsulta correlacionada .

Desde 1999, el estándar SQL permite WITHcláusulas para subconsultas, es decir, subconsultas con nombre, generalmente llamadas expresiones de tabla comunes (también llamadas factorización de subconsultas ). Las CTE también pueden ser recursivas haciendo referencia a sí mismas; el mecanismo resultante permite recorridos de árboles o gráficos (cuando se representan como relaciones) y, de manera más general, cálculos de puntos fijos .

Tabla derivada

Una tabla derivada es el uso de referenciar una subconsulta SQL en una cláusula FROM. Básicamente, la tabla derivada es una subconsulta de la que se puede seleccionar o unir. La funcionalidad de tabla derivada permite al usuario hacer referencia a la subconsulta como una tabla. A veces, la tabla derivada se denomina vista en línea o subselección .

En el siguiente ejemplo, la sentencia SQL implica una unión de la tabla inicial "Book" a la tabla derivada "sales". Esta tabla derivada captura la información de ventas de libros asociada utilizando el ISBN para unirse a la tabla "Book". Como resultado, la tabla derivada proporciona el conjunto de resultados con columnas adicionales (la cantidad de artículos vendidos y la empresa que vendió los libros):

SELECCIONAR b . isbn , b . título , b . precio , ventas . artículos_vendidos , ventas . empresa_nm DE Libro b UNIR ( SELECCIONAR SUMA ( Artículos_vendidos ) Artículos_vendidos , Empresa_Nm , ISBN DE Libro_Ventas AGRUPAR POR Empresa_Nm , ISBN ) ventas EN ventas . isbn = b . isbn                        

Lógica nula o de tres valores (3VL)

El concepto de Null permite a SQL tratar la información faltante en el modelo relacional. La palabra NULLes una palabra clave reservada en SQL, que se utiliza para identificar el marcador especial Null. Las comparaciones con Null, por ejemplo la igualdad (=) en las cláusulas WHERE, dan como resultado un valor de verdad Unknown. En las instrucciones SELECT, SQL devuelve solo los resultados para los que la cláusula WHERE devuelve un valor True; es decir, excluye los resultados con valores False y también excluye aquellos cuyo valor es Unknown.

Junto con Verdadero y Falso, el Desconocido resultante de comparaciones directas con Nulo trae así un fragmento de lógica de tres valores a SQL. Las tablas de verdad que SQL utiliza para AND, OR y NOT corresponden a un fragmento común de la lógica de tres valores de Kleene y Lukasiewicz (que difieren en su definición de implicación, sin embargo SQL no define tal operación). [6]

p y qpag
VerdaderoFALSODesconocido
qVerdaderoVerdaderoFALSODesconocido
FALSOFALSOFALSOFALSO
DesconocidoDesconocidoFALSODesconocido
p o qpag
VerdaderoFALSODesconocido
qVerdaderoVerdaderoVerdaderoVerdadero
FALSOVerdaderoFALSODesconocido
DesconocidoVerdaderoDesconocidoDesconocido
p = qpag
VerdaderoFALSODesconocido
qVerdaderoVerdaderoFALSODesconocido
FALSOFALSOVerdaderoDesconocido
DesconocidoDesconocidoDesconocidoDesconocido
qNO q
VerdaderoFALSO
FALSOVerdadero
DesconocidoDesconocido

Sin embargo, existen disputas sobre la interpretación semántica de los valores nulos en SQL debido a su tratamiento fuera de las comparaciones directas. Como se ve en la tabla anterior, las comparaciones de igualdad directa entre dos valores nulos en SQL (por ejemplo, NULL = NULL) devuelven un valor de verdad de Desconocido. Esto está en línea con la interpretación de que Null no tiene un valor (y no es miembro de ningún dominio de datos) sino que es más bien un marcador de posición o "marca" para la información faltante. Sin embargo, el principio de que dos valores nulos no son iguales entre sí se viola efectivamente en la especificación SQL para los operadores UNIONy INTERSECT, que identifican los valores nulos entre sí. [7] En consecuencia, estas operaciones de conjuntos en SQL pueden producir resultados que no representan información segura, a diferencia de las operaciones que involucran comparaciones explícitas con NULL (por ejemplo, las de una WHEREcláusula discutida anteriormente). En la propuesta de Codd de 1979 (que fue básicamente adoptada por SQL92) esta inconsistencia semántica se racionaliza argumentando que la eliminación de duplicados en las operaciones de conjuntos ocurre "en un nivel de detalle más bajo que las pruebas de igualdad en la evaluación de las operaciones de recuperación". [6] Sin embargo, el profesor de informática Ron van der Meyden concluyó que "las inconsistencias en el estándar SQL significan que no es posible atribuir ninguna semántica lógica intuitiva al tratamiento de los valores nulos en SQL". [7]

Además, debido a que los operadores SQL devuelven Unknown al comparar algo con Null directamente, SQL proporciona dos predicados de comparación específicos de Null: IS NULLy IS NOT NULLprueba si los datos son o no Null. [8] SQL no admite explícitamente la cuantificación universal y debe resolverla como una cuantificación existencial negada . [9] [10] [11] También existe el <row value expression> IS DISTINCT FROM <row value expression>operador de comparación infijo, que devuelve TRUE a menos que ambos operandos sean iguales o ambos sean NULL. Del mismo modo, IS NOT DISTINCT FROM se define como NOT (<row value expression> IS DISTINCT FROM <row value expression>). SQL:1999 también introdujo BOOLEANvariables de tipo, que según el estándar también pueden contener valores Unknown si es nulo. En la práctica, varios sistemas (por ejemplo, PostgreSQL ) implementan el BOOLEAN Unknown como un BOOLEAN NULL, que el estándar dice que NULL BOOLEAN y UNKNOWN "pueden usarse indistintamente para significar exactamente lo mismo". [12] [13]

Manipulación de datos

El lenguaje de manipulación de datos (DML) es el subconjunto de SQL utilizado para agregar, actualizar y eliminar datos:

  • INSERTagrega filas (formalmente tuplas ) a una tabla existente, por ejemplo:
INSERTAR EN ejemplo ( columna1 , columna2 , columna3 ) VALORES ( 'prueba' , 'N' , NULL );         
  • UPDATEmodifica un conjunto de filas de tabla existentes, por ejemplo:
Ejemplo de ACTUALIZACIÓN SET columna1 = 'valor actualizado' DONDE columna2 = 'N' ;         
  • DELETEelimina filas existentes de una tabla, por ejemplo:
ELIMINAR DE ejemplo DONDE columna2 = 'N' ;      
  • MERGESe utiliza para combinar los datos de varias tablas. Combina los elementos INSERTy UPDATE. Se define en el estándar SQL:2003; antes de eso, algunas bases de datos proporcionaban una funcionalidad similar a través de una sintaxis diferente, a veces llamada " upsert ".
 FUSIONAR EN nombre_tabla USANDO referencia_tabla ON ( condición ) CUANDO COINCIDE ENTONCES ACTUALIZAR ESTABLECER columna1 = valor1 [, columna2 = valor2 ...] CUANDO NO COINCIDE ENTONCES INSERTAR ( columna1 [, columna2 ...]) VALORES ( valor1 [, valor2 ...])                                 

Controles de transacciones

Las transacciones, si están disponibles, encapsulan las operaciones DML:

  • START TRANSACTION(o BEGIN WORK, o BEGIN TRANSACTION, dependiendo del dialecto SQL) marca el inicio de una transacción de base de datos , que se completa por completo o no se completa en absoluto.
  • SAVE TRANSACTION(o SAVEPOINT) guarda el estado de la base de datos en el punto actual de la transacción
CREAR TABLA tbl_1 ( id int ); INSERTAR EN tbl_1 ( id ) VALORES ( 1 ); INSERTAR EN tbl_1 ( id ) VALORES ( 2 ); CONFIRMACIÓN ; ACTUALIZAR tbl_1 ESTABLECER id = 200 DONDE id = 1 ; PUNTO DE GUARDADO id_1upd ; ACTUALIZAR tbl_1 ESTABLECER id = 1000 DONDE id = 2 ; RETROCEDER a id_1upd ; SELECCIONAR id de tbl_1 ;                              
  • COMMIThace que todos los cambios de datos en una transacción sean permanentes.
  • ROLLBACKDescarta todos los cambios de datos desde el último COMMITo ROLLBACK, y deja los datos como estaban antes de esos cambios. Una vez que COMMITse completa la instrucción, los cambios de la transacción no se pueden revertir.

COMMITy ROLLBACKterminar la transacción actual y liberar los bloqueos de datos. En ausencia de una START TRANSACTIONdeclaración o similar, la semántica de SQL depende de la implementación. El siguiente ejemplo muestra una clásica transacción de transferencia de fondos, donde se retira dinero de una cuenta y se agrega a otra. Si la eliminación o la adición fallan, se revierte toda la transacción.

INICIAR TRANSACCIÓN ; ACTUALIZAR Cuenta ESTABLECER monto = monto - 200 DONDE número_de_cuenta = 1234 ; ACTUALIZAR Cuenta ESTABLECER monto = monto + 200 DONDE número_de_cuenta = 2345 ;             SI ERRORES = 0 CONFIRMACIÓN ; SI ERRORES <> 0 RETROCESO ;    

Definición de datos

El lenguaje de definición de datos ( DDL) administra la estructura de tablas e índices. Los elementos más básicos del DDL son las instrucciones CREATE, ALTER, y :RENAMEDROPTRUNCATE

  • CREATEcrea un objeto (una tabla, por ejemplo) en la base de datos, por ejemplo:
Ejemplo CREAR TABLA ( columna1 ENTERO , columna2 VARCHAR ( 50 ), columna3 FECHA NO NULA , CLAVE PRIMARIA ( columna1 , columna2 ) );              
  • ALTERmodifica la estructura de un objeto existente de varias maneras, por ejemplo, agregando una columna a una tabla existente o una restricción, por ejemplo:
Ejemplo de ALTER TABLE ADD column4 INTEGER DEFAULT 25 NOT NULL ;         
  • TRUNCATEElimina todos los datos de una tabla de forma muy rápida, eliminando los datos dentro de la tabla y no la tabla en sí. Suele implicar una operación COMMIT posterior, es decir, no se puede revertir (los datos no se escriben en los registros para su posterior reversión, a diferencia de DELETE).
Ejemplo de TRUNCATE TABLE ;  
  • DROPelimina un objeto de la base de datos, generalmente de forma irrecuperable, es decir, no se puede revertir, por ejemplo:
Ejemplo de DROP TABLE ;  

Tipos de datos

Cada columna de una tabla SQL declara el tipo o los tipos que puede contener esa columna. ANSI SQL incluye los siguientes tipos de datos. [14]

Cadenas de caracteres y cadenas de caracteres nacionales
  • CHARACTER(n)(o ): cadena de n caracteres de ancho fijo , rellenada con espacios según sea necesarioCHAR(n)
  • CHARACTER VARYING(n)(o ): cadena de ancho variable con un tamaño máximo de n caracteresVARCHAR(n)
  • CHARACTER LARGE OBJECT(n [ K | M | G | T ])(o ): objeto grande de carácter con un tamaño máximo de n [ K | M | G | T ] caracteresCLOB(n [ K | M | G | T ])
  • NATIONAL CHARACTER(n)(o ): cadena de ancho fijo que admite un conjunto de caracteres internacionalesNCHAR(n)
  • NATIONAL CHARACTER VARYING(n)(o ): cadena de ancho variableNVARCHAR(n)NCHAR
  • NATIONAL CHARACTER LARGE OBJECT(n [ K | M | G | T ])(o ): objeto grande de carácter nacional con un tamaño máximo de n [ K | M | G | T ] caracteresNCLOB(n [ K | M | G | T ])

Para los tipos de datos CHARACTER LARGE OBJECTy , se pueden utilizar opcionalmente NATIONAL CHARACTER LARGE OBJECTlos multiplicadores K(1 024), M(1 048 576), G(1 073 741 824) y (1 099 511 627 776) al especificar la longitud.T

Binario
  • BINARY(n):Cadena binaria de longitud fija, longitud máxima n .
  • BINARY VARYING(n)(o ): Cadena binaria de longitud variable, longitud máxima n .VARBINARY(n)
  • BINARY LARGE OBJECT(n [ K | M | G | T ])(o ): objeto binario grande con una longitud máxima n [ K | M | G | T ] .BLOB(n [ K | M | G | T ])

Para el BINARY LARGE OBJECTtipo de datos, los multiplicadores K(1 024), M(1 048 576), G(1 073 741 824) y T(1 099 511 627 776) se pueden utilizar opcionalmente al especificar la longitud.

Booleano
  • BOOLEAN

El BOOLEANtipo de datos puede almacenar los valores TRUEy FALSE.

Numérico
  • INTEGER(o INT), SMALLINTyBIGINT
  • FLOAT, REALyDOUBLE PRECISION
  • NUMERIC(precision, scale)oDECIMAL(precision, scale)
  • DECFLOAT(precision)

Por ejemplo, el número 123,45 tiene una precisión de 5 y una escala de 2. La precisión es un entero positivo que determina la cantidad de dígitos significativos en una base particular (binaria o decimal). La escala es un entero no negativo. Una escala de 0 indica que el número es un entero. Para un número decimal con escala S, el valor numérico exacto es el valor entero de los dígitos significativos dividido por 10 S.

SQL proporciona las funciones CEILINGpara FLOORredondear valores numéricos. (Las funciones específicas de los proveedores más populares son TRUNC(Informix, DB2, PostgreSQL, Oracle y MySQL) y ROUND(Informix, SQLite, Sybase, Oracle, PostgreSQL, Microsoft SQL Server y Mimer SQL).)

Temporal (fecha y hora)
  • DATE:para valores de fecha (por ejemplo 2011-05-03).
  • TIME:para valores de tiempo (por ejemplo 15:51:36).
  • TIME WITH TIME ZONE:lo mismo que TIME, pero incluyendo detalles sobre la zona horaria en cuestión.
  • TIMESTAMP:Esto es a DATEy a TIMEpuestos juntos en una variable (por ejemplo 2011-05-03 15:51:36.123456).
  • TIMESTAMP WITH TIME ZONE:lo mismo que TIMESTAMP, pero incluyendo detalles sobre la zona horaria en cuestión.

La función SQL EXTRACTse puede utilizar para extraer un único campo (segundos, por ejemplo) de un valor de fecha y hora o de intervalo. La fecha y hora del sistema actual del servidor de base de datos se puede llamar mediante funciones como CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMEo . LOCALTIMESTAMP(Las funciones específicas de proveedores populares son TO_DATE, TO_TIME, TO_TIMESTAMP, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, y .)DAYOFYEARDAYOFMONTHDAYOFWEEK

Intervalo (fecha y hora)
  • YEAR(precision):un numero de años
  • YEAR(precision) TO MONTH:un número de años y meses
  • MONTH(precision):un número de meses
  • DAY(precision):un numero de dias
  • DAY(precision) TO HOUR:un número de días y horas
  • DAY(precision) TO MINUTE:un número de días, horas y minutos
  • DAY(precision) TO SECOND(scale):un número de días, horas, minutos y segundos
  • HOUR(precision):un número de horas
  • HOUR(precision) TO MINUTE:un número de horas y minutos
  • HOUR(precision) TO SECOND(scale):un número de horas, minutos y segundos
  • MINUTE(precision):un número de minutos
  • MINUTE(precision) TO SECOND(scale):un número de minutos y segundos

Control de datos

El lenguaje de control de datos (DCL) autoriza a los usuarios a acceder y manipular datos. Sus dos enunciados principales son:

  • GRANTautoriza a uno o más usuarios a realizar una operación o un conjunto de operaciones en un objeto.
  • REVOKEelimina una concesión, que puede ser la concesión predeterminada.

Ejemplo:

CONCEDER SELECCIONAR , ACTUALIZAR EN ejemplo A algún_usuario , otro_usuario ;       REVOCAR SELECCIONAR , ACTUALIZAR EN ejemplo DE algún_usuario , otro_usuario ;       

Notas

Referencias

  1. ^ Norma internacional ANSI/ISO/IEC (IS). Lenguaje de base de datos SQL, parte 2: Fundamentos (SQL/Foundation). 1999.
  2. ^ "Cláusula SELECT - INTO (Transact-SQL)". learn.microsoft.com . 2023-05-23 . Consultado el 2024-11-07 .
  3. ^ Guía del usuario de procedimientos SQL de SAS 9.4. SAS Institute. 2013. pág. 248. ISBN 9781612905686. Recuperado el 21 de octubre de 2015. Aunque el argumento UNIQUE es idéntico a DISTINCT, no es un estándar ANSI.
  4. ^ Leon, Alexis ; Leon, Mathews (1999). "Eliminación de duplicados: SELECT con DISTINCT". SQL: una referencia completa. Nueva Delhi: Tata McGraw-Hill Education (publicado en 2008). pág. 143. ISBN 9780074637081. Recuperado el 21 de octubre de 2015. [...] la palabra clave DISTINCT [...] elimina los duplicados del conjunto de resultados.
  5. ^ "¿Cuál es el orden de ejecución de una consulta SQL? - Designcise.com". www.designcise.com . 29 de junio de 2015 . Consultado el 4 de febrero de 2018 .
  6. ^ ab Hans-Joachim, K. (2003). "Valores nulos en bases de datos relacionales y respuestas seguras de información". Semántica en bases de datos. Segundo taller internacional en el castillo de Dagstuhl, Alemania, del 7 al 12 de enero de 2001. Artículos revisados. Lecture Notes in Computer Science. Vol. 2582. págs. 119–138. doi :10.1007/3-540-36596-6_7. ISBN 978-3-540-00957-3.
  7. ^ de Ron van der Meyden, "Enfoques lógicos para la información incompleta: una encuesta" en Chomicki, Jan; Saake, Gunter (Eds.) Lógica para bases de datos y sistemas de información, Kluwer Academic Publishers ISBN 978-0-7923-8129-7 , pág. 344 
  8. ^ ISO/IEC. ISO/IEC 9075-2:2003, "SQL/Foundation" . ISO/IEC.
  9. ^ Negri, M.; Pelagatti, G.; Sbattella, L. (febrero de 1989). "Semántica y problemas de cuantificación universal en SQL". The Computer Journal . 32 (1): 90–91. doi : 10.1093/comjnl/32.1.90 . Consultado el 7 de noviembre de 2024 .
  10. ^ Fratarcangeli, Claudio (1991). "Técnica de cuantificación universal en SQL". ACM SIGMOD Record . 20 (3): 16–24. doi :10.1145/126482.126484. S2CID  18326990 . Consultado el 7 de noviembre de 2024 .
  11. ^ Kawash, Jalal (2004) Cuantificación compleja en lenguaje de consulta estructurado (SQL): un tutorial que utiliza cálculo relacional; Journal of Computers in Mathematics and Science Teaching ISSN  0731-9258 Volumen 23, Número 2, 2004 AACE Norfolk, Virginia. Thefreelibrary.com
  12. ^ C. Date (2011). SQL y teoría relacional: cómo escribir código SQL preciso. O'Reilly Media, Inc., pág. 83. ISBN 978-1-4493-1640-2.
  13. ^ ISO/IEC 9075-2:2011 §4.5
  14. ^ "ISO/IEC 9075-1:2016: Tecnología de la información – Lenguajes de bases de datos – SQL – Parte 1: Marco (SQL/Framework)".
  • "Definición de gramática SQL", ISO_IEC_9075-2(E)_Foundation.bnf.xml ( XML del formato Backus–Naur ) , Portal de mantenimiento de normas ISO.
  • "Utilidad de formato SQL en línea", Utilidad de formateador SQL en línea.


Obtenido de "https://es.wikipedia.org/w/index.php?title=Sintaxis_SQL&oldid=1255924473#Expresiones_condicionales_(CASE)"