0% encontró este documento útil (0 votos)
7 vistas36 páginas

Introducción a Bases de Datos y SQL

El documento describe los componentes y tipos de bases de datos, así como el uso de SQL para manipular datos. Se detallan las fases del ciclo de vida del desarrollo de sistemas y se explican las sentencias SQL, incluyendo SELECT, DML, DDL y DCL. Además, se abordan los tipos de datos y la estructura de Oracle9i, junto con ejemplos prácticos de consultas SQL.

Cargado por

Franco Pollano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas36 páginas

Introducción a Bases de Datos y SQL

El documento describe los componentes y tipos de bases de datos, así como el uso de SQL para manipular datos. Se detallan las fases del ciclo de vida del desarrollo de sistemas y se explican las sentencias SQL, incluyendo SELECT, DML, DDL y DCL. Además, se abordan los tipos de datos y la estructura de Oracle9i, junto con ejemplos prácticos de consultas SQL.

Cargado por

Franco Pollano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

Base de datos:

Colección organizada de datos.

Tablas:
Objetos de una base de datos.

DBMS (Database Management System):


Permite recuperar y modificar información en una base de datos.

Tipos de base de datos:


1. Jerarquica
2. Network
3. Relacional
4. Objetos relacional

Base de datos relacional:


El modelo de base de datos relacional consiste en tres componentes:

1. Una colección de objetos o relaciones


2. Un set de operadores (>, <, =, <>, etc)
3. Reglas de integridad. Las reglas de integridad permite mantener la consistencia de
la información almacenada en la base de datos.

RDBMS (Relational Database Management System):


Permiter recuper y manejar información en una base de datos.

Sentencia SQL:
Setencias que permiten recuperar, modificar, borrar, etc información de una base de datos
relacional. La sentencia SQL es enviada al servidor de base de datos, este la procesa y
devuelve un resultado.

Campo (Field):
Es una intersección entre una fila y una columna.

System Development Life Cycle:


Consiste en cinco faces:
1. Análisis y estrategia.
2. Diseño.
3. Construir y documentar.
4. Transición.
5. Producción.

Análisis y estrategias:
En esta face se estudia y analiza los requerimientos del negocio.
Diseño:
Se diseña la base de datos basandoce en la información obtenida en la fase de análiis y
estrategias.

Cosntruir y documentar:
En esta face se construye el prototipo del sistema y se desarrolla la doumentación para el
usuario.

Transisción:
En esta face se redefine el prototipo (conversión de datos existentes, modificaciones de
estrucutras, etc).

Producción:
Se envía el sistema a los usuarios.

ER Model:
El ER Model consta de tres partes:
1. Entidad.
2. Atributo.
3. Relaciones.

Entidad:
Tablas de la base de datos. El nombre de una entidad es singular, en mayusculas y único.
Opcionalmente pude aparer entre parentesis, a esto se le llama sinónimo.

Atributos:
Atributos que describen o califican a una tabla (Campos de las tablas). Un atributo puede
ser obligatorio u opcional. El nombre de un atributo es singular y en minusculas.
Los atributos obligatorios son identificados con un * y los opcionales con la letra O.
Los identificadores únicos (UID) se reprecentan con el simbolo #. Los identificadores
únicos secundarios se reprecentan con (#).

Relaciones:
Es una asociación entre dos o mas entidades.

COMPONENTES DE Oracle9i

El Oracle9i consta de tres partes:


1. Oracle9i Database
2. Oracle9iAS (Application Server)
3. Oracle9iDS (Developer Suite)

Oracle9i Database:
Maneja todos los datos. Se utiliza para recuperar y precentar información al usuario.
Oracle9iAS (Application Server):
Para aplicaciones Web.

Oracle9iDS (Developer Suite)


Provee un entorno para desarrollar todo tipo de aplicaciones. Permite construir aplicaciones
para Oracle9i Database y Oracle9iAP (Application Server).

Oracle9i esta disponible en tres ediciones:


1. Oracle9i Standard Edition.
2. Oracle9i Enterprise Edition.
3. Oracle9i Personal Edition.

SQL

DML (Data Manipulation Language)


DDL (Data Definition Language)
DCL (Data Control Language)

DML (Data Manipulation Language):


Permite realizar cambios en la base de datos:
INSERT: agrega una nueva fila.
UPDATE: modifica datos de una fila existente.
DELTE: borra una fila existente.
MERGE: agrega o modifica una fila según una condición.

DDL (Data Definition Language)


Modifica la estrucutrua de una base de datos.
CREATE: crea una nueva tabla.
RENAME: cambia el nombre de una tabla.
ALTER: cambia la estrucutra de una tabla.
DROP: elimina una tabla de la base de datos.
TRUNCATE: elimina todas la filas de una tabla.

Transaction Control:
Maneja los cambios realizados con el DML.
COMMIT: graba los cambios realizados.
ROLLBACK: deshace los cambios realizados.
SAVEPOINT: retorna a la última instrucción salvada con COMMIT.

DCL (Data Control Language):


Controla el acceso de los usuarios a la base de datos.
GRANT
REVOKE
SENTENCIAS

SELECT:
Recupera todas o algunas filas de una tabla.

La sentencia SELECT posee tres capacidades:


1. Selección (SELECTION): Capacidad que permite seleccionar filas de una tabla.
2. Proyección (PROJECTION): Capacidad que permite seleccionar algunas colunas
de la tabla.
3. Unión (JOIN): Capaciad que permite unir datos de diferentes tablas.

Estrucutra de la sentencia SELECT:

SELECT Lista de columnas (Obligatorio)


DISTINCT Elimina de la consulta las filas con valores iguales (Opcional)
* Selecciona todas las columnas (Opcional)
columna Nombre de columnas (separadas por “,” )
alias Le da a las columnas un nombre de cabecera (Opcional)
FROM Indica de que tabla/s se va a extraer la información (Obligtorio)

Ejemplos:

SELECT *
FROM Cuenta;

SELECT Nro_Cta, Nom_CTA, Dom_CTA


FROM Cuenta ;

Espreciones aritmeticas en una sentencia SELECT

La operaciones aritméticas soportadas por la clausula SELECT son:


1. Suma
2. Resta
3. Multiplicación
4. División

Ejemplos:

SELECT Nro_Cta, Nom_Cta, Saldo, Sal_Cta + 100


FROM Cuenta ;

Alias de columnas:
Los alias de columnas sirven para darle un nombre a cada columna diferente al nombre de
la misma. El alias de la columna debe escribirse a continuación de cada columna del
SELEC separado por un espacio en balnco como mínimo.
Ejemplos:

SELECT Nro_Cta NUMERO, Nom_Cta NOMBRE


FROM Cuenta ;

Por defecto el nombre de alias aparcene en mayusculas, si se quiere especicificar una alias
y que se muestre talcual lo digitamos se deberá encerrar el nombre alias entre “ “.

Ejemplo:

SELECT Nro_Cta “Numero”, Nom_Cta “Nombre”


FROM Cuenta;

Otra manera de indicar un alias para las columnas es agregrar la clausula AS en lugar de un
espacio ne blanco entre el nombre de la columna y el nombre Alias.

Ejemplo:

SELECT Nro_Cta AS “Numero”, Nom_Cta AS “Nombre”


FROM Cuenta;

Operador de concatenación:

El operador de concatenación sirbe para mostrar dos o mas columnas diferentes como si
fuese una sola.. El operador de convatenación se reprecenta por dos barras verticales | |.

Ejemplo:

SELECT Nro_Cta | | Nom_Cta AS “Cliente”


FROM Cuenta;

El resultado de esta sentencia sería una columna de nombre “Cliente” con los datos númer
y nombre.

Cararacter String Literal


Sirve ara agregar algún dato tipo informativo a la consulta.

Ejemplo:

SELECT Nro_Cta | | Nom_Cta | | ‘ su saldo es’ | | Sal_Cta


FROM Cuenta;

El resultado será una sola columna con el número de cuenta el nobre de cuenta el string “su
saldo es” y el saldo de la cuenta.
SELECT Nro_Cta, Nom_Cta, ‘su saldo es’, Sla_Cta
FORM Cuenta:

Esta sentencia producira el mismo resultado con la diferencia que cada datos estara en una
columna diferente.

SELECT nro_cta | | nom_cta | | ‘su saldo es’ | | sal_cta “Datos de la cuenta”


FROM cuenta;

Esta sentencia prodicira una columna con el título “Datos de la cuenta” y los datos número,
nombre el string “su saldo es” y el saldo.

SELECT nro_cta | | nom_cta | | ‘su saldo es’ | | sal_cta AS “Datos de la cuenta”


FROM cuenta;

En este caso ocurre lo mismo solo que se utilizo la clausula AS.

Clausula DISTINCT:

La clausula DISTINCT se utiliza para eliminar resultados duplicados. Se aplica a todas las
colunas que formen parte de la sentencia SELECT.

Ejempo:

SELECT DISTINCT cod_loc


FROM cuenta;

Clausula WHERE:

La clausula WHERE se utiliza para restringir el número de filas a devolver por la consulta.

Ejemplo:

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
WHERE sal_cta > 1000;

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
WHERE nom_cta = ‘JUNA PEREZ’;

Tener en cuenta que la comparación de caracteres es CASE SENSITIVE, o sea no es lo


mismo ‘JUAN PEREZ’ que ‘juan perez’ o que ‘Juna Perez’.

Cuando se comparan caracteres, el valor a comparar con la información de la base de datos


debe estar dentro de comillas simples ‘’. Ejemplo: ‘JUAN PEREZ’ y no “JUAN PEREZ”
Operadores de comparación:

Se utilizan para restringir la cantidad de columnas a devolver por la consulta SELECT.


= Igual
> Mayor
>= Mayor igual
< Menor
<= Menot igual
<> Distinto

Otros operadores son:

BETWEEN ... AND ...


IN
LIKE
IS NULL

BETWEEN:
Se utiliza para evaluar rangos de valores.

Ejemplo:

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
WHERE sal_cta BETWEEN 1000 AND 5000;

Esta centencia devolvera todos las cuentas que tengan un saldo ente 1000 y 5000.
Tambien se pude especificar rangos de caracters y fechas.

Ejemplo:

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
WHERE nom_cta BETWEEN ‘AC’ AND ‘ZI’;

SELECT nro_cta, nom_cta, fec_alta


FROM cuenta
WHERE fec_alta BETWEEN ’01-JUN-04’ AND ’10-JUN-04’;

IN:
Se utiliza para recuperar información dentro de una lista específica de valores, la lista de
valores debe especificarce entre paréntesis (). La lista de valores pude corresponder a
cualquier tipo de datos, numéricos, fechas o caracter, etc. Los datos tipo caracter o fecha
deben especificarce entre comillas simples ‘’.
Ejemplo:

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
WHERE nro_cta IN (12, 1256, 3265);

Esta sentencia solo recupera las cuenta cuyo número sea 12, 1256 y 3265.

SELECT nro_cta, nom_cta, fec_alta


FROM cuenta
WHERE fec_alta IN (’01-JUN-04’, ’10-JUN-04’);

LIKE:

Se utiliza para recuperar información especificando solo una parte del caracter a buscar. El
caracter de búsqueda debe espesificarce entre comillas simples ‘’.

Utiliza los siguientes símbolos:

% reprecenta cualquier número de caracteres (cero o mas).


_ reprecenta un caracter simple.

Ejemplo:

SELECT nro_cta, nom_cta


FROM cuenta
WHERE nom_cta LIKE ‘_ _ A%’;

Esta consulta retornará todas las cuentas cuyo nombre tenga una letra A en la tercer
posición y cualquier número de caracteres a continuación de esta.

SELECT nro_cta, nom_cta


FROM cuenta
WHERE nom_cta LIKE ‘C%’;

Esta consulta retornará todas las cuentas cuyo nombre comiencen con la letra C y que
tengan cualquier número de caracteres a continuación de esta.

ESCAPE:

En el caso de que se necesite buscar informcación que puda contener el símbolo % o el


símbolo _ como parte del la descripción se debe usar la clausula ESCAPE.
Ejemplo:

Supongamos que se desea buscar todos los nombres de cuenta que contengan la cadena
A_B en alguna parte del nombre, para lograrlo se debe escribir la sentencia de la siguinete
manera:

SELECT nro_cta, nom_cta


FROM cuenta
WHERE nom_cta LIKE ‘%A\_B%’ ESCAPE ‘\’;

La clausula ESCAPE indica que la \ es el caracter de escape y que el carácter que se


encuentre dspues de el debe tomarce como un carácter común.

IS NULL:

Se utiliza para recuperar datos donde el valor de una columna sea NULL.

Ejemplo:

SELECT nro_cta, nom_cta


FROM cuenta
WHERE sal_cta IS NULL;

Esta centencia recuperará todas las cuenta cuyo saldo tenga un valor NULL.
Tener en centa que una columna con valor cero o una columna con caracteres blanco no son
tomados como valores NULL.

AND WHERE condición AND condición2


OR WHERE condición1 OR condición2
NOT WHERE NOT condición (IS NOT NULL, NOT LIKE, etc)

Reglas de precedencia:

Orden de evaluación:

Operadores Conectores
= <> NOT
> >= AND
< <= OR
BETWEEN
IN
LIKE
IS NULL

El orden de precedencia pude cambiarce utilizando paréntesis ().


ORDER BY:

Se utiliza para ordenar el resultado de una consulta. En esta clausula se pude especificar
tanto un nombre de columna como el alias de la misma o una expresión
Los valores NULL se muestran al final de los datos de la consulta a menos que se
especifique la clausula DESC.
También se pude ordenar por una columna que no aparece en la lista de columnas de la
sentencia SELECT.

ASC:

Se utiliza con la clausula ORDER BY y sirve para ordenar el resultado en forma


ascendente.

DESC:

Se utiliza con la clausula ORDER BY y sirve para ordenar el resultado en forma


descendente (por defecto los resultados de una consultan se ordenan en forma ascendente).

Ejemplos:

SELECT nro_cta, nom_cta


FROM cuenta
ORDER BY nom_cta;

SELECT nro_cta, nom_cta


FROM cuenta
ORDER BY nom_cta DESC;

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
ORDER BY sal_cta*10;

SELECT nro_cta, nom_cta AS “Nombre de la Cuenta”


FROM cuenta
ORDER BY “Nombre de la Cuenta”;

SELECT nro_cta, nom_cta AS Nombre


FROM cuenta
ORDER BY Nombre;

SELECT nom_cta, sal_cta


FROM cuenta
ORDER BY nro_cta;
ORDER BY (múltiples columnas):

Tambien se pude ordenar la consulta por mas de una columna. Las columnas deben
especificarce separadas por comas.

Ejemplos:

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
ORDER BY nro_cta, sal_cta;

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
ORDER BY nro_cta DESC, sal_cta DESC;

SELECT nro_cta, nom_cta, sal_cta


FROM cuenta
ORDER BY nro_cta, sal_cta DESC;

Tipos de datos:

Categorías:

 CHARACTER
 NUMBER
 DATETIME
 LOB
 ROWID
 RAW
 LONG RAW

CHARACTER:

Dentro de la categoría CHARACTER tenemos los siguientes tipo:

VARCHAR2 Mínimo 1 caracter Máxino 4000 caracteres


CHAR Mínimo 1 caracter Máxino 2000 caracteres
LONG Acepta hasta un máximo de 2 GB de información.

NUMBER(p,s):

NUMBER(presición, escala)

Presición:
Indica el total de dígitos del número, por ejemplo, si tenemos el número 33.14 la presición
es de 4 dígitos. El rango de la presisción es de 1 a 38. La presición por defecto es de 38.

Escala:
Indica el número de dígitos a la derecha del punto decimal, por ejemplo, si tenemos el
número 35.12546 la escala es de 6 dígitos. El rango de la escala es de -84 a 127.

DATETIME: AMPLIAR CONOCIMIENTOS

DATE:

Este tipo de dato es el que Oracle utiliza por defecto para trabajar con valores de fechas. EL
formato por defecto es DD-MON-YY.

Ejemplo:

31-DEC-04

TIMESTAMP:

Este tipo de datos permite trabajar con el AÑO, MES, DIA, HORA, MINUTOS,
SEGUNDOS y FRACCIÓN DE SEGUNDOS.

Sintaxis:

TIMESTAMP[(fractional_seconds_precision)]

fractional_seconds_precision = especifica el número de dígitos en la parte fraccional de los


segundos, pude ser cualquier valor entre cero y neuve (el valor por defecto es seis).

Ejemplo:

31-DEC-04 05:50:12.123

INTERVAL:

Se utiliza para saber la diferencia exacta entre entre dos fechas.

INTERVAL YEAR TO MONTH:

Se utiliza para recuperar intervalos entre años y meces.

INTERVAL DAY TO SECOND:

Se utiliza para recuperar intervalos en DIAS, HORAS, MINUTOS y SEGUNDOS.


TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE

LOB (Large Object):

CLOB Character Large Object


BLOB Bynary Large Object
BFILE Pemite acceder a grandes archivos localizados fuera de la base de datos Oracle

Este tipo de datos maneja grandes bolúmenes de información (hasta 4 GB) tales como
imágens, sonidos, etc.

Funciones SQL:

Existen dos tipos de funciones SQL:

 Funciones de filas simples


 Funciones de múltiples filas

Las funciones de fila simple producen un resultado por fila y las funciones de múltiples
filas producen un resultado por grupo de filas.

Las funciones de fila simple son:

 GENERAL Maneja consultas basadas en condiciones.


 CONVERSION Convierte un valor de un tipo de dato en otro tipo de dato.
 DATETIME Trabaja con valores fechas.
 CHARACTER Acepta argumentos caracter y retorna valores caracter.
 NUMBER Acepta argumentos numéricos y retorna valores numéricos.

CHARACTER FUNCTIONS:

LOWER:
Retrona un valor carácter en todo en minúsculas.

UPPER:
Retrona un valor carácter en todo en mayúsculas.

INITCAP:
Retrona un valor donde la primera letra de cada caracter es mayúscula.

CONCAT:
Une dos columnas (funciona de la misma manera que | | ).
SELECT CONTAC(nro_cta, nom_cta)
FROM cuenta;

SUBSTR:
Extrae una subcadena de una cadena.

LENGTH:
Retorna el número de caracteres de una columna o expersión.

INSTR:
Retorna el número de posición desde donde comienza el carácter especifciado.
Opcionalmente se le pude pasar dos argumentoas mas despues del nombre de columna y la
cadena a buscar, estos son posición desde donde comenzar a buscar y el número de
ocurrencia. Tener en cuenta que esta instrucción es CASE SENSITIVE, esto quiere decir
que no es lo mismo especificar ‘A’ que ‘a’.

Ejemplo:

SELECT INSTR(nombre,’ADRIAN’)
FROM cuenta;

Esta consulta retorna el número de posisión donde comineza la cadena ‘ADRIAN’ dentro
de la columna nombre.

LPAD:

SELECT LPAD(nombre_columna,nn,cc)
FROM nombre_tabla

LPAD retorna de nombre_columna tantos caracteres como se el especifique en nn. En el


caso de que nombre_columna sea mas menor a los especificado en nn, opcionalmente, se le
pude indicar que se rellenen los espacios sobrantes a la izquierda con el carácter
especificado en el argumento cc.

Ejemplo:

SELECT LPAD(nombre,20,’*’)
FROM cuentas;

Esta sentencia retornara los primeros 20 caracteres de la columna nombre, si la cadena


lamacenada en la columna nombre es menor a 20 rellenara los espacios sobrantes a la
izquierda con el carácter “*”.
RPAD:

SELECT RPAD(nombre_columna,nn,cc)
FROM nombre_tabla

RPAD retorna de nombre_columna tantos caracteres como se le especifique en el


argumento nn. En el caso de que nombre_columna sea menor a la cantidad de caracacteres
especificados en nn, opcionalmente, se puede completaran los espacios sobrantes a la
derecha con el carácter especifcado en cc.

Ejemplo:

SELECT RPAD(nombre,20,’*’)
FROM cuentas;

Esta sentencia retornara los primeros 20 caracteres de la columna nombre, si la cadena


lamacenada en la columna nombre es menor a 20 rellenara los espacios sobrantes a la
derecha con el carácter “*”.

TRIM:

Saca los caracteres especificados tanto de la iquierda como de la dercha de una cadena de
caracteres. Si no se especifica caracter a quitar por defecto se toma espacio ne blanco.

Ejemplo:

SELECT TRIM(nombre)
FROM cuentas;

Esta sentencias devolvera la columna nombre sin los epsacios en blanco de la deracha y de
las iquierda.

Otra forma de usar TRIM es:

SELECT TRIM( 0 FROM 0001235698000)


FROM dual;

El resultado sería 1235698.

REPLACE:

SELECT REPLACE(nombre_columna, caracter_buscar , caracter_reemplazar)


FROM nombre_tabla.
REPLACE remplaza en nombre_columna el caracter_buscar por el caracter_reemplazar
tantas veces como como aparezca.

Ejemplo:

SELECT REPLACE(nombre, ‘A’, ‘@’)


FROM cuentas;

Esta sentencia reeplazara todas las ‘A’ que se encuentren en nombre por el caracter ‘@’.

NUMBER FUNCTIONS:

ROUND:
Redondea un valor numérico según decimales epecificados.

Ejemplo:

SELECT ROUND(25.369 ,2)


FROM dual;

Resultado: 25.37

SELECT ROUND(25.36382 ,3)


FROM dual;

Resultado: 25.364

SELECT ROUND(25.6382 )
FROM dual;

Resultado: 26

SELECT ROUND(25.6382, 0)
FROM dual;

Resultado: 26

SELECT ROUND(25.6382, -1)


FROM dual;

Resultado: 30

TRUNC:
Similar a ROUND con la excepción de que no redonde el último valor si no que lo trunca.
Ejemplo:

SELECT TRUNC(25.369 ,2)


FROM dual;

Resultado: 25.36

SELECT TRUNC (25.36382 ,3)


FROM dual;

Resultado: 25.363

SELECT TRUNC (25.369 )


FROM dual;

Resultado: 25

SELECT TRUNC (25.36382 ,0)


FROM dual;

Resultado: 25

SELECT TRUNC (25.36382 ,-1)


FROM dual;

Resultado: 20

MOD:

MOD( m, n)

Retorna el resto de m / n.

Ejemplo:

SELECT MOD(4, 2)
FROM dual;

Resultado: 0

SELECT MOD(3, 2)
FROM dual;

Resultado: 1

DATE FUNCTIONS:
SYSDATE:
Retorna la fecha del día.

MONTHS_BETWEEN:
Retorna el número de meces existentes entre dos fechas.

MONTHS_BETWEEN(fecha1, fecha2)

ADD_MONTH:
Agrega meces a una fecha especificada.

ADD_MONTH(fecha1, cantidad_meces)

NEXT_DAY:
Retorna la próxima fecha del día especificado en nombre/número día partiendo de fecha1.

NEXT_DEY(fecha1, nombre/número día)

LAST_DAY:
Retorna el último día del mes de la fecha especificada.

LAST_DAY(fecha1)

ROUND:
Redondea la fecha especificada.

ROUND(fecha1, unidad)

Ejemplo:

ROUND(’25-JUL-01’, ’MONTH’)

Resultado: 01-AUG-01

ROUND(’25-JUL-99’, ’YEAR’)

Resultado: 01-AUG-00

TRUNC:
Trunca la fecha especificada.

TRUNC(fecha1, unidad)

Ejemplo:
TRUNC(’25-JUL-00’, ‘MONTH’)

Resultado: 01-JUL-00

TRUNC(’25-JUL-01’, ‘YEAR’)

Resultado: 01-JAN-01

FUNCIONES DE CONVERSIÓN DE TIPO DE DATOS

Oracle tiene la capasidad de convertir un tipo de dato en otro automáticamente dependiendo


del contexto en el que se encuente.

Ejemplo:

100 + ‘10’

En este caso oracle convertira el caracter ‘10’ en 10 por lo tanto el resultado de la expresión
será 110.

Tener en cuenta que este tipo de conversiónes se lleva a cabo solo si el tipo de dato en
válido para la expresión.

Ejemplo:

100 + ‘10A’

Esta expresión dara error por que el valor ‘10A’ no es un número válido.

TO_NUMBER:
Convierte un dato caracter en numérico.

TO_NUMBER(cadena, formato)

TO_DATE:
Convierte un dato caracter en fecha acorde al formato que se especifique.

TO_CHAR:
Convierte un dato numérico o fecha en caracter (VARCHAR2).

SELECT TO_CHAR(fecha1, formato)


FROM nombre_tabla;
Ejemplo:

SELECT TO_CHAR(31/12/2004, ‘DD-MM-YY’)


FROM dual;

Resultado: ’31-12-2004’

SELECT TO_CHAR(31/12/2004, ‘DD-MON-YY’)


FROM dual;

Resultado: ’31-DEC-2004’

Otros formatos para fechas:

YYYY
Año completo en números.

YEAR
Año completo en letras.

MM
Mes completo en números.

MONTH
Mes completo en letras.

MON
Primeros tres dígitos del mes en letras.

DY
Primeros tres dígitos del día en letras.

DAY
Día completo en letras.

Ejemplo:

SELECT TO_CHAR(31/12/2004, ‘DAY, DD “de” MONTH “de” YYYY’)


FROM dual;

Resultado: MARTES, 12 de OCTUBRE de 2004

Tener en cuenta que las palabras MONTH, YYYY, DAY son CASE SENSITIVE o se que
si escribimos la intrucción de la siguiente manera:
SELECT TO_CHAR(31/12/2004, ‘Day, DD “de” Month “de” YYYY’)
FROM dual;
El resultado será:

Resultado: Martes, 12 de Octubre de 2004

SELECT TO_CHAR(1000.00, ‘$9,999.99)


FROM dual

Resultado: $1,000.00

AMPLIAR CONOCIMIENTOS SOBRE ZONAS HORARIAS

DBTIMEZONE:
Retorna la zona horaria donde está situada la base de datos.

SESSIONTIMEZONE:
Retorna la zona horaria de la sesión en curso.

CURRENT_DATE:
Retorna la fecha de la sesión en curso (según zona horaria)

EXTRACT:
Extrae el mes o el año de un dato fecha.

SELECT EXTRACT( [YEAR][MONTH][DAY][HOUR][MINUTE][SECOND]


[TIMEZONE_HOUR][TIMEZONE_MINUTE]
[TIMEZONE_REGION][TIMEZONE_ABBR]
FROM [nombre_columna] [intervalo] )
FROM nombre_tabla

Ejemplo:

SELECT EXTRACT( YEAR FROM fecha_comp)


FROM comprob

Este ejemplo extrae el año de cada movimiento de la tabla comprob

TO_TIMESTAMP:
Convierte un valor tipo string en un dato tipo TIMESTAMP

TO_TIMESTAMP(string, formato, abreviatura_de_la_fecha)

TO_TIMESTAMP(‘31/12/2004’,’DD MM YYYY’)
TO_TIMESTAMP_TZ:
FROM_TZ

TO_YMINTERVAL:
Agrega años y/o meces a una fecha determinada.

Ejemplo:

SELECT fecha_com, fecha_comp + TO_YMINTERVAL(’01-02’)


FROM comprob

Esta sentencia le agrega 1 año y 2 meces a fecha_com

Resultado: 31-ENE-2003 31-MAR-2004

NVL:
Convierte un valor NULL en cualquier tipo de dato.

NVL(columna_null, tipo_dato)

NLV(importe, 0)
NVL(nombre,’PEPE’)

SELECT importe, importe + NVL(interes,0)


FROM comprob

Esta sentencia retorna el importe y el importe mas intereses de cada movimiento del
archivo comprob, como en algunos casos el dato interes puede ser NULL utiliza la función
NVL para que cuando esto suceda se tome el valor NULL como cero.

NVL2:

NVL2(expr1, expr2, expr3)

La función NVL2 evalúa expr1, si esta es NULL retorna expr2, caso contrario retorna
expr3.

Ejemplo:

SELECT NVL2(interes, ‘No Cobra Interes’, ‘Cobra Intereses’)


FROM comprob

NULLIF:

NULLIF(expr1, expr2)
Esta función compara expr1 con expr2 si ambas son iguales retorna un valor NULL. Si las
expreciones no son iguales la función retorna expr1.

COALESCE:

COALESCE(expr1,expr2,expr3,.....,exprnn)

Esta función compara todas las expereciones y retorna la primer expresión no NULL que
encuentre, por ejemplo, si expr1 es NULL y expr2 no, la función retorna expr2. Para que la
función retorne exprnn todas las demas expresiones deben ser NULL.

CASE (expresión):

CASE expr WHEN expr_comparacion1 THEN resultado1


[WHEN expr_comparacion2 THEN resultado2
WHEN expr_comparacionn THEN resultadon
ELSE else_expr ]
END

Esta expresión comprar expr con todos los WHEN cuando expr es igual a alguna
expr_comparación ejecuta resultado, en el caso de que expr no coincida on ninguna
expr_comparacion, retorna else_expr

Ejemplo:

SELECT nombre, apellido,


CASE saldo WHEN 100 THEN saldo*1.10
WHEN 200 THEN saldo*1.05
WHEN 300 THEN saldo*1.01
ELSE saldo END
AS “Saldo Actual”
FROM cuenta

En esete ejemplo si el saldo es mayor 100 le suma el 10 %, si es menor a 100 le suma el 5


% y si es igual a 100 le suma el 1 %. En el caso de que no se cumpla ninguna condición
retorna el valor de saldo sin sumar ningún porcentaje.

DECODE (función):
Similar a CASE.

DECODE( nombre_columna, search1, resultado1,


[search2, resultado2,]
[searchnn, resultadonn,]
[default] )

Ejemplo:

SELECT nombre, apellido,


DECODE(saldo, 100, saldo*1.10,
200, saldo*1.05,
300, saldo*1.01,
saldo)
AS “Saldo Actual”
FROM cuenta

MULTIPLES TABLAS

Tipo de uniones (JOIN):

Tipos de JOIN Oracle:

 Equijoin
 Nonequijoin
 Outer join
 Self join

Tipos de JOIN SQL 1999:

 Cross Join
 Natural join o Inner join
 Clausula USING
 Clausula ON
 Outer Join
o Left Outer Join
o Rigth Outer Join
o Full Outer Join

EQUIJOIN (Oracle):

Este tipo de JOIN se utiliza para mostrar datos de mas de una tabla donde el valor de una
columna se corresponde directamente con el valor de otra columna en otra tabla. Este tipo
de ralción se lleva a cabo con =.

Ejempos:

 Consulta de dos tablas:

SELECT [Link], [Link]


FROM cuentas, localidades
WHERE cuentas.cod_local = localidades.cod_local
AND [Link] BETWEEN 1000 AND 5000
ORDER BY [Link]

 Consulta de dos tablas utilizando prefijos:


SELECT [Link], [Link]
FROM cuentas c, localidades l
WHERE c.cod_local = l.cod_local
AND [Link] BETWEEN 1000 AND 5000
ORDER BY [Link]

 Consulta de tres tablas utilizando prefijos:

SELECT [Link], [Link], [Link]


FROM cuentas c, localidades l, departamentos d
WHERE c.cod_local = l.cod_local
AND l.cod_depart = d.cod_depart
ORDER BY [Link]

NONEQUIJOIN (Oracle):

Este tipo de JOIN se utiliza para mostrar datos de mas de una tabla donde el valor de una
columna se corresponde indirectamente con el/los valor/es de otra/s columna/s. Este tipo de
relación se lleva a cabo con BETWEEN, >=, <=, >, <.

Ejemplos:

 Utilizando BETWEEN:

SELECT [Link], [Link], [Link]


FROM stock s, depositos g
WHERE [Link] BETWEEN d.exi_min AND d.exi_max

 Utilizando los operadores >= y <=.

SELECT [Link], [Link], [Link]


FROM stock s, depositos g
WHERE [Link] >= d.exi_min
AND [Link] <= d.exi_max

 Combinando una EQUIJOIN y una NONEQUIJOIN utilizando mas de dos tablas:

SELECT [Link], [Link], [Link], [Link]


FROM stock s, grupos g, depositos d
WHERE s.cod_grupo = g.cod_grupo
AND [Link] BETWEEN d.exi_min AND d.exi_max

OUTER JOIN (Oracle):


Este tipo de JOIN se asegura de retornar todas las filas de una tabla, incluyendo aquellas
que no satisfagan la condición JOIN con otra tabla.

Ejemplo:

SELECT [Link], [Link], [Link]


FROM stock s, grupos g
WHERE s.cod_grupo (+) = g.cod_grupo

SELECT [Link], [Link], [Link]


FROM stock s, grupos g
WHERE s.cod_grupo = g.cod_grupo (+)

No se pude utilizar de esta manera:

SELECT [Link], [Link], [Link]


FROM stock s, grupos g
WHERE s.cod_grupo (+) = g.cod_grupo (+)

SELF JOIN (Oracle):

Este tipo de JOIN se utiliza para linkear valores de diferentes columnas dentro de una
misma tabla.

SELECT [Link]||’ Trabaja para ’||[Link]


FROM empleados e, empleados d
WHERE [Link] = d.nro_empleado

PRODUCTO CARTECIANO (Oracle):

Se llama así a los datos obtenidos de mas de una tabla sin especificar ninguna condición
JOIN.

En un producto cartecino, todas la filas de una tabla son unidas con todas las filas de la otra
tabla, tener en cuenta que esta no una manera recomendable de obtener datos de mas de una
tabla.

Ejemplo:

SELECT nombre, descripcion


FROM cuentas, localidades

CROSS JOYN (SQL 1999):


En SQL 1999 esto se lo conoce como producto cartecinao.

Ejemplo:

SELECT nombre, descripcion


FROM cuentas
CROSS JOIN localidades

NATURAL JOIN o INNER JOYN (SQL 1999):

Este tipo de JOIN se utiliza para mostrar datos de mas de una tabla donde el valor de una
columna se corresponde directamente con el valor de otra columna en otra tabla.

Ejemplo:

SELECT codigo, descripcion, cod_grupo, nombre_grupo


FROM stock
NATURAL JOIN grupos
WHERE cod_grupo IN(100, 102, 300)

CALUSULA USING (SQL 1999):

La clausula USING permite especificar la columna con la cual se realizara la union (JOIN).

Ejemplo:

SELECT [Link], [Link], [Link]


FROM stock s JOIN grupos g
USING(cod_grupo)
WHERE cod_grupo = 100

Clausula ON (SQL 1999):

Se utliza para separar la condición JOIN de la condición de busqueda en una SELF JOIN.

Ejemplo:

SELECT [Link]||’ Trabaja para ’||[Link]


FROM empleados e JOIN empleados d
ON [Link] = d.nro_empleado

 Utilizando mas de una tabla:

SELECT [Link], [Link], [Link]


FROM stock s JOIN depositos g
ON s.cod_deposito = g.cod_deposito
JOIN ubicacion u
ON g.cod_ubicacion = u.cod_ubicacion
OUTER JOIN (SQL 1999):

Este tipo de JOIN se asegura de retornar todas las filas de una tabla, incluyendo aquellas
que no satisfagan la condición JOIN con otra tabla.

Ejmeplos:

SELECT [Link], [Link]


FROM tabla1
RIGTH OUTER JOIN tabla2
ON [Link] = [Link]

SELECT [Link], [Link]


FROM tabla1
LEFT OUTER JOIN tabla2
ON [Link] = [Link]

SELECT [Link], [Link]


FROM tabla1
FULL OUTER JOIN tabla2
ON [Link] = [Link]

La union FULL OUTER JOIN se utiliza cuando queremos unir los resultados que darían en
froma separada una unión RIGT OUTER JOIN y una unión LEFT OUTER JOIN.

OPERADORES SET

Los operadores SET pueden ser utilizados combinar múltiples SELECT en una consulta

Tipos:
 UNION
 UNION ALL
 INTERSEC
 MINUS

UNION:
Retorna todas las filas de dos consultas removiendo filas duplicadas.

SELECT columna1, columna2


FROM tabla1
UNION
SELECT columna1, columna2
FROM tabla2

UNION ALL:
Retorna todas las filas de dos consultas sin remover filas duplicadas.

SELECT columna1, columna2


FROM tabla1
UNION ALL
SELECT columna1, columna2
FROM tabla2

INTERSEC:
Retorna todas las filas de valores comunes de las consultas (valores iguales).

SELECT columna1, columna2


FROM tabla1
INTERSEC
SELECT columna1, columna2
FROM tabla2

MINUS:
Retorna las filas de la primera cosnulta que no están precente en la segunda consulta.

SELECT columna1, columna2


FROM tabla1
MINUS
SELECT columna1, columna2
FROM tabla2

En el caso de que tengmos dos comsultas unidas y un tenga mas empresiones que otras, se
puden agregar expresiones extra para mejorar la performance.

Ejemplo:

SELECT numero, nombre, fecha_nacimiento


FROM empleados
UNION
SELECT numero, rango
FROM rangos

Como se ve la primer cosnulta tiene tres expresiones y la segunda consulta tiene solo dos
empresiones, para mejorar la preformance se pude utilizar una expresión extra:

SELECT numero, nombre, fecha_nacimiento


FROM empleados
UNION
SELECT numero, rango, TO_DATE(null)
FROM rangos

SELECT numero, nombre, TO_NUMBER(null) AS “Sueldo”


FROM empleados
UNION
SELECT numero, rango, suledo
FROM rangos
GROUP FUNCTION

Las funciones de grupo retornan un resultado de un grupo de filas.


Las funciones de grupo ignoral los valores NULL excepto la función COUNT().

AVG( nombre_columna ) = obtiene promedio (solo acepta números).

SUM( nombre_columna ) = suma (solo acepta números).

MIN( nombre_columna ) = Obtiene el valor mínimo de un grupo de números, fechas o


caracteres.

MAX( nombre_columna ) = Obtiene el valor máximo de un grupo de números ,fechas o


caracteres.

COUNT( nombre_columna) = Obtiene el número de filas en un grupo específico. Cuando


se especifica un nombre de columna o una expreción, la función ignora los valores NULL.
Se pude utilizar COUNT(*) para contar todas las filas incluyendo aquellas con valores
NULL.

Para que otras funciones de grupos tengan en cuenta los valores NULL se podría utilizar la
función combinada con NVL.

Ejemplo:

SELECT AVG(NVL(saldo, 0))


FROM cuentas

GROPU BY

Esta clausula se utiliza para organizar filas de una tabla en grupos.


Sintaxis:

SELECT columna1, GROPU_FUNCTION(columna)


FROM tabla
WHERE condición
GROPUP BY columna1
ORDER BY columna

La clausula GROPU BY no acepta nombre alias de columna para indicar especificar la


columna.

Ejemplo:

SELECT provincia, AVG(saldo)


FROM cuentas
GRUP BY provincia
ORDER BY AVG(importe)

Se puden especificar varias columnas en la clausula GROUP BY.

SELECT provincia, localidad, SUM(saldo)


FROM cuentas
GRUP BY provincia, localidad
ORDER BY SUM(importe)

HAVING

Esta clausula limita el resultado de un grupo y se debe situar inmediatamente despues del
GROUP BY. No se pude utilizar la clausula HAVING sin un GROUP BY.
No se puden utilizar alias de columna en la clausula HAVING.

Ejemplos:

SELECT localidad, AVG(saldo)


FROM cuentas
GRUP BY localidad
HAVING MAX(saldo) > 100000

SELECT localidad, AVG(saldo)


FROM cuentas
WHERE provincia = ‘CORDOBA’
GRUP BY localidad
HAVING AVG(saldo) > 10000

SELECT MAX(AVG(saldo))
FROM cuentas
GRUP BY localidad
Se pude ampliar la funcionalidades de la clausula GROUP BY usando operadores
adicionales.

ROLLUP:

La clausula ROLLUP genera subtotales y un total general por grupo de filas.

Ejemplo:

SELECT localidad, AVG(saldo)


FROM cuentas
GROUP BY ROLLUP(localidad)

Esta sentencia obtiene el saldo promedio agrupando por localidad, generando un subtotal
por cada localidad y un total general que se obtiene de la suma de los subtotales de cada
localidad.
CUBE:

Similar a la clausula ROLLUP.

Ejemplo:

SELECT localidad, provincia, AVG(saldo)


FROM cuentas
GROUP BY CUBE(localidad, provincia)

Esta sentencia obtiene el saldo promedio agrupando por localidad y provincia, generando
primero un subtotal por cada localidad, luego un subtotal por provincia y un total general
que se obtiene de la suma de los subtotales de cada localidad y subtotales de cada
provincia.

GROUPING AMPLIAR CONOCIMIENTOS

GROUPING SET AMPLIAR CONOCIMIENTOS

Genera multiples grupos

Ejemplo:

SELECT localidad, provincia, departamento, SUM(saldo)


FROM cuentas
GROUP BY GRUPING SETS
( (localidad, provincia, departamento), ( localidad, provincia),
(provincia, departamento))

Este ejemplo genera tres grupos, uno por localidad/provincia/departamento, otro por
localidad/provincia y otro por provincia/departamento.

Columnas compuestas

Ejemplo:

SELECT localidad, provincia, departamento, SUM(saldo)


FROM cuentas
GROUP BY ROLLUP( (localidad, (provincia, departamento) )

En esta consulta las columnas provincia y departamento son tratadas como una sola, a esto
se le llama columnas compuestas.

Sub consultas:

EXISTS
WITH
Sustitución Variables:

Es cuando se utiliza una variable para alamcenar un valor que luego será utilizado en la
cosnulta.

Ejemplo:

SELECT numero, nombre, saldo


FROM cuenta
WHERE numero = &nrocta

En este ejemplo nrocta es una variable que va a contener el número de cuenta a filtrar, la
cuál sera ingresada por el usuario. El símbolo & indica que es una varibale que será
sustituida por un valor.

Si se necesita utilizar un valor tipo carácter o fecha la varibale de sustitución debe estar
entre comillas simples (‘ ‘).

Ejemplos:

SELECT numero, nombre, saldo


FROM cuenta
WHERE nombre = ‘&nomcta’

SELECT numero, nombre, saldo


FROM cuenta
WHERE nombre = UPPER(‘&nomcta’)

SELECT numero, nombre, fecha


FROM cuenta
WHERE fecha = ‘&fecha_alta’

SELECT fecha, detalle, importe


FROM movmientos
WHERE fecha BETWEEN ‘&fecha_desde’ AND ‘&fecha_hasta’

Sustitución de columnas:

Similar a la sustitución por varibale, pero con la diferencia de que se pude sustituir parte los
nombres de columnas o clausulas.

Ejemplos:

SELECT fecha, detalle, &nombre_columna


FROM movmientos

&nombre_columna = importe
El resultado sería una consulta con las columnas fecha, detalle, importe.

SELECT fecha, detalle, importe


FROM movmientos
WHERE importe BETWEEN 1000 AND 10000
ORDER BY &columnas_orden

&columnas_orden = fecha

El resultado será una consulta ordenada por fecha.

SELECT fecha, detalle, importe


FROM movmientos
WHERE &condicion

&condicion = importe >= 1000

El resultado será una consulta que mostrará los movimientos con importe mayor o igual a
1000.

Incluso puede exisit mas de una sustitución:

SELECT fecha, detalle, &nombre_columna


FROM movmientos
WHERE &condicion
ORDER BY &columnas_orden

SELECT fecha, detalle, &nombre_columna


FROM &nombre_tabla
WHERE &condicion
ORDER BY &columnas_orden

En el único lugar donde no se puede utilizar sustitución es al inicio del la consulta.

Ejempo:

&sentencia_select
FROM cuentas

Esta intrucción no es válida.

Sustitución utilizando &&:

El && se utiliza cuando se necesita reutilizar el valor de &variable.

Ejemplo:

SELECT fecha, detalle, &&nombre_columna


FROM movimientos
WHERE fecha >= ‘&fecha1’
ORDER BY &nombre_columna

En este caso se utiliza nombre_columna en el SELECT y en el ORDER BY. Para poder


utilizarlo en el ORDER BY es necesario digitar && al inicio de la variable, pero solo la
priemra vez, luego en el ORDER BY se utiliza con un solo &.

Comando DEFINE y UNDEFINE:

DEFINE:

Se utiliza para definir una varibale.

Ejemplo:

DEFINE nombre_columna = dato

UNDEFINE:

Se utiliza para borrar una varibale definida.

Ejemplo:

UNDEFINE nombre_columna

Comandos de Formato: AMPLIAR CONOCIMIENTOS

COLUMN
BREAK
TTITLE
BTITLE

Sentencia CREATE TABALE:

La sentencia CREATE TABLE se utiliza para crear una nueva estruuctra de tabla dentro de la
base de datos.

Sintaxis:

CREATE TABLE [schema.] table (


Column_name datatype [default expr]
[column_constrain], ....
[column_constrain], ....)

Ejemplo:

CREATE TABLE contactos


(codigo NUMBER(5)
CONSTRAINT codigo_pk PRIMARY KEY,
nombre VARCHAR2(50)
CONSTRAINT nombre_nn NOT NULL,
email VARCHAR2(50)
CONSTRAINT email_uk UNIQUE,
Localidad_id NUMBER(5)
CONSTRAINT localidad_id_fk REFERENCES localidades(localidad_id))

Esta sentencia crea una tabla llamada localidades con el campo código y descripción.
También crea dos indices (CONSTRAINS) para cada campo.

PRIMARY KEY = no acepta valores NULL.


NOT NULL = no acepta valores NULL.
UNIQUE = acepta valores NULL.

Cuando se desea definir alguna de estas reglas para una combinación de columnas, esta
deben ser creadas a nivel tabla, los ejemplos de arriva crean las reglas a nivel columna.

Clausula AS:

Permite crear una nueva tabla en base a una existente (incluyendo las filas que econtenga).

CREATE TABLE localidades2


AS SELECT codigo, descripcion
FROM localidades
WHERE codigo >= 100

CREATE TABLE saldos


AS SELECT numero, nombre, saldo*12 saldo
FROM cuentas
WHERE saldo >= 100

Esta sentencia crea una tabla llamada saldos en base a algunas columnas de la tabla cuentas,
notece que cuando se va a crear una columna en base a una expresión (saldo*12) se debe
asignar si o si un nombre de alias para dicha columna (saldo) de lo contrario se producira
un error.

Consultas al diccionarios de datos:

USER_TABLES
USER_OBJECTS
USER _CATALOG

También podría gustarte