34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 U.D. 3. Lenguaje SQL para Examen Índice de contenido 1 Elementos básicos de SQL............................................................................................................2 1.1 Tipos de datos.......................................................................................................................2 1.1.1 Tipos BUILT-IN de Oracle............................................................................................2 1.2 Constantes.............................................................................................................................5 1.3 Modelo de Formatos.............................................................................................................5 1.4 Valores Nulos y no Nulos.....................................................................................................6 1.4.1 Valores Nulos en Funciones..........................................................................................7 1.4.2 Valores Nulos en Condiciones......................................................................................7 1.5 Operadores............................................................................................................................8 1.5.1 Operadores Aritméticos.................................................................................................8 1.5.2 Operador Concatenación || ............................................................................................8 1.5.3 Operadores que forman parte de las condiciones en SQL.............................................8 1.5.4 Operadores Lógicos.......................................................................................................9 1.5.5 Operadores de Conjunto................................................................................................9 1.6 Precedencia de operadores..................................................................................................10 2 LENGUAJE DE MANIPULACIÓN DE DATOS (DML).........................................................11 2.1 SENTENCIA SELECT.......................................................................................................11 2.1.1 Introducción.................................................................................................................11 2.1.2 Sintaxis de la sentencia SELECT:...............................................................................11 2.1.3 Cláusula DISTINCT....................................................................................................11 2.1.4 Selección de grupos.....................................................................................................11 2.1.5 ORDER BY.................................................................................................................12 2.2 SENTENCIA INSERT........................................................................................................12 2.3 SENTENCIA UPDATE......................................................................................................13 2.4 SENTENCIA DELETE.......................................................................................................14 3 LENGUAJE DE DEFINICIÓN DE DATOS (DDL)..................................................................16 3.1 Creación de una tabla..........................................................................................................16 3.2 Modificación de la estructura de una tabla..........................................................................19 3.3 Borrar una tabla...................................................................................................................21 3.4 Create sequence...................................................................................................................21 3.5 ALTER SEQUENCE .........................................................................................................22 3.6 DROP SEQUENCE............................................................................................................22 3.7 Sinónimos............................................................................................................................22 3.8 Borrar sinónimos.................................................................................................................23 3.9 Vistas...................................................................................................................................23 3.10 DROP VIEW ....................................................................................................................24 3.11 Creación de índices...........................................................................................................24 3.12 Borrar un índice.................................................................................................................25 3.13 RENAME..........................................................................................................................25 3.14 TRUNCATE.....................................................................................................................25 4 Funciones....................................................................................................................................25 4.0.1 ESCALARES (O DE FILA SIMPLE )........................................................................25 4.0.2 AGREGADAS O DE AGRUPACIÓN.......................................................................33 MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 1 de 34

Sgbd ud3 lenguaje_sql_para_examen

Embed Size (px)

Citation preview

Page 1: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

U.D. 3. Lenguaje SQL para Examen

Índice de contenido1 Elementos básicos de SQL............................................................................................................2

1.1 Tipos de datos.......................................................................................................................21.1.1 Tipos BUILT-IN de Oracle............................................................................................2

1.2 Constantes.............................................................................................................................51.3 Modelo de Formatos.............................................................................................................51.4 Valores Nulos y no Nulos.....................................................................................................6

1.4.1 Valores Nulos en Funciones..........................................................................................71.4.2 Valores Nulos en Condiciones......................................................................................7

1.5 Operadores............................................................................................................................81.5.1 Operadores Aritméticos.................................................................................................81.5.2 Operador Concatenación ||............................................................................................81.5.3 Operadores que forman parte de las condiciones en SQL.............................................81.5.4 Operadores Lógicos.......................................................................................................91.5.5 Operadores de Conjunto................................................................................................9

1.6 Precedencia de operadores..................................................................................................102 LENGUAJE DE MANIPULACIÓN DE DATOS (DML).........................................................11

2.1 SENTENCIA SELECT.......................................................................................................112.1.1 Introducción.................................................................................................................112.1.2 Sintaxis de la sentencia SELECT:...............................................................................112.1.3 Cláusula DISTINCT....................................................................................................112.1.4 Selección de grupos.....................................................................................................112.1.5 ORDER BY.................................................................................................................12

2.2 SENTENCIA INSERT........................................................................................................122.3 SENTENCIA UPDATE......................................................................................................132.4 SENTENCIA DELETE.......................................................................................................14

3 LENGUAJE DE DEFINICIÓN DE DATOS (DDL)..................................................................163.1 Creación de una tabla..........................................................................................................163.2 Modificación de la estructura de una tabla..........................................................................193.3 Borrar una tabla...................................................................................................................213.4 Create sequence...................................................................................................................213.5 ALTER SEQUENCE .........................................................................................................223.6 DROP SEQUENCE............................................................................................................223.7 Sinónimos............................................................................................................................223.8 Borrar sinónimos.................................................................................................................233.9 Vistas...................................................................................................................................233.10 DROP VIEW ....................................................................................................................243.11 Creación de índices...........................................................................................................243.12 Borrar un índice.................................................................................................................253.13 RENAME..........................................................................................................................253.14 TRUNCATE.....................................................................................................................25

4 Funciones....................................................................................................................................254.0.1 ESCALARES (O DE FILA SIMPLE )........................................................................254.0.2 AGREGADAS O DE AGRUPACIÓN.......................................................................33

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 1 de 34

Page 2: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

1 Elementos básicos de SQL

1.1 Tipos de datos

1.1.1 Tipos BUILT-IN de Oracle

CARACTERESTipo de dato Descripción

VARCHAR2(tamaño)

Almacena una cadena de caracteres de longitud variable, donde el tamaño máximo viene indicado en la variable tamaño.Longitud máxima permitida es de 4000 bytes y la mínima 1.Es obligatorio especificar la precisión. Se permiten todos los caracteres alfanuméricos. No se malgasta espacio por poner más tamaño del deseado ya que si el texto es más pequeño que el tamaño indicado, el resto del espacio no se ocupa.

NVARCHAR2(tamaño)

Cadena de caracteres de longitud variable teniendo un máximo de tamaño caracteres dependiendo del juego de caracteres nacional indicado.Longitud máxima permitida es de 2000 bytes y la mínima 1.Es obligatorio especificar la precisión. Sirve para soportar BD de conjunto de caracteres de varios bytes (UNICODE). Tampoco se malgasta el espacio.

CHAR(tamaño)

Almacena una cadena alfanumérica de longitud fija. (No dinámica como los anteriores)Tamaño máximo 2000 bytes.Si no se especifica precisión el valor mínimo y por defecto es 1.Si se excede el rango permitido ORACLE dará ERROR.

NCHAR(tamaño) Igual que la anterior. Usa un juego de caracteres nacional.Sirve para soportar BD de conjunto de caracteres de varios bytes (UNICODE).

TIPOS DE DATOS NUMÉRICOSTipo de dato DescripciónNUMBER(p,s) Número entero o de punto flotante.

El rango de p (presición) es el nº de dígitos totales del número (está entre 1 y 38).La escala s (nº de dígitos a la derecha del punto decimal) puede variar desde –84 a 127 .Tanto s como p son opcionales, pero si se incluye la escala hay que incluir también la precisión.Ejemplos:

DATO FORMATO ALMACENADO7456123.89 NUMBER 7456123.89

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 2 de 34

Page 3: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

7456123.89 NUMBER(9) 74561247456123.89 NUMBER(9,2) 7456123.897456123.89 NUMBER(9,1) 7456123.97456123.89 NUMBER(6) EXCEDE7456123.89 NUMBER(7,-2) 74561007456123.89 NUMBER(7,2) EXCEDE

Si la escala es mayor que la precisión, indica el número máximo de caracteres a la derecha del punto decimal

DATO FORMATO ALMACENADO.01234 NUMBER(4,5) .01234.00012 NUMBER(4,5) .00012.000127 NUMBER(4,5) .00013.0000012 NUMBER(2,7) .0000012.01234 NUMBER(4,6) .01234

BINARY_FLOAT Difiere de Number en la forma de almacenamiento en la BD. Se almacena en base binaria (sólo 1 y 0). Es de 32 bits. Con coma decimal o no.

BINARY_DOUBLE Difiere de Number en la forma de almacenamiento en la BD. Se almacena en base binaria (sólo 1 y 0).Es de 64 bits. Con coma decimal o no.

TIPOS DE DATOS FECHASTipo de dato Descripción

DATE

Para cada valor de date se almacena la siguiente información: el siglo, el año, el mes, el día, hora, minuto y segundos. El formato de fecha por defecto esta definido por el parámetro de inicialización NLS_DATE_FORMAT. Usualmente tomará como valor lo siguiente: DD-MON-YY (DIA, MES, AÑO). Si no se especifica una hora, la hora por defecto son las 12:00:00 AM (del mediodía). Existe una función SYSDATE que recupera la fecha y hora del sistema.Con datos de tipo fecha se pueden realizar la operaciones aritméticas + y -. Por ejemplo: SYSDATE +1.

TIMESTAMP

Es una extensión del anterior, almacena valores de día, mes y año, junto con hora, minuto y segundos (incluso con decimales). Con lo que representa un instante concreto en el tiempo. Un ejemplo de TIMESTAMP sería ‘2/2/2004 18:34:23,34521’.

INTERVAL YEAR TO MONTH

Sirven para almacenar intervalos de tiempo (no fechas, sino una suma de elementos de tiempo). Este tipo de datos almacena años y meses. Tras la palabra YEAR se puede indicar la precisión de los años (cifras del año), por defecto es de dos.Para los intervalos de año a mes los valores se pueden indicar de estas formas:

INTERVAL '123-6' YEAR(4) TO MONTH /* 123 años y seis meses */ INTERVAL '123' YEAR(4) TO MONTH /* 123 años */ INTERVAL '6' MONTH(3) TO MONTH /* 6 meses */

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 3 de 34

Page 4: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

INTERVAL DAY TO MONTH

Representa intervalos de tiempo que expresan días, horas, minutos y segundos. Se puede indicar la precisión tras el texto DAY y el número de decimales de los segundos tras el texto SECOND. Ejemplos:

INTERVAL '4 10:12:7,352' DAY TO SECOND(3) /* 4 días 10 horas 12 minutos y 7 con 352 segundos */ INTERVAL '4 10:12' DAY TO MINUTE /* 4 días 10 horas 12 minutos */ INTERVAL '4 10' DAY TO HOUR /* 4 días 10 horas */ INTERVAL '4' DAY /* 4 días*/ INTERVAL '10' HOUR /*10 horas*/ INTERVAL '25' HOUR /*25 horas*/ INTERVAL '12' MINUTE /*12 minutos*/ INTERVAL '30' SECOND /*30 segundos */ INTERVAL '8:50’ HOUR TO MINUTE; /*8 horas y 50 minutos */ INTERVAL '7:06' MINUTE TO SECOND; /*7 minutos 6 segundos*/ INTERVAL '8:07:06' HOUR TO SECOND; /*8 horas 7 minutos 6 segundos*/

TIPO DE DATOS BINAROSTipo de dato Descripción

RAW (tamaño)

Sirve para almacenar datos de tipo binario como sonidos, imágenes o arrays de tipo binario.Longitud variable tamaño máximo 2000 bytes.Es obligatorio especificar el tamaño.

LONG RAWSirve para almacenar datos de tipo binario como sonidos, imagénes o arrays de tipo binario.Longitud variable de hasta 2GB.

TIPOS DE DATOS DE OBJETOS GRANDES (LOB)Tipo de dato Descripción

CLOBAlmacena un objeto grande tipo carácter (cadena de caracteres) cuyos caracteres son de 1 byte y no soportan juego de caracteres de tamaño de variable.

NCLOB Almacena un objeto grande tipo carácter cuyos caracteres son multibyte de tamaño fijo.

BLOB Almacena un objeto grande binario máximo de 4Gb.

BFILE Contiene un localizador o puntero a un fichero binario almacenado fuera de la BD.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 4 de 34

Page 5: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

TIPO DE DATOS DE FILATipo de dato Descripción

ROWID

Es una cadena hexadecimal que representa la dirección única de una fila.Este tipo de datos se utiliza para almacenar los valores devueltos por la pseudocolumna ROWID y cuyo formato es el siguiente BLOCK.ROW.FILE (bloque de datos del archivo que contiene la fila ROW).

UROWID [( tamaño )]Es una cadena hexadecimal que representa la dirección lógica de una fila en una tabla organizada con índices.El máximo tamaño por defecto es 4000 bytes.

1.2 Constantes

TextoEspecifica una constante de carácter o un conjunto de caracteres. La sintaxis se representa mediante el siguiente diagrama:Una constante texto de longitud máxima de 4000 BYTES.

EnteraUn entero puede almacenar un máximo de 38 dígitos de precisión.

Realf indica binary_float ej: 25fd indica binary_double ej: 0.5d

Por ejemplo: +2.56, –5.31, 0.26 => .26Por ejemplo: 25 e –3

Constantes intervalosEspecifica un período de tiempo en términos de años y meses o en días, horas, minutos y segundos.

Ej: INTERVAL ‘123-2’ YEAR(3) TO MONTH (intervalo de123 años y dos meses)

1.3 Modelo de Formatos

Definición: Es una constante de texto que define el formato de datos de tipo DATE o NUMBER almacenados en una cadena. Se utilizan como argumento de las funciones TO_CHAR que convierte a carácter y TO_DATE que convierte a fecha. No va a producir ningún cambio en la representación interna de los datos.

Formato de NúmerosSe usan en las funciones:•TO_CHAR para convertir un valor de tipo NUMBER a un tipo VARCHAR2.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 5 de 34

Page 6: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

•TO_NUMBER para convertir un valor CHAR o VARCHAR2 a NUMBER.

Formato Ejemplo Descripción9 ‘999999’ Determina el ancho de presentación del número No se

visualizan los 0s a la izquierda, cuando el número no cabe o se desborda (se muestra #).

$ ‘$99999’ Coloca el signo $ delante del número0 ‘0999’ Presenta los 0s a la izquierdaB B999’ Presenta el 0 como blancoMI ‘999MI’ Presenta un signo – cuando el valor es negativo, si es positivo

lo representa con el blanco. MI irá detrás del número., ‘99,999’ Coloca la coma en la posición especificada. ’999.999’ Coloca un punto decimal en la posición especificadaS ‘S99’

‘99S’Sitúa el signo a la izquierdaSitúa el signo a la derecha

EEEE ‘9.9EEEE99’ Uso de notación científica

Formato de fechasSe usan en las funciones:•TO_CHAR•TO_DATE. El máximo de longitud que puede adoptar este modelo es de 22 caracteres. Se pueden añadir caracteres de puntuación como: - (barra) ‘ . ; ’texto’ /

Formato DevuelveYYYY AñoMM Mes (1-12)Month Nombre del mesDD Día del mesHH HoraSS 0-59MI 0-59FM Alinea a la izquierda y elimina los

blancos si los hubiera

1.4 Valores Nulos y no Nulos

•Una columna no-NULL indica que nunca puede estar vacía para ninguna fila. •Si una columna no tiene un valor en al menos una fila, entonces se dice que puede

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 6 de 34

Page 7: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

contener NULL (valores nulos). •Nunca se debe utilizar el valor NULL para representar el 0 en un campo numérico. Si se tienen que realizar operaciones aritméticas a una columna numérica se tiene que trabajar con el valor 0.

Ej: 1 + null es null puede provocar sumas incorrectas si lo que se pretendía es sumar 1+0=1Podemos usar la función NVL:

NVL (expr1, expr2)para cambiar NULL del campo expr1 por 0 (u otro valor; expr2)Ej: NVL (comision,0);

•Todos los operadores, excepto la concatenación, con un operando NULL, dan como resultado NULL

1.4.1 Valores Nulos en Funciones

•Todas las funciones escalares excepto “REPLACE”, ”NVL” y “CONCAT”, devuelven NULL cuando alguno de sus argumentos es nulo. •La mayoría de las funciones de agregación ignoran los nulos

Ej.: 5,null,10,null,null

(la media (10+5)/2)

1.4.2 Valores Nulos en Condiciones

A la hora de evaluar una condición de tipo relacional o lógica el resultado puede ser verdadero, falso ó desconocido. Cuando en un WHERE no se produce ninguna fila, o resulte una tabla vacía se da un valor desconocido.El resultado de una condición es diferente si es falso o si es desconocido porque:

NO FALSO equivale a VERDADERONO DESCONOCIDO no tiene porqué equivaler a VERDADERO.

Ej. : Tabla de comparación de un operando ‘a’ con otro NULL

Valor de ‘a’ Condición Resultado15 ‘a’ is NULL F15 ‘a’ is not NULL V

NULL ‘a’ is NULL VNULL ‘a’ is not NULL F

15 ‘a’ = NULL Desconocido15 ‘a’ != NULL Desconocido

NULL ‘a’ = NULL DesconocidoNULL ‘a’ != NULL DesconocidoNULL ‘a’ = 10 Desconocido

Para preguntar si algo es nulo o no, solo se usa las condiciones “is NULL” e “is not NULL”

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 7 de 34

Page 8: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

1.5 Operadores

1.5.1 Operadores Aritméticos

Los operadores son:

Operador Tipo propósito+,- Unario Operaciones de signo+,- Binario Suma y resta*, / Binario Multiplicación y división

1.5.2 Operador Concatenación ||

• Manipula cadenas de caracteres y datos de tipo CLOB. • El resultado de concatenar dos cadenas de caracteres es otra cadena de caracteres. • Si las dos cadenas son de tipo CHAR, el resultado también es de tipo CHAR con

límite de 2000 bytes. • Si alguna es de tipo VARCHAR2, el resultado también es de VARCHAR2 con límite

de 4000 bytes.• Si alguna es CLOB, el resultado también es CLOB.

1.5.3 Operadores que forman parte de las condiciones en SQL

➢ Operadores Relacionales

=!=, ^=, <>, ¬=<<=>>=

X operador relacional Y

➢ SOME, ANY, ALL

X op. relacional [SOME / ANY / ALL] Y➢ IN, NOT IN

Expresión IN (cte1,cte2,...,cten)

O también

Expresión IN (subselect)

Expresión NOT IN (cte1,cte2,...,cten)

O también

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 8 de 34

Page 9: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

Expresión NOT IN (subselect)

➢ BETWEEN

Expresión1 [NOT] BETWEEN expresión2 AND expresión3

➢ IS [NOT] NULL

➢ EXISTS

EXISTS (subselect)➢ LIKEFormato simplificado:

nombre_columna [NOT] LIKE constante_alfanumérica [ESCAPE char_de_esc]

1.5.4 Operadores Lógicos

NOTANDOR

1.5.5 Operadores de Conjunto

Operadores:UNION: Combina los resultados de dos consultas eliminando las filas repetidasUNION ALL: Devuelve todas las filas de ambas consultas incluyendo todas las entradas duplicadasINTERSECT: Devuelve todas las filas comunes eliminando duplicadosMINUS: Devuelve todas las filas del resultado de la primera consulta menos las contenidas en el resultado de la segunda consulta

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 9 de 34

Page 10: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

1.6 Precedencia de operadores

De mayor a menor prioridad:

+,- unario*,/+,-,|| suma, resta, concatenación=,!=,<,<=,>,>= comparacionIS [NOT] NULL, LIKE, [NOT] BETWEEN[NOT] IN, EXISTSNOTANDOR

Si tienen igual precedencia la prioridad es de izquierda a derecha.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 10 de 34

Page 11: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

2 LENGUAJE DE MANIPULACIÓN DE DATOS (DML)

2.1 SENTENCIA SELECT

2.1.1 Introducción

Regla para referenciar un objeto:[ <nom_esquema> .] <nombre_objeto> [. <Parte_objeto>]

Alias del nombre de una tabla:FROM <nombre_objeto> <alias>

Alias de una columna:<nombre_columna> [AS] <alias>

2.1.2 Sintaxis de la sentencia SELECT:

SELECT [DISTINCT] <lista_atributos>FROM <tablas>[WHERE <condición>][GROUP BY <lista_expresiones>][HAVING <predicado>][ORDER BY <lista_ordenación>]

Definición de los elementos:• Lista de atributos: son aquellos valores que se quieren obtener con las consultas. Si

ponemos en lista de atributos * es lo mismo que si escribiéramos todos los atributos de la lista de tablas.

• Lista de tablas: serie de tablas separadas por comas necesarias para procesar la consulta.

• Condición: sirve para identificar las tuplas que obtendrá la consulta.• Lista de expresiones: por las que se agrupan las filas.• Predicado: filtra las filas devueltas por los agrupamientos.• Lista de ordenación: indica los nombres de los atributos por los que se pretende

ordenar el resultado de la consulta. Dentro de la lista de atributos pueden aparecer expresiones, no sólo nombres de columnas:

2.1.3 Cláusula DISTINCT

Eliminará las filas duplicadas del conjunto resultado de una consulta, es decir, DISTINCT muestra las filas repetidas una sola vez.

2.1.4 Selección de grupos

En SQL se dispone de una serie de funciones de grupo o de dominio agregado. Estas

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 11 de 34

Page 12: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

funciones se aplican a un conjunto de filas. Las más usuales son:•AVG: Media de valores•COUNT: Cuenta•MAX: Valor máximo•MIN: Valor mínimo•SUM: Suma de valores•STDDEV: Desviación estándar•VARIANCE: Varianza

2.1.5 ORDER BY

Permite ordenar el resultado de una consulta. Para ello debemos especificar la cláusula ORDER BY y especificar la lista de campos para los que deseamos realizar la operación.La ordenación puede ser ascendente (ASC, por defecto) o descendente (DES).

2.2 SENTENCIA INSERT

Permite añadir filas a una tabla particionada o no, a una vista y a objetos tabla u objetos vista.Sintaxis simplificada:

Sentencia INSERT ::= <inserta filas en una tabla> ;| <inserta filas en varias tablas> ;

Nos ocupamos sólo de insertar una fila en una tabla:

<inserta filas en una tabla> ::= INSERT INTO <expresión DML><lista de columnas> <valores a asignar>

<expresión DML> ::= <expresion_tabla>| <subconsulta> [<restricción de subconsulta>]

<expresion_tabla> ::= [<nomesquema> . ] <nomtabla> | [<nomesquema> . ] <nomvista>

<lista de columnas> ::= [ ( <col> { , <col> }) ]

<valores a asignar>::= <valores explicitos> [<retornar>]| <subconsulta>

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 12 de 34

Page 13: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

<restricción de subconsulta> :: =WITH READ ONLY | WITH CHECK OPTION [CONSTRAINT <nomrestricción>]

<valores explicitos> ::= VALUES ( <lista_expresiones>)

<retornar> ::= RETURNING <expresion> [, <expresion> ...] INTO <dato> [, <dato>]

<lista_expresiones> ::= <expresion> | default { , <expresion> | default}

Donde :•<lista de columnas> se refiere a la lista de atributos a los que se les va a asignar valores•<valores a asignar> especifica los valores a insertar en la fila ya sean de una consulta o valores explícitos.•WITH READ ONLY especifica que la tabla o vista no puede ser modificada.•WITH CHECK OPTION [CONSTRAINT <nomrestricción>] especifica que se prohiben cambios en la tabla o vista que pudieran producir filas que no se incluyeran en la consulta.<retornar> permite recuperar filas almacenando los valores en variables.•<Subconsulta> Especifica que la inserción está basada en una select. En la sentencia select deben recuperarse el mismo número de columnas y en el mismo orden que se especificó en la sentencia insert. NOTA:•Si se omiten las columnas en insert, entonces la subconsulta proporciona valores para todas las columnas de la tabla.•Si se omite el valor de alguna columna, se pone el valor por defecto.•Si la columna es obligatoria y no tiene valor por defecto, dará error.

2.3 SENTENCIA UPDATE

Permite modificar los valores existentes en una tabla o vista.Sintaxis simplificada :

<sentencia UPDATE> ::= UPDATE <expresión DML> <cláusula SET> [where <condición> ] [retornar];

<expresión DML> ::= [<nomesquema>.] <expresion_tabla>

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 13 de 34

Page 14: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

| (<subconsulta> [<restricción de subconsulta>] )

<expresion_tabla> ::= <nomtabla> | <nomvista>

<cláusula SET> ::= SET <lista> {, <lista> }

<lista> ::= ( <nombrecol> { , <nombrecol>} ) = (<subconsulta>)| <nombrecol> = <valornuevo>

<valornuevo> ::= <expresión>| (<subconsulta>)| DEFAULT

<restricción de subconsulta> :: = WITH READ ONLY | WITH CHECK OPTION [CONSTRAINT <nomrestricción>]

<retornar> ::= RETURNING <expresion> {, <expresion>} INTO <dato> {, <dato>}

Donde :•SET contiene la lista de las columnas que van a ser actualizadas con el nuevo valor precedido de = •WITH READ ONLY especifica que la tabla o vista no puede ser modificada.•WITH CHECK OPTION [CONSTRAINT <nomrestricción>] especifica que se prohiben cambios en la tabla o vista que pudieran producir filas que no se incluyeran en la consulta.•<retornar> permite modificar valores almacenando los valores en variables PL/SQL.•<subconsulta> Especifica que la actualización está basada en una select. En la sentencia select deben recuperarse el mismo número de columnas y en el mismo orden que se especificó en la sentencia update.•<where condicion> Condición que deben cumplir las filas que se desean actualizar. Si se omite se actualizan todas.

2.4 SENTENCIA DELETE

Permite borrar las filas de una tabla o vista.Sintaxis simplicada :

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 14 de 34

Page 15: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

Sentencia DELETE ::= DELETE FROM <expresión DML> [where <condición> ][retornar]

<expresión DML> ::= <expresion_tabla>| <subconsulta> [<restricción de subconsulta>]

<expresion_tabla> ::=[<nomesquema> . ] <nomtabla>

| [<nomesquema> . ] <nomvista>

<restricción de subconsulta> :: =WITH READ ONLY | WITH CHECK OPTION [CONSTRAINT <nomrestricción>]

<retornar> ::= RETURNING <expresion> {, <expresion>} INTO <dato> {, <dato>}

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 15 de 34

Page 16: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

3 LENGUAJE DE DEFINICIÓN DE DATOS (DDL)

3.1 Creación de una tabla

Al crear una tabla con la sentencia CREATE TABLE se puede especificar la siguiente información:•Definición de columnas (nombre, tipo de datos, longitud). Una tabla puede tener hasta 254 columnas.•Restricciones de integridad.•Características de almacenamiento de objeto dónde se almacena y cuánto ocupa.•También se puede especificar si la tabla se obtiene como resultado de una consulta.

La sintaxis en formato compacto es:

CREATE TABLE [ <nombre_esquema> . ] <nombre_tabla>(<nombre_columna> <tipo_columna> [(longitud)] [<restriccion_columna inline>]{ , <nombre_columna> <tipo_columna> [(longitud)] [<restriccion_columna inline>] }[ , <restriccion outline> { , <restriccion outline>}])[TABLESPACE <espacio_tabla>] [ENABLE <activa> | DISABLE <inactiva> ][parámetros de almacenamiento][AS subconsulta] ;

Más formalmente la sentencia create table queda:

<definición de tabla> :: =CREATE [GLOBAL TEMPORARY] TABLE[nombre_esquema> . ] <nombre_tabla><lista_de_elementos_tabla>[parámetros de almacenamiento][AS subconsulta] ;

<lista_de_elementos_tabla> :: =( <elemento_tabla> {, <elemento_tabla>} )

<elemento_tabla> :: =<definicion_columna>| <definición restricción outline>

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 16 de 34

Page 17: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

<definicion_columna> :: =<nombre_columna> <tipo_Dato> [<longitud>][<cláusula por defecto>][ [CONSTRAINT <nombre_restriccion>] <definición de restricción

inline>]

<cláusula por defecto> ::=DEFAULT <expresión>

<definición de restricción inline> :: =[NOT] NULL|UNIQUE|PRIMARY KEY|<especificación de referencia>|CHECK (condición)

<especificación de referencia> :: =REFERENCES [<nombre_esquema>.] <nombre_tabla>

(<nombre_columna>)[ON DELETE CASCADE | ON DELETE SET NULL]

<definicion_restriccion_outline> :: =[CONSTRAINT <nombre_restriccion>]<restriccion>

<restriccion> :: =UNIQUE <atributos de restricción>|PRIMARY KEY <atributos de restricción>|FOREIGN KEY <atributos de restricción>

<especificación de referencia>|CHECK (condición)

<atributos de restricción> :: =(<nombre_columna>[{,<nombre_columna>}])

➢GLOBAL TEMPORARY: Indica que la tabla es temporal y que su definición es visible para todas las sesiones. Los datos de una tabla temporal sólo están visibles para la sesión que inserta los datos en la tabla

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 17 de 34

Page 18: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

➢Nombre de esquema: Es el esquema o propietario de la tabla. Si se omite toma como valor por defecto el usuario que ejecuta la orden.

➢CLÁUSULA POR DEFECTO: Proporciona la posibilidad de indicar un valor por defecto a una columna cuando en la sentencia insert se omita un valor para esa columna.

➢TABLESPACE <espacio_tabla>Nombre del tablespace al que se asigna la tabla. Por defecto la asigna al del usuario que crea la tabla.

➢RESTRICCIONES:NOT NULL: Indica que la columna que se aplique debe contener valoresUNIQUE: •Permite asegurar que no se escribirán valores duplicados en las columnas especificadas que no formen parte de una clave principal.•Puede ser simple o compuesta. •No es obligatoria. •Puede haber más de una por tabla. •Se pueden definir varias columnas UNIQUE, pero sólo una columna PRIMARY KEY•Si una columna es UNIQUE tiene también que ser NOT NULL (normativa ANSI / ISO)

➢PRIMARY KEY: Es el identificador único de fila en una tabla. Puede ser compuesta o simple. Sólo una por tabla. Al crear una columna cómo clave primaria, se le está asociando un índice de forma implícita.

➢FOREIGN KEY: Es la clave ajena que se utiliza para establecer y exigir un vínculo entre los datos de dos tablas. Puede ser compuesta o simple.

➢CHECK: Realiza un filtro sobre las filas que no cumplan la condición impuesta. (Ej. : que precio sea > 0).Es posible aplicar varias restricciones CHECK a una sola columna. Éstas se evalúan en el orden en el que fueron creadas.Se puede aplicar una sola restricción CHECK a variar columnas si se crea a nivel de tabla.

➢Especificación de referencia:Nos permite indicar cómo se eliminan las filas referidas, o las filas que guardan relación, con una fila de otra tabla. Se dice que se eliminan en cascada (ON DELETE CASCADE) si al borrar una fila de una tabla se eliminan todas las filas relacionadas con esa fila en otra tabla. Si al eliminar utilizamos la cláusula SET NULL (ON DELETE SET NULL) equivale a

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 18 de 34

Page 19: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

eliminar una fila de una tabla, y a poner la clave ajena, o el valor de la clave ajena correspondiente, a NULL en las filas relacionadas con otra tabla.

➢AS subconsulta Crea las filas de la nueva tabla usando las filas obtenidas en la consulta especificada.

➢Información de tablas en diccionario de datosSe encuentra en las vistas del diccionario accesibles para cualquier usuario:USER_TABLES , ALL_TABLESUSER_TAB_COLUMNS , ALL_TAB_COLUMNS

3.2 Modificación de la estructura de una tabla

Definición de ALTER TABLE: La sentencia ALTER TABLE permite modificar la estructura de una tabla para:•Añadir columnas a una tabla ya creada. •Modificar el tipo de dato o la precisión de una columna.•Añadir, activar o desactivar temporalmente, o borrar restricciones de integridad sobre la tabla.Sintaxis:

ALTER TABLE [<nombre_esquema>. ] <nombre_tabla><cláusulas > { < cláusula enable-disable> };

<cláusulas> ::= RENAME TO <Nombre nuevo de tabla>| <cláusula de columna>| <cláusula de restricciones>

<cláusula de columna> :: =RENAME COLUMN <Nom antiguo> TO <nom nuevo>| <acción columna> { <acción columna> }

<acción columna > :: = < cláusula_añadir_columna> | < cláusula_modificar_columna>| < cláusula_borrar_columna>

< cláusula_añadir_columna> ::= ADD (<elemento_columna> { , <elemento_columna> } )

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 19 de 34

Page 20: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

<elemento_columna> ::= <nombre_columna> <tipodato> [ DEFAULT <expresion> ] { [CONSTRAINT <nombre_restriccion>] <definición de restricción inline> }

< cláusula_modificar_columna> ::=MODIFY ( <nombre_columna> [<tipodato> ] [DEFAULT <expresión>]{ [CONSTRAINT <nombre_restriccion>] <definición de restricción inline> } )

< cláusula_borrar_columna> ::= DROP <lista > { CASCADE CONSTRAINTS | INVALIDATE } [CHECKPOINT <entero>]

<lista > ::= COLUMN <nombre_columna> | ( < nombre_columna> { , < nombre_columna> } )

<cláusulas de restricciones> ::= ADD <definición _restricción_outline> { <definición _restricción_outline> }| MODIFY CONSTRAINT <Nombre restricción> <estado restricción>| RENAME CONSTRAINT <Nombre restricción antiguo> TO <Nombre restricción nuevo>| < cláusula borrar restricción>

< cláusula borrar restricción> ::= DROP PRIMARY KEY [CASCADE] [KEEP INDEX | DROP INDEX ]| DROP UNIQUE ( <columna> { , <columna>} ) [CASCADE]

[KEEP INDEX | DROP INDEX ]| DROP CONSTRAINT <nombre restricción> [CASCADE]

< cláusula enable-disable> ::= ENABLE [VALIDATE | NOVALIDATE] <Restricción> [CASCADE]| DISABLE [VALIDATE | NOVALIDATE] <Restricción> [CASCADE]| ENABLE ALL TRIGGERS| DISABLE ALL TRIGGERS

<Restricción> ::= UNIQUE (<columna> { , <columna>} )| PRIMARY KEY

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 20 de 34

Page 21: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

| CONSTRAINT <nombre restricción>

<definición de restricción inline> :: =[NOT] NULL| UNIQUE| PRIMARY KEY| <especificación de referencia>| CHECK (<condición>)

<especificación de referencia> :: =REFERENCES [<nombre_esquema>.] <nombre_tabla>

(<nombre_columna>)[ON DELETE { CASCADE | SET NULL } ]

3.3 Borrar una tabla

DROP TABLE [<nombre_esquema>. ] <nombre_tabla>[CASCADE CONSTRAINT]

Elimina la tabla de la BD con todas sus filas.Si se añade cascade constraint elimina todas las restricciones de integridad referencial que hagan referencia a claves de la tabla suprimida.Cada usuario puede borrar sus propias tablas. Sólo el administrador puede borrar todas las tablas o usuarios con los permisos adecuados.Cuando se elimina una tabla, se eliminan los índices asociados y las vistas que usen esas tablas dejan de funcionar aunque permanecen.

3.4 Create sequence

Una secuencia es un objeto que permite generar número secuenciales enteros y únicos. Se suele utilizar para conseguir claves primarias de forma automática. Para poder crear una secuencia se debe poseer el privilegio CREATE SEQUENCE.Sintaxis:

CREATE SEQUENCE [<nombre_esquema>. ] <nombre_secuencia> INCREMENT BY <entero> START WITH <entero> MAXVALUE <entero>NOMAXVALUEMINVALUE <entero>NOMINVALUE

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 21 de 34

Page 22: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

CYCLENOCYCLECACHE | NOCACHE

•INCREMENT BY: Determina el salto entre los números secuenciales. El entero puede ser positivo o negativo, pero no puede ser 0.•START WITH: Determina el primer número secuencial que será generado.•MINVALUE: Indica el valor mínimo de la secuencia.•MAXVALUE: El valor máximo que genera la secuencia.•NOMINVALUE: Indica el valor 1 para las secuencias ascendentes, y el valor -(1027-1) para las secuencias descendentes.•NOMAXVALUE: Indica el valor máximo de 1028-1 para las secuencias ascendentes, y –1 para las descendentes.•CYCLE: Indica que la secuencia continua generando valores de nuevo desde de su comienzo cuando se llega al valor máximo o al mínimo.•NOCYCLE: Si se alcanza el valor máximo o mínimo no genera más números.•CACHE ó NOCACHE: Almacena o no, un determinado número determinado de valores en memoria caché

Acceso a la secuencia:Una vez creada la secuencia se puede acceder a ella usando dos pseudocolumnas:•CURRVAL: Devuelve el valor actual de la secuencia.•NEXTVAL: Incrementa el valor de la secuencia.

Para acceder a la información contenida en el diccionario de datos acerca de las secuencias tenemos disponibles las siguientes vistas del diccionario, accesibles para cualquier usuario:

USER_SEQUENCES , ALL_SEQUENCES

3.5 ALTER SEQUENCE

Permite modificar las características de una secuencia. La sintaxis de ALTER SEQUENCE es exactamente igual que CREATE SEQUENCE, pero no permite el START WITH.La secuencia debe pertenecer al usuario o poseer el privilegio alter sequence.

3.6 DROP SEQUENCE

Elimina una secuencia de la base de datos.

DROP SEQUENCE [<nombre_esquema>. ] <nombre_sequence>

3.7 Sinónimos

Definición: Un sinónimo es un nombre alternativo a una tabla, una vista, un procedimiento

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 22 de 34

Page 23: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

almacenado o cualquier otro objeto de la BD. A diferencia del alias, el sinónimo no es temporal, y permanece en la base de datos, hasta que es borrado. Es necesario tener acceso al objeto sobre el que se desea crear dicho sinónimo, o bien ser el propietario.

Tipos de sinónimos:•Públicos:

Son accesibles por cualquier usuario de la base de datos. Para crearlos se necesita el privilegio CREATE PUBLIC SYNONYM.

•Privados: Son accesibles sólo por el usuario que lo crea. Y para crearlo se necesita el privilegio CREATE SYNONYM

Sintaxis:CREATE [PUBLIC] SYNONYM <nombre_sinónimo> FOR [<nombre_esquema>. ] <objeto> ;

Las tablas del diccionario de datos con información de sinónimos son USER_SYNONYMS y ALL_SYNONYMS.

3.8 Borrar sinónimos

DROP [PUBLIC] SYNONYM [<nombre_esquema>. ] <nombre_sinonimo>

3.9 Vistas

Definición: Una vista es una tabla lógica basada en una o varias tablas llamadas tablas base y cuyo contenido está definido por una consulta. La vista no existe como conjunto de datos almacenados en la BD, sino que se almacena la SELECT. Si se quiere recuperar filas de una vista, Oracle accede a la sentencia SELECT y la ejecuta. Sintaxis:

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW[<nombre_esquema>. ] <nombre_vista>[ ( <col1> { ,<col2>} ) ] AS <subconsulta>[WITH { READ ONLY | CHECK OPTION [CONSTRAINT <nombre_restriccion> } ];

•OR REPLACE: Permite volver a crear la vista si ya existe, es decir, puede cambiar la definición de la vista sin tener que borrarla y volver a crearla.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 23 de 34

Page 24: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

•FORCE: Crea la vista incluso si hay problemas de acceso por insuficientes privilegios a los objetos de la subconsulta.•NOFORCE: Es la opción por defecto y no crea la vista si se producen errores en la definición.•WITH READ ONLY: La vista no podrá ser actualizada.•WITH CHECK OPTION: Oracle prohibirá cualquier cambio en la vista que produzca filas no incluidas en la subconsulta.Sobre una vista no existen restricciones en consulta, pero sí en actualización y borrado. Si se cumplen las condiciones y las restricciones impuestas, la actualización, inserción y borrado tiene lugar sobre la tabla base sobre la que se definió la vista. Para que una vista permita:•Borrado (DELETE):La vista debe estar creada sobre una sola tabla y no puede utilizar las cláusulas DISTINCT y GROUP BYEn la consulta no se puede hacer uso de funciones agrupadas ni de pseudocolumnas.•Modificaciones (UPDATE), todo lo anterior y ninguna de las columnas que se actualizan deben ser sido definidas como una expresión. •Inserción (INSERT), la vista en su definición debe contener todas las columnas de la tabla que la forman.

3.10 DROP VIEW

DROP VIEW [<nombre_esquema>. ] <nombre_vista> ;

3.11 Creación de índices

Sintaxis:CREATE [UNIQUE] INDEX <nombre_indice> ON

[<nom_esquema> . ] <nombre_tabla> ( col1 [ASC/DESC] { ,col2 [ASC/DESC].} );

Uso:Un índice es una estructura que proporciona un acceso rápido a las filas de una tabla en base a los valores de una o más columnas.Un índice contiene claves generadas a partir de una o varias columnas de la tabla o vista. Dichas claves están almacenadas en una estructura que permite que el SGBD busque de forma rápida la fila asociada a dichos valores.Se crean automáticamente para las restricciones PRIMARY KEY y UNIQUE.Las tablas con índice necesitan más espacio de almacenamiento en la BD.Las operaciones de inserción y borrado necesitan más tiempo de proceso.Para que la columna se indexe tiene que cumplir:

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 24 de 34

Page 25: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

•Ser consultada con frecuencia•No debe sufrir alteraciones de operadores o funciones cuando se consulta•Debe contener un volumen importante de información•Debe tener muchos valores diferentes

Un índice puede ser•Simple o compuesto.•Único o no (si es único no puede tener valores repetidos).

Las tablas del diccionario de datos con información de índices son USER_INDEXES, ALL_INDEXES, USER_IND_COLUMNS y ALL_IND_COLUMNS

3.12 Borrar un índice

DROP INDEX [<nombre_esquema>. ] <nombre_indice> ;

3.13 RENAME

Cambia el nombre de un objeto.

RENAME <nombre_ANTIGUO> TO <nombre_NUEVO> ;

3.14 TRUNCATE

Borra definitivamente las filas de una tabla o índice sin eliminar la estructura del objeto. (no permite el uso del rollback).

TRUNCATE TABLE <nombre_tabla>;

4 Funciones

4.0.1 ESCALARES (O DE FILA SIMPLE )

Devuelven como resultado una fila.Aparecen en WHERE, START WITH, CONNECT BY y HAVING de la sentencia select.

Funciones numéricasFunción matemática Ejemplo Descripción

Abs(valor)

sql> select abs(-70) from dual;abs(-70)----------70

Devuelve el valor absoluto del valor. El resultado siempre es positivo.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 25 de 34

Page 26: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

ceil(valor)

sql> select ceil(14.4) from dual;ceil(14.4)----------15sql> select ceil(-15.1) from dual;ceil(-15.1)------------15

Devuelve el entero más próximo que sea mayor o igual que el valor.

cos(valor)

sql> select cos(90) from dual;cos(90)-----------,44807362

Devuelve el coseno de valor.

floor(valor)

sql> select floor(14.9) from dual;floor(14.9)-----------14sql> select floor(-15.7) from dual;floor(-15.7)-------------16

Devuelve el mayor entero igual o menor que valor.

mod(valor)

sql> select mod(25,3) from dual;mod(25,3)----------1sql> select mod(24,3) from dual;mod(24,3)----------0

Devuelve el resto resultante de dividir valor entre divisor. Si el divisor es igual a cero, entonces, se devuelve valor.

power(valor, exponente)

round(valor, precision)

sql> select power(2,4) from dual;power(2,4)----------16

sql> select round(456.789,3) from dual;round(456.789,3)----------------456,789sql> select round(456.789,2) from dual;round(456.789,2)----------------456,79

El valor se eleva a la potencia del exponente.

El resultado se redondea al número de posiciones a la derecha del punto decimal indicado por posición.

sign (valor)

sql> select sign(-22) from dual;sign(-22)-----------1sql> select sign(8) from dual;sign(8)----------1

Devuelve un número que indica si el valor es positivo o negativo:

Valor > 0, devuelve 1

Valor < 0, devuelve -1

Valor = 0, devuelve 0

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 26 de 34

Page 27: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

sqrt(valor)

sql> select sqrt(25) from dual;sqrt(25)----------5

sql> select sqrt(26) from dual;sqrt(26)----------5,09901951

Devuelve la raíz cuadrada de valor.

trunc(valor, precisión)

sql> select trunc(4.789,2) from dual;trunc(4.789,2)--------------4,78sql> select trunc(456.789, -2) from dual;trunc(456.789,-2)-----------------400

Devuelve el valor truncado con la precisión especificada. Si precisión es positiva, truncará dicho número de posiciones a la derecha del punto decimal. Si precisión es negativa, trucará dicho número de posiciones a la izquierda del punto decimal. Si precisión no se especifica, se supondrá el valor de cero, con lo que se truncará en el punto decimal.

acos(valor)

sql> select acos(1) from dual;acos(1)----------0sql> select acos(0) from dual;acos(0)----------1,57079633

Devuelve el arcocoseno de valor.

asin(valor)

sql> select asin(1) from dual;asin(1)----------1,57079633

Devuelve el arcoseno de valor.

atan(valor)

sql> select atan(1) from dual;atan(1)----------,785398163

Devuelve la arcotangente de valor.

cosh(valor)

sql> select cosh(6) from dual;cosh(6)----------201,715636

Devuelve el coseno hiperbólico de valor.

exp(valor)

sql> select exp(2) from dual;exp(2)----------7,3890561

Devuelve el resultado de elevar el número e al exponente valor.

ln (valor)

sql> select ln(95) from dual;ln(95)----------4,55387689

Devuelve el logaritmo neperiano de valor.

log(base, valor)

sql> select log(10, 1000) from dual;log(10,1000)------------3

Devuelve el logaritmo en base introducida, de valor.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 27 de 34

Page 28: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

sin(valor)

sql> select sin(5) from dual;sin(5)-----------,95892427

Devuelve el seno de valor.

sinh(valor)

sql> select sinh(4) from dual;sinh(4)----------27,2899172

Devuelve el seno hiperbólico.

tan(valor)

sql> select tan(6) from dual;tan(6)-----------,29100619

Devuelve la tangente de valor.

tanh(valor)

sql> select tanh(15) from dual;tanh(15)----------1

Devuelve la tangente hiperbólica.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 28 de 34

Page 29: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

Funciones de cadenaFunción de cadena Ejemplo Descripción

chr(valor)

sql> select chr(66) from dual;c-b

Devuelve el carácter ASCII correspondiente a valor.

concat(cadena1, cadena2)

sql> select concat('calcu', 'ladora') from dual;concat('cal-----------calculadora

Devuelve la concatenación de cadena2 con cadena1.

initcap(cadena)

sql> select initcap('braulio marclars') from dual;initcap('braulio----------------Braulio Marclars

Devuelva la cadena original, con la primera letra de cada palabra en mayúscula.

lower(cadena)

sql> select lower('MaRkLArs') from dual;lower('m--------marklars

Devuelve la cadena original con todos sus caracteres convertidos a minúscula.

lpad(cadena, longitud[,relleno])

sql> select lpad ('prueba',11,'&') from dual;lpad('prueb-----------&&&&&prueba

Inserta caracteres de relleno a la izquierda de una cadena con el carácter de relleno especificado hasta que la cadena tenga la longitud especificada. Si no se especifica un carácter de relleno, la opción predeterminada son espacios.

ltrim(cadena,[,valor-recortar])

sql> select ltrim('abbatermino','ba') from dual;ltrim('-------termino

Recorta la cadena por la izquierda, eliminando cualquier carácter contenido en valor-recortar hasta que se encuentre un carácter que no esté incluido en valor-recortar. Si no se especifica un valor-recortar, se utilizan espacios como opción predeterminada.

replace(cadena,encontrar,sustituir)

select replace('cabra','a','o') from dual;repla-----cobro

Busca la cadena encontrar y la reemplaza por sustituir.

length(valor)

select length(’candide’) "length in characters"from dual;length in characters--------------------7

Devuelve la longitud de valor, independiente de que sea una cadena, un número, una fecha o una expresión.

upper(cadena)

select upper(’large’) "uppercase"from dual;upper-----LARGE

Convierte la cadena de caracteres a mayúsculas.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 29 de 34

Page 30: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

rpad(cadena,longitud[,relleno])

select rpad(’morrison’,12,’ab’) "rpad example"from dual;rpad example-----------------morrisonabab

Inserta caracteres de relleno a la derecha de una cadena con el carácter de relleno especificado hasta que la cadena tenga la longitud especificada. Si no se especifica un carácter de relleno, la opción predeterminada son espacios.

rtrim(cadena,[valor-recortar])

select rtrim(’browningyxxxy’,’xy’) "rtrim example"from dual;rtrim examp-----------browningyxx

Recorta la cadena por la derecha, eliminando cualquier carácter contenido en valor-recortar hasta que se encuentre un carácter que no esté incluido en valor-recortar. Si no se especifica un valor-recortar, se utilizan espacios como opción predeterminada.

cadena | | cadena Función que concatena dos cadenas.

instr(cadena,valor[,inicio, [ocurrencia]])

select instr(’corporate floor’,’or’, 3, 2)"instring" from dual;instring----------

Devuelve la posición de un valor dentro de una cadena. Si se especifica una posición inicio, instr comienza a buscar a partir de ahí, si se especifica un número de ocurrencia, instr devuelve la ubicación que corresponde a dicha aparición del valor indicado.

substr(cadena,valor1,[valor2])

select substr(’abcdefg’,3,4) "substring"from dual;substring---------cdef

Devuelve una porción de cadena, empezando en el carácter de la posición indicado valor1 de cadena, y con una longitud especificada por valor2.

ascii(cadena)

select ascii(’q’) from dual;ascii(’q’)----------81

Devuelve el código ASCII de cadena.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 30 de 34

Page 31: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

Funciones de tratamiento de fechasFunción de fecha Ejemplo Descripción

Add_months (fecha, número)

select to_char(add_months(hire_date,1),

’dd-mon-yyyy’) "next month"

from employeeswhere last_name = ’baer’;next month-----------07-jul-1994

Añade un número de meses a una fecha, y devuelve la fecha resultante.

Current_date

select current_date from dual;current_da--------------17-11-2002

Devuelve la fecha actual del sistema.

Extract (dato FROM fecha)

select extract(year from date ’1998-03-07’) from dual;extract(yearfromdate’1998-03-07’)---------------------------------1998

Devuelve el dato especificado de la fecha introducida.

Last_day (fecha)La función last_day devuelve el último día del mes de la fecha especificada.

months_between

(fecha1, fecha2)

select months_between(to_date(’02-02-1995’,’mm-dd-yyyy’),to_date(’01-01-1995’,’mm-dd-yyyy’) ) "months"from dual;months----------1.03225806

Devuelve la fecha1 menos la fecha2 en meses. Fecha1 suele ser la fecha futura. El resultado suele ser una fracción.

new_time (fecha_actual, zona_actual, zona_futura)

select new_time(to_date(

’11-10-99 01:23:45’, ’mm-dd-yy hh24:mi:ss’),

’ast’, ’pst’) "new date and time" from dual;

new date and time--------------------

09-nov-1999 21:23:45

Devuelve la fecha que sería en la zona_futura, de acuerdo con la fecha_actual y la zona_actual proporcionadas.

next_day (fecha, ‘dia’)

select next_day(’02-feb-2001’,’tuesday’) "next day"from dual;next day----------06-feb-2001

Proporciona la siguiente fecha que cae en el día de la semana ‘dia’ después de la fecha.

round(fecha, ‘formato’)

select round (to_date (’27-oct-00’),’year’)"new year" from dual;new year---------01-jan-01

Redondea una fecha según lo especificado en ‘formato’.

SYSDATE

select to_char(sysdate, ’mm-dd-yyyy hh24:mi:ss’)"now"from dual;now-------------------04-13-2001 09:45:51

Devuelve la hora y fecha actual del sistema.

to_char (fecha, ‘formato’) Devuelve una cadena de caracteres con el formato especificado.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 31 de 34

Page 32: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

to_date (cadena, ‘formato’)Acepta una cadena de caracteres parecida a la cadena formato, y devuelve un dato de tipo fecha.

trunc(fecha, ‘formato’) Devuelve la fecha truncada según el formato especificado.

Funciones de conversiónFunción de conversión Ejemplo Descripción

asciistr(cadena)

select asciistr(’abäcde’) from dual;asciistr(’flauw---------------ab\00c4cde

Devuelve el argumento cadena, como cadena ascii, salvo aquellos caracteres que no están incluidos en SQL.

BIN_TO_NUM

select bin_to_num(1,0,1,0) from dual;bin_to_num(1,0,1,0)-------------------10

Convierte series de unos y ceros a su numero equivalente

to_char(cadena)

select to_char(’01110’) from dual;to_ch-----01110

Convierte un tipo NCHAR, NVARCHAR2, CLOB, o NCLOB a un tipo carácter.

to_char(fecha) Convierte el dato fecha a un tipo de dato carácter VARCHAR2.

to_char(valor)

select to_char(’01110’ + 1) from dual;to_c----1111

Convierte el valor a un dato de tipo carácter VARCHAR2.

to_clob([cadena | dato LOB])

select to_clob(‘hola’)from dual;to_c----hola

Convierte un dato NCLOB a LOB, o una cadena de caracteres a CLOB.

to_date(cadena)

select to_date(

’january 15, 1989’)

to_date(’---------15-jan-89

Convierte una cadena en formato fecha, a un tipo fecha.

to_lob

insert into new_print_media(select p.product_id, p.ad_id, to_lob(p.press_release)from print_media p);

Convierte valores de tipo LONG a un tipo LOB. Solo puede ser utilizada en la sentencia SELECT de una subconsulta de la sentencia INSERT.

to_multi_byte(cadena)

select dump(to_multi_byte( ’a’)) from dual;dump(to_multi_byte(’a’))------------------------typ=1 len=3: 239,188,161

Devuelve los caracteres de la cadena, convertidos a caracteres multibyte.

to_nchar(cadena)Convierte cadena expresada en formato concreto a una cadena con formato de configuración nacional del sistema.

to_nchar(fecha)Convierte fecha expresada en formato concreto a una fecha con formato de configuración nacional del sistema.

to_nchar(valor) Convierte valor a una cadena de tipo NVARCHAR2.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 32 de 34

Page 33: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

to_nclob([LOB | cadena ]) Convierte valores CLOB o cadena a valores de tipo NCLOB

to_number(cadena)

select to_number (’-ausdollars100’)from dual;to_number-----------100

Convierte cadena a un dato tipo NUMBER.

to_single_byte(cadena)

select to_single_byte( chr(15711393)) from dual;t-a

Devuelve cadena con todos sus caracteres multi-byte convertidos a single-byte.

Otras funciones y variables de entornoFunción / Variable Ejemplo Descripción

Bfilename(ruta, archivo)

insert into print_media (product_id, ad_id, ad_graphic)values (3000, 31001,bfilename(’media_dir’, ’modem_comp_ad.gif’));

Devuelve un localizador de tipo BFILE, que está asociado a un fichero binario LOB.

depth Devuelve el número de niveles de directorios en una ruta especificada.

Dump(expresion)

select dump(’abc’, 1016)from dual;dump(’abc’,1016)------------------------------------------typ=96 len=3 characterset=we8dec: 61,62,63

Devuelve un tipo VARCHAR2, el código del tipo de dato, la longitud en bytes, y la representación interna de la expresión.

Greatest

select greatest (’harry’, ’harriot’, ’harold’)"greatest" from dual;greatest--------harry

Devuelve la cadena con mayor valor alfabético.

Least

select greatest (’harry’, ’harriot’, ’harold’)"greatest" from dual;greatest--------harold

Devuelve la cadena con MENO valor alfabético.

Nullif(expresion1,expresion2) Devuelve NULL si las expresiones son iguales, de lo contrario de vuelve siempre expresión1.

Nvl(expresion1,expresion2) select nvl(comision,0) from emp; Permite convertir valores nulos incluidos en expresion1 a el valor de expresión2.

Nvl2(expr1, expr2, expr3)select nvl(comision, comosion*2, 0) from emp;

Permite convertir valores de expr1. Si el valor de expr1 es nulo, devuelve expr3, si es no nulo devuelve expr2.

Uid select uid from dual; Devuelve un número que identifica a la sesión del usuario conectado.

User select user, uid from dual; Devuelve el nombre del usuario de la sesión actual.

Usernv select usernv from dual; Devuelve información sobre la sesión actual.

Vsize(expresión)

select last_name, vsize (last_name) "bytes"from employeeswhere department_id = 10;last_name bytes--------------- ----------whalen 6

Devuelve el tamaño en bytes de la expresión. Si la expresión es NULL devuelve NULL.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 33 de 34

Page 34: Sgbd ud3 lenguaje_sql_para_examen

U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011

4.0.2 AGREGADAS O DE AGRUPACIÓN

Funciones de agrupaciónFunción de agrupación Ejemplo Descripción

Avg([distinct]nombre_columna)

select avg(salary) "average" from employees;average--------6425

Calcula el valor medio de todos los valores de nombre_columna. Si se utiliza distinct, sólo se utilizan los números distintos y no nulos.

Count ( [distinc] valor )

select count(*) "total" from employees;total----------107select count(*) "allstars" from employeeswhere commission_pct > 0;allstars---------35

Cuenta el número de filas seleccionado, ignorando los valores nulos de la expresión valor. Si se utiliza distinct, sólo se utilizan los números distintos y no nulos. Valor puede ser un nombre de columna o una expresión.

Max ( valor )

select max(salary) "maximum" from employees;maximum----------24000

Devuelve el número/carácter máximo del valor seleccionado, ignorando los valores nulos. Valor puede ser un nombre de columna o una expresión.

Min ( valor )

select min(hire_date) "earliest" from employees;earliest---------17-jun-87

Devuelve el número/carácter mínimo del valor seleccionado, ignorando los valores nulos. Valor puede ser un nombre de columna o una expresión.

Stddev (valor)

select stddev(salary) "deviation"from employees;deviation----------3909.36575

Devuelve la desviación estándar de la norma de los valores seleccionados.

Sum (valor)

select sum(salary) "total"from employees;total----------691400

Suma el valor, devolviendo el total de las filas seleccionadas. Valor puede ser un nombre de columna o una expresión.

variance ([distinct] valor)

select variance(salary) "variance"from employees;variance----------15283140.5

Devuelve la varianza de todos los valores de la fila seleccionada, ignorando los valores nulos de valor. Si se utiliza distinct, sólo se utilizarán los números distintos y no nulos. Valor puede ser nombre de columna o una expresión.

MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 34 de 34