Fundamentos sql

157
Fundamentos de SQL Compilado por : MSc Edgar Taya Acost Fuente original:Prof. Nelliud D. Torres

Transcript of Fundamentos sql

Page 1: Fundamentos sql

Fundamentos de SQL

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

Page 2: Fundamentos sql

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

Page 3: Fundamentos sql

SELECT PARA UNA O MÁS TABLAS

Volver a los Objetivos

Page 4: Fundamentos sql

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 (;).

Page 5: Fundamentos sql

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;

Page 6: Fundamentos sql

SELECT STATEMENT

Volver a los Objetivos

Page 7: Fundamentos sql

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

Page 8: Fundamentos sql

ALGEBRA RELACIONAL

Volver a los Objetivos

Page 9: Fundamentos sql

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|)

Page 10: Fundamentos sql

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;

Page 11: Fundamentos sql

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.

Page 12: Fundamentos sql

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.

Page 13: Fundamentos sql

INFORMACIÓN ADICIONAL Y EJEMPLOS DE SELECT

Volver a los Objetivos

Page 14: Fundamentos sql

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

Pag: 322

Page 15: Fundamentos sql

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

Page 16: Fundamentos sql

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).

Page 17: Fundamentos sql

Ejemplo de un SELECT que selecciona 3 columnas

Page 18: Fundamentos sql

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.

Page 19: Fundamentos sql

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

Page 20: Fundamentos sql

USO DEL SELECT CON:

Volver a los Objetivos

Page 21: Fundamentos sql

WHERE

Page 22: Fundamentos sql

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.

Page 23: Fundamentos sql

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

Page 24: Fundamentos sql

Ejemplo de un SELECT con WHERE

Page 25: Fundamentos sql

ALIAS

Page 26: Fundamentos sql

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

Page 27: Fundamentos sql

OPERADORES DE COMPARACIÓN

Page 28: Fundamentos sql

Los operadores de comparación

Page 29: Fundamentos sql

OPERADORES LÓGICOS

Page 30: Fundamentos sql

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

Page 31: Fundamentos sql

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

Page 32: Fundamentos sql

32

Diagrama de Venn del Query del Slide anterior

Page 33: Fundamentos sql

Ejemplo de un SELECT con AND

Page 34: Fundamentos sql

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

Page 35: Fundamentos sql

Ejemplo de un SELECT con OR

Page 36: Fundamentos sql

Ejemplo de un SELECT con NOT

Page 37: Fundamentos sql

OPERADOR BETWEEN

Page 38: Fundamentos sql

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.

Page 39: Fundamentos sql

Ejemplo de un SELECT sin BETWEEN

Page 40: Fundamentos sql

Ejemplo de un SELECT con BETWEEN

Page 41: Fundamentos sql

COLUMNAS CALCULADAS

Page 42: Fundamentos sql

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

Page 43: Fundamentos sql

Ejemplo de un SELECT que crea una columna calculada

Page 44: Fundamentos sql

OPERADOR LIKE

Page 45: Fundamentos sql

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

Page 46: Fundamentos sql

OPERADOR IN

Page 47: Fundamentos sql

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

simultáneamente. Por ejemplo:

Page 48: Fundamentos sql

OPERADOR DISTINCT

Page 49: Fundamentos sql

Utilizando el Operador DISTINCT

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

• En otras palabras elimina repeticiones

A Guide to SQL, Seventh Edition

Page 50: Fundamentos sql

Ejemplo que no utiliza el Operador DISTINCT

Page 51: Fundamentos sql

Ejemplo que utiliza el Operador DISTINCT

Page 52: Fundamentos sql

SORT

Page 53: Fundamentos sql

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.

Page 54: Fundamentos sql

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.

Page 55: Fundamentos sql

Ejemplo de un SORT con dos Keys

Page 56: Fundamentos sql

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

Page 57: Fundamentos sql

GROUP BY

Page 58: Fundamentos sql

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

Page 59: Fundamentos sql

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

EJEMPLO DE GROUP BY

Page 60: Fundamentos sql

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

EJEMPLO DE GROUP BY (Cont.)

Page 61: Fundamentos sql

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

EJEMPLO DE GROUP BY (Cont-2)

Page 62: Fundamentos sql

HAVING

Page 63: Fundamentos sql

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.

Page 64: Fundamentos sql

FUNCIONES

Volver a los Objetivos

Page 65: Fundamentos sql

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).

Page 66: Fundamentos sql

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

Page 67: Fundamentos sql

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

Page 68: Fundamentos sql

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

Page 69: Fundamentos sql

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’;

Page 70: Fundamentos sql

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;

Page 71: Fundamentos sql

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.

Page 72: Fundamentos sql

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;

Page 73: Fundamentos sql

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

Page 74: Fundamentos sql

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;

Page 75: Fundamentos sql

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

OTRO EJEMPLO DE AVERAGE (AVG)

Page 76: Fundamentos sql

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.

Page 77: Fundamentos sql

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;

Page 78: Fundamentos sql

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

EJEMPLO DE MAX y MIN

Page 79: Fundamentos sql

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

columna

Page 80: Fundamentos sql

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

Page 81: Fundamentos sql

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

OTRO EJEMPLO DEL COUNT

Page 82: Fundamentos sql

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.

Page 83: Fundamentos sql

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;

Page 84: Fundamentos sql

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;

Page 85: Fundamentos sql

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;

Page 86: Fundamentos sql

Operaciones de Funciones – Group of Values Ejemplo SUM

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

SELECT SUM(emp_salario)FROM empleado;

Page 87: Fundamentos sql

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.

Page 88: Fundamentos sql

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

Page 89: Fundamentos sql

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

EJEMPLO DE SUM

Page 90: Fundamentos sql

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.

Page 91: Fundamentos sql

OPERACIONES ARITMÉTICAS EN CONSULTAS

Volver a los Objetivos

Page 92: Fundamentos sql

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

Page 93: Fundamentos sql

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;

Page 94: Fundamentos sql

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;

Page 95: Fundamentos sql

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’;

Page 96: Fundamentos sql

OPERACIONES ALFANUMÉRICAS EN

CONSULTAS

Volver a los Objetivos

Page 97: Fundamentos sql

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

Page 98: Fundamentos sql

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;

Page 99: Fundamentos sql

Operaciones Alfanuméricas en Consultas – Ejemplo 2

• Mostrar los apellidos y luego el nombre separado por coma

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

Page 100: Fundamentos sql

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;

Page 101: Fundamentos sql

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;

Page 102: Fundamentos sql

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;

Page 103: Fundamentos sql

Operaciones Alfanuméricas en Consultas – Ejemplo 6

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

SELECT LOWER(emp_apellido), FROM empleado;

Page 104: Fundamentos sql

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)

Page 105: Fundamentos sql

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”.

Page 106: Fundamentos sql

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.

Page 107: Fundamentos sql

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.

Page 108: Fundamentos sql

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

Page 109: Fundamentos sql

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;

Page 110: Fundamentos sql

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;

Page 111: Fundamentos sql

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;

Page 112: Fundamentos sql

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;

Page 113: Fundamentos sql

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;

Page 114: Fundamentos sql

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;

Page 115: Fundamentos sql

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

Page 116: Fundamentos sql

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.

Page 117: Fundamentos sql

COMANDOS DE ACTUALIZACIONES A LA BASE

DE DATOS

Volver a los Objetivos

Page 118: Fundamentos sql

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:

Page 119: Fundamentos sql

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:

Page 120: Fundamentos sql

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:

Page 121: Fundamentos sql

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

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

Page 122: Fundamentos sql

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

Variaciones de los comandos previamente explicados

Page 123: Fundamentos sql

PRACTICA DE LABORATORIO

Volver a los Objetivos

Page 124: Fundamentos sql

Utilizando el siguiente Diagrama de Relación:

Page 125: Fundamentos sql

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) );

Page 126: Fundamentos sql

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;

Page 127: Fundamentos sql

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.

Page 128: Fundamentos sql

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

2. Seleccionar todos los campos de la tabla DEPARTAMENTO.

Page 129: Fundamentos sql

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;

Page 130: Fundamentos sql

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%’;

Page 131: Fundamentos sql

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%”;

Page 132: Fundamentos sql

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.

Page 133: Fundamentos sql

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

Page 134: Fundamentos sql
Page 135: Fundamentos sql

Corrida SQL Compuesto - 1

Aparentemente en Oracle no trabaja el espacio en blanco

Page 136: Fundamentos sql

Corrida SQL Compuesto - 2

Page 137: Fundamentos sql

Corrida SQL Compuesto - 3

Page 138: Fundamentos sql

Corrida SQL Compuesto - 4

Page 139: Fundamentos sql
Page 140: Fundamentos sql

Corrida SQL (SORT) - 1

Page 141: Fundamentos sql

Corrida SQL (SORT) - 2

Page 142: Fundamentos sql
Page 143: Fundamentos sql

Corrida SQL (Funciones) - 1

Page 144: Fundamentos sql

Corrida SQL (Funciones) - 2

Page 145: Fundamentos sql

Corrida SQL (Funciones) - 3

Page 146: Fundamentos sql

Corrida SQL (Funciones) - 4

Page 147: Fundamentos sql

Corrida SQL (Funciones) - 5

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

Page 148: Fundamentos sql
Page 149: Fundamentos sql

Corrida SQL (Agrupamiento) - 1

Page 150: Fundamentos sql

Corrida SQL (Agrupamiento) - 2

Page 151: Fundamentos sql

Corrida SQL (Agrupamiento) - 3

Page 152: Fundamentos sql
Page 153: Fundamentos sql
Page 154: Fundamentos sql

se incluyó el # 3 y no el 4

Page 155: Fundamentos sql

se incluyó el # 3 y no el 4

Page 156: Fundamentos sql

Se utilizó la tabla CONFERENCIA.

Page 157: Fundamentos sql

FIN