U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
U.D. 3. Lenguaje SQL para Examen
Índice de contenido
1 Elementos ...
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-I...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
7456123.89 NUMBER(9) 7456124
7456123.89 NUMBER(9,2) 7456123.89
74...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
INTERVAL DAY TO
MONTH
Representa intervalos de tiempo que expresa...
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 caden...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
•TO_NUMBER para convertir un valor CHAR o VARCHAR2 a NUMBER.
Form...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
contener NULL (valores nulos).
•Nunca se debe utilizar el valor N...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
1.5 Operadores
1.5.1 Operadores Aritméticos
Los operadores son:
O...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
Expresión NOT IN (subselect)
➢ BETWEEN
Expresión1 [NOT] BETWEEN e...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
1.6 Precedencia de operadores
De mayor a menor prioridad:
+,- una...
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....
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:...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
<restricción de subconsulta> :: =
WITH READ ONLY
| WITH CHECK OPT...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
| (<subconsulta> [<restricción de subconsulta>] )
<expresion_tabl...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
Sentencia DELETE ::=
DELETE FROM <expresión DML>
[where <condició...
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...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
<definicion_columna> :: =
<nombre_columna> <tipo_Dato> [<longitud...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
➢Nombre de esquema:
Es el esquema o propietario de la tabla. Si s...
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 va...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
<elemento_columna> ::=
<nombre_columna> <tipodato> [ DEFAULT <exp...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
| CONSTRAINT <nombre restricción>
<definición de restricción inli...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
CYCLE
NOCYCLE
CACHE | NOCACHE
•INCREMENT BY: Determina el salto e...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
almacenado o cualquier otro objeto de la BD.
A diferencia del ali...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
•FORCE: Crea la vista incluso si hay problemas de acceso por insu...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
•Ser consultada con frecuencia
•No debe sufrir alteraciones de op...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
ceil(valor)
sql> select ceil(14.4) from dual;
ceil(14.4)
--------...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
sqrt(valor)
sql> select sqrt(25) from dual;
sqrt(25)
----------
5...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
sin(valor)
sql> select sin(5) from dual;
sin(5)
----------
-,9589...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
Funciones de cadena
Función de cadena Ejemplo Descripción
chr(val...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
rpad(cadena,longitud[,relleno])
select rpad(’morrison’,12,’ab’) "...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
Funciones de tratamiento de fechas
Función de fecha Ejemplo Descr...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
to_date (cadena, ‘formato’)
Acepta una cadena de caracteres
parec...
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
to_nclob([LOB | cadena ])
Convierte valores CLOB o cadena a valor...
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 d...
Próxima SlideShare
Cargando en…5
×

Sgbd ud3 lenguaje_sql_para_examen

367 visualizaciones

Publicado el

Ayuda para exámenes de Base de Datos.

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
367
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
15
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Sgbd ud3 lenguaje_sql_para_examen

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×