SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
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
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
CARACTERES
Tipo 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ÉRICOS
Tipo de dato Descripción
NUMBER(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 ALMACENADO
7456123.89 NUMBER 7456123.89
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 2 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
7456123.89 NUMBER(9) 7456124
7456123.89 NUMBER(9,2) 7456123.89
7456123.89 NUMBER(9,1) 7456123.9
7456123.89 NUMBER(6) EXCEDE
7456123.89 NUMBER(7,-2) 7456100
7456123.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 FECHAS
Tipo 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
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 BINAROS
Tipo 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 RAW
Sirve 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
CLOB
Almacena 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
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
TIPO DE DATOS DE FILA
Tipo 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
Texto
Especifica 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.
Entera
Un entero puede almacenar un máximo de 38 dígitos de precisión.
Real
f indica binary_float ej: 25f
d indica binary_double ej: 0.5d
Por ejemplo: +2.56, –5.31, 0.26 => .26
Por ejemplo: 25 e –3
Constantes intervalos
Especifica 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úmeros
Se 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
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ón
9 ‘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úmero
0 ‘0999’ Presenta los 0s a la izquierda
B B999’ Presenta el 0 como blanco
MI ‘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 especificada
S ‘S99’
‘99S’
Sitúa el signo a la izquierda
Sitúa el signo a la derecha
EEEE ‘9.9EEEE99’ Uso de notación científica
Formato de fechas
Se 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 Devuelve
YYYY Año
MM Mes (1-12)
Month Nombre del mes
DD Día del mes
HH Hora
SS 0-59
MI 0-59
FM 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
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=1
Podemos 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 VERDADERO
NO DESCONOCIDO no tiene porqué equivaler a VERDADERO.
Ej. : Tabla de comparación de un operando ‘a’ con otro NULL
Valor de ‘a’ Condición Resultado
15 ‘a’ is NULL F
15 ‘a’ is not NULL V
NULL ‘a’ is NULL V
NULL ‘a’ is not NULL F
15 ‘a’ = NULL Desconocido
15 ‘a’ != NULL Desconocido
NULL ‘a’ = NULL Desconocido
NULL ‘a’ != NULL Desconocido
NULL ‘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
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
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)
➢ LIKE
Formato simplificado:
nombre_columna [NOT] LIKE constante_alfanumérica [ESCAPE char_de_esc]
1.5.4 Operadores Lógicos
NOT
AND
OR
1.5.5 Operadores de Conjunto
Operadores:
UNION:
Combina los resultados de dos consultas eliminando las filas repetidas
UNION ALL:
Devuelve todas las filas de ambas consultas incluyendo todas las entradas duplicadas
INTERSECT:
Devuelve todas las filas comunes eliminando duplicados
MINUS:
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
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
=,!=,<,<=,>,>= comparacion
IS [NOT] NULL, LIKE, [NOT]
BETWEEN
[NOT] IN, EXISTS
NOT
AND
OR
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
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
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
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
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
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
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
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
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 valores
UNIQUE:
•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
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 datos
Se encuentra en las vistas del diccionario accesibles para cualquier usuario:
USER_TABLES , ALL_TABLES
USER_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
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
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>
NOMAXVALUE
MINVALUE <entero>
NOMINVALUE
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 21 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
CYCLE
NOCYCLE
CACHE | 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
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
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 BY
En 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
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éricas
Funció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
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
ceil(valor)
sql> select ceil(14.4) from dual;
ceil(14.4)
----------
15
sql> 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)
-----------
14
sql> 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)
----------
1
sql> 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,789
sql> 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)
----------
-1
sql> 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
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,78
sql> 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)
----------
0
sql> 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
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
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
Funciones de cadena
Funció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
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
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
Funciones de tratamiento de fechas
Funció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 employees
where 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
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ón
Función de conversión Ejemplo Descripción
asciistr(cadena)
select asciistr(’abäcde’) from dual;
asciistr(’flauw
---------------
ab00c4cde
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
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 entorno
Funció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 employees
where 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
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
4.0.2 AGREGADAS O DE AGRUPACIÓN
Funciones de agrupación
Funció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
----------
107
select count(*) "allstars" from employees
where 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

Más contenido relacionado

Similar a Sgbd ud3 lenguaje_sql_para_examen

Programacion en PL/SQL teoria y ejemplos
Programacion en PL/SQL teoria y ejemplosProgramacion en PL/SQL teoria y ejemplos
Programacion en PL/SQL teoria y ejemplosxoom44
 
Unidad II_ Tipo de Datos Oracle.pptx
Unidad II_ Tipo de Datos Oracle.pptxUnidad II_ Tipo de Datos Oracle.pptx
Unidad II_ Tipo de Datos Oracle.pptxCarlosSandovalMedina
 
basedatos_access.doc
basedatos_access.docbasedatos_access.doc
basedatos_access.docmariarutpd
 
Pop tipos de datos
Pop tipos de datosPop tipos de datos
Pop tipos de datoscristina150e
 
Investigacion tipo de datos
Investigacion tipo de datosInvestigacion tipo de datos
Investigacion tipo de datosLeonardo Torres
 
Tipo de variables de Microsoft Access
Tipo de variables de Microsoft AccessTipo de variables de Microsoft Access
Tipo de variables de Microsoft AccessKarina Lucio
 
Oracle Características y tipos de datos
Oracle Características y tipos de datos Oracle Características y tipos de datos
Oracle Características y tipos de datos jerson rojas lopez
 
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL IIavaldero
 
Sql server 2005 (bda)henrry
Sql server 2005 (bda)henrrySql server 2005 (bda)henrry
Sql server 2005 (bda)henrryHENRRYDAVIDS1
 
Definiciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesignerDefiniciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesigneraula40tics2finanzas
 

Similar a Sgbd ud3 lenguaje_sql_para_examen (20)

Oracle database
Oracle databaseOracle database
Oracle database
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Programacion en PL/SQL teoria y ejemplos
Programacion en PL/SQL teoria y ejemplosProgramacion en PL/SQL teoria y ejemplos
Programacion en PL/SQL teoria y ejemplos
 
Tipo de datos oracle
Tipo de datos oracleTipo de datos oracle
Tipo de datos oracle
 
Unidad II_ Tipo de Datos Oracle.pptx
Unidad II_ Tipo de Datos Oracle.pptxUnidad II_ Tipo de Datos Oracle.pptx
Unidad II_ Tipo de Datos Oracle.pptx
 
Oracle; historia, caracteristicas y tipo de datos
Oracle; historia, caracteristicas y tipo de datosOracle; historia, caracteristicas y tipo de datos
Oracle; historia, caracteristicas y tipo de datos
 
basedatos_access.doc
basedatos_access.docbasedatos_access.doc
basedatos_access.doc
 
Pop tipos de datos
Pop tipos de datosPop tipos de datos
Pop tipos de datos
 
LENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQLLENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQL
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Investigacion tipo de datos
Investigacion tipo de datosInvestigacion tipo de datos
Investigacion tipo de datos
 
Tipo de variables de Microsoft Access
Tipo de variables de Microsoft AccessTipo de variables de Microsoft Access
Tipo de variables de Microsoft Access
 
Oracle Características y tipos de datos
Oracle Características y tipos de datos Oracle Características y tipos de datos
Oracle Características y tipos de datos
 
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Blog transact sql
Blog transact sqlBlog transact sql
Blog transact sql
 
Sql server 2005 (bda)henrry
Sql server 2005 (bda)henrrySql server 2005 (bda)henrry
Sql server 2005 (bda)henrry
 
Definiciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesignerDefiniciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesigner
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
tipo de datos
tipo de datostipo de datos
tipo de datos
 

Sgbd ud3 lenguaje_sql_para_examen

  • 1. 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
  • 2. 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 CARACTERES Tipo 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ÉRICOS Tipo de dato Descripción NUMBER(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 ALMACENADO 7456123.89 NUMBER 7456123.89 MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 2 de 34
  • 3. U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 7456123.89 NUMBER(9) 7456124 7456123.89 NUMBER(9,2) 7456123.89 7456123.89 NUMBER(9,1) 7456123.9 7456123.89 NUMBER(6) EXCEDE 7456123.89 NUMBER(7,-2) 7456100 7456123.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 FECHAS Tipo 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
  • 4. 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 BINAROS Tipo 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 RAW Sirve 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 CLOB Almacena 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
  • 5. U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 TIPO DE DATOS DE FILA Tipo 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 Texto Especifica 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. Entera Un entero puede almacenar un máximo de 38 dígitos de precisión. Real f indica binary_float ej: 25f d indica binary_double ej: 0.5d Por ejemplo: +2.56, –5.31, 0.26 => .26 Por ejemplo: 25 e –3 Constantes intervalos Especifica 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úmeros Se 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
  • 6. 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ón 9 ‘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úmero 0 ‘0999’ Presenta los 0s a la izquierda B B999’ Presenta el 0 como blanco MI ‘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 especificada S ‘S99’ ‘99S’ Sitúa el signo a la izquierda Sitúa el signo a la derecha EEEE ‘9.9EEEE99’ Uso de notación científica Formato de fechas Se 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 Devuelve YYYY Año MM Mes (1-12) Month Nombre del mes DD Día del mes HH Hora SS 0-59 MI 0-59 FM 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
  • 7. 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=1 Podemos 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 VERDADERO NO DESCONOCIDO no tiene porqué equivaler a VERDADERO. Ej. : Tabla de comparación de un operando ‘a’ con otro NULL Valor de ‘a’ Condición Resultado 15 ‘a’ is NULL F 15 ‘a’ is not NULL V NULL ‘a’ is NULL V NULL ‘a’ is not NULL F 15 ‘a’ = NULL Desconocido 15 ‘a’ != NULL Desconocido NULL ‘a’ = NULL Desconocido NULL ‘a’ != NULL Desconocido NULL ‘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
  • 8. 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
  • 9. 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) ➢ LIKE Formato simplificado: nombre_columna [NOT] LIKE constante_alfanumérica [ESCAPE char_de_esc] 1.5.4 Operadores Lógicos NOT AND OR 1.5.5 Operadores de Conjunto Operadores: UNION: Combina los resultados de dos consultas eliminando las filas repetidas UNION ALL: Devuelve todas las filas de ambas consultas incluyendo todas las entradas duplicadas INTERSECT: Devuelve todas las filas comunes eliminando duplicados MINUS: 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
  • 10. 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 =,!=,<,<=,>,>= comparacion IS [NOT] NULL, LIKE, [NOT] BETWEEN [NOT] IN, EXISTS NOT AND OR 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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 valores UNIQUE: •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
  • 19. 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 datos Se encuentra en las vistas del diccionario accesibles para cualquier usuario: USER_TABLES , ALL_TABLES USER_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
  • 20. 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
  • 21. 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> NOMAXVALUE MINVALUE <entero> NOMINVALUE MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 21 de 34
  • 22. U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 CYCLE NOCYCLE CACHE | 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
  • 23. 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
  • 24. 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 BY En 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
  • 25. 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éricas Funció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
  • 26. U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 ceil(valor) sql> select ceil(14.4) from dual; ceil(14.4) ---------- 15 sql> 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) ----------- 14 sql> 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) ---------- 1 sql> 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,789 sql> 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) ---------- -1 sql> 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
  • 27. 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,78 sql> 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) ---------- 0 sql> 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
  • 28. 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
  • 29. U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 Funciones de cadena Funció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
  • 30. 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
  • 31. U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 Funciones de tratamiento de fechas Funció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 employees where 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
  • 32. 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ón Función de conversión Ejemplo Descripción asciistr(cadena) select asciistr(’abäcde’) from dual; asciistr(’flauw --------------- ab00c4cde 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
  • 33. 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 entorno Funció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 employees where 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
  • 34. U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011 4.0.2 AGREGADAS O DE AGRUPACIÓN Funciones de agrupación Funció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 ---------- 107 select count(*) "allstars" from employees where 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