Fundamentos sql

Post on 16-Feb-2017

297 views 0 download

Transcript of Fundamentos sql

Fundamentos de SQL

Compilado por : MSc Edgar Taya AcostFuente original:Prof. Nelliud D. Torres

CONTENIDO• FORMATO BÁSICO DEL SELECT

PARA UNA O MÁS TABLAS• SELECT STATEMENT• ALGEBRA RELACIONAL• INFORMACIÓN ADICIONAL Y

EJEMPLOS DE SELECT• USO DEL SELECT CON:

– WHERE– ALIAS– OPERADORES DE COMPARACIÓN

(=, >, <, >=, <=, <>, !=)– OPERADORES LÓGICOS (AND,

OR, NOT)– OPERADOR BETWEEN– COLUMNAS CALCULADAS– OPERADOR LIKE– OPERADOR IN– OPERADOR DISTINTC

– SORT– GROUP BY– HAVING– FUNCIONES

• Single Values– ROUND– NLV– TRUNC & SYSDATE– MOD

• Group of Values– AVERAGE (AVG)– MAX & MIN– COUNT– SUM

• Operaciones aritméticas en consultas

• Operaciones alfanuméricas en consultas

• Comandos de actualizaciones• Practica de Laboratorio

SELECT PARA UNA O MÁS TABLAS

Volver a los Objetivos

Sintaxis básica para las consultas para una sola entidad (tabla):

SELECT atributos FROM entidad WHERE condiciónGROUP BY atributos

HAVING condición ORDER BY atributos;

Solamente el SELECT y el FROM son obligatorios

Siempre termina con punto y coma (;).

Sintaxis para las consultas de dos o más entidades (tablas):

SELECT atributos (columnas, campos)FROM Tabla_1, Tabla_2,…ON condición JOINWHERE condiciónGROUP BY atributosHAVING condiciónORDER BY atributos;

SELECT STATEMENT

Volver a los Objetivos

7

SELECT Statement• Se utiliza para hacer queries a una tabla sencilla o a múltiples

tablas• Las clausulas más importantes son:

– SELECTSELECT• List a las columnas y expresiones que deben ser devueltos por el query

– FROMFROM• Indica la(s) tabla(s) o view(s) de donde se va a btener los datos

– WHEREWHERE• Indica las condiciones en las que una fila debe ser incluida en el resultado

– GROUP BYGROUP BY• Indica la categoría de los resultados

– HAVINGHAVING• Indica las condiciones bajo las cuales una categoría (grupo) será incluida

– ORDER BYORDER BY• Organiz (Sort) el resultado de aucerdo a un criterio especificado.

Pag: 309

ALGEBRA RELACIONAL

Volver a los Objetivos

ALGEBRA RELACIONAL

• La instrucción SELECT combina las tres operaciones relacionales básicas del álgebra relacional.

• Estas operaciones son:– Proyección (π)– Selección (σ)– Join (|x|)

ALGEBRA RELACIONAL (Cont.)

• La expresión relacional πa,b,c (R) en SQL se escribiría:

SELECT a,b,c FROM R• La expresión relacional πa,b,c (σ condición R) en

SQL se escribiría:SELECT a,b,c FROM R WHERE condición;

ALGEBRA RELACIONAL (Cont.)

• La expresión relacional πa,b,c (R|x|S) en SQL se escribiría:

SELECT a,b,c FROM R,S WHERE R.c = S.c;

Ojo Esta expresión provee un resultado en donde une dos tablas.

ALGEBRA RELACIONAL (Cont.)

• La expresión relacional πa,b,c (σ condición R|x|S) en SQL se escribiría:

SELECT a,b,c FROM R,S WHERE R.c = S.c AND condición;

Aquí se están relacionando dos tablas utilizando el PK de una y el FK de la otra en adición a una o más condiciones adicionales.

INFORMACIÓN ADICIONAL Y EJEMPLOS DE SELECT

Volver a los Objetivos

Figure 7-10 SQL statement processing order (adapted from van der Lans, p.100)

Pag: 322

Ejemplo de un SELECT

• Consigue aquellos productos con un precio estándar menor de $275

SELECTSELECT PRODUCT_NAME, STANDARD_PRICE FROMFROM PRODUCT_V WHEREWHERE STANDARD_PRICE < 275;

Table 7-3: Comparison Operators in SQL

Pag: 309

Otro ejemplo que muestra ciertas columnas y todas las filas de una tabla

• Un comando puede obtener columnas en específico y todas las filas de una tabla.

– Mostrar el número, nombre y balance de todos los clientes

• La clausula WHERE no hace falta ya que se van a mostrar todos los clientes de la tabla (filas).

Ejemplo de un SELECT que selecciona 3 columnas

Buscar (Retrieve) todas las columnas y filas de una tabla

• Utilice el asterisco (*) para indicar todas las columnas en la clausula SELECT

• Como resultado se van a mostrar todas las columnas en el orden en que la tabla fue creada

• El orden de las columnas en la clausula SELECT pueden tener un orden diferente al orden en que las columnas se crearon en la tabla.

• Esto le da la opción al usuario de mostrar los datos en el orden de columna que prefiera.

Ejemplo de un SELECT que busca todas las columnas de una tabla

USO DEL SELECT CON:

Volver a los Objetivos

WHERE

Uso de la Clausula WHERE• Se utiliza la clausula WHERE para buscar filas que

satisfagan alguna condición.

– ¿Cuál es el nombre del cliente número 148?

• Una condición simple incluye: nombre de columna, operador de comparación y finalmente un nombre de columna o un valor.

Uso de la Clausula WHERE (cont.)• Los valores de los caracteres en SQL son case

sensitive.

– “Pepito” es diferente de “pepito”

• las condiciones simples pueden comparar columnas.

– WHERE BALANCE > CREDIT_LIMIT

Ejemplo de un SELECT con WHERE

ALIAS

26

Ejemplo de SELECT utilizando un Alias

• El Alias se utiliza como alternativa para nombre de columna o tabla

SELECT CUSTCUST.CUSTOMER AS NAMENAME, CUSTCUST.CUSTOMER_ADDRESS

FROM CUSTOMER_V CUSTCUSTWHERE NAMENAME = ‘Home Furnishings’;

OJO El ALIAS se puede utilizar para reemplazar el nombre de una entidad o de un atributo Pag: 310

OPERADORES DE COMPARACIÓN

Los operadores de comparación

OPERADORES LÓGICOS

Usando condiciones compuestas• Condiciones compuestas conectan dos o más

condiciones simples con los operadores AND, OR y NOT– AND – Muestra los resultados cuando ambas

condiciones simples son ciertas

– OR - Muestra los resultados cuando cualquiera de las condiciones simples sea cierta

– NOT - invierte el resultado de la condición original

SELECT Example–Boolean Operators• ANDAND, OROR, and NOTNOT Operators for customizing

conditions in WHERE clause

SELECT PRODUCT_DESCRIPTION, PRODUCT_FINISH, STANDARD_PRICE

FROM PRODUCT_VWHERE (PRODUCT_DESCRIPTION LIKELIKE ‘%%Desk’OROR PRODUCT_DESCRIPTION LIKELIKE ‘%%Table’) ANDAND UNIT_PRICE > 300;

Note: the LIKE operator allows you to compare strings using wildcards. For example, the % wildcard in ‘%Desk’ indicates that all strings that have any number of characters preceding the word “Desk” will be allowed

Pag: 315

32

Diagrama de Venn del Query del Slide anterior

Ejemplo de un SELECT con AND

Ejemplo del mismo SELECT con el AND en una misma línea

Ejemplo de un SELECT con OR

Ejemplo de un SELECT con NOT

OPERADOR BETWEEN

Utilizando el operador BETWEEN• No es un clausula esencial en SQL

• se pueden obtener los mismos resultados sin esta clausula

• Sin embargo simplifica la construcción del SELECT en donde se quiera aplicar

• El operador BETWEEN solo incluye valores de un rango

– Por ejemplo si usas BETWEEN 2000 and 5000, todos aquellos valores entre 2000 y 5000 son ciertos.

Ejemplo de un SELECT sin BETWEEN

Ejemplo de un SELECT con BETWEEN

COLUMNAS CALCULADAS

UTILIZANDO COLUMNAS CALCULADAS

• Computed column – No existen en la base de datos, pero se calcula utilizando datos de columnas que ya existen.

• Los cálculos pueden incluir los operadores matemáticos.

– + para suma

– - para resta

– * para multiplicación

– / para división

Ejemplo de un SELECT que crea una columna calculada

OPERADOR LIKE

Utilizando el operador LIKE• Se utiliza para obtener los datos en donde no hay un

pareo exacto (exact match) al utilizar los wildcards (*).

• LIKE %Central% te va a devolver datos que contengan esos caracteres como por ejemplo:

– “3829 Central” or “Centralia”

• El underscore (_) representa cualquier caracter sencillo

– “T_M” para TIM o TOM o T3M

OPERADOR IN

Utilizando el Operador IN• El operador IN permite examinar diferentes valores

simultáneamente. Por ejemplo:

OPERADOR DISTINCT

Utilizando el Operador DISTINCT

• Se utiliza para garantizar inequidad (uniqueness) en los resultados.

• En otras palabras elimina repeticiones

A Guide to SQL, Seventh Edition

Ejemplo que no utiliza el Operador DISTINCT

Ejemplo que utiliza el Operador DISTINCT

SORT

SORTING• ORDER BY – Indica el order por el cual se van a

organizar los datos

• esta columna seleccionada se le conoce también como el sort key

• Se utiliza el ORDER BY seguido del sort key

• Las filas se organizan en orden ascendente a menos que se especifique lo contrario.

Opciones Adicionales para Organizar (Sort)

• Es posible organizar datos por más de un key

• Major sort key y minor sort key

• Se lista el orden de los sort keys en orden de importancia en la clausula ORDER BY

• Se utiliza DESC para organizar en orden descendente.

Ejemplo de un SORT con dos Keys

SELECT Example – Sorting Results with the ORDER BY Clause

• Sort the results first by STATE, and within a state by CUSTOMER_NAME

SELECT CUSTOMER_NAME, CITY, STATEFROM CUSTOMER_VWHERE STATE ININ (‘FL’, ‘TX’, ‘CA’, ‘HI’)ORDER BYORDER BY STATE, CUSTOMER_NAME;

Note: the IN operator in this example allows you to include rows whose STATE value is either FL, TX, CA, or HI. It is more efficient than separate OR conditions

Pág: 319

GROUP BY

USO DE LA CLAUSULA GROUP

• For use with aggregate functions– Scalar aggregate: single value returned from SQL query with

aggregate function– Vector aggregate: multiple values returned from SQL query with

aggregate function (via GROUP BY)

SELECT CUSTOMER_STATE, COUNT(CUSTOMER_STATE) FROM CUSTOMER_VGROUP BYGROUP BY CUSTOMER_STATE;

Note: you can use single-value fields with aggregate functions if they are included in the GROUP BY clause

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

EJEMPLO DE GROUP BY

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

EJEMPLO DE GROUP BY (Cont.)

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

EJEMPLO DE GROUP BY (Cont-2)

HAVING

SELECT Example – Uso de la cláusula HAVING

• Se utiliza con la cláusula GROUP BY

SELECT CUSTOMER_STATE, COUNT(CUSTOMER_STATE)

FROM CUSTOMER_VGROUP BY CUSTOMER_STATEHAVINGHAVING COUNT(CUSTOMER_STATE) > 1;

Like a WHERE clause, but it operates on groups (categories), not on individual rows. Here, only those groups with total numbers greater than 1 will be included in final result.

FUNCIONES

Volver a los Objetivos

OPERACIONES DE FUNCIONES

• Como todos sabemos, las funciones son un conjunto de instrucciones que ejecutan una tarea en particular.

• A continuación se muestra una tabla con ejemplos de funciones agregadas (que leen varios datos de una columna para poder obtener el resultado).

UTILIZANDO FUNCIONESAggregate functions – Calculan sumatorias, promedios, valores mínimos o máximos, etc. (también se conocen como Group of Values)

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

OPERACIONES DE FUNCIONES

• Aquí vamos a explicar dos tipos de funciones:– Single Values– Group of Values

• A continuación explicamos la Función de Single Values

Operaciones de Funciones – Single Values

• Se llaman single values porque solo devuelven un solo valor como resultado.

• Algunas de las funciones que caen bajo esta categoría son: valor absoluto (ABS(valor)), la raíz cuadrada (SQRT(valor)), entre otros.

• A continuación mostramos algunos ejemplos

Operaciones de Funciones Single Values Ejemplo – 1 (ROUND)

• Mostrar el nombre y lo que gana el empleado en comisión para aquellos que son vendedores. Se redondea a dos lugares la ganancia de la comisión.

SELECT emp_nombre, ROUND(emp_commision * emp_salario / 100,2)FROM empleadoWHERE emp_titulo = ‘Vendedores’;

Operaciones de Funciones – Single Values Ejemplo – 2 (NVL)

• Mostrar el nombre de todos los vendedores y el porciento de comisión que tienen asignado. En caso de que el vendedor no gane comisión (valor nulo) que muestre un cero.

SELECT emp_nombre, NVL(emp_comision,0)FROM empleado;

Operaciones de Funciones – Single Values Ejemplo – 3 (TRUNC)

• Mostrar el nombre de los empleados y la cantidad de días que llevan en la empresa.

SELECT emp_nombre, TRUNC(SYSDATE – emp_fecha_inicio) AS DIAS

FROM empleado;

* TRUNC - Quita las posiciones decimales y SYSDATE trae la fecha del día del sistema.

Operaciones de Funciones – Single Values Ejemplo – 4 (MOD)

• Mostrar el nombre de los empleados y la cantidad de semanas y días que llevan en la empresa.

SELECT emp_nombre, TRUNC((SYSDATE – emp_fecha_inicio)/7) AS SEMANAS,

MOD(TRUNC(SYSDATE – emp_fecha_inicio),7) AS DIAS

FROM empleado;

Operaciones de Funciones – Group of Values

• Estas funciones ofrecen resultados que se aplican a los valores de una columna en total o en parte.

• Algunos de ejemplos de estas funciones son promedio (AVG), valor máximo (MAX), valor mínimo (MIN), entre otros.

• A continuación mostramos algunos ejemplos

Operaciones de Funciones – Group of Values Ejemplo AVG

• Esta función saca el promedio de una columna en particular dentro de una tabla.

• Ejemplo: Calcular el promedio de sueldos de todos los empleados:

SELECT AVG(emp_salario)FROM empleado;

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

OTRO EJEMPLO DE AVERAGE (AVG)

MAX & MIN

• Calculan el valor Máximo y el Valor Mínimo de una columna.

• A continuación mostraremos algunos ejemplos que utilizan estas funciones.

Operaciones de Funciones – Group of Values Ejemplo MAX

• Mostrar el salario mayor de todos los empleados (¿Cuánto gana el que más gana?)

SELECT MAX(emp_salario)FROM empleado;

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

EJEMPLO DE MAX y MIN

Utilizando la función COUNT• Cuenta el número de filas en una tabla• Se utiliza el asterisco cuando se quiere utilizar cualquier

columna

Ejemplo-libro usando la función COUNT

• Utilize la función agregada (aggregate function) COUNT para encontrar totales

SELECT COUNT(*)COUNT(*) FROM ORDER_LINE_VWHERE ORDER_ID = 1004;

Pag: 311

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

OTRO EJEMPLO DEL COUNT

Operaciones de Funciones – Group of Values Ejemplo COUNT - 1

• ¿Cuántos empleados hay en la tabla?

SELECT COUNT(*)FROM empleado;

*COUNT – Si en lugar del *, se pone el nombre de un atributo, si este tiene valores nulos, el COUNT no los cuenta.

Operaciones de Funciones – Group of Values Ejemplo COUNT - 2

• Mostrar cuantos puestos diferentes hay en la tabla de empleados y el total de empleados.

SELECT COUNT(DISTINCT emp_titulo), COUNT(*)

FROM empleado;

Operaciones de Funciones – Group of Values Ejemplo COUNT - 3

• Mostrar los diferentes puestos y cuantos empleados tienen ese puesto.

SELECT emp_titulo AS Puestos, COUNT(title) AS “Cantidad de Empleados”

FROM empleadoGROUP BY emp_titulo;

Operaciones de Funciones – Group of Values Ejemplo COUNT - 4

• Mostrar los diferentes puestos y cuantos empleados tienen ese puesto que sean dos o más. Los puestos con un solo empleado no deben mostrarse.

SELECT emp_titulo AS Puestos, COUNT(title) AS “Cantidad de Empleados”

FROM empleadoGROUP BY emp_tituloHAVING COUNT(emp_titulo) > 2;

Operaciones de Funciones – Group of Values Ejemplo SUM

• ¿A cuanto suma los salarios de todos los empleados?

SELECT SUM(emp_salario)FROM empleado;

Operaciones de Funciones – Group of Values Ejemplo – 8 (Varias)

• Mostrar la cantidad de empleados, el promedio de sueldos y el total de sueldos.

SELECT COUNT(*) AS ‘Cantidad de empleados’ AVG(emp_salario) AS ‘Promedio de sueldos’ SUM(emp_salario) AS ‘Total de sueldos’FROM empleado;

* - Si se quiere poner un título separado por espacio, se puede poner entre comillas.

Utilizando la función SUM• Se utiliza para calcular totales de columnas

• Estas columnas tienen que especificarse y deben ser numéricas

• Funciones como AVG, MAX y MIN son similares, pero producen resultados diferentes

• Los valores nulos (Null) son ignorados y no se utilizan en estos tipos de cálculos

A Guide to SQL, Seventh Edition

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

EJEMPLO DE SUM

Operaciones de Funciones – Group of Values Ejemplo (Varias)

• Mostrar la cantidad de empleados, el promedio de sueldos y el total de sueldos.

SELECT COUNT(*) AS ‘Cantidad de empleados’ AVG(emp_salario) AS ‘Promedio de sueldos’ SUM(emp_salario) AS ‘Total de sueldos’FROM empleado;

* - Si se quiere poner un título separado por espacio, se puede poner entre comillas.

OPERACIONES ARITMÉTICAS EN CONSULTAS

Volver a los Objetivos

Operaciones Aritméticas en Consultas

• Dentro de un SELECT podemos mostrar resultados que provienen de uno o varios campos de la base de datos utilizando operaciones matemáticas.

• Las operaciones básicas son suma (+), resta (-), división (/) y multiplicación (*).

• A continuación vamos a mostrar algunos ejemplos

Operaciones Aritméticas – Mult.

• Mostrar el nombre y el salario anual de los empleados. (asuma que el atributo salario sólo tiene el pago mensual)

SELECT emp_nombre, emp_salario * 12FROM empleado;

Operaciones Aritméticas - Suma

• ¿A cuanto subiría el salario de cada empleado si le incluimos 300 dólares de aumento? Mostrar el nombre y el salario incluyéndole el aumento de 300 dólares.

SELECT emp_nombre, emp_salario + 300FROM empleado;

Operaciones Aritméticas - Varios

• Mostrar el nombre y lo que gana el empleado en comisión para aquellos que son vendedores.

SELECT emp_nombre, emp_commision * emp_salario / 100

FROM empleadoWHERE emp_titulo = ‘Vendedores’;

OPERACIONES ALFANUMÉRICAS EN

CONSULTAS

Volver a los Objetivos

Operaciones Alfanuméricas en Consultas

• En estas operaciones se juega con el manejo de caracteres y “string”.

• Permiten una mejor presentación de los datos en pantalla y/o reportes.

• Ayuda en la búsqueda de instancias en la tabla.

• A continuación mostramos algunos ejemplos

Operaciones Alfanuméricas en Consultas – Ejemplo 1

• Mostrar el nombre y apellido (que no queden separados por espacios en blanco)

SELECT emp_nombre || emp_apellidosFROM empleado;

Operaciones Alfanuméricas en Consultas – Ejemplo 2

• Mostrar los apellidos y luego el nombre separado por coma

SELECT emp_apellidos || ’,’ || emp_nombreFROM empleado;

Operaciones Alfanuméricas en Consultas – Ejemplo 3

• Mostrar los apellidos y luego el nombre separado por un espacio en blanco.

SELECT emp_apellidos || ’ ’ || emp_nombreFROM empleado;

Operaciones Alfanuméricas en Consultas – Ejemplo 4

• Mostrar el apellido del empleado 1234 y de cuantos caracteres se compone

SELECT emp_apellido, LENGHT(emp_apellido)FROM empleadoWHERE emp_numero = 1234;

Operaciones Alfanuméricas en Consultas – Ejemplo 5

• Mostrar todos los apellidos de los empleados que tengan 5 caracteres de largo.

SELECT emp_apellido, FROM empleadoWHERE LENGHT(emp_apellido) = 5;

Operaciones Alfanuméricas en Consultas – Ejemplo 6

• Mostrar todos los apellidos de los empleados en letra minúscula.

SELECT LOWER(emp_apellido), FROM empleado;

Operaciones Alfanuméricas en Consultas – Ejemplo 7

• Buscar entre los apellidos de los empleados, aquellos que sean igual a Benicio. Mostrar el nombre y los apellidos. OJO, en la base de datos pued estar escrito BENICIO, Benicio, benicio, etc.

SELECT emp_nombre ||’ ‘|| emp_apellidosFROM empleadoWHERE UPPER(emp_apellido) = ‘BENICIO’;* Aparte de UPPER y LOWER, existe INITCAP (la

primera mayúsculas y el resto minúsculas)

Operaciones Alfanuméricas en Consultas – Ejemplo 8

• Tomar dos caracteres del apellido del empleado 1234 comenzando en la posición tres y extrayendo dos caracteres.

SELECT SUBSTR(emp_apellido,3,2)FROM empleadoWHERE emp_numero = 1234;

*-Si el apellido era Benicio, el resultado sería: “ni”.

Operaciones Alfanuméricas en Consultas – Ejemplo 9

• Mostrar todos los empleados por apellidos y nombre (separado por coma) y su número de empleado. Se desea que los espacios en blanco que sobren del nombre y apellido, se rellenen de puntos (.).

SELECT RPAD(emp_apellidos || ‘,’ || emp_nombre,20,’.’) AS NombreFROM empleado;

* El 20 significa que el largo total es de 20 caracteres y el punto entre comillas es el carácter que se va a utilizar para rellenar los espacios en blanco.

Operaciones Alfanuméricas en Consultas – Ejemplo 10

• En que posición se encuentra la primera letra ‘i’ que pueda tener el empleado 1234;

SELECT INSTR(emp_apellido,’i’)FROM empleadoWHERE emp_numero = 1234;

* - Si el apellido es Benicio, debe devolver 4.

Operaciones Aritméticas con Fechas en Consultas

• SQL permite ejecutar queries que incluyan operaciones aritméticas con fechas.

• Es útil para manejar días, diferencias entre fechas y calcular estimados de tiempo.

• A continuación mostramos algunos ejemplos

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 1

• Mostrar el nombre del empleado, la fecha que comenzó y la fecha en que le corresponde evaluarlo en la empresa ( La evaluación se hace después de los primeros 6 meses de comenzar a trabajar)

SELECT emp_nombre, emp_fecha_inicio, ADD_MONTHS(emp_fecha_inicio,6) AS ‘Fecha Evaluación’

FROM empleado;

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 2

• Mostrar el nombre de los empleados y la cantidad de meses que han transcurrido desde su fecha de inicio en la compañía.

SELECT emp_nombre, MONTHS_BETWEEN(SYSDATE, emp_fecha_inicio) AS Meses

FROM empleado;

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 3• Mostrar el nombre del empleado y la fecha

menor entre fecha nacimiento y fecha de iniciar a trabajar.

SELECT emp_name, LEAST(emp_fecha_nacimiento, emp_fecha_inicio) AS “Fecha menor”

FROM empleado;

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 4• Mostrar el nombre del empleado y la fecha

mayor entre fecha nacimiento y fecha de iniciar a trabajar.

SELECT emp_name, GREATEST(emp_fech_nacimiento, emp_fecha_inicio) AS “Fecha mayor”

FROM empleado;

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 5• Mostrar el nombre, fecha de nacimiento y el

último día del mes de esa fecha de nacimiento de todos los empleados.

SELECT emp_nombre, emp_fecha_nacimiento, LAST_DAY(emp_fecha_nacimiento)

FROM empleado;

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 6• ¿Cuál es el próximo viernes despues de la

fecha de nacimiento de cada empleado? Mostrar su nombre y la fecha del próximo viernes.

SELECT emp_nombre, NEXT_DAY(emp_fecha_nacimiento, ‘FRIDAY’) AS ‘Próximo viernes’

FROM empleado;

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 7• Mostrar el nombre y la fecha de nacimiento del

empleado en formato de palabras.

SELECT emp_nombre, TO_CHAR(emp_fecha_nacimiento, ‘fmDdspth “of” Month “of” YYYY’)

FROM empleado;

* Si la fecha es 17-JUN-03, saldría Seventeenth of June of 2003

Operaciones Aritméticas con Fechas en Consultas – Ejemplo 8

• Buscar al empleado que nació el 24 de junio de 1984.

SELECT emp_nombreFROM empleadoWHERE emp_fecha_nacimiento = TO_DATE( ‘Jun 24,

1984’, ‘Month dd, YYYY’);

* - Nos permite buscar en la tabla usando otro formato de fecha. Esta función se puede utilizar también con el comando de INSERT.

COMANDOS DE ACTUALIZACIONES A LA BASE

DE DATOS

Volver a los Objetivos

UPDATE• Nos permite actualizar atributos de las tablas• Puede actualizar una o varias filas

simultáneamente• Su formáto básico es:UPDATE tabla SET atributo [atributo = valor] WHERE [condición]• Ejemplo:

INSERT

• Permite insertar filas en las tablas.• Se especifica un solo valor a la vez.• Su formato básico es:

INSERT INTO tabla VALUES (valores);• Ejemplo:

DELETE

• Elimina filas de la tabla.• Puede eliminar una o más filas

dependiendo del formato del comando.• Su formato básico es:DELETE FROM tabla WHERE (condición);

• Ejemplo:

DROP• Elimina tablas completas.• Esto incluye los datos y el formato de la

tabla.• Su formato es:DROP TABLE tabla;• Ejemplo:

Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel

Variaciones de los comandos previamente explicados

PRACTICA DE LABORATORIO

Volver a los Objetivos

Utilizando el siguiente Diagrama de Relación:

Que debe estar creado en Oracle con el siguiente script.

REM **************************************************************REM * Author: Nelliud D. Torres Batista *REM * Comentarios: Este sript crea la tablas solicitadas en el *REM * primer laboratorio. *REM **************************************************************REM SET ECHO ONREM ***************************************************************REM * Creacion de la tabla DEPARTAMENTO *REM ***************************************************************CREATE TABLE DEPARTAMENTO (

dep_numero NUMBER(1) NOT NULL,dep_nombre VARCHAR2(25) NOT NULL,dep_localización VARCHAR2(15),

CONSTRAINT dep_numero_pk PRIMARY KEY (dep_numero) );REM ***************************************************************REM * Creacion de la tabla ASEGURADORA *REM ***************************************************************CREATE TABLE ASEGURADORA (

ase_numeroPlan NUMBER(1) NOT NULL,ase_descripcion VARCHAR2(15) NOT NULL,

CONSTRAINT ase_numeroPlan_pk PRIMARY KEY (ase_numeroPlan) );REM ***************************************************************REM * Creacion de la tabla FACULTAD *REM ***************************************************************CREATE TABLE FACULTAD (

fac_numero NUMBER(3) NOT NULL,fac_nombre VARCHAR2(25) NOT NULL,fac_direccion VARCHAR2(20),fac_salario NUMBER(7,2),fac_salarioAcumulado NUMBER(9,2),dep_numero NUMBER(1) NOT NULL,fac_grado VARCHAR2(3),fac_especialidad VARCHAR2(12),fac_rango CHAR(4) NOT NULL,ase_numeroPlan NUMBER(1),fac_dependientes CHAR(1),

CONSTRAINT fac_departamento_fk FOREIGN KEY (dep_numero) REFERENCES DEPARTAMENTO (dep_numero),CONSTRAINT fac_aseguradora_fk FOREIGN KEY (ase_numeroPlan)

REFERENCES ASEGURADORA (ase_numeroPlan),CONSTRAINT fac_numero_pk PRIMARY KEY (fac_numero));REM ***************************************************************REM * Creacion de la tabla CONFERENCIA *REM ***************************************************************CREATE TABLE CONFERENCIA (

fac_numero NUMBER(3) NOT NULL,conf_id NUMBER(1) NOT NULL,

conf_titulo VARCHAR2(25) NOT NULL,conf_cuentasVeces NUMBER(2),conf_ultimaVez DATE NOT NULL,

CONSTRAINT fac_numero_fk FOREIGN KEY (fac_numero)REFERENCES FACULTAD (fac_numero),

CONSTRAINT conf_pk PRIMARY KEY (fac_numero, conf_id));REM ***************************************************************REM * Creacion de la tabla HISTORIAL *REM ***************************************************************CREATE TABLE HISTORIAL (

fac_numero NUMBER(3) NOT NULL,hist_id NUMBER(1) NOT NULL,hist_rango VARCHAR2(4) NOT NULL,hist_fechaRango DATE NOT NULL,

CONSTRAINT fac_numero2_fk FOREIGN KEY (fac_numero) REFERENCES FACULTAD (fac_numero),CONSTRAINT hist_pk PRIMARY KEY (fac_numero, hist_id) );

Y con la siguiente data entradaREM ***************************************************************REM * Datos de la tabla DEPARTMENTO *REM ***************************************************************INSERT INTO DEPARTAMENTO VALUES (2,'Physics','Edificio 100');INSERT INTO DEPARTAMENTO VALUES (5,'Computer Science','Edificio

100');INSERT INTO DEPARTAMENTO VALUES (7,'Geology','Edificio 200');COMMIT;REM ***************************************************************REM * Datos de la tabla ASEGURADORA *REM ***************************************************************INSERT INTO ASEGURADORA VALUES (1,'Triple-Azul');INSERT INTO ASEGURADORA VALUES (2,'Cruz SSS');INSERT INTO ASEGURADORA VALUES (4,'Extra');COMMIT;REM ***************************************************************REM * Datos de la tabla FACULTAD *REM ***************************************************************INSERT INTO FACULTAD VALUES (119,'Nelliud

Torres','Bayamón',70100.00,890900.00,5,'MS','Information','Asst',1,1);INSERT INTO FACULTAD VALUES (120,'José

Díaz','Carolina',69000.69,789000.00,5,'MS','Engineer','Asso',2,1);INSERT INTO FACULTAD VALUES (201,'Alz

Heimer','Cayey',55500.10,324000.00,7,'PhD','Geology','Full',1,0);INSERT INTO FACULTAD VALUES (204,'Park

Inson','Caguas',27390.00,89000.25,2,'PhD','Physics','Asst',1,1);COMMIT;

REM ***************************************************************REM * Datos de la tabla CONFERENCIA *REM ***************************************************************INSERT INTO CONFERENCIA VALUES (120,1,'El Tarot ',3,'6-

Jun-2004');INSERT INTO CONFERENCIA VALUES (119,1,'Base de Datos',5,'6-

May-2004');INSERT INTO CONFERENCIA VALUES (119,2,'Usando

Access',1,'7-Feb-2005');COMMIT;REM ***************************************************************REM * Datos de la tabla HISTORIAL *REM ***************************************************************INSERT INTO HISTORIAL VALUES (119,1,'Asst','1-May-1990');INSERT INTO HISTORIAL VALUES (120,1,'Asso','1-Jun-1991');INSERT INTO HISTORIAL VALUES (120,2,'Full','1-Jul-2001');INSERT INTO HISTORIAL VALUES (204,1,'Asst','15-Feb-04');COMMIT;

Evalúe los siguientes ejemplos de SQL:Condiciones simples – 1 – Caso - 1

1. Seleccionar el número, nombre y salario de todos los profesores de la facultad.

Evalúe los siguientes ejemplos de SQL:Condiciones simples – 1 – Caso - 2

2. Seleccionar todos los campos de la tabla DEPARTAMENTO.

Evalúe los siguientes ejemplos de SQL:Condiciones simples – 1 – Caso - 3

3. ¿Cuál es el nombre del profesor cuyo número es 120?

120;

Evalúe los siguientes ejemplos de SQL:Condiciones simples – 1 – Caso - 4

4. Seleccionar todos los profesores cuyo nombre comienzen con la letra “A”.

‘A%’;

Evalúe los siguientes ejemplos de SQL:Condiciones simples – 1 – Caso - 5

5. Seleccionar todos los profesores cuyo nombre/apellido contenga la letra r

“%r%”;

Evalúe los siguientes ejemplos de SQL:Condiciones simples – 1 – Caso - 6

6. Seleccionar todos loa profesores con un salario igual o mayor de $38,500.

Evalúe los siguientes ejemplos de SQL:Condiciones simples – 1 – Caso - 7

7. Dar el nombre de todas las conferencias que se hayan dado más de dos veces y la fecha en que se dieron por última vez.

conf_titulo, conf_ultimaVez CONFERENCIAconf_cuantasVeces

Corrida SQL Compuesto - 1

Aparentemente en Oracle no trabaja el espacio en blanco

Corrida SQL Compuesto - 2

Corrida SQL Compuesto - 3

Corrida SQL Compuesto - 4

Corrida SQL (SORT) - 1

Corrida SQL (SORT) - 2

Corrida SQL (Funciones) - 1

Corrida SQL (Funciones) - 2

Corrida SQL (Funciones) - 3

Corrida SQL (Funciones) - 4

Corrida SQL (Funciones) - 5

Seleccioné el departamento 5 ya que es el único que tiene más de un record

Corrida SQL (Agrupamiento) - 1

Corrida SQL (Agrupamiento) - 2

Corrida SQL (Agrupamiento) - 3

se incluyó el # 3 y no el 4

se incluyó el # 3 y no el 4

Se utilizó la tabla CONFERENCIA.

FIN