You are on page 1of 18

05/03/13

Descripcin : Instalacin de Oracle. (Oracle)

1 - Instalacin de Oracle.

Para este curso utilizaremos la versin Oracle 10g XE (Express Edition para Windows) Para descargar el mismo debemos ingresar al sitio de Oracle: 1. Oracle 10g XE 2. Para permitir descargarlo del sitio seleccionamos con el mouse el control Radio "Accept License Agreement". 3. Luego seleccionamos la versin "Oracle Database 10g Express Edition (Universal)" (OracleXEUniv.exe (216,933,372 bytes)) 4. El sitio de Oracle requiere que nos registremos. Debemos seleccionar "sign up now" y luego "Create your Oracle account now", es decir crear una cuenta Oracle. Luego de habernos registrado podemos descargar el motor de base de datos Oracle. 5. El paso siguiente es instalar el gestor de base de datos propiamente dicho. Ejecutamos el archivo que acabamos de descargar: OracleXEUniv.exe Debemos ir presionando el botn "siguiente" en el asistente de instalacin, salvo cuando nos pide ingresar la contrasea de la base de datos, es importante no olvidar dicha clave. Luego de algunos minutos ya tenemos instalado el gestor de bases de datos Oracle en nuestro equipo. La segunda aplicacin que instalaremos ser el "Oracle SQL Developer". Es un entorno visual que nos permite comunicar con nuestro gestor de base de datos Oracle. Desde este entorno aprenderemos a administrar una base de datos Oracle. 1. 2. 3. 4. Debemos ingresar a la siguiente pgina para descargar el Oracle SQL Developer Aceptamos la licencia y seleccionamos "Oracle SQL Developer for Windows (JDK1.5.0_06 is bundled in this zip) Luego de descargar el archivo procedemos a descomprimir el archivo zip en una carpeta (este programa no requiere instalacin) En la carpeta donde descomprimimos debemos ejecutar el archivo sqldeveloper.exe

05/03/13

Descripcin : Crear tablas (create table - describe - all_tables - drop table) (Oracle)

2 - Crear tablas (create table - describe - all_tables - drop table)

Existen varios objetos de base de datos: tablas, constraints (restricciones), vistas, secuencias, ndices, agrupamientos (clusters), disparadores (triggers), instantaneas (snapshots), procedimientos, funciones, paquetes, sinnimos, usuarios, perfiles, privilegios, roles, etc. Los primeros objetos que veremos son tablas. Una base de datos almacena su informacin en tablas, que es la unidad bsica de almacenamiento. Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un campo (o atributo) y cada fila, un registro. La interseccin de una columna con una fila, contiene un dato especfico, un solo valor. Cada registro contiene un dato por cada columna de la tabla. Cada campo (columna) debe tener un nombre. El nombre del campo hace referencia a la informacin que almacenar. Cada campo (columna) tambin debe definir el tipo de dato que almacenar. Las tablas forman parte de una base de datos. Nosotros trabajaremos con la base de datos ya creada. Para ver las tablas existentes tipeamos: select *from all_tables;

Aparece una tabla que nos muestra en cada fila, los datos de una tabla especfica; en la columna "TABLE_NAME" aparece el nombre de cada tabla existente. Al crear una tabla debemos resolver qu campos (columnas) tendr y que tipo de datos almacenarn cada uno de ellos, es decir, su estructura. La sintaxis bsica y general para crear una tabla es la siguiente: create table NOMBRETABLA( NOMBRECAMPO1 TIPODEDATO, ... NOMBRECAMPON TIPODEDATO ); La tabla debe ser definida con un nombre que la identifique y con el cual accederemos a ella. Creamos una tabla llamada "usuarios" y entre parntesis definimos los campos y sus tipos: create table usuarios( nombre varchar2(30), clave varchar2(10) ); Cada campo con su tipo debe separarse con comas de los siguientes, excepto el ltimo. Cuando se crea una tabla debemos indicar su nombre y definir al menos un campo con su tipo de dato. En esta tabla "usuarios" definimos 2 campos: - nombre: que contendr una cadena de caracteres de 30 caracteres de longitud, que almacenar el nombre de usuario y - clave: otra cadena de caracteres de 10 de longitud, que guardar la clave de cada usuario. Cada usuario ocupar un registro de esta tabla, con su respectivo nombre y clave. Para nombres de tablas, se puede utilizar cualquier caracter permitido para nombres de directorios, el primero debe ser un caracter alfabtico y no puede contener espacios. La longitud mxima es de 30 caracteres. Si intentamos crear una tabla con un nombre ya existente (existe otra tabla con ese nombre), mostrar un mensaje indicando que a tal nombre ya lo est utilizando otro objeto y la sentencia no se ejecutar. Para ver la estructura de una tabla usamos el comando "describe" junto al nombre de la tabla: describe usuarios;

Aparece la siguiente informacin: Name Null Type ------------------------------NOMBRE VARCHAR2(30) CLAVE VARCHAR2(10) Esta es la estructura de la tabla "usuarios"; nos muestra cada campo, su tipo y longitud y otros valores que no analizaremos por el momento.

05/03/13

Descripcin : Crear tablas (create table - describe - all_tables - drop table) (Oracle)

Para eliminar una tabla usamos "drop table" junto al nombre de la tabla a eliminar: drop table NOMBRETABLA;

En el siguiente ejemplo eliminamos la tabla "usuarios": drop table usuarios;

Si intentamos eliminar una tabla que no existe, aparece un mensaje de error indicando tal situacin y la sentencia no se ejecuta.

05/03/13

Ejercicios resueltos : Crear tablas (create table - describe - all_tables - drop table)(Oracle)

2 - Crear tablas (create table - describe - all_tables - drop table)


Problema: Para probar todos los ejercicios resueltos y propuestos debemos ingresar al sqldeveloper.exe y luego en el entorno crear una nueva conexin: 1. Elegimos File -> New y seleccionamos "New Connection" y presionamos el botn "Aceptar". 2. Ingresamos los campos Connection Name (por ejemplo ingresamos "prueba"), en el campo Username ingresamos el usuario SYSTEM y por ltimo en el campo Password ingresamos la clave que creamos al instalar Oracle. 3. Luego en la ventana que aparece el mansaje "Enter SQL Statement" debemos tipear los comandos SQL y mediante el primer botn "triangulo verde" ejecutaremos el comando SQL donde se encuentra el cursos (tambin podemos ejecutar todos los comando SQL mediante el segundo botn. Veamos las tablas existentes: s e l e c t* f r o ma l l _ t a b l e s ; Aparece una tabla que nos muestra todas las tablas; la columna "TABLE_NAME" contiene el nombre de cada tabla. Vamos a crear una tabla denominada "usuarios". En primer lugar vamos a eliminar la tabla "usuarios" porque si ya existe no podremos crear otra con el mismo nombre. d r o pt a b l eu s u a r i o s ; Si la tabla no existe aparecer un mensaje indicando tal situacin. Ahora si creamos una tabla llamada "usuarios" con dos campos: - nombre: cadena de caracteres que no supere los 30 caracteres y - clave: cadena que no supere los 10 caracteres: c r e a t et a b l eU S U A R I O S ( n o m b r ev a r c h a r 2 ( 3 0 ) , c l a v ev a r c h a r 2 ( 1 0 ) ) ; Aparece un mensaje que indica que la sentencia "create table" ha sido procesada. Cada usuario ocupar un registro de esta tabla, con su respectivo nombre y clave. Podemos verificar que se ha creado: s e l e c t* f r o ma l l _ t a b l e s ; La tabla "usuarios" Debe aparecer en la lista. Veamos la estructura de la tabla "usuarios": d e s c r i b eu s u a r i o s ; Aparece la siguiente informacin: N a m e N u l l T y p e N O M B R E V A R C H A R 2 ( 3 0 ) C L A V E V A R C H A R 2 ( 1 0 ) Nos informa que la tabla "usuarios" tiene 2 campos, el campo "nombre" de tipo "varchar2" de 30 caracteres de longitud y el campo "clave", de tipo "varchar2" de 10 caracteres de longitud. La columna "Null" aparece vaca y la explicaremos ms adelante. Intentemos crear una tabla con el mismo nombre, mostrar un mensaje indicando que ya hay un objeto llamado "usuarios" y la sentencia no se ejecutar: c r e a t et a b l eu s u a r i o s( n o m b r ev a r c h a r ( 3 0 ) , c l a v ev a r c h a r ( 1 0 ) ) ; Eliminemos la tabla: d r o pt a b l eu s u a r i o s ;

05/03/13

Descripcin : Ingresar registros (insert into- select) (Oracle)

3 - Ingresar registros (insert into- select)

Un registro es una fila de la tabla que contiene los datos propiamente dichos. Cada registro tiene un dato por cada columna (campo). Nuestra tabla "usuarios" consta de 2 campos, "nombre" y "clave". Al ingresar los datos de cada registro debe tenerse en cuenta la cantidad y el orden de los campos. La sintaxis bsica y general es la siguiente: insert into NOMBRETABLA (NOMBRECAMPO1, ..., values (VALORCAMPO1, ..., VALORCAMPOn); Usamos "insert into", luego el nombre de la tabla, detallamos los nombres de los campos entre parntesis y separados por comas y luego de la clusula "values" colocamos los valores para cada campo, tambin entre parntesis y separados por comas. En el siguiente ejemplo se agrega un registro a la tabla "usuarios", en el campo "nombre" se almacenar "Mariano" y en el campo "clave" se guardar "payaso": insert into usuarios (nombre, values ('Mariano','payaso'); clave)

NOMBREC

Luego de cada insercin aparece un mensaje indicando la cantidad de registros ingresados. Note que los datos ingresados, como corresponden a cadenas de caracteres se colocan entre comillas simples. Para ver los registros de una tabla usamos "select": select *from usuarios;

El comando "select" recupera los registros de una tabla. Con el asterisco indicamos que muestre todos los campos de la tabla "usuarios". Aparece la tabla, sus campos y registros ingresados; si no tiene registros, apareceran solamente los campos y la tabla vaca). Es importante ingresar los valores en el mismo orden en que se nombran los campos: En el siguiente ejemplo se lista primero el campo "clave" y luego el campo "nombre" por eso, los valores tambin se colocan en ese orden: insert into usuarios (clave, values ('River','Juan'); nombre)

Si ingresamos los datos en un orden distinto al orden en que se nombraron los campos, no aparece un mensaje de error y los datos se guardan de modo incorrecto. En el siguiente ejemplo se colocan los valores en distinto orden en que se nombran los campos, el valor de la clave (la cadena "Boca") se guardar en el campo "nombre" y el valor del nombre (la cadena "Luis") en el campo "clave": insert into usuarios (nombre,clave) values ('Boca','Luis');

05/03/13

Ejercicios resueltos : Ingresar registros (insert into- select)(Oracle)

3 - Ingresar registros (insert into- select)

Problema: Vemos si la tabla "usuarios" existe: select *from all_tables;

Si existe la eliminamos: drop table usuarios;

Creamos una nueva tabla denominada "usuarios" con los siguientes campos: create table usuarios( nombre varchar2(30), clave varchar2(10) ); Veamos si tiene registros: select *from usuarios;

No tiene, la tabla aparece vaca, solamente vemos las columnas que muestran los nombres de sus campos. Agregamos un registro a la tabla: insert into usuarios (nombre, values ('Mariano','payaso'); Un mensaje indica que se ingreso una fila. Veamos nuevamente los registros de la tabla "usuarios": select *from usuarios; clave)

Aparece la siguiente tabla: NOMBRE CLAVE ------------Mariano payaso La tabla contiene un solo registro, el ingresado recientemente. Ingresamos otro registro, esta vez cambiamos el orden de los campos: insert values into usuarios (clave, ('River','Juan'); nombre)

Ingresamos los datos en un orden distinto al orden en que se nombran los campos, no aparece un mensaje de error y los datos se guardan de modo incorrecto: insert into usuarios (nombre,clave) values ('Boca','Luis'); Veamos cmo se almacenaron los datos: select *from usuarios;

Aparece la siguiente tabla: NOMBRE CLAVE ------------Mariano payaso Juan River Boca Luis La tabla tiene 3 registros. Note que la clave "Boca" se guard en el campo "nombre" y el nombre de usuario "Luis" en el campo "clave".

05/03/13

Descripcin : Tipos de datos (Oracle)

4 - Tipos de datos

Ya explicamos que al crear una tabla debemos resolver qu campos (columnas) tendr y que tipo de datos almacenar cada uno de ellos, es decir, su estructura. El tipo de dato especifica el tipo de informacin que puede guardar un campo: caracteres, nmeros, etc. Estos son algunos tipos de datos bsicos de Oracle (posteriormente veremos otros y con ms detalle): - varchar2: se emplea para almacenar cadenas de caracteres. Una cadena es una secuencia de caracteres. Se coloca entre comillas simples; ejemplo: 'Hola', 'Juan Perez', 'Colon 123'. Este tipo de dato definen una cadena de longitud variable en la cual determinamos el mximo de caracteres entre parntesis. Puede guardar hasta xxx caracteres. Por ejemplo, para almacenar cadenas de hasta 30 caracteres, definimos un campo de tipo varchar2 (30), es decir, entre parntesis, junto al nombre del campo colocamos la longitud. Si intentamos almacenar una cadena de caracteres de mayor longitud que la definida, la cadena no se carga, aparece un mensaje indicando tal situacin y la sentencia no se ejecuta. Por ejemplo, si definimos un campo de tipo varchar(10) e intentamos almacenar en l la cadena 'Buenas tardes', aparece un mensaje indicando que el valor es demasiado grande para la columna. - number(p,s): se usa para guardar valores numricos con decimales, de 1.0 x10-120 a 9.9...(38 posiciones). Definimos campos de este tipo cuando queremos almacenar valores numricos con los cuales luego realizaremos operaciones matemticas, por ejemplo, cantidades, precios, etc. Puede contener nmeros enteros o decimales, positivos o negativos. El parmetro "p" indica la precisin, es decir, el nmero de dgitos en total (contando los decimales) que contendr el nmero como mximo. El parmetro "s" especifica la escala, es decir, el mximo de dgitos decimales. Por ejemplo, un campo definido "number(5,2)" puede contener cualquier nmero entre 0.00 y 999.99 (positivo o negativo). Para especificar nmero enteros, podemos omitir el parmetro "s" o colocar el valor 0 como parmetro "s". Se utiliza como separador el punto (.). Si intentamos almacenar un valor mayor fuera del rango permitido al definirlo, tal valor no se carga, aparece un mensaje indicando tal situacin y la sentencia no se ejecuta. Por ejemplo, si definimos un campo de tipo number(4,2) e intentamos guardar el valor 123.45, aparece un mensaje indicando que el valor es demasiado grande para la columna. Si ingresamos un valor con ms decimales que los definidos, el valor se carga pero con la cantidad de decimales permitidos, los dgitos sobrantes se omiten. Antes de crear una tabla debemos pensar en sus campos y optar por el tipo de dato adecuado para cada uno de ellos. Por ejemplo, si en un campo almacenaremos nmeros telefnicos o un nmeros de documento, usamos "varchar2", no "number" porque si bien son dgitos, con ellos no realizamos operaciones matemticas. Si en un campo guardaremos apellidos, y suponemos que ningn apellido superar los 20 caracteres, definimos el campo "varchar2(20)". Si en un campo almacenaremos precios con dos decimales que no superarn los 999.99 pesos definimos un campo de tipo "number(5,2)", es decir, 5 dgitos en total, con 2 decimales. Si en un campo almacenaremos valores enteros de no ms de 3 dgitos, definimos un campo de tipo "number(3,0)".

05/03/13

Ejercicios resueltos : Tipos de datos(Oracle)

4 - Tipos de datos

Problema: Eliminamos la tabla "libros": drop table libros;

Vamos a crear una tabla llamada "libros" para almacenar informacin de los libros de una librera. Necesitamos los siguientes campos: -titulo: cadena de caracteres de 20 de longitud, -autor: cadena de caracteres de 15 de longitud, -editorial: caracteres de 10 de longitud, -precio: valor numrico con 2 decimales y que no -cantidad: valor numrico entero que no superar Al crear la tabla, entonces, elegimos el tipo de dato ms adecuado para cada campo: create table libros( titulo varchar2(20), autor varchar2(15), editorial varchar2(10), precio number(6,2), cantidad number(3,0) ); Vemos la estructura de la tabla: describe libros;

superar el valor

el valor 999.

9999.99

Aparece la siguiente informacin: Name Null Type -------------------------------------titulo varchar2(20) autor varchar2(15) editorial varchar2(10) precio number(6,2) cantidad number(3) Ingresamos algunos registros: insert into libros (titulo,autor,editorial,precio,cantidad) values ('El aleph','Borges','Emece',25.50,100); insert into libros (titulo,autor,editorial,precio,cantidad) values ('Matematica estas ahi','Paenza','Siglo XXI',18.8,200); Note que al ingresar valores numricos no se utilizan comillas y para el separador de decimales se usa el caracter punto (.). Veamos los registros cargados: select *from libros;

Aparece la siguiente tabla: TITULO AUTOR EDITORIAL PRECIO CANTIDAD ---------------------------------------------------------------El Aleph Borges Emece 25,5 100 Matematica estas ahi Paenza Siglo XXI 18,8 200 Veamos lo que sucede si intentamos ingresar para el campo "titulo" una cadena de ms de 20 caracteres:

insert into libros (titulo,autor,editorial,precio,cantidad) values ('Alicia en el pais de las maravillas','Lewis Carroll','Atlantida', aparece un mensaje de error y la sentencia no se ejecuta. vamos a cortar la cadena para que SQL Server acepte el ingreso del registro:

05/03/13

Ejercicios resueltos : Tipos de datos(Oracle)


insert into libros (titulo,autor,editorial,precio,cantidad) values ('Alicia en el pais','Lewis Carroll','Atlantida',10,200);

Veamos los registros cargados: select *from libros;

La tabla tiene ahora 3 registros. Veamos qu sucede si intentamos ingresar para el campo "cantidad" un valor fuera de rango: insert into libros (titulo,autor,editorial,precio,cantidad) values ('El gato con botas','Anonimo','Atlantida',10,2000); Oracle muestra un mensaje de error y la sentencia no se ejecuta, es decir, el registro no fue ingresado. Veamos qu sucede si intentamos ingresar en el campo "precio" un valor con ms decimales que los permitidos: insert into libros (titulo,autor,editorial,precio,cantidad) values ('El gato con botas','Anonimo','Atlantida',10.123,200); La sentencia se ejecut, el registro ha sido cargado. Veamos cmo se almacen: select *from libros;

Oracle omiti el ltimo dgito decimal porque el campo slo admita 2 decimales.

05/03/13

Descripcin : Recuperar algunos campos (select) (Oracle)

5 - Recuperar algunos campos (select)

Hemos aprendido cmo ver todos los registros de una tabla, empleando la instruccin "select". La sintaxis bsica y general es la siguiente: select *from NOMBRETABLA;

El asterisco (*) indica que se seleccionan todos los campos de la tabla. Podemos especificar el nombre de los campos que queremos ver, separndolos por comas: select titulo,autor from libros;

La lista de campos luego del "select" selecciona los datos correspondientes a los campos nombrados. En el ejemplo anterior seleccionamos los campos "titulo" y "autor" de la tabla "libros", mostrando todos los registros.

05/03/13

Ejercicios resueltos : Recuperar algunos campos (select)(Oracle)

5 - Recuperar algunos campos (select)


Problema: Trabajamos con la tabla "libros" que almacena los datos de los libros de una librera. Eliminamos la tabla: drop table libros; Creamos la tabla: c r e a t et a b l el i b r o s ( t i t u l ov a r c h a r 2 ( 4 0 ) , a u t o rv a r c h a r 2 ( 3 0 ) , e d i t o r i a lv a r c h a r 2 ( 1 5 ) , p r e c i on u m b e r ( 6 , 2 ) , c a n t i d a dn u m b e r ( 3 , 0 ) ) ; Veamos la estructura de la tabla (5 campos): d e s c r i b el i b r o s ; Ingresamos algunos registros: i n s e r ti n t ol i b r o s( t i t u l o , a u t o r , e d i t o r i a l , p r e c i o , c a n t i d a d ) v a l u e s( ' E la l e p h ' , ' B o r g e s ' , ' E m e c e ' , 2 5 . 5 0 , 1 0 0 ) ; i n s e r ti n t ol i b r o s( t i t u l o , a u t o r , e d i t o r i a l , p r e c i o , c a n t i d a d ) v a l u e s( ' A l i c i ae ne lp a i sd el a sm a r a v i l l a s ' , ' L e w i sC a r r o l l ' , ' A t l a n t i d a ' , 1 0 , 2 0 0 ) ; i n s e r ti n t ol i b r o s( t i t u l o , a u t o r , e d i t o r i a l , p r e c i o , c a n t i d a d ) v a l u e s( ' M a t e m a t i c ae s t a sa h i ' , ' P a e n z a ' , ' S i g l oX X I ' , 1 8 . 8 , 2 0 0 ) ;

Veamos todos los campos la tabla: s e l e c t* f r o ml i b r o s ; Aparece la siguiente tabla: T I T U L O A U T O R E D I T O R I A L P R E C I O C A N T I D A D E la l e p h B o r g e s E m e c e 2 5 . 5 0 1 0 0 A l i c i ae ne lp a i sd el a sm a r a v i l l a s L e w i sC a r r o l l A t l a n t i d a 1 0 2 0 0 M a t e m a t i c ae s t a sa h i P a e n z a S i g l oX X I 1 8 . 8 2 0 0 Recuperamos solamente el ttulo, autor y editorial de todos los libros especificando los nombres de los campos separados por comas: s e l e c tt i t u l o , a u t o r , e d i t o r i a lf r o ml i b r o s ; Aparece la siguiente tabla: T I T U L O A U T O R E D I T O R I A L E la l e p h B o r g e s E m e c e A l i c i ae ne lp a i sd el a sm a r a v i l l a s L e w i sC a r r o l l A t l a n t i d a M a t e m a t i c ae s t a sa h i P a e n z a S i g l oX X I Con la siguiente sentencia seleccionamos los ttulos y precios de todos los libros: s e l e c tt i t u l o , p r e c i of r o ml i b r o s ; Aparece la siguiente tabla: T I T U L O P R E C I O E la l e p h 2 5 . 5 0 A l i c i ae ne lp a i sd el a sm a r a v i l l a s 1 0 M a t e m a t i c ae s t a sa h i 1 8 . 8 Para ver solamente la editorial y la cantidad de libros, tipeamos:

05/03/13
select

Ejercicios resueltos : Recuperar algunos campos (select)(Oracle)


editorial,cantidad from libros;

Aparece la siguiente tabla: EDITORIAL CANTIDAD ------------------------Emece 100 Atlantida 200 Siglo XXI 200 Note que en todos los casos recuperamos TODOS los registros, pero solamente ALGUNOS campos que especificamos.

6 - Recuperar algunos registros (where)


Problema: Trabajamos con la tabla "usuarios" que consta de 2 campos: nombre de usuario y clave. Eliminamos la tabla si ya existe: d r o pt a b l eu s u a r i o s ; Creamos la tabla: c r e a t et a b l eu s u a r i o s( n o m b r ev a r c h a r 2 ( 3 0 ) , c l a v ev a r c h a r 2 ( 1 0 ) ) ; Vemos la estructura de la tabla: d e s c r i b eu s u a r i o s ; Ingresamos algunos registros: i n s e r ti n t ou s u a r i o s( n o m b r e ,c l a v e ) v a l u e s( ' M a r c e l o ' , ' B o c a ' ) ; i n s e r ti n t ou s u a r i o s( n o m b r e ,c l a v e ) v a l u e s( ' J u a n P e r e z ' , ' J u a n c i t o ' ) ; i n s e r ti n t ou s u a r i o s( n o m b r e ,c l a v e ) v a l u e s( ' S u s a n a ' , ' R i v e r ' ) ; i n s e r ti n t ou s u a r i o s( n o m b r e ,c l a v e ) v a l u e s( ' L u i s ' , ' R i v e r ' ) ; Realizamos una consulta especificando una condicin, queremos ver toda la informacin del usuario cuyo nombre es "Marcelo": s e l e c t* f r o mu s u a r i o s w h e r en o m b r e = ' L e o n a r d o ' ; Nos muestra todos los campos del registro en el cual el campo "nombre" es igual a "Marcelo". Queremos ver el nombre de los usuarios cuya clave es "River": s e l e c tn o m b r ef r o mu s u a r i o s w h e r ec l a v e = ' R i v e r ' ; Nos muestra 2 usuarios. Realizamos un "select" de los nombres de los usuarios cuya clave es "Santi": s e l e c tn o m b r ef r o mu s u a r i o s w h e r ec l a v e = ' S a n t i ' ; No se muestra ningn registro ya que ninguno cumple la condicin.

05/03/13

Descripcin : Recuperar algunos registros (where) (Oracle)

6 - Recuperar algunos registros (where)

Hemos aprendido a seleccionar algunos campos de una tabla. Tambin es posible recuperar algunos registros. Existe una clusula, "where" con la cual podemos especificar condiciones para una consulta "select". Es decir, podemos recuperar algunos registros, slo los que cumplan con ciertas condiciones indicadas con la clusula "where". Por ejemplo, queremos ver el usuario cuyo nombre es "Marcelo", para ello utilizamos "where" y luego de ella, la condicin: select nombre, clave from usuarios where nombre='Marcelo'; La sintaxis bsica y general es la siguiente: select from NOMBRETABLA where CONDICION; Para las condiciones se utilizan operadores relacionales (tema que trataremos ms adelante en detalle). El signo igual(=) es un operador relacional. Para la siguiente seleccin de registros especificamos una condicin que solicita los usuarios cuya clave es igual a "River": select nombre,clave from usuarios where clave='River'; Si ningn registro cumple la condicin establecida con el "where", no aparecer ningn registro. Entonces, con "where" establecemos condiciones para recuperar algunos registros. Para recuperar algunos campos de algunos registros combinamos en la consulta la lista de campos y la clusula "where": select nombre from usuarios where clave='River'; En la consulta anterior solicitamos el nombre de todos los usuarios cuya clave sea igual a "River". NOMBRECAMPO1, ..., NOMBRECAMPOn

05/03/13

Descripcin : Operadores relacionales (Oracle)

7 - Operadores relacionales

Los operadores son smbolos que permiten realizar operaciones matemticas, concatenar cadenas, hacer comparaciones. Oracle reconoce de 4 tipos de operadores: 1) 2) 3) 4) relacionales (o de aritmticos de concatenacin lgicos comparacin)

Por ahora veremos solamente los primeros. Los operadores relacionales (o de comparacin) nos permiten comparar dos expresiones, que pueden ser variables, valores de campos, etc. Hemos aprendido a especificar condiciones de igualdad para seleccionar registros de una tabla; por ejemplo: select where *from libros autor='Borges';

Utilizamos el operador relacional de igualdad. Los operadores relacionales vinculan un campo con un valor para que Oracle compare cada registro (el campo especificado) con el valor dado. Los operadores relacionales son los siguientes: = <> > < >= <= igual distinto mayor menor mayor o igual menor o igual

Podemos seleccionar los registros cuyo autor sea diferente de "Borges", para ello usamos la condicin: select where * from libros autor<>'Borges';

Podemos comparar valores numricos. Por ejemplo, queremos mostrar los ttulos y precios de los libros cuyo precio sea mayor a 20 pesos: select titulo, precio from libros where precio>20; Queremos seleccionar los libros cuyo precio sea menor o igual a 30: select where *from libros precio<=30;

Los operadores relacionales comparan valores del mismo tipo. Se emplean para comprobar si un campo cumple con una condicin. No son los nicos, existen otros que veremos mas adelante.

05/03/13

Ejercicios resueltos : Operadores relacionales(Oracle)

7 - Operadores relacionales

Problema: Trabajamos con la tabla "libros" de una librera. Eliminamos la tabla "libros": d r o pt a b l el i b r o s ; La creamos con la siguiente estructura: c r e a t et a b l el i b r o s ( t i t u l ov a r c h a r 2 ( 3 0 ) , a u t o rv a r c h a r 2 ( 3 0 ) , e d i t o r i a lv a r c h a r 2 ( 1 5 ) , p r e c i on u m b e r ( 5 , 2 ) ) ; Agregamos registros a la tabla: i n s e r ti n t ol i b r o s( t i t u l o , a u t o r , e d i t o r i a l , p r e c i o ) v a l u e s( ' E la l e p h ' , ' B o r g e s ' , ' E m e c e ' , 2 4 . 5 0 ) ; i n s e r ti n t ol i b r o s( t i t u l o , a u t o r , e d i t o r i a l , p r e c i o ) v a l u e s( ' M a r t i nF i e r r o ' , ' J o s eH e r n a n d e z ' , ' E m e c e ' , 1 6 . 0 0 ) ; i n s e r ti n t ol i b r o s( t i t u l o , a u t o r , e d i t o r i a l , p r e c i o ) v a l u e s( ' A p r e n d aP H P ' , ' M a r i oM o l i n a ' , ' E m e c e ' , 3 5 . 4 0 ) ; i n s e r ti n t ol i b r o s( t i t u l o , a u t o r , e d i t o r i a l , p r e c i o ) v a l u e s( ' C e r v a n t e sye lq u i j o t e ' , ' B o r g e s ' , ' P a i d o s ' , 5 0 . 9 0 ) ; Seleccionamos los registros cuyo autor sea diferente de 'Borges': s e l e c t* f r o ml i b r o s w h e r ea u t o r < > ' B o r g e s ' ; Seleccionamos los registros cuyo precio supere los 20 pesos, slo el ttulo y precio: s e l e c tt i t u l o , p r e c i o f r o ml i b r o s w h e r ep r e c i o > 2 0 ; Note que el valor con el cual comparamos el campo "precio", como es numrico, no se coloca entre comillas. Los libros cuyo precio es menor a 20 pesos no aparecen en la seleccin. Recuperamos aquellos libros cuyo precio es menor o igual a 30: s e l e c t* f r o ml i b r o s w h e r ep r e c i o < = 3 0 ;

05/03/13

Descripcin : Borrar registros (delete) (Oracle)

8 - Borrar registros (delete)


Para eliminar los registros de una tabla usamos el comando "delete". Sintaxis bsica: d e l e t ef r o mN O M B R E T A B L A ; Se coloca el comando delete seguido de la palabra clave "from" y el nombre de la tabla de la cual queremos eliminar los registros. En el siguiente ejemplo se eliminan los registros de la tabla "usuarios": delete from usuarios; Luego, un mensaje indica la cantidad de registros que se han eliminado. Si no queremos eliminar todos los registros, sino solamente algunos, debemos indicar cul o cules; para ello utilizamos el comando "delete" junto con la clausula "where" con la cual establecemos la condicin que deben cumplir los registros a borrar. Por ejemplo, queremos eliminar aquel registro cuyo nombre de usuario es "Marcelo": d e l e t ef r o mu s u a r i o s w h e r en o m b r e = ' M a r c e l o ' ; Si solicitamos el borrado de un registro que no existe, es decir, ningn registro cumple con la condicin especificada, aparecer un mensaje indicando que ningn registro fue eliminado, pues no encontr registros con ese dato. Tenga en cuenta que si no colocamos una condicin, se eliminan todos los registros de la tabla especificada.

8 - Borrar registros (delete)


Problema: Trabajamos con la tabla "usuarios". Eliminamos la tabla "usuarios": d r o pt a b l eu s u a r i o s ; La creamos con la siguiente estructura: c r e a t et a b l eu s u a r i o s ( n o m b r ev a r c h a r 2 ( 3 0 ) , c l a v ev a r c h a r 2 ( 1 0 ) ) ; Agregamos registros a la tabla: i n s e r ti n t ou s u a r i o s( n o m b r e , c l a v e ) v a l u e s( ' M a r c e l o ' , ' R i v e r ' ) ; i n s e r ti n t ou s u a r i o s( n o m b r e , c l a v e ) v a l u e s( ' S u s a n a ' , ' c h a p i t a ' ) ; i n s e r ti n t ou s u a r i o s( n o m b r e , c l a v e ) v a l u e s( ' C a r l o s F u e n t e s ' , ' B o c a ' ) ; i n s e r ti n t ou s u a r i o s( n o m b r e , c l a v e ) v a l u e s( ' F e d e r i c o L o p e z ' , ' B o c a ' ) ; Seleccionamos todos los registros: s e l e c t* f r o mu s u a r i o s ; Vamos a eliminar el registro cuyo nombre de usuario es "Marcelo": d e l e t ef r o mu s u a r i o s w h e r en o m b r e = ' M a r c e l o ' ; aparece un mensaje indicando que se ha borrado 1 fila. Intentamos eliminarlo nuevamente: d e l e t ef r o mu s u a r i o s w h e r en o m b r e = ' M a r c e l o ' ; Como ningn registro cumple con la condicin especificada (nombre igual a Marcelo), aparecer un mensaje indicando que ningn registro fue borrado. Eliminamos todos los registros cuya clave es 'Boca': d e l e t ef r o mu s u a r i o s w h e r ec l a v e = ' B o c a ' ;

05/03/13

Descripcin : Actualizar registros (update) (Oracle)

9 - Actualizar registros (update)

Decimos que actualizamos un registro cuando modificamos alguno de sus valores. Para modificar uno o varios datos de uno o varios registros utilizamos "update" (actualizar). Sintaxis bsica: update NOMBRETABLA set CAMPO=NUEVOVALOR;

Utilizamos "update" junto al nombre de la tabla y "set" junto con el campo a modificar y su nuevo valor. El cambio afectar a todos los registros. Por ejemplo, en nuestra tabla "usuarios", queremos cambiar los valores de todas las claves, por "RealMadrid": update usuarios set clave='RealMadrid';

Podemos modificar algunos registros, para ello debemos establecer condiciones de seleccin con "where". Por ejemplo, queremos cambiar el valor correspondiente a la clave de nuestro usuario llamado "Federicolopez", queremos como nueva clave "Boca", necesitamos una condicin "where" que afecte solamente a este registro: update where usuarios set clave='Boca' nombre='Federicolopez';

Si Oracle no encuentra registros que cumplan con la condicin del "where", un mensaje indica que ningn registro fue modificado. Las condiciones no son obligatorias, pero si omitimos la clusula "where", la actualizacin afectar a todos los registros. Tambin podemos actualizar varios campos en una sola instruccin: update where usuarios set nombre='Marceloduarte', nombre='Marcelo'; clave='Marce'

Para ello colocamos "update", el nombre de la tabla, "set" junto al nombre del campo y el nuevo valor y separado por coma, el otro nombre del campo con su nuevo valor.

05/03/13

Ejercicios resueltos : Actualizar registros (update)(Oracle)

9 - Actualizar registros (update)

Problema: Trabajamos con la tabla "usuarios". Eliminamos la tabla: drop table usuarios;

Creamos la tabla: create table usuarios( nombre varchar2(20), clave varchar2(10) ); Ingresamos algunos registros: insert into usuarios (nombre,clave) values ('Marcelo','River'); insert into usuarios (nombre,clave) values ('Susana','chapita'); insert into usuarios (nombre,clave) values ('Carlosfuentes','Boca'); insert into usuarios (nombre,clave) values ('Federicolopez','Boca'); Cambiaremos los valores de todas las claves, por la cadena "RealMadrid": update usuarios set clave='RealMadrid';

Un mensaje indica que se actualizaron 4 registros. El cambio afect a todos los registros, vemoslo: select *from usuarios;

Necesitamos cambiar el valor de la clave del usuario llamado "Federicolopez" por "Boca": update where usuarios set clave='Boca' nombre='Federicolopez';

Verifiquemos que la actualizacin se realiz: select *from usuarios;

Vimos que si Oracle no encuentra registros que cumplan con la condicin del "where", un mensaje indica que ningn registro se modifica: update where usuarios set clave='payaso' nombre='JuanaJuarez';

Para actualizar varios campos en una sola instruccin empleamos: update where usuarios set nombre='Marceloduarte', nombre='Marcelo'; clave='Marce'

Verifiquemos que la actualizacin se realiz: select *from usuarios;

You might also like