85
ORACLE Machanay Sulca, Carlos E. E-Mail: [email protected] Pagina 1 Estructura lógica de la base de datos Tablespaces Una base de datos se divide en unidades lógicas de almacenamiento denominadas tablespaces. Un tablespaces permite agrupar estructura lógicas que están relacionas entre si como por ejemplo todos los objetos de una aplicación para simplificar algunas tareas administrativas. Oracle almacena la data lógicamente en los tablespaces físicamente en los datafiles asociados al tablespace correspondientemente. La instrucción CREATE TABLESPACE Sintaxis CREATE TABLESPACE nombre_tablespace DATAFILE ‘ubicación_y_nombre_archivo_datafile’ SIZE tamaño [ K|M ] EXTENT MANAGEMENT DICTIONARY | LOCAL [ AUTOALLOCATE | SIZE tamaño [ K|M ] ] nombre_tablespace: es el identificador de la estructura lógica. ubicación_y_nombre_archivo_datafile: es una cadena que incluye la ruta y el nombre del archivo. La ruta debe especificar una carpeta existente en el servidor en el que esta instalado Oracle. Tamaño: especifica el tamaño del archivo. EXTENT MANAGEMENT: especifica si los extents serán administrados por el diccionario de datos (DICTIONARY), o localmente (LOCAL). El tamaño de los extents puede ser manejados por el servidor (opción AUTOALLOCATE), o podemos definir extents de tamaño uniforme (opción SIZE)

Oracle

Embed Size (px)

Citation preview

Page 1: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 1

Estructura lógica de la base de datos

Tablespaces Una base de datos se divide en unidades lógicas de almacenamiento denominadas tablespaces. Un tablespaces permite agrupar estructura lógicas que están relacionas entre si como por ejemplo todos los objetos de una aplicación para simplificar algunas tareas administrativas. Oracle almacena la data lógicamente en los tablespaces físicamente en los datafiles asociados al tablespace correspondientemente. La instrucción CREATE TABLESPACE

Sintaxis

CREATE TABLESPACE nombre_tablespace DATAFILE ‘ubicación_y_nombre_archivo_datafile’ SIZE tamaño [ K|M ] EXTENT MANAGEMENT DICTIONARY | LOCAL [ AUTOALLOCATE | SIZE tamaño [ K|M ] ]

• nombre_tablespace: es el identificador de la estructura lógica.

• ubicación_y_nombre_archivo_datafile: es una cadena que incluye la ruta y el nombre del archivo. La ruta debe especificar una carpeta existente en el servidor en el que esta instalado Oracle.

• Tamaño: especifica el tamaño del archivo.

• EXTENT MANAGEMENT: especifica si los extents serán administrados por el diccionario de datos (DICTIONARY), o localmente (LOCAL).

• El tamaño de los extents puede ser manejados por el servidor (opción AUTOALLOCATE), o podemos definir extents de tamaño uniforme (opción SIZE)

Page 2: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 2

Creación de un tablespace

CREATE TABLESPACE TS_INT DATAFILE ‘C:\oraclexe\oradata\XE\TS_INT.ORA’ SIZE 3M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; Para verificar la creación ejecute el siguiente script.

SELECT NAME FROM V$TABLESPACE WHERE NAME =’TS_INT’;

Page 3: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 3

Introducción a los esquemas Un esquema es una colección de objetos de la base de datos. El esquema es propiedad de un usuario de la base de datos, y tiene el mismo nombre que su usuario propietario. Los objetos del esquema, tales como tablas, vistas e índices, son las estructuras lógicas referidas directamente a la data de la base de datos.

Creación de un esquema CREATE USER INSTITUTO IDENTIFIED BY DBA; En la instrucción CREATE USER, INSTITUTO es el identificador del usuario, y DBA es su contraseña.

Concesión de privilegios Para el usuario INSTITUTO pueda iniciar la sesión y crear los objetos de su esquema necesita contar con lo privilegios adecuados.

GRANT CONNECT TO INSTITUTO; Instrucción para asignar el rol CONNECT al usuario INSTITUTO. Ahora conéctese con el usuario.

Page 4: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 4

Tipo de datos Cada constante y variable tiene un tipo de dato en el cual se especifica el formato de almacenamiento, restricciones y rango de valores validos. PL/SQL proporciona una variedad predefinida de tipos de datos. Casi todos los tipos de datos manejados por PL/SQL son similares a los soportados por SQL. A continuación se muestran os tipos de datos mas comunes. NUMBER (Numérico): Almacena números enteros o de punto flotante, virtualmente de cualquier longitud, aunque puede ser especificada la precisión (Número de dígitos) y la escala que es la que determina el número de decimales. CHAR (Caracter): Almacena datos de tipo carácter con una longitud máxima de 32767 y cuyo valor de longitud por default es 1.

VARCHAR2 (Caracter de longitud variable): Almacena datos de tipo carácter empleando sólo la cantidad necesaria aún cuando la longitud máxima sea mayor. BOOLEAN (lógico): Se emplea para almacenar valores TRUE o FALSE.

DATE (Fecha): Almacena datos de tipo fecha. Las fechas se almacenan internamente como datos numéricos, por lo que es posible realizar operaciones aritméticas con ellas. Atributos de tipo. Un atributo de tipo PL/SQL es un modificador que puede ser usado para obtener información de un objeto de la base de datos. El atributo %TYPE permite conocer el tipo de una variable, constante o campo de la base de datos. El atributo %ROWTYPE permite obtener los tipos de todos los campos de una tabla de la base de datos, de una vista o de un cursor. PL/SQL también permite la creación de tipos personalizados (registros) y colecciones (tablas de PL/SQL), que veremos en sus apartados correspondientes.

Page 5: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 5

Existen por supuesto más tipos de datos, la siguiente tabla los muestra:

Tipo de dato / Sintáxis

Oracle 8i Oracle 9i Descripción

dec(p, e) La precisión máxima es de 38 dígitos.

La precisión máxima es de 38 dígitos.

Donde p es la precisión y e la escala. Por ejemplo: dec(3,1) es un número que tiene 2 dígitos antes del decimal y un dígito después del decimal.

decimal(p, e) La precisión máxima es de 38 dígitos.

La precisión máxima es de 38 dígitos.

Donde p es la precisión y e la escala. Por ejemplo: decimal (3,1) es un número que tiene 2 dígitos antes del decimal y un dígito después del decimal.

double precision float int integer numeric(p, e) La precisión

máxima es de 38 dígitos.

La precisión máxima es de 38 dígitos.

Donde p es la precisión y e la escala. Por ejemplo: numeric(7,2) es un número que tiene 5 dígitos antes del decimal y 2 dígitos después del decimal.

Page 6: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 6

Tipo de dato / Sintáxis

Oracle 8i Oracle 9i Descripción

number(p, e) La precisión máxima es de 38 dígitos.

La precisión máxima es de 38 dígitos.

Donde p es la precisión y e la escala. Por ejemplo: number(7,2) es un número que tiene 5 dígitos antes del decimal y 2 dígitos después del decimal.

real smallint char (tamaño) Hasta 32767

bytes en PLSQL. Hasta 2000 bytes en Oracle 8i.

Hasta 32767 bytes en PLSQL. Hasta 2000 bytes en Oracle 9i.

Donde tamaño es el número de caracteres a almacenar. Son cadenas de ancho fijo. Se rellena con espacios.

varchar2 (tamaño)

Hasta 32767 bytes en PLSQL Hasta 4000 bytes en Oracle 8i.

Hasta 32767 bytes en PLSQL Hasta 4000 bytes en Oracle 9i.

Donde tamaño es el número de caracteres a almacenar. Son cadenas de ancho variable.

long Hasta 2 gigabytes.

Hasta 2 gigabytes.

Son cadenas de ancho variable.

raw Hasta 32767 bytes en PLSQL. Hasta 2000 bytes en Oracle 8i.

Hasta 32767 bytes en PLSQL. Hasta 2000 bytes en Oracle 9i.

Son cadenas binarias de ancho variable.

long raw Hasta 2 gigabytes.

Hasta 2 gigabytes.

Son cadenas binarias de ancho variable.

Page 7: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 7

Tipo de dato / Sintáxis

Oracle 8i Oracle 9i Descripción

date Una fecha entre el 1 de Enero de 4712 A.C. y el 31 de Diciembre de 9999 D.C.

Una fecha entre el 1 de Enero de 4712 A.C. y el 31 de Diciembre de 9999 D.C.

timestamp (fractional seconds precision)

No soportado por Oracle 8i.

.fractional seconds precision debe ser un número entre 0 y 9. (El valor por defecto es 6)

Incluye año, mes día, hora, minutos y segundos. Por ejemplo: timestamp(6)

timestamp (fractional seconds precision) with time zone

No soportado por Oracle 8i.

fractional seconds precision debe ser un número entre 0 y 9. (El valor por defecto es 6)

Incluye año, mes día, hora, minutos y segundos; con un valor de desplazamiento de zona horaria. Por ejemplo: timestamp(5) with time zone

timestamp (fractional seconds precision) with local time zone

No soportado por Oracle 8i.

fractional seconds precision debe ser un número entre 0 y 9. (El valor por defecto es 6)

Incluye año, mes día, hora, minutos y segundos; con una zona horaria expresada como la zona horaria actual. Por ejemplo: timestamp(4) with local time zone

interval year (year precision) to month

No soportado por Oracle 8i.

year precision debe ser un número entre 0 y 9. (El valor por defecto es 2)

Período de tiempo almacenado en años y meses. Por ejemplo: interval year(4) to month

Page 8: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 8

Tipo de dato / Sintáxis

Oracle 8i Oracle 9i Descripción

interval day (day precision) to second (fractional seconds precision)

No soportado por Oracle 8i.

day precision debe ser un número entre 0 y 9. (El valor por defecto es 2) fractional seconds precision debe ser un número entre 0 y 9. (El valor por defecto es 6)

Incluye año, mes día, hora, minutos y segundos. Por ejemplo: interval day(2) to second(6)

rowid

El formato del campo rowid es:

BBBBBBB.RRRR.FFFFF donde BBBBBBB es el bloque en el fichero de la base de datos; RRRR es la fila del bloque; FFFFF es el fichero de la base de datos.

El formato del campo rowid es:

BBBBBBB.RRRR.FFFFF donde BBBBBBB es el bloque en el fichero de la base de datos; RRRR es la fila del bloque; FFFFF es el fichero de la base de datos.

Datos binarios de ancho fijo. Cada registro de la base de datos tiene una dirección física o rowid.

urowid [tamaño]

Hasta 2000 bytes. Hasta 2000 bytes. Rowid universal. Donde tamaño es opcional.

boolean Válido en PLSQL, este tipo de datos no existe en Oracle 8i.

Válido en PLSQL, este tipo de datos no existe en Oracle 9i.

nchar (tamaño) Hasta 32767 bytes en PLSQL. Hasta 2000 bytes en Oracle 8i.

Hasta 32767 bytes en PLSQL. Hasta 2000 bytes en Oracle 9i.

Donde tamaño es el número de caracteres a almacenar. Cadena NLS de ancho fijo.

nvarchar2 (tamaño)

Hasta 32767 bytes en PLSQL. Hasta 4000 bytes en Oracle 8i.

Hasta 32767 bytes en PLSQL. Hasta 4000 bytes en Oracle 9i.

Donde tamaño es el número de caracteres a almacenar. Cadena NLS de ancho variable.

Page 9: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 9

Tipo de dato / Sintáxis

Oracle 8i Oracle 9i Descripción

bfile Hasta 4 gigabytes.

Hasta 4 gigabytes. Localizadores de archivo apuntan a un objeto binario de sólo lectura fuera de la base de datos.

blob Hasta 4 gigabytes.

Hasta 4 gigabytes. Localizadores LOB apuntan a un gran objeto binario dentro de la base de datos.

clob Hasta 4 gigabytes.

Hasta 4 gigabytes. Localizadores LOB apuntan a un gran objeto de caracteres dentro de la base de datos.

nclob Hasta 4 gigabytes.

Hasta 4 gigabytes. Localizadores LOB apuntan a un gran objeto NLS de caracteres dentro de la base de datos.

Page 10: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 10

Creación de tablas La instrucción CREATE TABLE

Sintaxis

CREATE TABLE nombre_tabla( Nombre_columna1 tipo_dato1 (NULL | NOT NULL), Nombre_columna1 tipo_dato2 (NULL | NOT NULL), Nombre_columna1 tipo_dato3 (NULL | NOT NULL)

Especificación de NULL o NOT NULL

• NULL: columna que puede ser nulo de datos.

• NOT NULL: columna obligado a ingresar datos.

Creación de tablas En el esquema INSTITUTO crear la tabla especialidad asociada al tablespace TS_INT.

CREATE TABLE especialidad (id_especialidad NUMBER(3) NOT NULL, nombre_especialidad VARCHAR2(40)) TABLESPACE TS_INT; Usted recibe un mensaje de error, el cual indica que usted no cuenta con los privilegios necesarios para crear las tablas.

Concesión al esquema INSTITUTO del privilegio para crear las tablas Conéctese con el usuario SYSTEM. Ejecute el siguiente script.

GRANT RESOURCE TO INSTITUTO; El rol RESOURCE concede privilegios para crear ciertos objetos de un esquema, entre ellos las tablas.

Page 11: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 11

Conéctese con el usuario INSTITUTO Vuelva a ejecutar el script.

CREATE TABLE especialidad (id_especialidad NUMBER(3) NOT NULL, nombre_especialidad VARCHAR2(40)) TABLESPACE TS_INT; Verificación la creación de la tabla.

SELECT *FROM CAT; Verificar la definición de la tabla.

DESCRIBE especialidad;

Laboratorio 01: 1. Crear las siguientes tablas.

2. Verifique la creación de las tablas.

3. Verificar la definición de las tablas.

Page 12: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 12

Modificando la definición de la tabla. En una tabla podemos añadir nuevas columnas, eliminar columnas, cambiar las propiedades de las columnas, añadir o eliminar restricciones. La instrucción ALTER TABLE

Sintaxis ALTER TABLE nombre_tabla

ADD nombre_columna propiedades_columna | DROP COLUMN nombre_columna | ALTER COLUMN nombre_columna

nuevas_propiedades_columna | ADD CONSTRAINT nombre_restriccion

PRIMARY KEY | UNIQUE | FOREIGN KEY | DEFAULT | CHECK | DROP CONSTRAINT nombre_restriccion

• ADD nombre_columna: permite añadir nueva columna a la tabla.

• DROP COLUMN: se usa para eliminar una columna.

• ALTER COLUMN: permite modificar la definición de una columna.

• ADD CONSTRAINT: permite añadir una restricción PRIMARY KEY, UNIQUE FOREIGN KEY, DEFAULT o CHECK a la definición de una tabla.

• DROP CONSTRAINT: se usa para eliminar una restricción. Para ver el efecto de la instrucción ALTER TABLE, en el esquema INSTITUTO crearemos una tabla.

CREATE TABLE tabla_prueba (columna1 NUMBER(3) NOT NULL, columna2 VARCHAR2(10)) TABLESPACE TS_INT; Añadir una columna de tipo NUMBER(8,2) con la propiedad NULL.

ALTER TABLE tabla_prueba ADD columna3 NUMBER(8,2) NULL;

Page 13: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 13

Adición de una columna NOT NULL a una tabla. Insertamos una fila en la tabla tabla_prueba

INSERT INTO tabla_prueba VALUES(101,’CARLOS’,30.45); Ahora tratemos de añadir una columna de tipo VARCHA2 con la propiedad NOT NULL.

ALTER TABLE tabla_prueba ADD columna4 VARCHAR2(20) NOT NULL; Usted recibe un mensaje de error, el cual indica que solo puede agregar columnas con la propiedad NOT NULL cuando la tabla esta vacía. Añadiendo la columna con la propiedad NULL

ALTER TABLE tabla_prueba ADD columna4 VARCHAR2(20) NULL; Ahora, establecemos cual es el valor para la nueva columna de la fila que ya esta registrada en la tabla.

UPDATE tabla_prueba SET columna4=’LIMA’ WHERE columna1=’101’; Ahora cambiamos la propiedad NULL de dicha columna a NOT NULL.

ALTER TABLE tabla_prueba MODIFY (columna4 VARCHAR2(20) NOT NULL);

Page 14: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 14

Restricciones Son un método declarativo de definición de la integridad de datos ya que ellas se definen al momento de crear la tabla con la sentencia (CREATE TABLE) o al momento de modificar de tabla con la sentencia (ALTER TABLE).

Tipos de restricciones Las restricciones son un método estándar ANSI para forzar la integridad de los datos. A continuación los tipos de restricciones.

tipos de restricciones descripción PRIMARY KEY (clave primaria)

garantiza que cada fila o registro en una tabla sea único, no permite valores nulos.

UNIQUE (valor no duplicado)

garantiza que cada valor en una columna es único. permite valores únicos.

FOREIGN KEY (clave foránea)

define la columna o combinación de columnas de una tabla secundaria cuyos valores dependen de la clave primaria de una tabla primaria.

DEFAULT (valor predeterminado)

establece el valor predeterminado para una columna.

CHECK (regla de validación)

establece la regla que debe cumplir un valor para que se un valor aceptable en una columna.

Creación de la clave primaria (PK)

Sintaxis

ALTER TABLE nombre_tabla ADD CONSTRAINT pk_nombre_tabla PRIMARY KEY (columnaP, columnaX)

• pk_nombre_tabla: es el nombre de la restricción clave primaria.

• columnaP, columnaX: es la columna o combinación de columnas que se define como clave primaria.

Creación de clave primaria de la tabla curso.

ALTER TABLE curso ADD CONSTRAINT PK_curso PRIMARY KEY(id_curso);

Page 15: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 15

Creación de clave foránea (FK). Sintaxis

ALTER TABLE nombre_tabla ADD CONSTRAINT fk_nombre_tabla_tabla_referenciada FOREIGN KEY (columnaP, columnaX) REFERENCES tabla_referenciada

• fk_nombre_tabla_tabla_referenciada: es el nombre de la restricción clave foranea.

• columnaP, columnaX: es la columna o combinación de columnas que se define como clave foránea.

• tabla_referenciada: es el nombre de la tabla primaria con la que se relaciona la tabla secundaria que tiene la clave foránea.

Creación de la clave foránea en la tabla notas.

ALTER TABLE notas ADD CONSTRAINT FK_notas_curso FOREIGN KEY (id_curso) REFERENCES curso;

Creación de la restricción valor no duplicado (UNIQUE). Sintaxis

ALTER TABLE nombre_tabla ADD CONSTRAINT u_nombre_tabla_nombre_columna UNIQUE (columnaP, columnaX)

• u_nombre_tabla_nombre_columna: es el nombre de la restricción valor no duplicado o UNIQUE.

• columnaP, columnaX: es la columna o combinación de columnas a la que se aplica la restricción.

Page 16: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 16

Creación de restricción UNIQUE para la columna nombre_curso en la tabla curso.

ALTER TABLE curso ADD CONSTRAINT U_curso_nombre_curso UNIQUE (nombre_curso);

Creación de valor predeterminado (DEFAULT)

Sintaxis

ALTER TABLE nombre_tabla MODIFY (columnaX DEFAULT valor_predeterminado)

valor_predeterminado: es el valor que se almacena en la columnas cuando inserta una fila no se especificada el valor para esa columna.

columnaX: es la columna que se aplica la restricción.

Creación de una restricción DEFUALT para la columna credito_curso en la tabla curso. Antes vamos a insertar un registro en la tabla curso

INSERT INTO curso VALUES (501,’JAVA’,30); Ahora procedemos a crear la restricción.

ALTER TABLE curso MODIFY (credito_curso DEFAULT 30); Ahora inserte un registro

INSERT INTO curso (id_curso,nombre_curso)VALUES (501,’JAVA’);

Page 17: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 17

Creación de regla de validación (CHECK)

Sintaxis ALTER TABLE nombre_tabla ADD CONSTRAINT ck_nombre_tabla_nombre_columna CHECK (condición)

ck_nombre_tabla_nombre_columna: es el nombre de la restricción regla de validación o check.

condición: es la expresión que determina como debe ser el valor a ingresar en la columna afectada por la restricción.

Creación de la restricción CHECK para la columna credito_curso de la tabla curso.

ALTER TABLE curso ADD CONSTRAINT CK_curso_credito_curso CHECK (credito_curso > 0);

Eliminación de tablas (la instrucción DROP TABLE) Elimina la definición de una tabla. Si la tabla referencial por una clave foránea, no se podrá eliminar.

Eliminación de tablas

DROP TABLE tabla_prueba;

Page 18: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 18

Laboratorio 02: 1. Establecer clave principal y relacione las siguientes tablas.

2. Inserte 2 registros en la tabla especialidad, registros a la tabla curso, 3 registros en la tabla alumno y 3 registros a la tabla notas.

3. Agregar la columna (telefono_alumno varchar2 (10)) a la tabla alumno.

4. Establecer restricción a la columna (credito_curso) de la tabla curso, el credito del curso no puede ser mayor a 120.

5. Mostrar la fecha del sistema.

6. Verificar los tablespace creados y escribirlos.

7. Verificar todos los objetos del catalogo de esquema INSTITUTO.

Page 19: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 19

Mantenimiento de datos Una vez de haber creado las tablas de la base de datos se debe cargar la data lo que normalmente se lleva a cabo desde una aplicación cliente que contiene formularios para que el usuario puede cargar los datos con facilidad y comodidad.

Inserción de filas (instrucción INSERT)

Sintaxis

INSERT INTO nombre_tabla (lista_columnas) VALUES (lista_de_ valores)

lista_columnas: es la relación de columnas en las que se almacenaran los valores especificados.

lista_de_valores: es la relación de valores a almacenar en la fila a insertar. Los elementos de ambas listas van separados.

Inserción de una fila con lista de valores completa

INSERT INTO curso VALUES (502,’VISUAL STUDIO .NET’,20);

Inserción de una fila con lista de valores incompleta

INSERT INTO curso (id_curso,nombre_curso) VALUES (503,POWER BUILDER’);

Page 20: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 20

Objeto sequence

Es un objeto de base de datos que genera números secuenciales y se utiliza para asignar valores a campos numéricos enteros en los que se requiere que la generación de su contenido sea automática y secuencial.

Sintaxis

CREATE SECUENCE nombre_secuencia [ STAR WITH valor_inicial ] [ INCREMENT BY incremento ] [ MAXVALUE valor_maximo | NOMAXVALUE ] [ MINVALUE valor_minimo | NOMINVALUE ] [ CYCLE | NOCYCLE ]

• Valor_inicial: valor que empieza la secuencia. • Incremento: establece la diferencia entre un valor de la secuencia y el siguiente si no específica se asume 1.

• Valor_maximo: mayor valor de la secuencia que puede alcanzar. • Valor_minimo: menor valor en la secuencia. • Cycle: permite que la secuencia continué a partir de MINVALUE cuando se alcanza MAXVALUE.

• Nocycle: modo predeterminado.

Creando una nueva tabla, y creando un objeto sequence.

CREATE TABLE tabla_secuencia (codigo NUMBER(4) PRIMARY KEY NOT NULL, nombre VARCHAR2(20) NOT NULL) TABLESPACE TS_INT;

CREATE SEQUENCE sq_codigo MAXVALUE 9999; Utilizamos el objeto secuencia sq_codigo para insertar datos.

INSERT INTO tabla_secuencia VALUES(sq_codigo.NEXTVAL,’CARLOS EDUARDO’);

Page 21: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 21

Actualización de datos (instrucción UPDATE)

Sintaxis

UPDATE nombre_tabla SET columnaX = expresionX, columnaP = expresionP, … WHERE condicion_fila_actualizar

• columnaX, columnaP: son las columnas cuyo contenido se actualizará.

• expresionX, expresionP: establecen los nuevos valores a almacenar en las columnas.

• condicion_fila_actualizar: es una expresión lógica que determina que las filas en las que la actualización se debe llevar acabo.

Uso del UPDATE Antes de del uso del UPDATE, ejecute la siguiente instrucción.

SELECT *FROM curso; Ejecute la siguiente instrucción

UPDATE curso SET credito_curso=25 WHERE id_curso=502;

Page 22: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 22

Eliminación de filas (instrucción DELETE)

Sintaxis

DELETE FROM nombre_tabla WHERE condicion_fila_eliminar

condicion_fila_eliminar: es una expresión lógica que determina las filas en las que la eliminación se debe llevar acabo.

Uso del DELETE Antes de del uso del DELETE, ejecute la siguiente instrucción.

SELECT *FROM curso; Elimine el curso POWER BUILDER

DELETE FROM curso WHERE id_curso=503; Si desea eliminar todos los registros.

DELETE FROM curso;

Eliminación de todas las filas de una tabla (instrucción TRUNCATE TABLE) La instrucción TRUNCATE TABLE se ejecuta más rápido debido a que no registra la eliminación de cada fila en el log de transacciones como lo hace DELETE.

TRUNCATE TABLE nombre_tabla Eliminar todas las filas de la tabla curso

TRUNCATE TABLE curso;

Page 23: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 23

Fundamentos de Oracle - SQL Es la implementación de Oracle del estándar ANSI SQL que define elementos del lenguaje SQL que puede ejecutarse desde cualquier aplicación frontal.

Elementos de Oracle - SQL

DML: Data Manipulation Languague (consultar y modificar datos) DDL: Data Definition Languague (crear objetos de la base de datos) DCL: Data Control Languague (quien modifica los datos) Elementos adicionales al lenguaje: variables, operadores, funciones, sentencia de control de flujo y comentarios. Declaración DML Trabaja con los datos de la base de datos

instrucción descripción SELECT selecciona filas y columnas de una o más tablas de la base

de datos. INSERT añade una nueva fila a una tabla. UPDATE modifica los datos existentes en una tabla. DELETE elimina filas de una tabla. Declaración DDL Permite crear base de datos, tablas, y tipos de datos definidos por el usuario.

instrucción Descripción CREATE nombre_objeto

crea un objeto de la base de datos.

ALTER nombre_objeto

modifica la definición del objeto de la base de datos.

DROP nombre_objeto

elimina un objeto de la base de datos.

Declaración DCL Permite cambiar los permisos o roles asociado con un usuario de la base de datos.

instrucción descripción GRANT crea una entrada en la seguridad del sistema que le

permite a un usuario trabajar con los datos o ejecutar ciertas sentencias.

DENY crea una entrada de seguridad del sistema negando un permiso de una cuenta de seguridad.

REVOKE quita un permiso previamente concebido o negado

Page 24: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 24

Operadores La siguiente tabla ilustra los operadores de Oracle.

tipo de operador operadores Operador de asignación := (dos puntos + igual) Operadores aritméticos + (suma)

- (resta) * (multiplicación) / (división) ** (exponente)

Operadores relacionales o de comparación

= (igual a) <> (distinto de) < (menor que) > (mayor que) >= (mayor o igual a) <= (menor o igual a)

Operadores lógicos AND (y lógico) NOT (negación) OR (o lógico)

Operador de concatenación ||

Page 25: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 25

Laboratorio 03: 1. Crear un tablespace de nombre TS_INT.

2. Crear un esquema de nombre INSTITUTO.

3. Crear las siguientes tablas dentro del esquema (INSTITUTO): Establecer clave principal a cada tabla y relacionarlas.

4. En la tabla notas la nota no debe sobre pasar más de 20.

5. Insertando los siguientes registros:

Tabla: ESPECIALIDAD

Tabla: CURSO

Tabla: ALUMNO

Page 26: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 26

Tabla: NOTAS

6. Cambie el crédito del curso a 150 para los cursos LIBRO CAJA y POWER BUILDER.

7. Mostrar los alumnos que tenga la especialidad de COMPUTACION E INFORMACTICA.

8. Mostar las notas de los alumnos que lleven el curso POWER BUILDER.

9. Aumentar 2 puntos en el EXAMEN PARCIAL, al alumno JOSE ANTONIO ROMAN LEIVA.

10. Mostar el promedio global de los alumnos que lleven el curso de VISUAL STUDIO.NET.

Page 27: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 27

11. Mostrar el promedio global mas bajo.

12. Mostrar los datos del alumno MARIA ISABEL LOZADA ROJAS de tal forma que se vea en un solo cuadro.

13. Cambie el curso de VISUAL STUDIO.NET a JAVA CREATOR.

14. Mostrar los cursos que tenga el crédito del curso mayor a 100.

15. Restar con 5 puntos en el EXAMEN FINAL a los alumnos que lleven el curso de LIBRO CAJA.

16. Insertar un nuevo alumno que tenga la especialidad de COMPUTACION E INFORMATICA.

Page 28: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 28

17. Mostrar los alumnos que tenga en el promedio global más 15.

18. Insertar 5 nuevos alumnos, 3 de ellos para la especialidad de CONTABILIDAD Y FINANZAS y los otros 2 para la otra especialidad.

19. Ingresar notas a los alumnos que no tengan, los alumnos de COMPUTACION E INFORMATICA lleva el curso de JAVA CREATOR.

20. Mostrar el promedio global más bajo que lleven el curso de JAVA CREATOR.

Page 29: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 29

21. Aumentar con 3 puntos más a las notas del EXAMEN PARCIAL que estén bajo o igual a 13.

22. Mostrar los cursos que tenga en CREDITO DE CURSO menor a 100

23. Cambie el curso de LIBRO CAJA a LIBRO MAYOR.

24. Mostar todos los alumnos que tenga la especialidad de CONTABILIDAD Y FINANZAS.

25. Mostrar los alumnos que lleven el curso de JAVA CREATOR y que su promedio global sea mayor igual a 17.

Page 30: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 30

26. Cambie el curso de COSTOS Y PRESUPUESTOS a ECONOMIA Y FINANZAS.

27. Restar con 1 punto en el EXAMEN FINAL a los alumnos que lleven el curso de LIBRO MAYOR.

28. Mostrar los alumnos que tenga nota de promedio global 15 o 17.

29. Mostrar las notas del alumno CARMEN ROSARIO SOLIS ALVAREZ.

30. Restar con 12 puntos en el EXAMEN FNAL a los alumnos que lleven el curso de POWER BUILDER.

Page 31: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 31

Preguntas de investigación 31. Mostrar la fecha del sistema incrementado 5 días.

32. Mostar la hora del sistema.

33. Mostrar la condición APROBADO o DESAPROBADO dependiendo el promedio global.

34. Mostrar su edad actual

35. Genere el proceso de operación para el promedio global.

Page 32: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 32

Consultas simples Antes de empezar, resuelva el laboratorio 04

Laboratorio 04: 1. Crear un tablespace de nombre TS_COM.

2. Crear un esquema de nombre COMERCIAL.

3. Crear las siguientes tablas dentro del esquema (COMERCIAL): Establecer clave principal a cada tabla y relacionarlas.

Page 33: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 33

Page 34: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 34

La instrucción SELECT Hay tres componentes básicos en la instrucción SELECT: SELECT FROM y WHERE.

Sintaxis

SELECT * | lista_columnas FROM nombre_tabla WHERE condicion_filas lista_columnas: es la lista de las columnas a mostrar en el resultado de la consulta. Si se especifica * se mostraran todas las columnas de la tabla.

condicion_filas: es una expresión lógica que indica que las filas a mostrar son aquellas para las que el valor de la expresión es verdadero.

Sintaxis con cláusulas más utilizadas

SELECT ALL |DISTINCT lista_columnas INTO nueva_tabla FROM tabla_origen WHERE condicion_filas GROUP BY ALL expresión_agrupar_por , HAVING condicion_grupos ORDER BY nombre_columa ASC | DESC. Lectura de todos los datos.

SELECT *FROM PERSONAL;

Page 35: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 35

Lectura de columnas seleccionadas.

SELECT COD_CLI,APE_CLI,NOM_CLI,TEL_CLI FROM CLIENTE;

Definiendo alias para los nombres de las columnas.

SELECT COD_PER AS ID,APE_PER AS APELLIDOS,NOM_PER AS NOMBRES FROM PERSONAL;

Definiendo columnas computadas.

SELECT COD_PRO,NOM_PRO,COD_LIN,PRE_PRO,(PRE_PRO - (PRE_PRO * 0.05)) AS "PRECIO CON DSCTO" FROM PRODUCTO;

Page 36: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 36

Concatenando cadena.

SELECT COD_CLI,NOM_CLI || ' ' || APE_CLI AS CLIENTE,DIR_CLI FROM CLIENTE;

Page 37: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 37

Definición de filtros

En la cláusula WHERE, condicion_filas es una expresión lógica que establece la condición que deben cumplir las filas a mostrar el resultado de la consulta. Para construir la expresión lógica utilice operadores relacionales o de comparación y de operadores lógicos SQL como LIKE, BETWEEN e IN.

Uso del operador igual (=)

SELECT COD_PER,APE_PER,NOM_PER,COD_DIS FROM PERSONAL WHERE COD_DIS='D03';

Uso del operador diferente (<> !=)

SELECT COD_CAR,NOM_CAR FROM CARGO WHERE COD_CAR <> 'C003'; SELECT COD_CAR,NOM_CAR FROM CARGO WHERE COD_CAR != 'C003';

Uso del operador menor que (<)

SELECT COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT FROM PRODUCTO WHERE STO_ACT < 15;

Page 38: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 38

Uso del operador mayor que (>)

SELECT COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT FROM PRODUCTO WHERE PRE_PRO > 3100;

Uso del operador menor o igual que (< =)

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE WHERE APE_CLI <='LOAYZA MARENGO';

Uso del operador mayor o igual que (> =)

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE WHERE APE_CLI >='SALAZAR RUIZ';

Page 39: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 39

Manipulación de datos tipo Fecha y Hora. Fecha del sistema

SELECT SYSDATE FROM DUAL;

Uso de la función TO_CHAR con datos tipo fecha

TO_CHAR(expresión_fecha,’patron_formato_fecha’) Convierte la expresión_fecha a una cadena con el formato de fecha especificado en patron_formato_fecha.

expresión_fecha: representa la fecha que se desea convertir a cadena con formato fecha.

patron_formato_fecha: especifica el formato de la cadena que representa una fecha. Mostrar solo fecha

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') AS FECHA FROM DUAL;

Mostrar solo hora

SELECT TO_CHAR(SYSDATE,'HH:MI:SS') AS HORA FROM DUAL;

Page 40: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 40

Búsqueda basada en cadena de caracteres

Operador LIKE

Sintaxis SELECT * | FROM lista_columnas FROM nombre_tabla WHERE columna LIKE expresión_cadena_a_buscar Comodín del operador LIKE. Comodín Descripción % indica que en la posición del comodín puede ir cualquier

cadena de caracteres, incluso una cadena nula.

- indica que en la posición del comodín puede ir cualquier cadena de caracteres, no nulo.

Uso del comodín (%) Permite generar la busqueda por el incio del campo.

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE WHERE APE_CLI LIKE 'PAL%';

Permite generar la búsqueda por el final del campo.

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE WHERE APE_CLI LIKE '%IVA';

Page 41: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 41

Permite generar la búsqueda por cualquier lado del campo.

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE WHERE NOM_CLI LIKE '%MARIA%';

Uso del comodín ( _ )

SELECT COD_PRO,NOM_PRO FROM PRODUCTO WHERE NOM_PRO LIKE '%43_';

Búsqueda basada en rango El operador BETWEEN permite ejecutar consultas que ejecutan búsquedas basadas en rango de valores.

Sintaxis

SELECT * | lista_columnas FROM nombre_tabla WHERE columna BETWEEN valor_inicial AND valor_final between indica que el valor en columna debe encontrarse en el rango definido por valor_inicial y valor _final.

columna: es la columna en la que se busca según el rango especificado por valor_inicial y valor_final.

valor_inicial, valor_final: establecen los límites del rango de valores en el que se basa la búsqueda.

Page 42: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 42

Búsqueda basada en rango de valores numéricos.

SELECT COD_PRO,NOM_PRO,PRE_PRO,STO_ACT FROM PRODUCTO WHERE STO_ACT BETWEEN 10 AND 14;

Búsqueda basada en rango de valores cadena.

SELECT COD_PRO,NOM_PRO,PRE_PRO,STO_ACT FROM PRODUCTO WHERE NOM_PRO BETWEEN 'CO' AND 'EX' ORDER BY NOM_PRO;

Búsqueda basada en rango de valores fecha.

SELECT TOTAL,NUM_COMP FROM COMPROBANTE WHERE FECHA_EMISION BETWEEN '02/02/2009' AND '03/03/2009';

Page 43: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 43

Búsqueda basada en conjunto de valores. El operador IN permite ejecutar consultas que ejecutan búsquedas basadas en conjunto de valores.

Sintaxis SELECT * | lista_columnas FROM nombre_tabla WHERE columna [NOT] IN (conjunto_de_valores) Busqueda en conjunto de valores

SELECT COD_PRO,NOM_PRO,PRE_PRO,STO_ACT FROM PRODUCTO WHERE COD_PRO IN('P0000010','P0000080','P0000041');

Manipulación de valores NULL Un valor NULL indica que el valor es desconocido, no aplicable, o que simplemente se registrara posteriormente. Un valor NULL es distinto a una cadena vacía o al valor cero (0), y también es distinto a cualquier otro valor NULL. La comparación u operación entre dos valores NULL, o entre un valor NULL y cualquier otro valor retorna un valor desconocido (otro valor NULL), ya que cada valor NULL es desconocido. Antes de ejecutar un valor NULL, ejecute la siguiente sentencia.

UPDATE PRODUCTO SET STO_ACT='' WHERE COD_PRO IN('P0000001','P0000005');

Page 44: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 44

Ahora muestre los valores NULL.

SELECT COD_PRO,NOM_PRO,PRE_PRO FROM PRODUCTO WHERE STO_ACT IS NULL;

Calculo con valores de columnas que contienen valores NULL.

SELECT COD_PRO,NOM_PRO,PRE_PRO, STO_MIN,STO_ACT,STO_MIN + STO_ACT AS STOCK FROM PRODUCTO WHERE COD_PRO IN('P0000001','P0000005');

Calculo con valores de columnas que contienen valores NULL – uso de la función NVL

Sintaxis

NVL (expresión_a_verificar, valor_de_remplazo)

expresión_a_verificar: es una expresión cuyo valor puede ser NULL.

valor_de_remplazo: es el valor con que se remplaza expresión_a_verificar en el caso que esta fuera NULL. Ejecutando la consulta empleando la función NVL.

SELECT COD_PRO,NOM_PRO,PRE_PRO, STO_MIN,NVL(STO_ACT,0),STO_MIN + NVL(STO_ACT,0) AS STOCK FROM PRODUCTO WHERE COD_PRO IN('P0000001','P0000005');

Page 45: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 45

Laboratorio 05: Utilizando el esquema COMERCIAL. 1. Mostrar todos productos que sean de tipo DIGITAL.

2. Mostrar todos los clientes que al final de su nombre termine con RIA.

3. Mostrar a todo el personal que al inicio de su apellido empiece con C.

Page 46: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 46

4. Mostrar todos los productos que tenga en stock de 10 a 15 unidades.

5. Mostrar todos los productos que empiece con la letra T, y que tenga en stock de 1 a 15 unidades.

6. Mostrar todos los productos de la línea ESCRITORIO, que tenga en stock menos de 50 unidades y el precio este entre 300 y 1000.

7. Mostrar todos los productos que empiece con la letra TV y que sean de la marca MIRAY.

Page 47: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 47

8. Mostrar todas las líneas que terminen con la letra O.

9. Mostrar todos los productos que utilicen GAS.

10. Mostrar todos los clientes que tenga los siguientes códigos: C0000001, C0000018, C0000020.

Preguntas de investigación. 11. Mostrar todos los clientes que al inicio de sus datos sea mayúscula, y que tenga la letra Z.

12. Elevar a la potencia 5 ^ 2.

Page 48: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 48

Funciones ORACLE

Funciones numérica Las funciones numéricas ejecutan un cálculo en base a valores de entrada recibidos como parámetros retornando como valor numérico.

MOD (expresionNumerica1, expresionNumerica2) Retorna el residuo de la división.

Ejemplo

SELECT MOD(11,2) FROM DUAL;

POWER (expresionNumerica, n) Retorna el resultado de elevar expresionNumerica a la potencia n.

Ejemplo SELECT POWER(4,3) FROM DUAL;

ROUND (expresionNumerica, presicion) Retorna el valor de expresionNumerica redondeando a la presicion especificada.

Ejemplo

SELECT ROUND(230.5879,0)FROM DUAL; 231 SELECT ROUND(230.5879,1)FROM DUAL; 230.6 SELECT ROUND(230.5879,2)FROM DUAL; 230.59 SELECT ROUND(230.5879,3)FROM DUAL; 230.588 SELECT ROUND(230.5879,4)FROM DUAL; 230.5879

Page 49: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 49

SQRT (expresionNumerica) Retorna la raiz cuadrada de expresionNumerica.

Ejemplo

SELECT SQRT(9)FROM DUAL;

TRUNC (expresionNumerica, [n]) Trunc espresionNumerica a n lugares decimales.

Ejemplo

SELECT TRUNC(3457.5252,2) FROM DUAL;

Funciones Cadena Ejecutan operaciones sobre una cadena ingresada como parámetro, y devuelven una cadena o valor numérico o información sobre el juego de caracteres.

CONCAT (expresionCadena1, expresionCadena2) Retorna expresionCadena1 concatenando con expresionCadena2.

Ejemplo

SELECT CONCAT('ALIANZA LIMA ', 'CAMPEON 2009' ) AS EQUIPO FROM DUAL;

INITCAP (expresionCadena) Retorna expresionCadena con la inicial de cada palabra mayúscula.

Ejemplo

SELECT INITCAP('carlos eduardo machanay sulca') AS CLIENTE FROM DUAL;

Page 50: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 50

LENGTH (expresionCadena) Retorna longitud de expresionCadena.

Ejemplo

SELECT LENGTH('ALIANZA LIMA')AS EQUIPO FROM DUAL;

LOWER (expresionCadena) Retorna expresionCadena, pero todo en minúscula.

Ejemplo

SELECT LOWER(‘JAVA’) AS SOFTWARE FROM DUAL;

LTRIM (expresionCadena1 [,expresionCadena2]) Elimina los espacios en blanco por izquierda.

Ejemplo

SELECT LTRIM(' ORACLE Y JAVA')AS SOFTWARE FROM DUAL;

REPLACE (expresionCadena1, expresionCadena2, expresionCadena3) Remplaza en expresionCadena1 todas las ocurrencias de expresionCadena2 con expresionCadena3.

Ejemplo

SELECT REPLACE('EL MEJOR EQUIPO DEL PERU UNIVERSITARIO ' ,'UNIVERSITARIO','ALIANZA LIMA') AS EQUIPO FROM DUAL;

Page 51: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 51

RTRIM (expresionCadena1 [,expresionCadena2]) Elimina los espacios en blanco por derecha.

Ejemplo

SELECT RTRIM('PL/SQL DEVELOPER ') AS MANUAL FROM DUAL;

SELECT RTRIM('PL/SQL DEVELOPER','DEVELOPER') AS MANUAL FROM DUAL;

SUBSTR (expresionCadena, inicio, n) A partir de expresionCadena retorna una subcadena de n caracteres de longitud generada a partir de la posición inicio.

Ejemplo

SELECT SUBSTR('ALIANZA LIMA CAMPEON 2009',1,12) AS EQUIPO FROM DUAL;

UPPER (expresionCadena) Retorna expresionCadena, pero todo en mayúscula.

Ejemplo

SELECT UPPER('oracle developer') AS MANUAL FROM DUAL;

Page 52: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 52

Funciones Fecha y Hora Las funciones de fecha y hora operan sobre valores de fecha (DATE).

ADD_MONTHS (expresionFecha,n) Incrementa expresionFecha en n meses y genera una nueva fecha.

Ejemplo

SELECT ADD_MONTHS(SYSDATE,4)AS FECHA FROM DUAL;

EXTRACT (parteFecha, from expresionFecha) Entrega a partir de expresionFecha, la parteFecha especificada. parteFecha puede ser una de las siguientes:

YEAR MONTH DAY HOUR MINUTE SECOND

Ejemplo

SELECT EXTRACT(YEAR FROM SYSDATE) AS AÑO FROM DUAL;

LAST_DAY (expresionFecha) Entrega la fecha del último día del mes especificado:

Ejemplo

SELECT LAST_DAY(SYSDATE) AS FECHA FROM DUAL;

Page 53: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 53

NEXT_DAY (expresionFecha, diaSemana) Entrega la fecha posterior más cercana a expresionFecha y que cae en el diaSemana especificado.

Ejemplo

SELECT NEXT_DAY('25/08/2009','VIERNES') AS FECHA FROM DUAL;

ROUND (expresionFecha, Unidad) Entrega la nueva fecha que es el resultado de redondear expresionFecha a la unidad especificada.

Ejemplo

SELECT ROUND(TO_DATE('25/02/2009'),'YEAR') AS FECHA FROM DUAL;

TO_CHAR (expresionFecha, formato [,idioma]) ) Convierte expresionFecha a una cadena con el formato e idioma especificados.

Ejemplo

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY')AS FECHA FROM DUAL;

Page 54: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 54

Elementos para formato

Elemento Descripción DL formato de fecha largo.

DS formato de fecha corto.

DAY nombre del dia de la semana.

DY nombre abreviado del dia de la semana.

D dia de la semana(1 - 7)

DD dia del mes (1 - 31)

DDD dia del año (1 - 365)

MONTH nombre del mes.

MON nombre abreviado del mes.

MM mes del año (01 - 12)

YYYY año con 4 dígitos.

YY año con 2 digitos.

HH hora del dia (1 - 12)

HH24 hora del dia (0 - 23)

MI minutos (0 - 59)

SS segundos (0 – 59)

TS formato de hora.

TO_DATE (‘cadenaFormatoFecha’ [,formato] [,formato]) Entrega un tipo Fecha-Hora a partir de ‘cadenaFormatoFecha’ usando el formato e idioma especificados.

Ejemplo

SELECT TO_DATE('25/08/2009','DD/MM/YYYY')AS FECHA FROM DUAL;

Page 55: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 55

Funciones de conversión de tipos CAST (expresión as tipoDato) Convierte el valor de la expresión al tipo especificado en tipoDato.

Ejemplo

SELECT CAST(SYSDATE AS CHAR(10))AS FECHA FROM DUAL;

Otras funciones

NVL (expresión1, expresión2) Si expresión1 es NULL, la funcion retorna expresión2.

NVL2 (expresión1, expresión2, expresión3) Si expresión1 no es NULL, la funcion retorna expresión2, Si expresión1 es NULL, la funcion retorna expresión3 .

USER Entrega nombre del usuario en la sesión actual.

Page 56: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 56

Laboratorio 06: 1. Resuelva la siguiente operación.

2. Agregar un trimestre a la fecha del sistema.

3. Redondear el siguiente número a 2 decimales 563.256

4. Mostrar el mes actual en texto.

5. Calcular su edad actual.

Page 57: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 57

Funciones de agregación y agrupamiento de datos Funciones de agregación

Son funciones que permite efectuar una operación aritmética que resume los valores de una columna de toda la tabla o que resume los valores de una columna agrupados según determinado criterio. La función produce un solo valor que es el resumen de la tabla, o de cada una de los grupos.

Función Descripción AVG() Retorna el promedio de los valores de una columna o

expresión.

COUNT() Retorna la cuenta del número de filas de una consulta.

MAX() Retorna el valor máximo de una columna o expresión.

MIN() Retorna el valor mínimo de una columna o expresión.

SUM() Retorna la suma de los valores de una columna o expresión.

Puede usar las funciones de agregación con la declaración SELECT o en combinación con la cláusula GROUP BY. Utilizando el esquema COMERCIAL.

Uso de la función AVG()

Sintaxis AVG ( [DISTINCT ] Expresión_Numerica)

DISTINCT indica que debe eliminarse los valores duplicados de Expresión_Numerica antes de evaluar la función.

Ejemplo: Obtener el precio promedio de los productos. SELECT AVG(PRE_PRO) AS PRECIO FROM PRODUCTO;

Page 58: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 58

Ejemplo: Obtener el precio promedio de los productos de la línea AUDIO.

SELECT AVG(PRE_PRO) AS PRECIO FROM PRODUCTO WHERE COD_LIN='L008';

Ejemplo: Obtener el stock promedio de los productos cuyo precio sea mayor a 600.

SELECT AVG(STO_ACT)AS STOCK FROM PRODUCTO WHERE PRE_PRO > 600;

Uso de la función COUNT()

Sintaxis COUNT ( [DISTINCT ] Expresión)

COUNT ( * )

DISTINCT indica que debe eliminarse los valores duplicados de la Expresión antes de evaluar la función.

COUNT (Expresion) Ignora los valores NULL de expresión; COUNT (*) se utiliza para contar filas, por lo que no ignora los valores NULL.

Ejemplo: Cuenta los productos registrados. SELECT COUNT(*) AS PRODUCTO FROM PRODUCTO;

Page 59: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 59

Uso de las funciones MAX () Y MIN ()

Sintaxis MAX (Expresión)

MIN (Expresión)

Expresión: indica los valores para los que se debe hallar el máximo y mínimo valor.

Ejemplo: Stock mas alto y stock mas bajo. SELECT MAX(STO_ACT) AS "STOCK MAXIMO", MIN(STO_ACT) AS "STOCK MINIMO" FROM PRODUCTO;

Ejemplo: Nombre del primer producto y del ultimo producto.

SELECT MIN(NOM_PRO)AS "PRODUCTO MIN" ,MAX(NOM_PRO) AS "PRODUCTO MAX" FROM PRODUCTO;

Page 60: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 60

Uso de la función SUM ()

Sintaxis SUM ( [DISTINCT ] Expresión)

DISTINCT indica que debe eliminarse los valores duplicados de la Expresión antes de evaluar la función.

Ejemplo: Stock total de los productos.

SELECT SUM(STO_ACT)AS "TOTAL STOCK" FROM PRODUCTO;

Ejemplo: Stock total de los productos que son de la línea AUDIO.

SELECT SUM(STO_ACT)AS "TOTAL STOCK" FROM PRODUCTO WHERE COD_LIN='L008';

Page 61: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 61

Cláusula GROUP BY Se utiliza para agrupar las filas en base a determinado criterio, y luego ejecutar una operación que resume un atributo para cada uno de los grupos así formados.

Sintaxis SELECT lista_columnas, funcion_agregacion(columna), funcion_agregacion(columna), FROM n_tabla

[ WHERE condicion_filas ] GROUP BY lista_columnas [ HAVING condicion_grupos ]

Las columnas presentes en lista_columnas de la clausula GROUP BY deben necesariamente estar presentes en la lista_columnas de SELECT.

• Cualquier columna presente en SELECT, y que no se encuentre en la lista_columnas de GROUP BY debe estar afectada por una función de agregación.

• condicion_grupos en la clausula HAVING permite establecer una expresión logica que indica que los grupos a mostrar en el resultado son aquellos para los que el valor de la expresión es verdadero.

• Una consulta GROUP BY solo entrega una fila por cada grupo generado. Esta fila muestra el resultado de la funcion_agregacion aplicada sobre el grupo. No muestra el contenido del grupo.

• Cuando se utiliza GROUP BY sobre una columna que contiene valores NULL, estos se procesan como grupo.

Page 62: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 62

Ejemplo: Cantidad de productos registrados por cada línea.

SELECT COD_LIN AS LINEA,COUNT(COD_PRO)AS PRODUCTO FROM PRODUCTO GROUP BY COD_LIN;

Cláusula GROUP BY con el operador CUBE Resume los valores de grupos. El operador CUBE se usa normalmente para producir promedios acumulados o sumas acumuladas.

Ejemplo: GROUP BY agrupa las filas de la tabla PRODUCTO en base a la combinación de los valores de las columnas, COD_LIN y para cada una de las combinaciones obtenidas calcula el promedio de columna PRE_PRO.

SELECT COD_LIN AS LINEA,AVG(PRE_PRO)AS "PRECIO PROMEDIO" FROM PRODUCTO GROUP BY CUBE(COD_LIN) ORDER BY COD_LIN;

Page 63: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 63

Uso de GROUP BY con el operador GROUPING SETS

Permite que una sola consulta GROUP BY se presente grupos formados por distintas combinaciones de atributos.

Uso del operador GROUPING SETS

Este ejemplo muestra la suma acumulada del STO_ACT para tres combinaciones de atributos.

• (COD_LIN, COD_PRV, PRE_PRO) • (COD_LIN, PRE_PRO) • (COD_PRV, PRE_PRO)

SELECT COD_LIN,COD_PRV,PRE_PRO,SUM(STO_ACT) AS "STOCK ACTUAL" FROM PRODUCTO GROUP BY GROUPING SETS( (COD_LIN,COD_PRV,PRE_PRO), (COD_LIN,PRE_PRO), (COD_PRV,PRE_PRO)) ORDER BY COD_LIN,COD_PRV,PRE_PRO;

Page 64: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 64

Uso de la condición HAVING () Cuando ejecutamos una consulta GROUP BY es posible establecer un filtro de

grupos utilizando la cláusula HAVING.

Ejemplo: GROUP BY agrupa las filas de la tabla PRODUCTO en base a la combinación de los valores de las columnas, COD_LIN y COD_MAR, y para cada una de las combinaciones obtenidas calcula el promedio de columna

PRE_PRO. Luego, filtra los grupos para mostrar solo aquellos definidos. SELECT COD_LIN AS LINEA,COD_MAR AS MARCA,AVG(PRE_PRO)AS "PRECIO PROMEDIO" FROM PRODUCTO GROUP BY CUBE(COD_LIN,COD_MAR) HAVING COD_LIN='L005'; ORDER BY COD_LIN,COD_MAR;

Page 65: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 65

Laboratorio 07: Utilizando el esquema COMERCIAL. 1. Mostrar el precio promedio de todos productos que sean de tipo DIGITAL.

2. Incrementar el código del cliente más 1.

3. Mostrar el total del stock de los productos que pertenecen a la línea ESCRITORIO.

4. Mostrar el total del stock de los productos por línea que sea menor a 150 unidades.

5. Mostrar el precio total de las líneas de productos que estén entre 1000 a 6000 soles.

Page 66: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 66

6. Mostrar los productos que se repitan y que cantidad

7. Mostrar el precio máximo a la raíz cuadrada, mostrando solo dos decimales.

8. Mostrar el total de stock por cada línea de producto, si el stock es mayor a 200 unidades muestra un mensaje en el siguiente campo STOCK SUFICIENTE de lo contrario STOCK INSUFICIENTE.

9. Mostrar la cantidad de los productos más 1.

10. Mostrar el precio mínimo, el stock máximo y la cantidad de productos.

11. Mostrar los productos, donde realice cálculo del precio por cantidad (5 unidades) me da el importe, donde muestre los productos cocina y que el importe sea mayor a 3000 soles y que sea de la marca INDURAMA.

Page 67: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 67

Consultas multitablas

Consultas correlacionadas Un Join, combinación o consulta correlacionada es la consulta que selecciona columnas de dos tablas o conjunto de filas, y las entrega en un único conjunto de resultados. Las filas de las tablas o conjunto de filas se combinan relacionando valores comunes, típicamente de clave primaria y clave foránea.

Sintaxis SELECT lista_columnas FROM tabla1 tipo_join JOIN tabla2 ON condicion_del_join

• lista_columnas es la lista de columnas a mostrar en el resultado de la consulta. Se recomienda que cada columna se calificada con alias de la tabla a la cual pertenece.

• tipo_join indica si el join es interior (INNER), exterior (OUTER) o irrestricto (CROSS).

• condicion_del_join es una expresión que indica en base a que columnas de cada una de las tablas se establece la relación entre ellas.

Una combinación (join) puede ser cualquiera de los siguientes tipos.

• INNER JOIN • OUTER JOIN

LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN

• CROSS JOIN

INNER JOIN.

Un INNER JOIN es la consulta correlacionada que combina todas las filas que están relacionadas de las dos tablas o conjunto de filas.

Page 68: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 68

Uso del INNER JOIN. Mostrar los nombres de los distritos de la tabla cliente que vivan en LIMA.

SELECT CLIENTE.COD_CLI AS CODIGO,CLIENTE.RAZON_SOCIAL,CLIENTE.RUC_CLI AS RUC,DISTRITO.NOM_DIS AS DISTRITO FROM CLIENTE INNER JOIN DISTRITO ON CLIENTE.COD_DIS=DISTRITO.COD_DIS WHERE DISTRITO.NOM_DIS='LIMA';

Usando el alias como referencia a las tablas.

SELECT C.COD_CLI AS CODIGO,C.RAZON_SOCIAL,C.RUC_CLI AS RUC,D.NOM_DIS AS DISTRITO FROM CLIENTE C INNER JOIN DISTRITO D ON C.COD_DIS=D.COD_DIS WHERE D.NOM_DIS='LIMA';

Page 69: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 69

Uso del INNER JOIN con 3 tablas. Mostrar los datos de la tabla comprobante, que se ha el numero CP00000004, que tipo de comprobante es, así como el importe.

SELECT COMPROBANTE.NUM_COMP AS NUMERO,TIPOCOMPROBANTE.NOM_TIC AS COMPROBANTE,COMPROBANTE.FECHA_EMISION AS FECHA, SUM(DETALLE.PRECIO * DETALLE.CANT) AS IMPORTE FROM COMPROBANTE INNER JOIN DETALLE ON COMPROBANTE.NUM_COMP=DETALLE.NUM_COMP INNER JOIN TIPOCOMPROBANTE ON COMPROBANTE.COD_TIC=TIPOCOMPROBANTE.COD_TIC GROUP BY COMPROBANTE.NUM_COMP,TIPOCOMPROBANTE.NOM_TIC,COMPROBANTE.FECHA_EMISION HAVING COMPROBANTE.NUM_COMP='CP00000004';

Uso del OUTER JOIN

Un OUTER JOIN es la consulta correlacionada que entrega todas las filas que están relacionadas, y además.

Las filas no relacionadas de la tabla izquierda (LEFT OUTER JOIN) Las filas no relacionadas de la tabla derecha (RIGHT OUTER JOIN) Las filas no relacionadas de ambas tablas (FULL OUTER JOIN) Se considera como la tabla izquierda, a aquella que se menciona primero en

la cláusula FROM.

Page 70: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 70

Mostrar los productos que han sido vendidos.

SELECT PRODUCTO.COD_PRO AS CODIGO,PRODUCTO.NOM_PRO AS PRODUCTO,DETALLE.CANT FROM PRODUCTO LEFT OUTER JOIN DETALLE ON PRODUCTO.COD_PRO=DETALLE.COD_PRO WHERE NOT DETALLE.CANT IS NULL;

Uso de CROSS JOIN Es una consulta correlacionada que combina cada una de la filas de una de las tablas con cada una de las filas de la otra tabla.

No es necesario que exista una columna en común para ejecutar un CROSS JOIN. Esta consulta también se le conoce como el producto cartesiano de dos tablas.

Page 71: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 71

SELECT MARCA.COD_MAR,MARCA.NOM_MAR,PRODUCTO.COD_PRO,PRODUCTO.NOM_PRO FROM MARCA CROSS JOIN PRODUCTO;

Operador UNION

Sintaxis

Sentencia_SELECT_1 UNION [ALL]

Sentencia_SELECT_2 UNION [ALL]

Sentencia_SELECT_3

El operador UNION une los resultados de dos o más instrucciones SELECT en un solo conjunto de resultados.

Use el operador UNION cuando los datos que desea recuperar residen en diferentes localizaciones y no puede acceder a ellos con una sola consulta.

Cuando use el operador UNION considere los siguiente.

• SQL Server requiere que las consultas a las tablas referenciadas tenga el mismo número de columnas, los mismos tipos de datos, y que las columnas se encuentren en el mismo orden en la lista de cada uno de

los SELECT.

Page 72: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 72

• SQL Server elimina las filas duplicadas en el resultado. Sin embargo, si

usa la opción ALL, todas las filas (incluso las duplicadas) son incluidas en el resultado.

• Debe especificar los nombres de las columnas en la primera instrucción

SELECT. Por consiguiente, si quiere definir los nuevos títulos de las columnas para el resultado, debe crear los seudónimos de las columnas

en la primera instrucción SELECT.

• Si quiere que el resultado completo sea devuelto en un orden

especifico, debe especificar el orden e incluir la cláusula ORDER BY dentro de la sentencia UNION.

Uso del operador UNION

SELECT COD_PRO,PRE_PRO FROM PRODUCTO UNION SELECT COD_PRO,PRECIO FROM DETALLE;

Page 73: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 73

Para explicar como trabaja el operador UNION ALL y además los operadores INTERSECT y MINUS, vamos a crear dos pequeñas tablas con algunos datos. Crear la tabla OPERARIOS

CREATE TABLE OPERARIOS (IDOPERARIO VARCHAR2(4), NOMBRE VARCHAR2(15)); Insertando 5 registros

INSERT INTO OPERARIOS VALUES('0967','ANTONIO'); INSERT INTO OPERARIOS VALUES('0245','NANCY'); INSERT INTO OPERARIOS VALUES('0376','CARLOS'); INSERT INTO OPERARIOS VALUES('0879','ROSA'); INSERT INTO OPERARIOS VALUES('0147','MARCOS'); Crear la tabla SUPERVISORES

CREATE TABLE SUPERVISORES (IDSUPERVISOR VARCHAR2(4), NOMBRE VARCHAR2(15)); Insertando 2 registros

INSERT INTO SUPERVISORES VALUES('0376','CARLOS'); INSERT INTO SUPERVISORES VALUES('0713','GUMERCINDO');

Ejecución de UNION

SELECT IDSUPERVISOR AS EMPLEADO,NOMBRE FROM SUPERVISORES UNION SELECT IDOPERARIO,NOMBRE FROM OPERARIOS;

Page 74: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 74

Ejecución de UNION ALL

SELECT IDSUPERVISOR AS EMPLEADO,NOMBRE FROM SUPERVISORES UNION ALL SELECT IDOPERARIO,NOMBRE FROM OPERARIOS;

Uso del operador INTERSECT

El operador INTERSECT, al igual que el operador UNION, permite procesar filas de dos consultas. INTERSECT entrega las filas que son comunes a las dos consultas.

SELECT IDSUPERVISOR AS EMPLEADO,NOMBRE FROM SUPERVISORES INTERSECT SELECT IDOPERARIO,NOMBRE FROM OPERARIOS;

Page 75: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 75

Uso del operador MINUS

El operador MINUS construye una relación de filas formado por las filas que aparecen en el primer conjunto, pero que no aparecen en el segundo conjunto.

SELECT IDOPERARIO AS EMPLEADO,NOMBRE FROM OPERARIOS MINUS SELECT IDSUPERVISOR,NOMBRE FROM SUPERVISORES;

Consulta AUTOJOIN Es una consulta correlacionada en la que una tabla se combina consigo misma para generar un nuevo conjunto de resultado. Para generar un ejemplo crearemos una tabla que tenga autorelacion. Esta tabla contiene clave foránea que apunta a la clave primaria en la misma tabla. Crear la tabla TRABAJADOR, establecer clave primaria.

CREATE TABLE TRABAJADOR (IDTRABAJADOR NUMBER PRIMARY KEY, APELLIDOS VARCHAR2(30)NOT NULL, JEFE NUMBER NULL); Estableciendo clave foránea.

ALTER TABLE TRABAJADOR ADD CONSTRAINT FK_TRABAJADOR_TRABAJADOR FOREIGN KEY(JEFE) REFERENCES TRABAJADOR;

Page 76: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 76

Insertando 7 registros.

INSERT INTO TRABAJADOR VALUES(102,'ARDILES SOTO',NULL); INSERT INTO TRABAJADOR VALUES(101,'CAMACHO SARAVIA',102); INSERT INTO TRABAJADOR VALUES(105,'VILCHEZ SANTOS',102); INSERT INTO TRABAJADOR VALUES(103,'SANCHEZ ALIAGA',101); INSERT INTO TRABAJADOR VALUES(104,'CASTRO AVILA',101); INSERT INTO TRABAJADOR VALUES(107,'URRUNAGA TAPIA',101); INSERT INTO TRABAJADOR VALUES(106,'JUAREZ PINTO',105);

Ejemplo: crear una consulta que muestre una lista de trabajadores. La lista debe mostrar apellidos del jefe de cada trabajador.

SELECT T1.IDTRABAJADOR,T1.APELLIDOS,T2.APELLIDOS AS JEFE FROM TRABAJADOR T1 INNER JOIN TRABAJADOR T2 ON T1.JEFE= T2.IDTRABAJADOR;

Modifique la consulta para que también se muestre al trabajador 102.

SELECT T1.IDTRABAJADOR,T1.APELLIDOS,T2.APELLIDOS AS JEFE FROM TRABAJADOR T1 LEFT OUTER JOIN TRABAJADOR T2 ON t1.jefe= t2.idtrabajador;

Page 77: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 77

Subconsultas

Una subconsulta es una declaración SELECT anidada dentro de una sentencia SELECT, INSERT, UPDATE o DELETE o dentro de otra subconsulta. Las consultas son de los tipos siguientes: Subconsulta que entrega un solo valor (1 fila, 1 columna) Subconsulta que entrega un conjunto de valores (varias filas, 1 columna) Una subconsulta se especifica entre paréntesis.

Test de pertenencia

SELECT COD_PRO,NOM_PRO FROM PRODUCTO WHERE COD_PRO NOT IN(SELECT COD_PRO FROM DETALLE) ORDER BY COD_PRO;

Page 78: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 78

Test de existencia – uso de EXISTS Productos que han sido vendidos. SELECT PRODUCTO.COD_PRO, PRODUCTO.NOM_PRO FROM PRODUCTO WHERE EXISTS(SELECT *FROM DETALLE WHERE PRODUCTO.COD_PRO=DETALLE.COD_PRO);

Page 79: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 79

Inserción de filas con datos leídos por SELECT.

Sinstaxis

INSERT [INTO] tabla_destino SELECT lista_columnas FROM tabla_origen [WHERE condicion_filas_tabla_origen]

Inserción de filas. Antes de empezar, crearemos una tabla.

CREATE TABLE TABLA_PRUEBA (DISTRITO VARCHAR2(60)); Ahora insertaremos los datos de la tabla distrito a la tabla tabla_prueba.

INSERT INTO TABLA_PRUEBA SELECT NOM_DIS FROM DISTRITO; Ahora revisemos la tabla TABLA_PRUEBA.

SELECT *FROM TABLA_PRUEBA;

Page 80: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 80

Laboratorio 08: Utilizando el esquema COMERCIAL. 1. Mostrar los productos que sean de la línea MUSICA.

2. Mostar el cargo del personal, su nombre del personal que emitió el comprobante numero CP00000001.

3. Mostrar los productos que su proveedor se a del país de MEXICO.

4. Mostrar el proveedor de los productos vendidos.

Page 81: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 81

5. Mostrar todos los clientes que todavía no han generado alguna compra.

6. Mostrar el total de los importes vendidos de la línea MUSICA.

7. Mostrar los productos procedentes del país de MEXICO y que no sean de la marca SAMSUNG.

8. Mostrar el total redondeado de las compras por cada cliente.

9. Mostrar el total del precio por cada línea, que sea mayor a los 4000.

Page 82: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 82

10. Mostrar que tipo de comprobante, número del día, nombre del mes que han sido emitidos.

11. Mostrar el código del producto más 1.

12. Mostrar los productos vendidos que sean de la línea VIDEO.

13. Mostrar los comprobantes emitidos de los clientes que sean del distrito de LIMA y que su razón social se a S.A.

Page 83: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 83

14. Mostrar los productos vendidos, el stock actual, el precio por unidad, y el precio de todo el stock actual.

15. Mostrar el personal donde su teléfono no empiece con el número 3 y que sea del distrito de ATE.

16. Mostrar los productos que en el penúltimo carácter sea 3 y que sean de la marca MIRAY.

17. Mostar los productos donde usted pueda obtener la ganancia liquida de los productos DVD, de la línea AUDIO, y la ganancia se mayor a 45.

Page 84: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 84

18. Mostrar el total de ventas por meses.

19. Mostrar el total de ventas por distrito, y que cantidad por distrito.

20. Mostrar la descripción de los tipos de comprobantes.

21. Mostrar los proveedores que pertenecen a la línea AUDIO.

22. Modificar la ciudad, estado del proveedor CORPORACION LIGHT GOOD.

23. Modificar los apellidos, nombres del cliente CLINICA SAN LUCAS S.A.

Page 85: Oracle

ORACLE Machanay Sulca, Carlos E.

E-Mail: [email protected] Pagina 85

24. Mostrar los clientes que todavía no han generado alguna compra, y que en el distrito tenga la letra O.

25. Mostrar los productos que sean de la línea LINEA BLANCA, y que el stock este entre 10 y 20.

26. Incrementar el stock máximo del producto con 30 unidades a la línea MAQUINAS DE COSER.