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
Top Related