Oracle 1-Intro SQL
Oracle 1-Intro SQL
Contenido
1
Oracle 10g XE y Oracle Developer Introduccin o Descarga Instalacin o Utilizacin o SQL bsico a Introduccin a SQL o Creacin de una BD o Manipulacin de datos o Consultas a la BD Ms SQL a Vistas Secuencias Sinnimos o
Jorge Maturana Gu Oracle 10g - Intro & SQL a 2
Introduccin o
Oracle 10g Express Edition es una edicin gratuita (pero limitada) o del DBMS Oracle, liberada el ao 2005 con propsitos n o promocionales y educativos. Oracle funciona en un esquema cliente-servidor :
El Servidor es el programa que matiene la base de datos funcionando. El Cliente es un programa que se conecta al servidor desde el mismo computador o uno diferente. No se necesita instalar expresamente el programa cliente en el computador en donde est instalado el servidor a
Oracle Developer es un entorno de desarrollo integrado (IDE) para trabajar en bases de datos. Es liberado gratuitamente Oracle Developer provee un entorno grco para simplicar y a aumentar la productividad en tareas de desarrollo de BDs .
Jorge Maturana
Descarga
Descarga de Oracle 10g XE Existen versiones para Linux y Windows, las cuales pueden ser descargadas desde : http ://www.oracle.com/technetwork/database/expressedition/database10gxe-459378.html Se recomienda descargar la version Universal (mayor soporte para caracteres especiales) La documentacin est en l o a nea y puede ser hallada en http ://www.oracle.com/pls/xe102/homepage Descarga de Oracle Developer Existen versiones para Linux, MacOSX y Windows, que pueden ser descargadas desde http ://www.oracle.com/technology/products/database/sql developer/ en donde tambin se encuentra la documentacin . e o
Jorge Maturana
Instalacin propiamente tal, en donde se copian los archivos al o computador, y Conguracin, que permite denir parmetros bsicos, tales como o a a los puertos y la contrasea del administrador. n
Instruciones de instalacin o La instalacin puede variar dependiendo el sistema operativo que se est o e utilizando. Para instalar (y congurar) Oracle en su computador, siga las instrucciones en la seccin Installation Guide de la documentacin. o o Una vez instalado Oracle, se puede acceder a la interfaz de administracin o (basada en web) mediante la opcin Go to Database Home Page en el o men del sistema operativo. El usuario administrador se llama SYSTEM, u y la password es la que se especic durante la conguracin . o o
Jorge Maturana
Jorge Maturana
La interfaz de administracin presenta 4 temas principales : o Administration en donde se administran los usuarios, se gestiona la memoria, y se monitororea la actividad del DBMS, entre otros. Object Browser, en donde se administran las tablas, vistas, ndices, funciones, etc. SQL, en donde se ingresan comandos SQL y PL/SQL, que permiten administrar la estructura y datos de la BD. Utilities, en donde se generan reportes, y se cargan/descargan datos masivamente .
Jorge Maturana Gu Oracle 10g - Intro & SQL a 7
Creacin de un usuario o
En Oracle, las bases de de datos (tambin llamada esquema) y los e usuarios estn en relacin 1 :1. a o Oracle trae un usuario y tablas con datos de prueba. El usuario, llamado HR, debe desbloquearse. Para hacer sto, vamos al men e u Administration Database Users y hacemos click en el cono que muestra el nombre del usuario. Asignar la password a este usuario tipendola dos veces, y cambiar a su status a Unlocked. Los usuarios poseen privilegios, que son acciones que pueden realizar (crear tablas o slo consultarlas, o conectarse o no a la BD, etc.). Vericar que el usuario HR posee los priviliegios CONNECT y RESOURCE. Para nalizar con los cambios, hacer click en el botn Alter User o Para crear un nuevo usuario, ir a Administration Database Users y hacer click en Create. La interfaz es la misma que usamos para desbloquear a HR. Para ms detalles, consulte la Getting Started Guide en la a documentacin . o
Jorge Maturana Gu Oracle 10g - Intro & SQL a 8
Introduccin a SQL o
SQL (Structured Query Language), es un lenguaje creado para manipular BD relacionales a principios de los 70s. Es el estndar de a facto, presentando ligeras variaciones de un RDBMS a otro. Es un lenguaje de cuarta generacin que permite, entre otros : o
crear bases de datos y tablas insertar y modicar datos realizar bsquedas de registros u
Un usuario puede trabajar sobre la BD de varias formas : Mediante la interfaz web : ir a la pgina de administracin de Oracle a o (desde men del sistema operativo), logearse e ir al menu SQL u SQL Commands. Los comandos se deben tipear en la ventana, y ejecutarse con el botn Run. o Desde SQL*Plus : desde la l nea de comandos del sistema operativo. Mediante Oracle Developer u otro IDE
Jorge Maturana
10
Creacin de una BD o
Una base de datos es un conjunto de informacin (tablas, vistas, o etc.) Los datos tienen tipos. Los principales son :
varchar2(n) : alfanumrico de tamao variable, hasta 4000 bytes. n : e n
largo mximo a
char(n) : alfanumrico de tamao jo. n : largo e n number(n,m) : entero o decimal. n : numero de d gitos, m : decimales BINARY FLOAT y BINARY DOUBLE : otantes de mayor precisin o date : fecha y hora timestamp : fecha y hora, con mayor precisin o clob : (Character Large OBject) alfanumrico de mayor capacidad e
que varchar2, hasta 4GB blob : (Binary Large OBject) objeto (video, imagen u otro)
Jorge Maturana
11
Creacin de tablas o
Ejemplo de tabla
-- este es un comentario CREATE TABLE Alumno ( id number(8) not null, -nombre varchar2(20) not null, -apellido varchar2(30) not null, -nacimiento date, -foto blob -);
entero de 8 dgitos texto de hasta 20 caracteres texto de hasta 30 caracteres fecha de nacimiento imagen jpeg
la (row) = registro (record) = tupla (tuple). campo (eld) = interseccin de columna y la. o Nombre de tabla : hasta 30 caracteres
Jorge Maturana
12
Integridad de datos
Se pueden denir restricciones que los datos deben respetar, para implementar reglas de negocio :
not null
: impide que existan campos vac os. : valor por defecto para un campo
default v check
: verica cumplimiento de una condicin o : impide la repeticin de un valor en una columna o : identicador de la tupla (unico y no nulo) : valor de un campo debe existir en otra tabla
unique
Por defecto, la violacin arroja un error y la operacin es anulada. En o o general, las restricciones pueden habilitarse o deshabilitarse.
Jorge Maturana
13
Integridad de datos
Al eliminar o modicar la tupla a la cual una clave fornea hace a referencia, se pueden tomar 3 acciones con la tupla que la referencia : : impide la eliminacin de la tupla en la otra o o tabla mientras existan referencias a ella. Esta es la opcin por defecto
ON DELETE NO ACTION ON DELETE CASCADE
: elimina las tuplas que hacen referencia a ella : setea a null los campos de la clave fornea a
Oracle no implementa on delete set default. Tampoco implementa on update, pues se asume que una FK apunta a una PK de otra tabla, la cual no deber cambiar nunca (salvo problemas de diseo) a n
Jorge Maturana
14
Integridad de datos
Ejemplo de integridad de datos
CREATE TABLE id alumno RUT nombre apellido sexo nacimiento semestre region id carrera constraint constraint constraint constraint ); Alumno ( number(8), varchar2(10), varchar2(20) not null, varchar2(30) not null, char(1) not null, date, number(2) default 1, number(2), char(4), al pk primary key (id alumno), num region check (region < 16), sex hm check (sexo in (H,M)), carrera fk foreign key (id carrera) references carrera (id carrera) on delete no action
Modicacin de tabla o
Agregar, modicar o eliminar columnas Agregar columna
ALTER TABLE tabla ADD (definicin de columna); o Ejemplo : ALTER TABLE Alumno ADD (email VARCHAR2(30) NULL);
Modicar columna
ALTER TABLE tabla MODIFY (definicin de columna); o Ejemplo : ALTER TABLE Alumno MODIFY (email VARCHAR2(40) NOT NULL);
Eliminar columna
ALTER TABLE tabla DROP COLUMN columna;
Jorge Maturana
16
Modicacin de restricciones o
Agregar, modicar o eliminar restricciones Agregar clave primaria
ALTER TABLE Alumno ADD CONSTRAINT al pk PRIMARY KEY (id alumno);
Jorge Maturana
18
Indices
Los ndices permiten acelerar las bsquedas sobre una columna. Se u asignan a las ms utilizadas, t a picamente a las que contienen claves primarias. Operaciones con ndices Crear un ndice
CREATE INDEX nombre ndice ON tabla (columna);
Renombrar un ndice
ALTER INDEX nombre actual RENAME TO nuevo nombre;
Eliminar un ndice
DROP INDEX nombre ndice;
Jorge Maturana
19
Jorge Maturana
20
Agregar registros
Sintaxis de INSERT Cuando se insertan todos los campos
INSERT INTO tabla VALUES (valor1, valor2, ...)
Para especicar expl citamente las columnas (al resto se asigna NULL) INSERT INTO tabla (columna1, columna2, ...) VALUES (valor1, valor2, ...) Nmeros se ingresan directamente : 3.1415, 1234 u Textos se ingresan entre comillas simples : John Black Fechas se ingresan con formato 02-AUG-2007 o 2-AUG-07 Para otros formatos de fecha se usa la funcion TO DATE(dato,formato) Ejemplo de TO DATE
TO DATE(25/12/2005 15:45, DD/MM/YYYY HH24:MI)
Jorge Maturana
21
Sintaxis de DELETE DELETE tabla WHERE condicin ; o Ejemplo : eliminar empleados con ID 10 u 11
DELETE FROM employees WHERE employee id = 10 OR employee id = 11;
Jorge Maturana
22
Consultas a la BD
La posibilidad de hacer consultas espec cas a la BD es uno de sus aspectos ms utiles a A continuacin veremos las queries (consultas) ms comunes en o a SQL. Para ello, utilizaremos el usuario de prueba HR y las tablas a las cuales este usuario tiene acceso. La base de datos de muestra HR posee datos relacionados con un departamento de recursos humanos. Se pueden ver las tablas logendose como HR en la interfaz web y haciendo click en Object a Browser. Utilizaremos estas tablas en los siguientes ejemplos
Jorge Maturana
23
HR Schema
Jorge Maturana
24
Consultas a la BD
El comando SELECT permite obtener los registros que cumplan con cierta condicin. o Ejemplos de SELECT sobre una tabla Mostrar todos los todos registros de la tabla EMPLOYEES
SELECT * FROM EMPLOYEES;
Jorge Maturana
25
Consultas a la BD
La clusula WHERE puede ser utilizada de diversas maneras a
=, !=, <>
: igual, diferente, diferente : mayor, mayor o igual, menor, menor o igual : rango de valores
: bsqueda con comodines : % (uno o ms caracteres) o (uno) u a : pertenencia o no a un conjunto de valores : si es o no null
IN ( ), NOT IN ( )
Jorge Maturana
26
Join
JOIN
consulta sobre varias tablas Cross : entre ms de una tabla, retorna todas las combinaciones a Inner : entre ms de una tabla, se retornan slo las que calcen a o entre ellas Self : de una tabla consigo misma Outer : Extiende Inner join, incluyendo las que no calzan.
Jorge Maturana
27
Cross Join
Jorge Maturana
28
Inner Join
Inner JOIN : Retorna slo las relacionadas o
SELECT c.nombre, v.cantidad FROM CLIENTES c, VENTAS v WHERE c.id cliente = v.id cliente;
El uso de alias no es obligatorio cuando no hay ambiguedad, pero es una buena prctica a
Jorge Maturana
29
Self Join
Un tipo particular de join es el self join, que usa slo una tabla o Self Join : retorna lista de empleados y sus jefes
SELECT e.last name, j.last name FROM employees e, employees j WHERE e.manager id = j.employee id;
Esta query trata una tabla como si fueran 2 : una de empleados, referenciada por el alias e, y otra de jefes, referenciada por el alias j Dado que se debe hacer un match entre campos con distinto nombre, se deben usar sintaxis expl citas
Jorge Maturana
30
Outer Join
A veces es necesario extender el inner join para mostrar campos que no hacen match Ejemplos Listar clientes, incluso quienes no han comprado :
SELECT c.nombre, v.cantidad FROM clientes c, ventas v WHERE c.id cliente = v.id cliente (+);
La part cula (+) se pone en el lado de la restriccin en donde se o permiten datos sin match hay sintaxis ANSI para outer joins (LEFT|RIGHT|FULL OUTER JOIN), que no veremos ac a
Jorge Maturana Gu Oracle 10g - Intro & SQL a 31
Subqueries
Dos o ms queries pueden anidarse, de manera de usar el retorno del a query interno para alimentar el externo Ejemplo Suponga que en el ejemplo [CLIENTES-VENTAS-PRODUCTOS] existe adems a una tabla SOCIOS con un campo nombre. Una query que lista los socios que son tambin clientes podr ser : e a
SELECT nombre FROM CLIENTES WHERE nombre IN ( SELECT nombre FROM SOCIOS);
Se asume que los nombres estn escritos de la misma manera en a ambas tablas Note que no hay ambiguedad entre los campos nombre, pues se trata de queries independientes
Jorge Maturana Gu Oracle 10g - Intro & SQL a 32
Pseudocolumnas
Las pseudocolumnas son columnas que se construyen durante la consulta, pero no existen en la BD.
ROWNUM, SYSDATE
y USER
ROWNUM limita el nmero de las en la respuesta u SELECT * FROM employees WHERE ROWNUM < 5; SYSDATE retorna la fecha actual (DUAL es una tabla dummy) SELECT SYSDATE FROM DUAL; SELECT SYSTIMESTAMP FROM DUAL; /*mayor precisin*/ o USER retorna el usuario SELECT USER FROM DUAL;
conectado actualmente
Jorge Maturana
33
Pseudocolumnas
Operaciones aritmticas e Realizan clculos aritmticos con valores de columnas a e
SELECT TRUNC((salary /12)*0.5,0) bono navidad from employees; TRUNC(columna,n) ROUND(columna,n) MOD(columna,n)
Jorge Maturana
34
Pseudocolumnas
Funciones de texto Realizan operaciones sobre campos de texto
SELECT UPPER(last name) FROM employees; UPPER LOWER
INITCAP
LTRIM elimina espacios a la iquierda, RTRIM a la derecha, TRIM de ambos RPAD(columna,n,c) SUBSTR(columna,n,m) LENGTH(columna)
completa hasta posicin n-sima con caracter c o e extrae los caracteres de la posicin n hasta m o reemplaza el string n por m
REPLACE(columna, n, m)
Jorge Maturana
35
Pseudocolumnas
Funciones de fecha Realizan operaciones sobre campos de fecha
SELECT employee id, TRUNC(MONTHS BETWEEN(SYSDATE, HIRE DATE)) "meses empleado" FROM employees; MONTHS BETWEEN(fecha1,fecha2) EXTRACT(YEAR FROM columna) MONTH) ADD MONTHS(columna, n) LAST DAY(columna)
Jorge Maturana
36
Pseudocolumnas
Funciones de conversin o Realizan conversiones entre distintos tipos de dato
SELECT TO CHAR(SYSDATE, HH24:MI, DD MON YYYY AD) Ahora FROM DUAL; TO CHAR(columna, formato) TO NUMBER(texto) TO DATE(texto)
transforma a fecha
TO TIMESTAMP(texto)
Jorge Maturana
37
Pseudocolumnas
Funciones de agregacin o Retornan resultados de un grupo de las Cuenta nmero de las u
SELECT COUNT(*) FROM employees;
Cuenta distintos
SELECT COUNT(DISTINCT department id) FROM employees;
Jorge Maturana
38
Vistas
Una vista es una consulta almacenada a la cual se puede tratar como una tabla. pueden contener un subconjunto de columnas o registros, de una o ms tablas a simplican el acceso a tablas proveen abstraccin a consultas complejas y recurrentes o ocupan poco espacio (no contienen datos) pueden anidarse (crear vistas basadas en otras vistas)
Jorge Maturana
39
Vistas
Crear una vista
CREATE OR REPLACE VIEW nombre vista AS query;
Ejemplo :
CREATE OR REPLACE VIEW mi vista AS SELECT e.employee id, e.first name, e.last name, d.department name FROM employees e JOIN departments d ON d.manager id = e.employee id;
Jorge Maturana
40
Secuencias
Las secuencias generan un conjunto de valores unicos de manera secuencial. Se usan principalmente para asignarlas a claves primarias. Crear una secuencia CREATE SEQUENCE nombre secuencia START WITH
valor inicial INCREMENT BY n;
Jorge Maturana
41
Sinnimos o
Los sinnimos son alias para elementos de la BD. Ayudan a o simplicar la consulta (por ejemplo, tipeando crr en vez de carrera). Si algn elemento cambia de nombre en la BD, se puede usar un u sinnimo para no tener que modicar las consultas existentes. o Se pueden crear sinnimos para tablas, vistas, secuencias, o procedimientos, funciones, paquetes u otro sinnimo o Crear un sinnimo o
CREATE SYNONYM nombre sinnimo for elemento referenciado; o
Jorge Maturana
42