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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
U.D. 3. Lenguaje SQL para Examen
Índice de contenido1 Elementos básicos de SQL............................................................................................................2
1.1 Tipos de datos.......................................................................................................................21.1.1 Tipos BUILT-IN de Oracle............................................................................................2
1.2 Constantes.............................................................................................................................51.3 Modelo de Formatos.............................................................................................................51.4 Valores Nulos y no Nulos.....................................................................................................6
1.4.1 Valores Nulos en Funciones..........................................................................................71.4.2 Valores Nulos en Condiciones......................................................................................7
1.5 Operadores............................................................................................................................81.5.1 Operadores Aritméticos.................................................................................................81.5.2 Operador Concatenación ||............................................................................................81.5.3 Operadores que forman parte de las condiciones en SQL.............................................81.5.4 Operadores Lógicos.......................................................................................................91.5.5 Operadores de Conjunto................................................................................................9
1.6 Precedencia de operadores..................................................................................................102 LENGUAJE DE MANIPULACIÓN DE DATOS (DML).........................................................11
2.1 SENTENCIA SELECT.......................................................................................................112.1.1 Introducción.................................................................................................................112.1.2 Sintaxis de la sentencia SELECT:...............................................................................112.1.3 Cláusula DISTINCT....................................................................................................112.1.4 Selección de grupos.....................................................................................................112.1.5 ORDER BY.................................................................................................................12
3 LENGUAJE DE DEFINICIÓN DE DATOS (DDL)..................................................................163.1 Creación de una tabla..........................................................................................................163.2 Modificación de la estructura de una tabla..........................................................................193.3 Borrar una tabla...................................................................................................................213.4 Create sequence...................................................................................................................213.5 ALTER SEQUENCE .........................................................................................................223.6 DROP SEQUENCE............................................................................................................223.7 Sinónimos............................................................................................................................223.8 Borrar sinónimos.................................................................................................................233.9 Vistas...................................................................................................................................233.10 DROP VIEW ....................................................................................................................243.11 Creación de índices...........................................................................................................243.12 Borrar un índice.................................................................................................................253.13 RENAME..........................................................................................................................253.14 TRUNCATE.....................................................................................................................25
4 Funciones....................................................................................................................................254.0.1 ESCALARES (O DE FILA SIMPLE )........................................................................254.0.2 AGREGADAS O DE AGRUPACIÓN.......................................................................33
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 1 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
1 Elementos básicos de SQL
1.1 Tipos de datos
1.1.1 Tipos BUILT-IN de Oracle
CARACTERESTipo de dato Descripción
VARCHAR2(tamaño)
Almacena una cadena de caracteres de longitud variable, donde el tamaño máximo viene indicado en la variable tamaño.Longitud máxima permitida es de 4000 bytes y la mínima 1.Es obligatorio especificar la precisión. Se permiten todos los caracteres alfanuméricos. No se malgasta espacio por poner más tamaño del deseado ya que si el texto es más pequeño que el tamaño indicado, el resto del espacio no se ocupa.
NVARCHAR2(tamaño)
Cadena de caracteres de longitud variable teniendo un máximo de tamaño caracteres dependiendo del juego de caracteres nacional indicado.Longitud máxima permitida es de 2000 bytes y la mínima 1.Es obligatorio especificar la precisión. Sirve para soportar BD de conjunto de caracteres de varios bytes (UNICODE). Tampoco se malgasta el espacio.
CHAR(tamaño)
Almacena una cadena alfanumérica de longitud fija. (No dinámica como los anteriores)Tamaño máximo 2000 bytes.Si no se especifica precisión el valor mínimo y por defecto es 1.Si se excede el rango permitido ORACLE dará ERROR.
NCHAR(tamaño) Igual que la anterior. Usa un juego de caracteres nacional.Sirve para soportar BD de conjunto de caracteres de varios bytes (UNICODE).
TIPOS DE DATOS NUMÉRICOSTipo de dato DescripciónNUMBER(p,s) Número entero o de punto flotante.
El rango de p (presición) es el nº de dígitos totales del número (está entre 1 y 38).La escala s (nº de dígitos a la derecha del punto decimal) puede variar desde –84 a 127 .Tanto s como p son opcionales, pero si se incluye la escala hay que incluir también la precisión.Ejemplos:
DATO FORMATO ALMACENADO7456123.89 NUMBER 7456123.89
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 2 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
BINARY_FLOAT Difiere de Number en la forma de almacenamiento en la BD. Se almacena en base binaria (sólo 1 y 0). Es de 32 bits. Con coma decimal o no.
BINARY_DOUBLE Difiere de Number en la forma de almacenamiento en la BD. Se almacena en base binaria (sólo 1 y 0).Es de 64 bits. Con coma decimal o no.
TIPOS DE DATOS FECHASTipo de dato Descripción
DATE
Para cada valor de date se almacena la siguiente información: el siglo, el año, el mes, el día, hora, minuto y segundos. El formato de fecha por defecto esta definido por el parámetro de inicialización NLS_DATE_FORMAT. Usualmente tomará como valor lo siguiente: DD-MON-YY (DIA, MES, AÑO). Si no se especifica una hora, la hora por defecto son las 12:00:00 AM (del mediodía). Existe una función SYSDATE que recupera la fecha y hora del sistema.Con datos de tipo fecha se pueden realizar la operaciones aritméticas + y -. Por ejemplo: SYSDATE +1.
TIMESTAMP
Es una extensión del anterior, almacena valores de día, mes y año, junto con hora, minuto y segundos (incluso con decimales). Con lo que representa un instante concreto en el tiempo. Un ejemplo de TIMESTAMP sería ‘2/2/2004 18:34:23,34521’.
INTERVAL YEAR TO MONTH
Sirven para almacenar intervalos de tiempo (no fechas, sino una suma de elementos de tiempo). Este tipo de datos almacena años y meses. Tras la palabra YEAR se puede indicar la precisión de los años (cifras del año), por defecto es de dos.Para los intervalos de año a mes los valores se pueden indicar de estas formas:
INTERVAL '123-6' YEAR(4) TO MONTH /* 123 años y seis meses */ INTERVAL '123' YEAR(4) TO MONTH /* 123 años */ INTERVAL '6' MONTH(3) TO MONTH /* 6 meses */
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 3 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
INTERVAL DAY TO MONTH
Representa intervalos de tiempo que expresan días, horas, minutos y segundos. Se puede indicar la precisión tras el texto DAY y el número de decimales de los segundos tras el texto SECOND. Ejemplos:
INTERVAL '4 10:12:7,352' DAY TO SECOND(3) /* 4 días 10 horas 12 minutos y 7 con 352 segundos */ INTERVAL '4 10:12' DAY TO MINUTE /* 4 días 10 horas 12 minutos */ INTERVAL '4 10' DAY TO HOUR /* 4 días 10 horas */ INTERVAL '4' DAY /* 4 días*/ INTERVAL '10' HOUR /*10 horas*/ INTERVAL '25' HOUR /*25 horas*/ INTERVAL '12' MINUTE /*12 minutos*/ INTERVAL '30' SECOND /*30 segundos */ INTERVAL '8:50’ HOUR TO MINUTE; /*8 horas y 50 minutos */ INTERVAL '7:06' MINUTE TO SECOND; /*7 minutos 6 segundos*/ INTERVAL '8:07:06' HOUR TO SECOND; /*8 horas 7 minutos 6 segundos*/
TIPO DE DATOS BINAROSTipo de dato Descripción
RAW (tamaño)
Sirve para almacenar datos de tipo binario como sonidos, imágenes o arrays de tipo binario.Longitud variable tamaño máximo 2000 bytes.Es obligatorio especificar el tamaño.
LONG RAWSirve para almacenar datos de tipo binario como sonidos, imagénes o arrays de tipo binario.Longitud variable de hasta 2GB.
TIPOS DE DATOS DE OBJETOS GRANDES (LOB)Tipo de dato Descripción
CLOBAlmacena un objeto grande tipo carácter (cadena de caracteres) cuyos caracteres son de 1 byte y no soportan juego de caracteres de tamaño de variable.
NCLOB Almacena un objeto grande tipo carácter cuyos caracteres son multibyte de tamaño fijo.
BLOB Almacena un objeto grande binario máximo de 4Gb.
BFILE Contiene un localizador o puntero a un fichero binario almacenado fuera de la BD.
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 4 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
TIPO DE DATOS DE FILATipo de dato Descripción
ROWID
Es una cadena hexadecimal que representa la dirección única de una fila.Este tipo de datos se utiliza para almacenar los valores devueltos por la pseudocolumna ROWID y cuyo formato es el siguiente BLOCK.ROW.FILE (bloque de datos del archivo que contiene la fila ROW).
UROWID [( tamaño )]Es una cadena hexadecimal que representa la dirección lógica de una fila en una tabla organizada con índices.El máximo tamaño por defecto es 4000 bytes.
1.2 Constantes
TextoEspecifica una constante de carácter o un conjunto de caracteres. La sintaxis se representa mediante el siguiente diagrama:Una constante texto de longitud máxima de 4000 BYTES.
EnteraUn entero puede almacenar un máximo de 38 dígitos de precisión.
Por ejemplo: +2.56, –5.31, 0.26 => .26Por ejemplo: 25 e –3
Constantes intervalosEspecifica un período de tiempo en términos de años y meses o en días, horas, minutos y segundos.
Ej: INTERVAL ‘123-2’ YEAR(3) TO MONTH (intervalo de123 años y dos meses)
1.3 Modelo de Formatos
Definición: Es una constante de texto que define el formato de datos de tipo DATE o NUMBER almacenados en una cadena. Se utilizan como argumento de las funciones TO_CHAR que convierte a carácter y TO_DATE que convierte a fecha. No va a producir ningún cambio en la representación interna de los datos.
Formato de NúmerosSe usan en las funciones:•TO_CHAR para convertir un valor de tipo NUMBER a un tipo VARCHAR2.
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 5 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
•TO_NUMBER para convertir un valor CHAR o VARCHAR2 a NUMBER.
Formato Ejemplo Descripción9 ‘999999’ Determina el ancho de presentación del número No se
visualizan los 0s a la izquierda, cuando el número no cabe o se desborda (se muestra #).
$ ‘$99999’ Coloca el signo $ delante del número0 ‘0999’ Presenta los 0s a la izquierdaB B999’ Presenta el 0 como blancoMI ‘999MI’ Presenta un signo – cuando el valor es negativo, si es positivo
lo representa con el blanco. MI irá detrás del número., ‘99,999’ Coloca la coma en la posición especificada. ’999.999’ Coloca un punto decimal en la posición especificadaS ‘S99’
‘99S’Sitúa el signo a la izquierdaSitúa el signo a la derecha
EEEE ‘9.9EEEE99’ Uso de notación científica
Formato de fechasSe usan en las funciones:•TO_CHAR•TO_DATE. El máximo de longitud que puede adoptar este modelo es de 22 caracteres. Se pueden añadir caracteres de puntuación como: - (barra) ‘ . ; ’texto’ /
Formato DevuelveYYYY AñoMM Mes (1-12)Month Nombre del mesDD Día del mesHH HoraSS 0-59MI 0-59FM Alinea a la izquierda y elimina los
blancos si los hubiera
1.4 Valores Nulos y no Nulos
•Una columna no-NULL indica que nunca puede estar vacía para ninguna fila. •Si una columna no tiene un valor en al menos una fila, entonces se dice que puede
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 6 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
contener NULL (valores nulos). •Nunca se debe utilizar el valor NULL para representar el 0 en un campo numérico. Si se tienen que realizar operaciones aritméticas a una columna numérica se tiene que trabajar con el valor 0.
Ej: 1 + null es null puede provocar sumas incorrectas si lo que se pretendía es sumar 1+0=1Podemos usar la función NVL:
NVL (expr1, expr2)para cambiar NULL del campo expr1 por 0 (u otro valor; expr2)Ej: NVL (comision,0);
•Todos los operadores, excepto la concatenación, con un operando NULL, dan como resultado NULL
1.4.1 Valores Nulos en Funciones
•Todas las funciones escalares excepto “REPLACE”, ”NVL” y “CONCAT”, devuelven NULL cuando alguno de sus argumentos es nulo. •La mayoría de las funciones de agregación ignoran los nulos
Ej.: 5,null,10,null,null
(la media (10+5)/2)
1.4.2 Valores Nulos en Condiciones
A la hora de evaluar una condición de tipo relacional o lógica el resultado puede ser verdadero, falso ó desconocido. Cuando en un WHERE no se produce ninguna fila, o resulte una tabla vacía se da un valor desconocido.El resultado de una condición es diferente si es falso o si es desconocido porque:
NO FALSO equivale a VERDADERONO DESCONOCIDO no tiene porqué equivaler a VERDADERO.
Ej. : Tabla de comparación de un operando ‘a’ con otro NULL
Valor de ‘a’ Condición Resultado15 ‘a’ is NULL F15 ‘a’ is not NULL V
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)➢ LIKEFormato simplificado:
nombre_columna [NOT] LIKE constante_alfanumérica [ESCAPE char_de_esc]
1.5.4 Operadores Lógicos
NOTANDOR
1.5.5 Operadores de Conjunto
Operadores:UNION: Combina los resultados de dos consultas eliminando las filas repetidasUNION ALL: Devuelve todas las filas de ambas consultas incluyendo todas las entradas duplicadasINTERSECT: Devuelve todas las filas comunes eliminando duplicadosMINUS: Devuelve todas las filas del resultado de la primera consulta menos las contenidas en el resultado de la segunda consulta
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 9 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
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>]
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 :
<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.
<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 valoresUNIQUE: •Permite asegurar que no se escribirán valores duplicados en las columnas especificadas que no formen parte de una clave principal.•Puede ser simple o compuesta. •No es obligatoria. •Puede haber más de una por tabla. •Se pueden definir varias columnas UNIQUE, pero sólo una columna PRIMARY KEY•Si una columna es UNIQUE tiene también que ser NOT NULL (normativa ANSI / ISO)
➢PRIMARY KEY: Es el identificador único de fila en una tabla. Puede ser compuesta o simple. Sólo una por tabla. Al crear una columna cómo clave primaria, se le está asociando un índice de forma implícita.
➢FOREIGN KEY: Es la clave ajena que se utiliza para establecer y exigir un vínculo entre los datos de dos tablas. Puede ser compuesta o simple.
➢CHECK: Realiza un filtro sobre las filas que no cumplan la condición impuesta. (Ej. : que precio sea > 0).Es posible aplicar varias restricciones CHECK a una sola columna. Éstas se evalúan en el orden en el que fueron creadas.Se puede aplicar una sola restricción CHECK a variar columnas si se crea a nivel de tabla.
➢Especificación de referencia:Nos permite indicar cómo se eliminan las filas referidas, o las filas que guardan relación, con una fila de otra tabla. Se dice que se eliminan en cascada (ON DELETE CASCADE) si al borrar una fila de una tabla se eliminan todas las filas relacionadas con esa fila en otra tabla. Si al eliminar utilizamos la cláusula SET NULL (ON DELETE SET NULL) equivale a
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 18 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
eliminar una fila de una tabla, y a poner la clave ajena, o el valor de la clave ajena correspondiente, a NULL en las filas relacionadas con otra tabla.
➢AS subconsulta Crea las filas de la nueva tabla usando las filas obtenidas en la consulta especificada.
➢Información de tablas en diccionario de datosSe encuentra en las vistas del diccionario accesibles para cualquier usuario:USER_TABLES , ALL_TABLESUSER_TAB_COLUMNS , ALL_TAB_COLUMNS
3.2 Modificación de la estructura de una tabla
Definición de ALTER TABLE: La sentencia ALTER TABLE permite modificar la estructura de una tabla para:•Añadir columnas a una tabla ya creada. •Modificar el tipo de dato o la precisión de una columna.•Añadir, activar o desactivar temporalmente, o borrar restricciones de integridad sobre la tabla.Sintaxis:
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>NOMAXVALUEMINVALUE <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
CYCLENOCYCLECACHE | NOCACHE
•INCREMENT BY: Determina el salto entre los números secuenciales. El entero puede ser positivo o negativo, pero no puede ser 0.•START WITH: Determina el primer número secuencial que será generado.•MINVALUE: Indica el valor mínimo de la secuencia.•MAXVALUE: El valor máximo que genera la secuencia.•NOMINVALUE: Indica el valor 1 para las secuencias ascendentes, y el valor -(1027-1) para las secuencias descendentes.•NOMAXVALUE: Indica el valor máximo de 1028-1 para las secuencias ascendentes, y –1 para las descendentes.•CYCLE: Indica que la secuencia continua generando valores de nuevo desde de su comienzo cuando se llega al valor máximo o al mínimo.•NOCYCLE: Si se alcanza el valor máximo o mínimo no genera más números.•CACHE ó NOCACHE: Almacena o no, un determinado número determinado de valores en memoria caché
Acceso a la secuencia:Una vez creada la secuencia se puede acceder a ella usando dos pseudocolumnas:•CURRVAL: Devuelve el valor actual de la secuencia.•NEXTVAL: Incrementa el valor de la secuencia.
Para acceder a la información contenida en el diccionario de datos acerca de las secuencias tenemos disponibles las siguientes vistas del diccionario, accesibles para cualquier usuario:
USER_SEQUENCES , ALL_SEQUENCES
3.5 ALTER SEQUENCE
Permite modificar las características de una secuencia. La sintaxis de ALTER SEQUENCE es exactamente igual que CREATE SEQUENCE, pero no permite el START WITH.La secuencia debe pertenecer al usuario o poseer el privilegio alter sequence.
3.6 DROP SEQUENCE
Elimina una secuencia de la base de datos.
DROP SEQUENCE [<nombre_esquema>. ] <nombre_sequence>
3.7 Sinónimos
Definición: Un sinónimo es un nombre alternativo a una tabla, una vista, un procedimiento
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 22 de 34
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:
•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 BYEn la consulta no se puede hacer uso de funciones agrupadas ni de pseudocolumnas.•Modificaciones (UPDATE), todo lo anterior y ninguna de las columnas que se actualizan deben ser sido definidas como una expresión. •Inserción (INSERT), la vista en su definición debe contener todas las columnas de la tabla que la forman.
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.
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)----------15sql> select ceil(-15.1) from dual;ceil(-15.1)------------15
Devuelve el entero más próximo que sea mayor o igual que el valor.
cos(valor)
sql> select cos(90) from dual;cos(90)-----------,44807362
Devuelve el coseno de valor.
floor(valor)
sql> select floor(14.9) from dual;floor(14.9)-----------14sql> select floor(-15.7) from dual;floor(-15.7)-------------16
Devuelve el mayor entero igual o menor que valor.
mod(valor)
sql> select mod(25,3) from dual;mod(25,3)----------1sql> select mod(24,3) from dual;mod(24,3)----------0
Devuelve el resto resultante de dividir valor entre divisor. Si el divisor es igual a cero, entonces, se devuelve valor.
power(valor, exponente)
round(valor, precision)
sql> select power(2,4) from dual;power(2,4)----------16
sql> select round(456.789,3) from dual;round(456.789,3)----------------456,789sql> select round(456.789,2) from dual;round(456.789,2)----------------456,79
El valor se eleva a la potencia del exponente.
El resultado se redondea al número de posiciones a la derecha del punto decimal indicado por posición.
sign (valor)
sql> select sign(-22) from dual;sign(-22)-----------1sql> select sign(8) from dual;sign(8)----------1
Devuelve un número que indica si el valor es positivo o negativo:
Valor > 0, devuelve 1
Valor < 0, devuelve -1
Valor = 0, devuelve 0
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 26 de 34
U.D. 3 Lenguaje SQL para Examen. 2º ASI. SGBD. 2010-2011
sqrt(valor)
sql> select sqrt(25) from dual;sqrt(25)----------5
sql> select sqrt(26) from dual;sqrt(26)----------5,09901951
Devuelve la raíz cuadrada de valor.
trunc(valor, precisión)
sql> select trunc(4.789,2) from dual;trunc(4.789,2)--------------4,78sql> select trunc(456.789, -2) from dual;trunc(456.789,-2)-----------------400
Devuelve el valor truncado con la precisión especificada. Si precisión es positiva, truncará dicho número de posiciones a la derecha del punto decimal. Si precisión es negativa, trucará dicho número de posiciones a la izquierda del punto decimal. Si precisión no se especifica, se supondrá el valor de cero, con lo que se truncará en el punto decimal.
acos(valor)
sql> select acos(1) from dual;acos(1)----------0sql> select acos(0) from dual;acos(0)----------1,57079633
Devuelve el arcocoseno de valor.
asin(valor)
sql> select asin(1) from dual;asin(1)----------1,57079633
Devuelve el arcoseno de valor.
atan(valor)
sql> select atan(1) from dual;atan(1)----------,785398163
Devuelve la arcotangente de valor.
cosh(valor)
sql> select cosh(6) from dual;cosh(6)----------201,715636
Devuelve el coseno hiperbólico de valor.
exp(valor)
sql> select exp(2) from dual;exp(2)----------7,3890561
Devuelve el resultado de elevar el número e al exponente valor.
ln (valor)
sql> select ln(95) from dual;ln(95)----------4,55387689
Devuelve el logaritmo neperiano de valor.
log(base, valor)
sql> select log(10, 1000) from dual;log(10,1000)------------3
Devuelve el logaritmo en base introducida, de valor.
MLLS. Dpto. Informática. IES Delgado Hermández. Bollullos Par del Condado Página 27 de 34
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 cadenaFunción de cadena Ejemplo Descripción
chr(valor)
sql> select chr(66) from dual;c-b
Devuelve el carácter ASCII correspondiente a valor.
concat(cadena1, cadena2)
sql> select concat('calcu', 'ladora') from dual;concat('cal-----------calculadora
Devuelve la concatenación de cadena2 con cadena1.
initcap(cadena)
sql> select initcap('braulio marclars') from dual;initcap('braulio----------------Braulio Marclars
Devuelva la cadena original, con la primera letra de cada palabra en mayúscula.
lower(cadena)
sql> select lower('MaRkLArs') from dual;lower('m--------marklars
Devuelve la cadena original con todos sus caracteres convertidos a minúscula.
lpad(cadena, longitud[,relleno])
sql> select lpad ('prueba',11,'&') from dual;lpad('prueb-----------&&&&&prueba
Inserta caracteres de relleno a la izquierda de una cadena con el carácter de relleno especificado hasta que la cadena tenga la longitud especificada. Si no se especifica un carácter de relleno, la opción predeterminada son espacios.
ltrim(cadena,[,valor-recortar])
sql> select ltrim('abbatermino','ba') from dual;ltrim('-------termino
Recorta la cadena por la izquierda, eliminando cualquier carácter contenido en valor-recortar hasta que se encuentre un carácter que no esté incluido en valor-recortar. Si no se especifica un valor-recortar, se utilizan espacios como opción predeterminada.
replace(cadena,encontrar,sustituir)
select replace('cabra','a','o') from dual;repla-----cobro
Busca la cadena encontrar y la reemplaza por sustituir.
length(valor)
select length(’candide’) "length in characters"from dual;length in characters--------------------7
Devuelve la longitud de valor, independiente de que sea una cadena, un número, una fecha o una expresión.
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.
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.
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ónFunción de agrupación Ejemplo Descripción
Avg([distinct]nombre_columna)
select avg(salary) "average" from employees;average--------6425
Calcula el valor medio de todos los valores de nombre_columna. Si se utiliza distinct, sólo se utilizan los números distintos y no nulos.
Count ( [distinc] valor )
select count(*) "total" from employees;total----------107select count(*) "allstars" from employeeswhere commission_pct > 0;allstars---------35
Cuenta el número de filas seleccionado, ignorando los valores nulos de la expresión valor. Si se utiliza distinct, sólo se utilizan los números distintos y no nulos. Valor puede ser un nombre de columna o una expresión.
Max ( valor )
select max(salary) "maximum" from employees;maximum----------24000
Devuelve el número/carácter máximo del valor seleccionado, ignorando los valores nulos. Valor puede ser un nombre de columna o una expresión.
Min ( valor )
select min(hire_date) "earliest" from employees;earliest---------17-jun-87
Devuelve el número/carácter mínimo del valor seleccionado, ignorando los valores nulos. Valor puede ser un nombre de columna o una expresión.
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