Manual de Practicas de Fundamentos de Base de Datos

100
MANUAL DE PRACTICAS DE FUNDAMENTOS DE BASE DE DATOS. INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO. Ext. Purísima del Rincón, Gto. México Especialidad: Lic. En Informática E-mail: [email protected]. mx Docente: Ing. Martha Melina Rodríguez Vázquez Se implementarán prácticas en la materia de fundamentos de base de datos para reforzar lo visto en clase, las practicas se realizarán de acuerdo al tema explicado en el aula.

Transcript of Manual de Practicas de Fundamentos de Base de Datos

Page 1: Manual de Practicas de Fundamentos de Base de Datos

MANUAL DE

PRACTICAS DE

FUNDAMENTOS DE

BASE DE DATOS.

I N S T I T U T O T E C N O L O G I C O

S U P E R I O R D E I R A P U A T O .

E x t . P u r í s i m a d e l R i n c ó n ,

G t o . M é x i c o

E s p e c i a l i d a d : L i c . E n

I n f o r m á t i c a

E - m a i l :

m a r t h a . r o d r i g u e z @ i t e s i . e d u .

m x

Docente: Ing. Martha Melina

Rodríguez Vázquez

Se implementarán prácticas en la materia de

fundamentos de base de datos para reforzar lo visto en

clase, las practicas se realizarán de acuerdo al tema

explicado en el aula.

Page 2: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INDICE

PRACTICA NO. 1 ....................................................... 1

PRACTICA NO. 2 ....................................................... 2

PRACTICA NO. 3 ....................................................... 3

PRACTICA NO. 4 ....................................................... 4

PRACTICA NO. 5 ....................................................... 5

PRACTICA NO. 6 ....................................................... 6

PRACTICA NO. 7 ....................................................... 8

PRACTICA NO. 8 ....................................................... 9

PRACTICA NO. 9 ...................................................... 10

PRACTICA NO. 10 .................................................... 11

Consideraciones generales para la realización de la s prácticas Para la realización de dichas prácticas el alumno deberá considerar los siguientes aspectos generales:

Page 3: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Nombre o identificación de la práctica. Reporte. El alumno deberá entregar una memoria (informe) que tendrá los siguientes apartados: 1. Una portada convenientemente rellena y con el formato que aparece como anexo 1 en este documento. 2. Índice de contenidos incluyendo los números de página de cada uno de los apartados. 3. Jerarquía de los módulos de la práctica y diseño de cada uno de los componentes implementados, previamente validados por el profesor. 4. Listado de las sentencias fuentes, realizados por el alumno. Si la práctica se realiza por parejas (según sea el caso), sólo se entregará un reporte por grupo. Evaluación de la práctica El profesor de la asignatura controlará de forma especial los siguientes aspectos a la hora de realizar la evaluación: • Las prácticas deben cumplir los objetivos de diseño fijados en cada momento. Aún cuando una práctica funcione, si su diseño no es correcto, la práctica se considerará NO, REALIZADA. • Se realizarán pruebas de los mismos y sólo serán dados por buenos aquellos que las superen. • Si se detectara que un grupo de alumnos ha copiado alguno de las prácticas esto acarreará un NO REALIZADA inmediato en el laboratorio para todos los alumnos implicados. Aunque la práctica se realice en grupos de dos alumnos, la evaluación es individual.

Page 4: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 1 Código: FIO210801-03 No. Rev.: 2

Título: Creación de Tablas y consultas en SQL. Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

Objetivo: El alumno aplicara los palabras reservadas del lenguaje SQL mencionados en la clase.

Creación de la Base de Datos.

1. Selecciona todo el contenido de la tabla Equipo.

SELECT *FROM EQUIPO.

Page 5: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

2. Selecciona el nombre del director del equipo de las chivas.

SELECT NOM_DIR FROM EQUIPO WHERE (NOM_EQUIPO='Chivas')

3. Selecciona el nombre del equipo y el número de jugadores que existe en el equipo de la tabla Equipo.

SELECT NOM_EQUIPO,NUM_JUGS FROM EQUIPO

4. Selecciona la cantidad de registros de la tabla Equipo.

SELECT COUNT(NUM_JUGS) FROM EQUIPO

5. Selecciona el promedio de edad de los jugadores de los diferentes equipos que se encuentran en la tabla Jugadores.

SELECT AVG (EDAD_JUG) FROM JUGADORES

Page 6: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

6. Selecciona el nombre de los jugadores de los diferentes equipos existentes de la tabla Jugadores.

SELECT NOM_JUG,NOM_EQUIPO FROM JUGADORES

7. Selecciona el nombre, número y edad de los jugadores del América.

SELECT *FROM JUGADORES WHERE NOM_EQUIPO= 'America'

8. Selecciona el nombre número y equipo de los jugadores que tengan la edad de 23 años.

SELECT *FROM JUGADORES WHERE EDAD_JUG=23

Page 7: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

9. Selecciona la edad máxima del jugador de todos los equipos de la tabla Jugadores.

Select max (EDAD_JUG) from JUGADORES

10. Selecciona la edad mínima del jugador de todos los equipos de la tabla Jugadores.

Select min (EDAD_JUG) from JUGADORES

11. Selecciona el total de todos los jugadores de la tabla equipo.

Select sum (NUM_JUGS) from EQUIPO

Actividad: Practica 2 Código: FIO210801-03 No. Rev.: 2

Título: Consultas en el lenguaje de Base de Datos SQL. Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

Objetivo: El alumno aprenderá a consultar datos dentro de una B.D. en SQL

Page 8: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Una farmacia necesita tener control de sus ventas.

El gerente de una farmacia necesita llevar el control del medicamento de la farmacia la cual cuenta con un consultorio del que se requiere saber:

1.-De la medicina requiere almacenar su nombre, código, caducidad, precio de entrada, precio de salida a si como la cantidad de medicina en el almacén, para esto se necesita saber el tipo de medicinas vendidas por trabajador y los distintos tipos de proveedores que tiene la farmacia.

2.-El único almacén tiene la medicina total que se encuentra en la farmacia, para esto se requiere saber el nombre de la medicina en la cual se va ir disminuyendo cada vez que se venda un producto de la misma.

3.- Del departamento de ventas se requiere saber el tipo de medicamento vendido.

4.-También se requiere almacenar la información de los doctores su nombre, dirección, teléfono y número de cedula los cuales un doctor puede realizar varias consultas.

5.-De las consultas realizadas por el doctor se deben saber su motivo de la consulta, el nombre del paciente, domicilio, edad, fecha y hora de consulta.

6. De cada trabajador se requiere saber su ID, nombre, teléfono, hr. De entrada y hr. De salida.

7. Del proveedor se necesita saber su nombre, teléfono, lugar de donde proviene y su clave correspondiente que lo identifica.

RESUELTO.

-proveedor {nombre, teléfono, lugar, clave }

-Medicina {nombre de la medicina, código , caducidad, precio de entrada, precio de salida}

-Almacén {nombre de la medicina , número de medicina existente, número de medicina vendida}

-Doctor {nombre del doctor, dirección, teléfono, numero de cedula }

Page 9: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

-Consultas {motivo, Nombre del paciente , fecha, hora}

-Trabajador{ID Trabajador , nombre Teléfono, hora Entrada, hora Salida}

*Modelo Relacional

Page 10: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*Normalización

1FN

Medicina

Código.

#_Medicina.

Nombre_medicina

$_Entrada.

Almacén

Nombre_Med.

#_Med.Existente.

#_Med.Vendida.

Trabajador

ID.Trabajador.

Nombre.

Teléfono.

Hr.Entrada.

Proveedor.

Clave _ proveedor.

Teléfono.

Lugar.

Consultas

Nom_Paciente

Hora.

Motivo.

#_Cedula.

Nom_Doctor.

Dirección.

Doctor

Tiene

Clave _ proveedor.

Código.

Page 11: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Trabajador

ID.Trabajador Nombre

Apellido paterno

Apellido materno

Teléfono

Hr.Entrada

Hr.Salida

Consultas

Nombre

Apellido paterno

Apellido materno

Hora

Motivo

Fecha

Doctor

#_Cedula

Nombre

Apellido paterno

Apellido materno

Dirección

Teléfono

*Diccionario de Datos

Tabla Nombre Tipo Tamaño Alias Descripción Medicina Código Int 10 Numero que

Page 12: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

identifica el tipo de medicina

#_Medicina Int 15 Numéro de la medicina que se encuentra en el alamacen

Nombre_medicina String 30 Nombre del medicamento.

$_Entrada Moneda 5 Precio en que el producto es comprado

$_Salida Moneda 5 Precio en el que el producto es vendido.

Caducidad Numérico 6 Caducidad de la medicina

Tabla Nombre Tipo Tamaño Alias Descripción Trabajador ID_Trabajador String 15 Numero único que

identifica al trabador

Nombre String 45 Nombre del trabajador

Teléfono Numerico 12 Teléfono del trabajador

Hr.Entrada Date 5 Hora de entrada del trabajador

Hr.Salida Date 5 Hora de salida del trabajador

Tabla Nombre Tipo Tamaño Alias Descripción Proveedor ID_Proveedor String 15 Numero que

identifica al proveedor

Nombre String 45 Nombre de la empresa que surte el medicamento

Teléfono Numerico 12 Teléfono del proveedor

Lugar String 30 Lugar de donde el

Page 13: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

proveedor viene el proveedor

Tabla Nombre Tipo Tamaño Alias Descripción Almacén Nombre_Medicina Texto 15 Nombre de la

medicina #_Med.Existente Numérico 5 Numero de

medicina existente

#_Med.Vendida Numérico 5 Numero de medicina vendida

Tabla Nombre Tipo Tamaño Alias Descripción Consultas Nom_Paciente Texto 30 Nombre del paciente Hora Date 5 Hora en el que paciente

es atendido Motivo Texto 50 Motivo por el cual esta

e paciente Fecha Date 6 Fecha en el que el

paciente fue a consulta

Tabla Nombre Tipo Tamaño Alias Descripción Doctor #_Cedula Texto 25 Numero unico que

identifica a un doctor Nom_Doctor Texto 30 Nombre del doctor Dirección String 30 Direccion del doctor

actualmente Teléfono Numerico 15 Telefono del doctor

Page 14: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*Código

CREATE DATABASE Farmacia

USE Farmacia

CREATE TABLE proveedor(

clave_proveedor INTEGER PRIMARY KEY NOT NULL,

nombre VARCHAR (15) NOT NULL,

apellido_paterno VARCHAR (15) NOT NULL,

apellido_materno VARCHAR (15) NOT NULL,

telefono VARCHAR (16),

lugar VARCHAR (20))

select *from proveedor

CREATE TABLE trabajador(

Page 15: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

id_trabajador INTEGER PRIMARY KEY NOT NULL,

nombre_trabajador VARCHAR (15) NOT NULL,

apellido_paterno VARCHAR (15) NOT NULL,

apellido_materno VARCHAR (15) NOT NULL,

telefono VARCHAR (16),

hr_entrada DATETIME,

hr_salidad DATETIME)

select *from trabajador

CREATE TABLE medicina(

código_medicina INTEGER PRIMARY KEY NOT NULL,

numero_Medicina INTEGER NOT NULL,

nombre_medicina VARCHAR (20) NOT NULL,

presio_entrada MONEY NOT NULL,

presio_salida MONEY NOT NULL,

caducidad DATETIME NOT NULL,

id_trabajdor INTEGER REFERENCES trabajador (id_trab ajador))

select *from medicina

CREATE TABLE tiene(

clave_proveedor INTEGER REFERENCES proveedor (clave _proveedor),

código_medicina INTEGER REFERENCES medicina (código _medicina))

CREATE TABLE almacen(

nombre_medicina VARCHAR (20)PRIMARY KEY NOT NULL,

numero_medicina_existente INTEGER,

Page 16: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

numero_medicina_vendida INTEGER)

select *from almacen

CREATE TABLE doctor(

numero_cedula VARCHAR (30) PRIMARY KEY NOT NULL,

nombre_doctor VARCHAR (30)NOT NULL,

apellido_paterno VARCHAR (15)NOT NULL,

apellido_materno VARCHAR (15)NOT NULL,

dirección VARCHAR (50),

teléfono VARCHAR (16))

CREATE TABLE consultas(nombre_paciente VARCHAR (30) PRIMARY KEY NOT NULL,

apellido_paterno VARCHAR (15) NOT NULL,

apellido_materno VARCHAR (15) NOT NULL,

hora DATETIME NOT NULL,

motivo VARCHAR (50),

fecha DATETIME NOT NULL,

numero_cedula VARCHAR (30)REFERENCES doctor (numero _cedula))

SELECT *FROM almacen

DROP TABLE doctor

ALTER TABLE doctor DROP COLUMN nombre_doctor

ALTER TABLE doctor ADD apellido_materno VARCHAR (15 )NULL

DELETE FROM almacen WHERE numero_medicina_existente =5

INSERT INTO proveedor VALUES (04111607,'Miguel','Av ilés','Cortés','462 118 2039','Irapuato')

Page 17: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSERT INTO proveedor VALUES (04111608,'Alejandro', 'Zoto','Manzana','462 118 2040','Silao')

INSERT INTO trabajador VALUES (416,'Paolo','Vera',' Campos','462 118 2041','12:00','00:00')

INSERT INTO trabajador VALUES (417,'Paola','Zarate' ,'Monteyo','462 118 2042','00:00','12:00')

INSERT INTO medicina VALUES (001,5,'aspirina',$50.0 0,$90.00,4/12/08,416)

INSERT INTO medicina VALUES (002,5,'buscamina',$80.00,$100.00,4/12/09,416)

INSERT INTO almacen VALUES ('aspirina',4,1)

INSERT INTO almacen VALUES ('buscamina',4,1)

INSERT INTO doctor VALUES ('fagc870401','Willi','Mi lano','Zepeda','La chegevarra','911')

INSERT INTO doctor VALUES ('mchh850596','Monica','G alindo','Zanchez','Las misiones','912')

INSERT INTO consultas VALUES ('Jorge','Nitales','Ze pulvera','09:00','Diarrea verde',1/12/07,'fagc870401')

INSERT INTO consultas VALUES ('Rosa','Melcacho','Qu intanilla','10:00','Pe

Page 18: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 3 Código: FIO210801-03 No. Rev.: 2

Título: Investigación de palabras reservadas del lenguaje SQL y aplicarlas.

Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

3.1 Instrucciones INSERT, UPDATE, DELETE. 3.2 Consultas Básicas SELECT, WHERE y funciones a nivel de registro. 3.3 Consultas sobre múltiples tablas. 3.3.1 Subconsultas. 3.3.2 Operadores JOIN. 3.4 Agregación GROUP BY, HAVING. 3.5 Funciones de conjunto de registros COUNT, SUM, AVG, MAX, MIN

Page 19: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

TABLA DE TIPOS DE SENTENCIAS EN SQL:

Sentencia DDL Objetivo

Alter procedure Recompilar un procedimiento almacenado.

Alter Table Añadir o redefinir una columna, modificar la asignación de almacenamiento.

Analyze Recoger estadísticas de rendimiento sobre los objetos de la BD para utilizarlas en el optimizador basado en costes.

Create Table Crear una tabla.

Create Index Crear un índice.

Drop Table Eliminar una tabla.

Drop Index Eliminar un índice.

Grant Conceder privilegios o papeles, roles, a un usuario o a otro rol.

Truncate Eliminar todas las filas de una tabla.

Revoke Retirar los privilegios de un usuario o rol de la base de datos.

Sentencia DML Objetivo

Insert Añadir filas de datos a una tabla.

Delete Eliminar filas de datos de una tabla.

Update Modificar los datos de una tabla.

Select Recuperar datos de una tabla.

Commit Confirmar como permamentes las modificaciones realizadas.

Rollback Deshacer todas las modificaciones realizadas desde la última confirmación.

Insert, Update, Delete Inserción

El comando que permite insertar filas en las tablas es el siguiente.

Page 20: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSERT INTO tabla {columna,}* VALUES ({expresión,}+)

La asociación columna-valor es posicional. Los valores deben cumplir con los tipos de datos definidos. Los valores de tipo caracter y fecha deben ir encerrados entre comillas simples, ('').

Actualización

Se utiliza el comando UPDATE cuya sintaxis se muestra a continuación.

UPDATE tabla SET {columna = expresión,}+ [WHERE condición]; UPDATE tabla SET {columna = expresión,}+ WHERE condición

Page 21: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Se especificará en la cláusula SET las columnas que se actualizarán y con qué valores. La cláusula WHERE indica las filas con las que se va a trabajar.

Page 22: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 23: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Borrado

La sintaxis es la que sigue:

DELETE FROM tabla [WHERE condición]; DELETE FROM tabla [WHERE condición]; DELETE FROM tabla WHERE condición Borrará todas las filas que cumplan la condición especificada en la cláusula WHERE. Si esta cláusula no se fija, se borrarán todas las filas de la tabla.

Page 24: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 25: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Selección

Esta sentencia permite indicar al SGBD la información que se quiere recuperar. La sentencia SELECT consta de cuatro partes básicas:

• La cláusula SELECT seguida de la descripción de lo que se desea ver, los nombres de las columnas a seleccionar. Esta parte es obligatoria.

• La cláusula FROM seguida de la especificación de las tablas de las que se han de obtener los datos. Esta parte es obligatoria.

• La cláusula WHERE seguida por un criterio de selección, una condición. Esta parte es opcional.

• La cláusula ORDER BY seguida por el criterio de ordenación. Esta parte es opcional.

Una primera aproximación a la sintaxis de la sentencia SELECT puede mostrarnos la siguiente expresión:

SELECT {* | {columna,}+} FROM {tabla,}+ [WHERE condición] [ORDER BY {expresiónColumna [ASC | DESC],}+];

Page 26: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Selección de Columnas

Las columnas a seleccionar se enumeran sin más en la cláusula SELECT. Si se desea seleccionar todas las columnas de una tabla se puede hacer enumerando a todas las columnas o colocando un asterisco, *, en su lugar.

Page 27: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 28: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Cláusula WHERE La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. Si no se emplea esta cláusula, la consulta devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuación de FROM.

Operadores de Comparación

Operador Operación Ejemplo

= Igualdad select * from emp where cod_dep = 100;

!=, <>, ^= Desigualdad select * from emp where cod_dep != 100;

< Menor que select * from emp where cod_dep < 200;

> Mayor que select * from emp where cod_dep > 200;

Page 29: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

<= Menor o igual que select * from emp where cod_dep <= 200;

>= Mayor o igual que select * from emp where cod_dep >= 200;

in Igual a cualquiera de los miembros entre paréntesis

select * from emp where cod_dep in (100, 300);

not in Distinto a cualquiera de los miembros entre paréntesis

select * from emp where cod_dep not in (200);

between Contenido en el rango select * from emp where cod_emp between 100 and 199;

not between Fuera del rango

select * from emp where cod_emp not between 100 and 199;

like '_abc%'

Contiene la cadena 'abc' a partir del segundo carácter y luego cualquier cadena de caracteres

select * from emp where nombre like 'Ma%';

Operadores de Aritméticos

Operador Operación Ejemplo

+ Suma select nombre, salario+comision from emp where oficio='VENDEDOR';

- Resta select nombre from emp where sysdate-fecha_alta > 365;

* Producto select nombre, salario*12 from emp;

/ División select nombre, salario/31 from emp;

Operadores de Cadenas de Caracteres

Operador Operación Ejemplo

|| Concatenación select nombre||oficio from emp;

Page 30: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Cláusula ORDER BY

Se utiliza para especificar el criterio de ordenación de la respuesta a la consulta. Por defecto la ordenación es ascendente, aunque se puede especificar un orden descendente.

Page 31: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Subconsultas

A veces se han de utilizar en una consulta los resultados de otra consulta, llamada subconsulta.

Page 32: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Las subconsultas pueden devolver más de una columna, y se habrán de comparar de manera consecuente:

• Las columnas de la clausula WHERE de la consulta principal deben estár agrupadas por parentesis.

• Las columnas encerradas entre paréntesis deben coincidir en número y tipo de datos con los datos que devuelve la subconsulta.

El nivel de anidamiento de subconsultas es ilimitado.

Page 33: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 4 Código: FIO210801-03 No. Rev.: 2

Título: Investigar y aplicar la sentencia JOIN en SQL. Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

Sentencia Join en SQL.

La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipos de JOIN: interno, externo, y cruzado.

En casos especiales una tabla puede unirse a sí misma, produciendo una auto-combinación, SELF-JOIN .

Tablas de ejemplo

Todas las explicaciones que están a continuación utilizan las siguientes dos tablas para ilustrar el efecto de diferentes clases de uniones JOIN.

Tabla Empleado Apellido IDDepartamento Rafferty 31 Jordán 33

Steinberg 33 Róbinson 34

Smith 34 Gaspar 36

Tabla Departamento NombreDepartamento IDDepartamento Ventas 31 Ingeniería 33

Page 34: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Producción 34 Marketing 35

La tabla Empleado contiene a los empleados con el número del departamento al que pertenecen; mientras que la tabla Departamento, contiene el nombre de los departamentos de la empresa, se puede notar que existe un empleado que tiene asignado un número de departamento que no se encuentra en la tabla Departamento (Gaspar), igualmente, en la tabla Departamento existe un departamento al cual no pertenece empleado alguno (Marketing).

Combinación interna ( INNER JOIN)

Con esta operación es calculado el producto cruzado de todos los registros; así cada registro en la tabla A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especifiquen.

SQL especifica dos formas diferentes para expresar estas combinaciones. La primera, conocida como explícita usa la palabra JOIN, mientras que la segunda es implícita y usa ',' para separar las tablas a combinar en la sentencia FROM de la declaración SELECT. Entonces siempre se genera el producto cruzado del cual se seleccionan las combinaciones que cumplan lo que indica la sentencia WHERE.

Es necesario tener especial cuidado cuando se combinan columnas con valores nulos NULL ya que el valor nulo no se combina con otro valor o con otro nulo, excepto cuando se le agregan predicados tales como IS NULL o IS NOT NULL .

La siguiente consulta toma todos los registros de la tabla Empleado y encuentra todas las combinaciones en la tabla Departamento. La sentencia JOIN compara los valores en la columna IDDepartamento en ambas tablas. Cuando no existe esta correspondencia entre algunas combinaciones, éstas no se muestran; es decir que si el número de departamento de un empleado no coincide con los números de departamento de la tabla Departamento, no se mostrará el empleado con su respectivo departamento en la tabla resultante.

A. Ejemplo de la sentencia INNER JOIN explícita:

SELECT * FROM empleado INNER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

Page 35: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

B. Ejemplo de la sentencia INNER JOIN implícita:

SELECT * FROM empleado, departamento WHERE empleado.IDdepartamento = departamento.IDDepartamento

Resultados:

Empleado.Apellido

Empleado.IDdepartamento

departamento.NombreDepartamento

departamento.IDDepartamento

Smith 34 Producción 34 Jordán 33 Ingeniería 33

Róbinson 34 Producción 34 Steinberg 33 Ingeniería 33 Rafferty 31 Ventas 31

El empleado Gaspar y el departamento de Marketing no son presentados en los resultados ya que ninguno de éstos tiene registros correspondientes en la otra tabla. No existe un departamento con número 36 ni existe un empleado con número de identificación 35.

A la combinación que utiliza comparaciones dentro del predicado JOIN se le llama theta-join.

Ejemplo de combinación tipo theta:

SELECT * FROM empleado INNER JOIN departamento ON empleado.IDDepartamento < departamento.IDDepartamento

Las operaciones INNER JOIN puede ser clasificadas como de equivalencia, naturales, y cruzadas.

De equivalencia ( equi-join )

SELECT * FROM empleado INNER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

Page 36: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Natural (Natural join)

Es una especialización de la combinación de equivalencia, anteriormente mencionada. En este caso se comparan todas las columnas que tengan el mismo nombre en ambas tablas. La tabla resultante contiene sólo una columna por cada par de columnas con el mismo nombre.

SELECT * FROM empleado NATURAL JOIN departamento

El resultado es un poco diferente, ya que esta vez la columna IDDepartamento se muestra sola una vez en la tabla resultante.

Empleado.Apellido IDDepartamento Departamento.NombreDepartamento Smith 34 Producción Jordán 33 Ingeniería

Róbinson 34 Producción Steinberg 33 Ingeniería Rafferty 31 Ventas

El uso de esta la sentencia NATURAL puede producir resultados ambiguos y generar problemas si la base de datos cambia, porque al añadir, quitar, o renombrar las columnas, puede perder el sentido la sentencia; por esta razón es preferible expresar el predicado usando las otras expresiones nombradas anteriormente.

Cruzada ( Cross join )

Presenta el producto cartesiano de todos los registros de las dos tablas.

El código SQL para realizar este producto cartesiano enuncia las tablas que serán combinadas, pero no incluye algún predicado que filtre el resultado.

Ejemplo de combinación cruzada explícita:

SELECT * FROM empleado CROSS JOIN departamento

Ejemplo de combinación cruzada implícita: res

SELECT * FROM empleado, departamento; Empleado.A

pellido Empleado.IDDepa

rtamento Departamento.NombreD

epartamento Departamento.IDDe

partamento

Page 37: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Rafferty 31 Ventas 31 Jordán 33 Ventas 31

Steinberg 33 Ventas 31 Smith 34 Ventas 31

Róbinson 34 Ventas 31 Gaspar 36 Ventas 31 Rafferty 31 Ingeniería 33 Jordán 33 Ingeniería 33

Steinberg 33 Ingeniería 33 Smith 34 Ingeniería 33

Róbinson 34 Ingeniería 33 Gaspar 36 Ingeniería 33 Rafferty 31 Producción 34 Jordán 33 Producción 34

Steinberg 33 Producción 34 Smith 34 Producción 34

Róbinson 34 Producción 34 Gaspar 36 Producción 34 Rafferty 31 Marketing 35 Jordán 33 Marketing 35

Steinberg 33 Marketing 35 Smith 34 Marketing 35

Róbinson 34 Marketing 35 Gaspar 36 Marketing 35

Esta clase de combinaciones son usadas pocas veces, generalmente se les agregan condiciones de filtrado con la sentencia WHERE para hallar resultados específicos.

Combinación externa ( OUTER JOIN)

Mediante esta operación no se requiere que cada registro en las tablas a tratar tenga un registro equivalente en la otra tabla. El registro es mantenido en la tabla combinada si no existe otro registro que le corresponda.

Este tipo de operación se subdivide dependiendo de la tabla a la cual se le admitirán los registros que no tienen correspondencia, ya sean de tabla izquierda, de tabla derecha, o combinación completa.

de tabla izquierda ( LEFT OUTER JOIN )

Page 38: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El resultado de esta operación siempre contiene todos los registros de la tabla de la izquierda (la primera tabla que se menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de la derecha, para uno de la izquierda.

La sentencia LEFT OUTER JOIN retorna la pareja de todos los valores de la tabla izquierda con los valores de la tabla de la derecha correspondientes, o retorna un valor nulo NULL en caso de no correspondencia.

A diferencia del resultado presentado en los ejemplos A y B (de combinación interna) donde no se mostraba el empleado cuyo departamento no existía; en el siguiente ejemplo se presentarán los empleados con su respectivo departamento, e inclusive se presentará el empleado, cuyo departamento no existe.

SELECT distinct * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento Empleado.A

pellido Empleado.IDDepa

rtamento Departamento.NombreD

epartamento Departamento.IDDe

partamento Jordán 33 Ingeniería 33 Rafferty 31 Ventas 31

Róbinson 34 Producción 34 Smith 34 Producción 34

Gaspar 36 NULL NULL Steinberg 33 Ingeniería 33

de tabla derecha ( RIGHT OUTER JOIN)

Esta operación inversa a la anterior; el resultado de esta operación siempre contiene todos los registros de la tabla de la derecha (la segunda tabla que se menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de la izquierda, para uno de la derecha.

La sentencia RIGHT OUTER JOIN retorna la pareja de todos los valores de la tabla derecha con los valores de la tabla de la izquierda correspondientes, o retorna un valor nulo NULL en caso de no correspondencia.

SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

Page 39: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Empleado.A

pellido Empleado.IDDepa

rtamento Departamento.NombreD

epartamento Departamento.IDDe

partamento Smith 34 Producción 34 Jordán 33 Ingeniería 33

Róbinson 34 Producción 34 Steinberg 33 Ingeniería 33 Rafferty 31 Ventas 31 NULL NULL Marketing 35

En este caso el área de Marketing fue presentada en los resultados, aunque aún no hay empleados registrados en dicha área.

combinación completa ( FULL OUTER JOIN )

Esta operación presenta los resultados de tabla izquierda y tabla derecha aunque no tengan correspondencia en la otra tabla. La tabla combinada contendrá, entonces, todos los registros de ambas tablas y presentará valores nulos NULLs para registros sin pareja.

SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento Empleado.A

pellido Empleado.IDDepa

rtamento Departamento.NombreD

epartamento Departamento.IDDe

partamento Smith 34 Producción 34 Jordán 33 Ingeniería 33

Róbinson 34 Producción 34 Gaspar 36 NULL NULL

Steinberg 33 Ingeniería 33 Rafferty 31 Ventas 31 NULL NULL Marketing 35

Como se puede notar, en este caso se encuentra el empleado Gaspar con valor nulo en su área correspondiente, y se muestra además el departamento de Marketing con valor nulo en los empleados de esa área.

Page 40: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Algunos sistemas de bases de datos no soportan esta funcionalidad, pero esta puede ser emulada a través de las combinaciones de tabla izquierda, tabla derecha y de la setencia de union union.

El mismo ejemplo puede expresarse así:

SELECT * FROM empleado LEFT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento UNION SELECT * FROM empleado RIGHT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE empleado.IDDepartamento IS NULL

Actividad: Practica 5 Código: FIO210801-03 No. Rev.: 2

Título: Investigar las sentencias GROUP BY y aplicarla en SQL Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

Cláusula GROUP BY Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HAVING para filtrar los registros una vez agrupados. Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la cláusula GROUP BY que satisfaga las condiciones de la cláusula HAVING.

Page 41: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar.

Page 42: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 43: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 44: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 45: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Funciones de Agrupamiento

Función Cometido Ejemplo

COUNT(col) Cuenta el número de filas agrupadas.

select count(nombre),oficio from emp group by oficio;

AVG(col) Calcula el valor medio de todos los valores de la columna col.

select avg(salario),oficio from emp group by oficio;

MAX(col) Calcula el valor máximo de todos los valores de la columna col.

select max(salario),oficio from emp group by oficio;

MIN(col) Calcula el valor mínimo de todos los valores de la columna col.

select min(salario),oficio from emp group by oficio;

SUM(col) Calcula la suma de los valores de la columna col.

select sum(salario), oficio from emp group by oficio;

Page 46: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 47: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 48: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 49: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 50: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 51: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Para comprobar que el alumno realizo su práctica se elabora un examne en cual deberá contestar de acuerdo a su investigación.

CUESTIONARIO

1.- Menciona las instrucciones de consultas de datos.

2.- Realiza la estructura de la inserción de datos mediante un ejemplo.

3.- ¿Para que nos sirve la instrucción select?

4.- ¿Cómo podemos seleccionar todas las columnas de una tabla?

5.- ¿Para que nos sirve la sentencia join, inner join como se clasifican esta ultima ?

6.- Da un ejemplo de inner join en su clasificación cruzada.

7.-Menciona las funciones de agrupamiento.

8.- ¿Para que nos sirve la función AVG?

9.- ¿Para que nos sirve la sentencia full outer join?

Page 52: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

10.- Da un pequeño ejemplo de inner join en su clasificación natural.

CUESTIONARIO RESUELTO

1.- Menciona las instrucciones de consultas de datos.

Insert, update, select, delete

2.- Realiza la estructura de la inserción de datos mediante un ejemplo.

Insert into nombredetabla values (campos)

3.- ¿Para que nos sirve la instrucción select?

Para devolver el contenido de una tabla

4.- ¿Cómo podemos seleccionar todas las columnas de una tabla?

Select * from nombredelabd

5.- ¿Para que nos sirve la sentencia join, inner join como se clasifican esta ultima ?

La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. Con inner join es calculado el producto cruzado de todos los registros,

Equivalencia, natural, cruzada

6.- Da un ejemplo de inner join en su clasificación cruzada.

SELECT * FROM empleado CROSS JOIN departamento

7.-Menciona las funciones de agrupamiento.

COUNT, AVG, MAX, MIN, SUM

8.- ¿Para que nos sirve la función AVG?

Promedio de una columna

9.- ¿Para que nos sirve la sentencia full outer join?

Esta operación presenta los resultados de tabla izquierda y tabla derecha aunque no tengan correspondencia en la otra tabla.

10.- Da un pequeño ejemplo de inner join en su clasificación natural.

Page 53: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

SELECT * FROM empleado NATURAL JOIN departamento

Actividad: Practica 6 Código: FIO210801-03 No. Rev.: 2

Título: Realizar una Base de Datos en SQL. Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

Requerimientos: La base de datos Compañía se ocupa de los empleados, departamentos y proyectos de una empresa. Los diseñadores de la base de datos redactaron la siguiente información: 1.- La compañía está organizada en departamentos. El departamento tiene un nombre único, un número único y un cierto empleado que lo dirige y nos interesa la fecha en que dicho empleado comenzó a dirigir el departamento. Un departamento puede estar distribuido en varios lugares, se requiere almacenar dicho lugar. 2.-Cada departamento controla un cierto número de proyectos, cada uno de los cuales tiene un nombre y un número único y se efectúa en un solo lugar. 3.-De los empleados almacenaremos el nombre, número de seguro social, dirección, salario, sexo y fecha de nacimiento. Todo empleado está asignado a un departamento, pero puede trabajar en varios proyectos que no necesariamente estarán controlados por el mismo departamento. Nos interesa el número de horas por semana que un empleado trabaja en cada proyecto y también quién es el supervisor de cada empleado. 4.- Queremos mantenernos al tanto de los dependientes de cada empleado con el fin de administrar los términos de sus seguros. Almacenaremos nombre, sexo, fecha de nacimiento de cada dependiente y su parentesco con el empleado. *Modelo E-R

Page 54: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

CÓDIGO EN SQL SERVER 2008 create database Compañia use master create table Departamento( Nom_dep VARCHAR (30) not null, Num_dep INT primary key not null, Fecha_dir VARCHAR (9) not null, Lug_dep VARCHAR (30) not null, ) create table Empleado( Num_ss INT primary key not null, Nom_emp VARCHAR (50) not null, Direccion VARCHAR (50) not null, Nom_sup VARCHAR (50) not null, Fecha_nac VARCHAR (9) not null, salario INT not null, Sexo_emp VARCHAR (1) not null ) create table Proyecto( Nom_pro VARCHAR (30) not null, Num_pro INT primary key not null, Lug_pro VARCHAR (30) not null, Num_hrs_emp INT not null, Num_ss INT foreign key references Empleado(Num_ss)not null ) create table Dependiente( Nom_dep VARCHAR (30) not null,

Page 55: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Sexo_dep VARCHAR (1) not null, Fecha_nac_dep VARCHAR (9) not null, Parentesco VARCHAR (30)not null, Num_ss INT foreign key references Empleado(Num_ss)not null ) A continuación se muestra la consulta de cada tabla con el comando select* from

Page 56: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

A continuación se muestra el uso de where seleccionando condicional y específicamente el dato de la tabla.

Page 57: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Aquí se muestra el uso de group by donde se separan los registros seleccionados en un grupo específico.

En seguida utilizamos el comando order by para que nos muestre de manera ordenada los datos seleccionados de acuerdo a un orden especifico de la tabla.

Page 58: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El comando distinct muestra los dos únicos proyectos que se llevan a cabo a pesar de que mas de un empleado interviene en el de control de software, es decir omite los registros que se repiten mas de una vez. Nota: hemos agregado un segundo empleado trabajando en el proyecto de Control de software:

Page 59: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Esta pantalla muestra la condición de trigger , esta se ejecuta cuando se cumple una condición establecida, como puede ser de inserción, actualización o borrado, por ejemplo en este caso inserción.

Comprobación de cambios:

Page 60: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Page 61: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El comando update es utilizado para modificar algún valor de los datos y registros. SET Permite identificar las columnas de la tabla o vista que vas a actualizar en SQL.

Page 62: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

A continuación se muestra el uso de And para evaluar dos condiciones al mismo tiempo que devuelva un valor solamente si ambas son ciertas.

El comando OR evalúa dos condiciones y verifica cual es la verdadera, puede ser que ambas condiciones lo sean o no.

Page 63: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

En la siguiente imagen se muestra cuando solamente tenemos un dato verdadero y si se cumple la condición OR . (ya que or es uno u otro).

En la siguiente se muestra que ninguna de las condiciones cumple con los datos que se encuentran en la tabla.

La condición Not nos muestra los datos que no pertenecen a la condición que se indica.

Page 64: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

UNION esta condición se obtiene a partir de dos tablas, cuando se unen en una sola las columnas de ambas.

El comando BETWEEN muestra el intervalo de valores, en este caso lo que queremos saber es cual es el número de seguro social que tenemos entre 1233 y 1235. El cual es 1234.

Page 65: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El comando INNER JOIN emparejar filas de distintas tablas de forma más eficiente.

Page 66: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El comando DELETE permite eliminar registros de una tabla

Page 67: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Aquí se muestra la eliminación de la fila en la tabla Proyecto.

Page 68: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 7 Código: FIO210801-03 No. Rev.: 2

Título: Utilizar las Sentencias VISTA, ASERTOS, TRIGGERS, REVOKE, GRANT.

Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

Page 69: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

VISTAS, ASERTOS, TRIGGERS, REVOKE, GRANT

Diagrama de la Base de Datos “ClubAmigos2”

Tablas con información

Tabla CLUB2

Page 70: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Tabla INTEGRANTES2

Tabla REFERENCIA2

Page 71: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

VISTAS.

Sintaxis para crear vistas en SQL.

CREATE VIEW <nombre de la vista> AS <expresión de consulta>

Ejemplo.

CREATE VIEW NOMBRE_INTEG AS SELECT NUM_INTEG, NOMBRE_CLUB,NOMBRE_INTEG FROM INTEGRANTES2 WHERE NOMBRE_CLUB = 'Paris'

Selecciona lo que se creo de la vista.

SELECT *FROM NOMBRE_INTEG

Muestra el resultado de la vista.

Para borrar una vista.

DROP VIEW NOMBRE_INTEG

Borra la vista que fue creada anteriormente.

Cambiar campos de las vistas

Ejemplo.

Page 72: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

CREATE VIEW DIRECCION(ESTADOCIVIL,PAIS,EDAD) AS SELECT ESTADO_CIVIL,DIRECCION,EDAD_INTEG FROM REFERENCIA2

Mostrar los cambios de la vista.

SELECT *FROM DIRECCION

Cambia el nombre del campo de la B.D.

ASERTOS

Sintaxis para crear Asertos en SQL.

CREATE ASSERTION <nombre-aserto> CHECK <predicado>

TRIGGER.

Page 73: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Sintaxis para crear trigger

CREATE TRIGGER <nombres del campo> ON <nombre de la tabla> Ejemplo.

Se muestra la creación de los Trigger en cual existen restricciones que se deben de cumplir, en este ejemplo se muestra la modificación del campo nombre del club, lo cual no será valido si lo modifica ya que el usuario no cuenta con cierto permiso para modificar la tabla.

Resultado de Trigger.

Page 74: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

La tabla se encuentra inicialmente.

Inserción de datos a la tabla creada a partir de Trigger.

Sintaxis para introducir datos a la tabla creada.

INSERT INTO CLUB2 VALUES ('Israel', '2','Savedra Emmanuel')

Borra los Trigger.

Sintaxis para borrar.

DROP TRIGGER CLUB2_NOMBRE_CLUB

Ejemplo.

GRANT.

Ejemplo. Sintaxis.

GRANT INSERT ON REFERENCIA2 TO PROFESION='Lic. Derecho'

Page 75: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Se otorga el privilegio a las personas con la carrera de Lic. Derecho de insertar sobre las columnas de la tabla referencia2.

Se otorga el privilegio a la persona con el nombre Melina Rodríguez a insertar, modificar e insertar sobre las culminas de la tabla referencia2. Se les garantiza, además, el privilegio de asignar estos permisos a otros usuarios.

REVOKE.

Para quitarles los privilegios a los usuarios se usa REVOKE.

Sintaxis.

REVOKE [ GRANT OPTION FOR ] lista_privilegios ON objeto FROM lista_usuarios { RESTRIC | CASCADE }.

Page 76: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 8 Código: FIO210801-03 No. Rev.: 2

Título: Vistas, Seguridad y SQL procedural. Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación

Contenido.

5. Vistas.

5.1 Definición y objetivo de las vistas.

5.2 Instrucciones para la administración de vistas.

6. Seguridad.

6.1 Esquemas de autorización.

6.2 Instrucciones GRANT y REVOKE.

7. Introducción al SQL Procedural.

7.1 Procedimientos almacenados.

7.2 Disparadores (Triggers).

Introducción.

Las vistas presentan una imagen consistente y permanente de la base de datos incluso si esta cambia su estructura. Esto se puede explicar con el ejemplo anterior, en el retiro de efectivo del banco ya que en la ultima opción se presenta la de imprimir su saldo actual el cual debe ser consistente y permanente su modificación.

Page 77: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Las vistas proporcionan un nivel de seguridad para el usuario así como para la compañía.

Objetivo.

Uno de los objetivos mas importantes de las vistas es el de proporcionan un nivel de seguridad adicional, ya que con anterioridad las bases de datos tiene que cumplir con ciertos protocolo para tener seguridad en los datos almacenados en la misma. Es por eso que se mencionan las vistas con un nivel de seguridad adicional el cual hace segura a las base de datos.

Otro de los objetivos de las vistas es que pro que los usuarios vean los datos en el formato deseado. Ejemplo: En un cajero se muestra la opción de cuanto de desea retirar, otro opción seria la forma de retiro si es en cheque o efectivo y al final si desea imprimir su saldo actual.

Vistas.

Definición: Las vistas son un resultada de SQL las cuales proporcionan solo parte de la información de la base de datos (completa). Esto quiere decir que solo se muestra la información necesaria que el usuario desea ver.

Ejemplo: En un cajero automático de algún banco se desea retirar cierta cantidad de dinero la información a mostrar solo seria tu saldo, mas los datos personales no son mostrados así como son tu teléfono, dirección o trabajo.

Niveles de abstracción.

Nivel físico: El nivel más bajo de abstracción, en este nivel los datos son almacenados con los detalles de los mismos.

Page 78: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Nivel lógico: El siguiente nivel más alto de abstracción, aquí se encuentran los datos almacenados y la relación que existe entre esos datos.

Nivel de vistas: El nivel más alto de abstracción, se encuentra solo una parte de los datos de la base de datos.

En este ejemplo se muestra como se encuentra los niveles en la base de datos.

Sintaxis para la creación de vistas.

Create view <nombre de la vista> as <expresión de consulta>.

Ejemplo:

Creación de las vistas en SQL.

Page 79: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Se crea la vista “NOMBRE_INTEG”, a partir de los campos de la tabla INTEGRANTES2; aunque con acceso restringido a las filas (o registros) que cumplen la condición que los INTEGRANTES pertenezca a la ciudad de Paris; por lo que cada vez que un usuario ejecute una consulta sobre la vista completa, solo verá como conjunto resultado los registros cuyos

INTEGRANTES pertenezcan al club de “Paris”.

CREATE VIEW NOMBRE_INTEG AS SELECT NUM_INTEG, NOMBRE_CLUB,NOMBRE_INTEG FROM INTEGRANTES2 WHERE NOMBRE_CLUB = 'Paris'

SELECT *FROM NOMBRE_INTEG

“La instrucción anterior es para mostrar el resultado de la creación de vista a partir de la primera instrucción.”

Page 80: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Borrar una vista.

“Borra la creación de las vista anterior”.

Modificación de los campos de la vistas.

Sintaxis.

Fig. 1.

� CREATE VIEW DIRECCION AS SELECT ESTADO_CIVIL,DIRECCION,EDAD_INTEG FROM REFERENCIA2

� SELECT *FROM DIRECCION

Fig.2.

� CREATE VIEW DIRECCION(ESTADOCIVIL,PAIS,EDAD) AS SELECT ESTADO_CIVIL,DIRECCION,EDAD_INTEG FROM REFERENCIA2

� SELECT *FROM DIRECCION

Page 81: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Interfaz de las vistas a partir de la creación de las tablas en SQL.

Las base de datos contienen varias tablas por ejemplo T1, T2 y T3 con sus respectivos atributos de los cuales se muestran al hacer alguna consulta y no necesariamente se mostraran todos los atributos de T1 o T2 solamente se muestra los datos que son solicitados. Estos datos se mostrarían en una cuarta tabla que seria T4 en la que hace la recopilación de los datos solicitados.

Page 82: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Ejemplo de las vistas aquí se muestra una interfaces de cómo se muestra las vistas en una base de datos solo aparece los mas necesario que el usuario desea ver y los detalles de esos datos a mostrar son ocultados para no hacer mas compleja al momento de ser utilizada por algún usuario.

Page 83: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Aquí se muestra como se introducen los datos a la interfaz y no es necesario que aparezcan todos los datos de la persona. En el ejemplo se pide el nombre del club y la contraseñe para poder ser mostrados los nombres de las personas que se encuentran en ese momento en el club.

En esta fig. Se muestra como es que se registran los miembros de los diferentes club de las base de datos.

La figuras anteriores pueden ser un ejemplo claro de las vistas ya que en ninguna de las figura fue necesario que el usuario pudiera visualizar todos sus datos personales, ya que solo fue necesario acceder a una parte de la base de datos.

Instrucciones para la administración de vistas.

Page 84: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Creación de la base de datos en SQL.

SELECT *FROM CLUB2

“Se muestra la tabla CLUB2 con el nombre del club, el representante del club y el numero de integrantes que se encuentran en la base de datos”.

Page 85: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

SELECT *FROM INTEGRANTES2

“Se muestra todos los integrantes que se encuentra en el club amigos con su respectiva información”.

Page 86: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

SELECT *FROM REFERENCIA2

“Muestra los datos de los integrantes de los diferentes club existentes”.

En las siguientes instrucciones se muestra solo la información de los integrantes del club de Paris.

Fig. 1- SELECT NOMBRE_INTEG FROM INTEGRANTES2 WHERE (NOMBRE_CLUB='Paris')

Fig. 2- SELECT NOMBRE_INTEG,PROFESION FROM INTEGRANTES2 WHERE (NOMBRE_CLUB='Paris')

Fig. 1 Fig. 2

Page 87: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

En las fig. Anteriores se muestran ejemplos de vistas en cual solo se ve la información que el usuario solicite.

Seguridad.

La ejecución de alguna operación en una base de datos por parte de un usuario, depende de la autorización con la que el usuario cuenta es por eso que en SQL existen istrucciones para el acceso a cierta infracción de la base de datos. En general, los privilegios se asignan del siguiente modo:

� Un usuario que crea una tabla o cualquier otro objeto de la base de datos es el propietario y se le garantizan automáticamente todos los privilegios aplicables a dicho objeto, con la posibilidad de darles también a otros usuarios dichos privilegios (privilegio de concesión).

� Un usario que tenga un privilegio y posea además sobre él, el privilegio de concesión puede asignarle tal privilegio a otro usuario y pasarle también el privilegio de concesión.

� Los privilegios los concede quien tiene el permiso (es decir el propietario del objeto y quien tiene el privilegio de concesión) mediante la orden GRANT, y los revoca mediante la orden REVOKE.

La seguridad cuenta con ciertas restricciones las cuales exige que algunos datos de la base de datos queden ocultos para los usuarios.

Con la finalidad de proteger los datos frente a accesos malintencionados. Aunque no podemos tener la certeza de que los datos están protegidos al cien por ciento.

Es por eso que se aplican medidas de seguridad a las base de datos.

Page 88: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*Sistemas de bases de datos: Algunos usuarios del sistema de base de datos solo tienen acceso o autorización a realizar cierta función en la base de datos como puede ser la eliminación, modificación, creación entre otras funciones, cada uno de los usuarios puede realizar una de las mencionadas pero no todas. Para eso el sistema de la base de datos es el encargado de que no se violen ciertas funciones que fueron asignadas a cada usuario

*Sistema operativo: Sirve como medio para el acceso no autorizado a la base de datos.

*Red: El software es el encargado de la seguridad de la base de datos ya que todos los sistemas de base de datos permiten el acceso remoto mediante terminales o redes.

.

Esquema de Autorización.

La autorización se refiere al privilegio que se le puede dar a un usuario para acceder a una base de datos.

Los usuarios tienen ciertas autorizaciones sobre la base de datos esta son:

*La autorización de lectura: Los datos se pueden leer, pero no modifica.

*La autorización de inserción: Solo puede insertar datos, pero no puede modifica los datos existentes.

Page 89: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*La autorización de actualización: Puede modificar los datos, pero no los puede borrar.

*La autorización de borrado: Puede borrar los datos.

Instrucciones GRANT y REVOKE.

La instrucción GRANT se utiliza para conferir autorizaciones. Esto se refiere a que la intruccion puede conceder privilegios a cirtos usuarios de la base de datos.

La instrucción REVOKE se utiliza para la no autorización. Esto se refiere que quita la autorización de algun usuario de cierta función.

Conceder permisos en Tablas:

GRANT SELECT ON TABLE INTEGRANTES2 TO Melina Rodriguez

Concede al usuario “Melina Rodríguez” solo permiso de lectura o selección sobre la tabla “INTEGRANTES2”.

GRANT INSERT, DELETE ON TABLE REFERENCIA2 TO Melina Rodríguez, Lic.Derecho;

Concede al usuario “Melina Rodríguez” y a las profesiones de “Lic. Derecho” los permisos de inserción y eliminación de registros sobre la tabla “INTEGRANTES2”.

Page 90: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

GRANT ALL ON TABLE CLUB2 TO REPRESENTATES_CLUB;

Concede a los representantes del club todos los derechos o autorizaciones que existan (SELECT, DELETE, INSERT, UPDATE) sobre la tabla “CLUB2”.

Revocar permisos en Tablas:

REVOKE SELECT ON TABLE INTEGRANTES2 TO Melina Rodriguez;

Revoca al usuario “Melina Rodríguez” el permiso de lectura o selección sobre la tabla “INTEGRANTES2”. En este caso luego de ejecutada la sentencia “Melina Rodríguez” queda sin ningún tipo de autorización sobre la tabla.

REVOKE DELETE ON TABLE INTEGRANTES2 TO Omar Salinas;

Revoca al usuario “Omar Salina” el permiso de eliminación de registros sobre la tabla “INTEGRANTES2”. Obviamente el permiso revocado debió ser concedido previamente con la proposición GRANT.

Introducción al SQL Procedural.

SQL consisten en tres instrucciones básicas como son: Select, From y Where.

*Select. Selecciona los atributos deseados del resultado de una consulta.

Page 91: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*From. Lista las relaciones que deben ser analizadas en la evaluación

de la expresión.

*Where. Es un predicado que engloba a los atributos de las relaciones que aparecen

en la cláusula from .

Ejemplo:

SELECT ESTADO_CIVIL,NOMBRE_INTEG, EDAD_INTEG FROM REFERENCIA2 WHERE ESTADO_CIVIL='Soltera'

Se muestra la información de las personas del club solteras con su respectiva información como es su nombre y edad.

Page 92: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

“Se muestra el numero máximo de integrantes que se encuentran en el CLUB2”

“Se muestra el numero mínimo de integrantes que se encuentran en el CLUB2”

Page 93: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

“Se muestra la suma de todas las persona que se encuentran en el club amigos”.

“Muestra todos los nombres de club que sean diferentes de Paris”.

Page 94: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

“Muestra todas las direcciones de los integrantes del club amigos”.

“Promedio de los integrantes de cada club que se en encuentran en el club amigos”

Procedimientos almacenados.

Los procedimientos almacenados son los en cargados que los datos no se encuentren disponibles a aplicaciones externas, esto se refiere que no se exponen los detalles internos de los datos a los usuarios.

Los procedimientos en SQL consisten en una serie de instrucciones. El estándar de SQL-92 permite los constructores procedimentales, como son el for, while e if-then-else.

Los procedimientos almacenados sirven para reducir el costo y el tiempo de la ejecución en SQL ya que los datos están almacenados en un servidor estos datos llegan al servidor por medio de los procedimientos almacenados los cuales al momento de hacer una consulta solo se muestra estos procedimientos almacenados en vez de ver todo una consulta entera.

Page 95: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Ejemplo:

SELECT *FROM CLUB2

Utilizando la instrucción FROM para mostrar toda la información de la tabla CLUB2.

Disparadores (Triggers).

Elementos de un disparador.

Page 96: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*Suceso que causa que se dispare un trigger.

• INSERT, UPDATE, DELETE

Sintaxis para crear trigger.

Create triggre NOMBREDISPARADOR on NOMBRETABLA for update as SENTENCE

Ejemplo.

Crear Trigger.

Introducir datos al Trigger.

Page 97: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Ver resultados del Trigger.

Borrar Trigger.

Combinaciones de triggers.

BEFORE statement trigger.

– Antes de ejecutarse la operación que desencadena el evento se

ejecuta la acción del trigger.

BEFORE row trigger

Page 98: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

– Antes de modificar cada una de las filas afectadas por la operación

que desencadena el evento y antes de comprobar las reglas de

integridad se ejecuta la acción del trigger (éstos no bloquean la fila).

AFTER row trigger

– Después de modificar cada una de las filas afectadas por la

operación que desencadena el evento y las reglas de integridad

asociadas, se ejecuta la acción del trigger para la fila actual (éstos

bloquean la fila)

AFTER statement trigger

– Se ejecuta la acción del trigger después de ejecutar la operación que

desencadena el evento y después de aplicar las restricciones

Estado de triggers

Una regla o trigger, por medio de su nombre, se puede:

– Activar / ENABLE

• Se puede disparar

Page 99: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

• Por defecto (Consultar SGBD)

– Desactivar / DISABLE

• No se puede disparar

– Eliminar / DROP

Ejemplo:

Crear Trigger en SQL.

Page 100: Manual de Practicas de Fundamentos de Base de Datos

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 9 Código: FIO210801-03 No. Rev.: 2

Título: Conexión con la B.D a un lenguaje de programación (Java) realizando consultas y modificaciones.

Fecha Rev.: 13-12-11

Hoja: 1 de 2

Fundamentos de Base de Datos

1327 Ing. Martha Melina Rodríguez Vázquez Fecha: 17/01/13

100% Primer Parcial Calificación