Está en la página 1de 100

MANUAL DE PRACTICAS DE FUNDAMENTOS DE BASE DE DATOS.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO. Ext. Pursima del Rincn, Gto. Mxico Especialidad: Lic. En Informtica E-mail: martha.rodriguez@itesi.edu. mx

Docente: Ing. Martha Melina Rodrguez Vzquez


Se implementarn prcticas en la materia de fundamentos de base de datos para reforzar lo visto en clase, las practicas se realizarn de acuerdo al tema explicado en el aula.

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 realizacin de las prcticas Para la realizacin de dichas prcticas el alumno deber considerar los siguientes aspectos generales:

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Nombre o identificacin de la prctica.

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 nmeros de pgina de cada uno de los apartados. 3. Jerarqua de los mdulos de la prctica y diseo de cada uno de los componentes implementados, previamente validados por el profesor. 4. Listado de las sentencias fuentes, realizados por el alumno. Si la prctica se realiza por parejas (segn sea el caso), slo se entregar un reporte por grupo.

Evaluacin de la prctica El profesor de la asignatura controlar de forma especial los siguientes aspectos a la hora de realizar la evaluacin: Las prcticas deben cumplir los objetivos de diseo fijados en cada momento. An cuando una prctica funcione, si su diseo no es correcto, la prctica se considerar NO, REALIZADA. Se realizarn pruebas de los mismos y slo sern dados por buenos aquellos que las superen. Si se detectara que un grupo de alumnos ha copiado alguno de las prcticas esto acarrear un NO REALIZADA inmediato en el laboratorio para todos los alumnos implicados. Aunque la prctica se realice en grupos de dos alumnos, la evaluacin es individual.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 1

Ttulo: Creacin de Tablas y consultas en SQL.

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-1211 Hoja: 1 de 2

Fundamentos de Base de Datos 100%

1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Fecha: 17/01/13 Calificacin

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

Creacin de la Base de Datos.

1. Selecciona todo el contenido de la tabla Equipo. SELECT *FROM EQUIPO.

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

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, nmero y edad de los jugadores del Amrica. SELECT *FROM JUGADORES WHERE NOM_EQUIPO= 'America'

8. Selecciona el nombre nmero y equipo de los jugadores que tengan la edad de 23 aos. SELECT *FROM JUGADORES WHERE EDAD_JUG=23

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

9. Selecciona la edad mxima del jugador de todos los equipos de la tabla Jugadores. Select max (EDAD_JUG) from JUGADORES

10. Selecciona la edad mnima 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 Ttulo: Consultas en el lenguaje de Base de Datos SQL.

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Fundamentos de Base de Datos 100%

1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Fecha: 17/01/13 Calificacin

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

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, cdigo, caducidad, precio de entrada, precio de salida a si como la cantidad de medicina en el almacn, 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 almacn 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.-Tambin se requiere almacenar la informacin de los doctores su nombre, direccin, telfono y nmero 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, telfono, hr. De entrada y hr. De salida. 7. Del proveedor se necesita saber su nombre, telfono, lugar de donde proviene y su clave correspondiente que lo identifica.

RESUELTO.

-proveedor {nombre, telfono, lugar, clave} -Medicina {nombre de la medicina, cdigo, caducidad, precio de entrada, precio de salida} -Almacn {nombre de la medicina, nmero de medicina existente, nmero de medicina vendida} -Doctor {nombre del doctor, direccin, telfono, numero de cedula}

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

-Consultas {motivo, Nombre del paciente, fecha, hora} -Trabajador{ID Trabajador, nombre Telfono, hora Entrada, hora Salida}

*Modelo Relacional

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Medicina Cdigo. #_Medicina. Nombre_Med. Nombre_medicina #_Med.Existente. $_Entrada. #_Med.Vendida. Tiene Clave _ proveedor. Cdigo. Almacn

Trabajador ID.Trabajador. Nombre. Telfono. Hr.Entrada.

Proveedor. Clave _ proveedor. Telfono. Lugar.

Consultas Nom_Paciente Hora. Motivo.

Doctor #_Cedula. Nom_Doctor. Direccin.

*Normalizacin 1FN

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Trabajador ID.Trabajador Nombre Apellido paterno Apellido materno Telfono Hr.Entrada Hr.Salida

Consultas Nombre Apellido paterno Apellido materno Hora Motivo Fecha

Doctor #_Cedula Nombre Apellido paterno Apellido materno Direccin Telfono

*Diccionario de Datos Tabla Medicina Nombre Cdigo Tipo Int Tamao 10 Alias Descripcin Numero que

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

#_Medicina

Int

15

Nombre_medicina String $_Entrada Moneda

30 5

$_Salida

Moneda

Caducidad

Numrico

identifica el tipo de medicina Numro de la medicina que se encuentra en el alamacen Nombre del medicamento. Precio en que el producto es comprado Precio en el que el producto es vendido. Caducidad de la medicina

Tabla Nombre Tipo Trabajador ID_Trabajador String

Tamao 15

Alias

Nombre Telfono Hr.Entrada Hr.Salida

String

45

Numerico 12 Date Date 5 5

Descripcin Numero nico que identifica al trabador Nombre del trabajador Telfono del trabajador Hora de entrada del trabajador Hora de salida del trabajador

Tabla Nombre Tipo Proveedor ID_Proveedor String

Tamao 15

Alias

Nombre

String

45

Telfono Lugar

Numerico 12 String 30

Descripcin Numero que identifica al proveedor Nombre de la empresa que surte el medicamento Telfono del proveedor Lugar de donde el

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

proveedor viene el proveedor

Tabla Nombre Tipo Almacn Nombre_Medicina Texto #_Med.Existente

Tamao 15

Alias

Numrico 5

#_Med.Vendida

Numrico 5

Descripcin Nombre de la medicina Numero de medicina existente Numero de medicina vendida

Tabla Nombre Tipo Tamao Consultas Nom_Paciente Texto 30 Date 5 Hora Motivo Fecha Texto 50 Date 6

Alias

Descripcin Nombre del paciente Hora en el que paciente es atendido Motivo por el cual esta e paciente Fecha en el que el paciente fue a consulta Descripcin Numero unico que identifica a un doctor Nombre del doctor Direccion del doctor actualmente Telefono del doctor

Tabla Doctor

Nombre #_Cedula Nom_Doctor Direccin Telfono

Tipo Texto Texto String

Tamao 25 30 30

Alias

Numerico 15

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*Cdigo

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(

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( cdigo_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_trabajador)) select *from medicina

CREATE TABLE tiene( clave_proveedor INTEGER REFERENCES proveedor (clave_proveedor), cdigo_medicina INTEGER REFERENCES medicina (cdigo_medicina)) CREATE TABLE almacen( nombre_medicina VARCHAR (20)PRIMARY KEY NOT NULL, numero_medicina_existente INTEGER,

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, direccin VARCHAR (50), telfono 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','Avils','Corts','462 118 2039','Irapuato')

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.00,$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','Milano','Zepeda','La chegevarra','911') INSERT INTO doctor VALUES ('mchh850596','Monica','Galindo','Zanchez','Las misiones','912')

INSERT INTO consultas VALUES ('Jorge','Nitales','Zepulvera','09:00','Diarrea verde',1/12/07,'fagc870401') INSERT INTO consultas VALUES ('Rosa','Melcacho','Quintanilla','10:00','Pe

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 3 Ttulo: Investigacin de palabras reservadas del lenguaje SQL y aplicarlas. Fundamentos de Base de Datos 100% 1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Fecha: 17/01/13 Calificacin

3.1 Instrucciones INSERT, UPDATE, DELETE. 3.2 Consultas Bsicas SELECT, WHERE y funciones a nivel de registro. 3.3 Consultas sobre mltiples tablas. 3.3.1 Subconsultas. 3.3.2 Operadores JOIN. 3.4 Agregacin GROUP BY, HAVING. 3.5 Funciones de conjunto de registros COUNT, SUM, AVG, MAX, MIN

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

TABLA DE TIPOS DE SENTENCIAS EN SQL: Sentencia DDL Alter procedure Alter Table Analyze Objetivo Recompilar un procedimiento almacenado. Aadir o redefinir una columna, modificar la asignacin de almacenamiento. Recoger estadsticas 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 Drop Index Grant Truncate Revoke Eliminar una tabla. Eliminar un ndice. Conceder privilegios o papeles, roles, a un usuario o a otro rol. Eliminar todas las filas de una tabla. Retirar los privilegios de un usuario o rol de la base de datos.

Sentencia DML Insert Delete Update Select Commit Rollback

Objetivo Aadir filas de datos a una tabla. Eliminar filas de datos de una tabla. Modificar los datos de una tabla. Recuperar datos de una tabla. Confirmar como permamentes las modificaciones realizadas. Deshacer todas las modificaciones realizadas desde la ltima confirmacin.

Insert, Update, Delete Insercin El comando que permite insertar filas en las tablas es el siguiente.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSERT INTO tabla {columna,}* VALUES ({expresin,}+) La asociacin 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, ('').

Actualizacin Se utiliza el comando UPDATE cuya sintaxis se muestra a continuacin. UPDATE tabla SET {columna = expresin,}+ [WHERE condicin]; UPDATE tabla SET {columna = expresin,}+ WHERE condicin

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Se especificar en la clusula SET las columnas que se actualizarn y con qu valores. La clusula WHERE indica las filas con las que se va a trabajar.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Borrado La sintaxis es la que sigue: DELETE FROM tabla [WHERE condicin]; DELETE FROM tabla [WHERE condicin]; DELETE FROM tabla WHERE condicin Borrar todas las filas que cumplan la condicin especificada en la clusula WHERE. Si esta clusula no se fija, se borrarn todas las filas de la tabla.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Seleccin Esta sentencia permite indicar al SGBD la informacin que se quiere recuperar. La sentencia SELECT consta de cuatro partes bsicas:

La clusula SELECT seguida de la descripcin de lo que se desea ver, los nombres de las columnas a seleccionar. Esta parte es obligatoria. La clusula FROM seguida de la especificacin de las tablas de las que se han de obtener los datos. Esta parte es obligatoria. La clusula WHERE seguida por un criterio de seleccin, una condicin. Esta parte es opcional. La clusula ORDER BY seguida por el criterio de ordenacin. Esta parte es opcional.

Una primera aproximacin a la sintaxis de la sentencia SELECT puede mostrarnos la siguiente expresin: SELECT {* | {columna,}+} FROM {tabla,}+ [WHERE condicin] [ORDER BY {expresinColumna [ASC | DESC],}+];

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Seleccin de Columnas Las columnas a seleccionar se enumeran sin ms en la clusula 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.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Clusula WHERE La clusula WHERE puede usarse para determinar qu registros de las tablas enumeradas en la clusula FROM aparecern en los resultados de la instruccin SELECT. Si no se emplea esta clusula, la consulta devolver todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuacin de FROM. Operadores de Comparacin Operador Operacin = Igualdad Ejemplo select * from emp where cod_dep = 100; select * from emp where cod_dep != 100; select * from emp where cod_dep < 200; select * from emp where cod_dep > 200;

!=, <>, ^= Desigualdad < > Menor que Mayor que

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

<= >= in not in between not between like '_abc%'

Menor o igual que Mayor o igual que Igual a cualquiera de los miembros entre parntesis Distinto a cualquiera de los miembros entre parntesis Contenido en el rango

select * from emp where cod_dep <= 200; select * from emp where cod_dep >= 200; select * from emp where cod_dep in (100, 300); select * from emp where cod_dep not in (200); select * from emp where cod_emp between 100 and 199; select * from emp where cod_emp not between 100 and 199;

Fuera del rango

Contiene la cadena 'abc' a partir del select * from emp where segundo carcter y luego cualquier nombre like 'Ma%'; cadena de caracteres

Operadores de Aritmticos Operador Operacin Ejemplo + * / Suma Resta Producto Divisin select nombre, salario+comision from emp where oficio='VENDEDOR'; select nombre from emp where sysdate-fecha_alta > 365; select nombre, salario*12 from emp; select nombre, salario/31 from emp;

Operadores de Cadenas de Caracteres Operador || Operacin Concatenacin Ejemplo select nombre||oficio from emp;

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Clusula ORDER BY Se utiliza para especificar el criterio de ordenacin de la respuesta a la consulta. Por defecto la ordenacin es ascendente, aunque se puede especificar un orden descendente.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Las subconsultas pueden devolver ms de una columna, y se habrn de comparar de manera consecuente:

Las columnas de la clausula WHERE de la consulta principal deben estr agrupadas por parentesis. Las columnas encerradas entre parntesis deben coincidir en nmero y tipo de datos con los datos que devuelve la subconsulta.

El nivel de anidamiento de subconsultas es ilimitado.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Actividad: Practica 4 Ttulo: Investigar y aplicar la sentencia JOIN en SQL.

Fundamentos de Base de Datos 100%

1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Fecha: 17/01/13 Calificacin

Sentencia Join en SQL.


La sentencia JOIN en SQL permite combinar registros de dos o ms 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 autocombinacin, SELF-JOIN. Tablas de ejemplo Todas las explicaciones que estn a continuacin utilizan las siguientes dos tablas para ilustrar el efecto de diferentes clases de uniones JOIN. Tabla Empleado Apellido IDDepartamento Rafferty 31 Jordn 33 Steinberg 33 Rbinson 34 Smith 34 Gaspar 36

Tabla Departamento NombreDepartamento Ventas

IDDepartamento

31 Ingeniera

33

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Produccin

34 Marketing

35 La tabla Empleado contiene a los empleados con el nmero 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 nmero 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). Combinacin interna (INNER JOIN) Con esta operacin 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 slo 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 explcita usa la palabra JOIN, mientras que la segunda es implcita y usa ',' para separar las tablas a combinar en la sentencia FROM de la declaracin 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 nmero de departamento de un empleado no coincide con los nmeros 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 explcita: SELECT * FROM empleado INNER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

B. Ejemplo de la sentencia INNER JOIN implcita: SELECT * FROM empleado, departamento WHERE empleado.IDdepartamento = departamento.IDDepartamento

Resultados: Empleado.A Empleado.IDdepa departamento.NombreD departamento.IDDep pellido rtamento epartamento artamento Smith 34 Produccin 34 Jordn 33 Ingeniera 33 Rbinson 34 Produccin 34 Steinberg 33 Ingeniera 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 nmero 36 ni existe un empleado con nmero de identificacin 35. A la combinacin que utiliza comparaciones dentro del predicado JOIN se le llama theta-join. Ejemplo de combinacin 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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Natural (Natural join) Es una especializacin de la combinacin de equivalencia, anteriormente mencionada. En este caso se comparan todas las columnas que tengan el mismo nombre en ambas tablas. La tabla resultante contiene slo 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 Produccin Jordn 33 Ingeniera Rbinson 34 Produccin Steinberg 33 Ingeniera 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 aadir, quitar, o renombrar las columnas, puede perder el sentido la sentencia; por esta razn 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 cdigo SQL para realizar este producto cartesiano enuncia las tablas que sern combinadas, pero no incluye algn predicado que filtre el resultado. Ejemplo de combinacin cruzada explcita: SELECT * FROM empleado CROSS JOIN departamento Ejemplo de combinacin cruzada implcita: res SELECT * FROM empleado, departamento; Empleado.A Empleado.IDDepa Departamento.NombreD Departamento.IDDe pellido rtamento epartamento partamento

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Rafferty Jordn Steinberg Smith Rbinson Gaspar Rafferty Jordn Steinberg Smith Rbinson Gaspar Rafferty Jordn Steinberg Smith Rbinson Gaspar Rafferty Jordn Steinberg Smith Rbinson Gaspar

31 33 33 34 34 36 31 33 33 34 34 36 31 33 33 34 34 36 31 33 33 34 34 36

Ventas Ventas Ventas Ventas Ventas Ventas Ingeniera Ingeniera Ingeniera Ingeniera Ingeniera Ingeniera Produccin Produccin Produccin Produccin Produccin Produccin Marketing Marketing Marketing Marketing Marketing Marketing

31 31 31 31 31 31 33 33 33 33 33 33 34 34 34 34 34 34 35 35 35 35 35 35

Esta clase de combinaciones son usadas pocas veces, generalmente se les agregan condiciones de filtrado con la sentencia WHERE para hallar resultados especficos. Combinacin externa (OUTER JOIN) Mediante esta operacin 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 operacin se subdivide dependiendo de la tabla a la cual se le admitirn los registros que no tienen correspondencia, ya sean de tabla izquierda, de tabla derecha, o combinacin completa. de tabla izquierda (LEFT OUTER JOIN)

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El resultado de esta operacin 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 combinacin interna) donde no se mostraba el empleado cuyo departamento no exista; en el siguiente ejemplo se presentarn 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 Empleado.IDDepa Departamento.NombreD Departamento.IDDe pellido rtamento epartamento partamento Jordn 33 Ingeniera 33 Rafferty 31 Ventas 31 Rbinson 34 Produccin 34 Smith 34 Produccin 34 Gaspar 36 NULL NULL Steinberg 33 Ingeniera 33 de tabla derecha (RIGHT OUTER JOIN) Esta operacin inversa a la anterior; el resultado de esta operacin 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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Empleado.A Empleado.IDDepa Departamento.NombreD Departamento.IDDe pellido rtamento epartamento partamento Smith 34 Produccin 34 Jordn 33 Ingeniera 33 Rbinson 34 Produccin 34 Steinberg 33 Ingeniera 33 Rafferty 31 Ventas 31 NULL NULL Marketing 35 En este caso el rea de Marketing fue presentada en los resultados, aunque an no hay empleados registrados en dicha rea. combinacin completa (FULL OUTER JOIN) Esta operacin 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 Empleado.IDDepa Departamento.NombreD Departamento.IDDe pellido rtamento epartamento partamento Smith 34 Produccin 34 Jordn 33 Ingeniera 33 Rbinson 34 Produccin 34 Gaspar 36 NULL NULL Steinberg 33 Ingeniera 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 adems el departamento de Marketing con valor nulo en los empleados de esa rea.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Algunos sistemas de bases de datos no soportan esta funcionalidad, pero esta puede ser emulada a travs 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 Ttulo: Investigar las sentencias GROUP BY y aplicarla en SQL

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Fundamentos de Base de Datos 100%

1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Fecha: 17/01/13 Calificacin

Clusula GROUP BY Combina los registros con valores idnticos, 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 clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusula HAVING para filtrar los registros una vez agrupados. Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la clusula GROUP BY que satisfaga las condiciones de la clusula HAVING.

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.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Funciones de Agrupamiento Funcin COUNT(col) AVG(col) Cometido Cuenta el nmero de filas agrupadas. Calcula el valor medio de todos los valores de la columna col. Calcula el valor mximo de todos los valores de la columna col. Calcula el valor mnimo de todos los valores de la columna col. Calcula la suma de los valores de la columna col. Ejemplo select count(nombre),oficio from emp group by oficio; select avg(salario),oficio from emp group by oficio; select max(salario),oficio from emp group by oficio; select min(salario),oficio from emp group by oficio; select sum(salario), oficio from emp group by oficio;

MAX(col)

MIN(col) SUM(col)

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Para comprobar que el alumno realizo su prctica se elabora un examne en cual deber contestar de acuerdo a su investigacin. CUESTIONARIO 1.- Menciona las instrucciones de consultas de datos. 2.- Realiza la estructura de la insercin de datos mediante un ejemplo. 3.- Para que nos sirve la instruccin select? 4.- Cmo 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 clasificacin cruzada. 7.-Menciona las funciones de agrupamiento. 8.- Para que nos sirve la funcin AVG? 9.- Para que nos sirve la sentencia full outer join?

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

10.- Da un pequeo ejemplo de inner join en su clasificacin natural.

CUESTIONARIO RESUELTO 1.- Menciona las instrucciones de consultas de datos. Insert, update, select, delete 2.- Realiza la estructura de la insercin de datos mediante un ejemplo. Insert into nombredetabla values (campos) 3.- Para que nos sirve la instruccin select? Para devolver el contenido de una tabla 4.- Cmo 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 ms 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 clasificacin cruzada. SELECT * FROM empleado CROSS 7.-Menciona las funciones de agrupamiento. COUNT, AVG, MAX, MIN, SUM 8.- Para que nos sirve la funcin AVG? Promedio de una columna 9.- Para que nos sirve la sentencia full outer join? Esta operacin presenta los resultados de tabla izquierda y tabla derecha aunque no tengan correspondencia en la otra tabla. 10.- Da un pequeo ejemplo de inner join en su clasificacin natural. JOIN departamento

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

SELECT * FROM empleado NATURAL JOIN departamento

Actividad: Practica 6 Ttulo: Realizar una Base de Datos en SQL.

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Fundamentos de Base de Datos 100%

1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Fecha: 17/01/13 Calificacin

Requerimientos: La base de datos Compaa se ocupa de los empleados, departamentos y proyectos de una empresa. Los diseadores de la base de datos redactaron la siguiente informacin: 1.- La compaa est organizada en departamentos. El departamento tiene un nombre nico, un nmero 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 nmero de proyectos, cada uno de los cuales tiene un nombre y un nmero nico y se efecta en un solo lugar. 3.-De los empleados almacenaremos el nombre, nmero de seguro social, direccin, salario, sexo y fecha de nacimiento. Todo empleado est asignado a un departamento, pero puede trabajar en varios proyectos que no necesariamente estarn controlados por el mismo departamento. Nos interesa el nmero de horas por semana que un empleado trabaja en cada proyecto y tambin quin es el supervisor de cada empleado. 4.- Queremos mantenernos al tanto de los dependientes de cada empleado con el fin de administrar los trminos de sus seguros. Almacenaremos nombre, sexo, fecha de nacimiento de cada dependiente y su parentesco con el empleado. *Modelo E-R

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

CDIGO EN SQL SERVER 2008 create database Compaia 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,

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 continuacin se muestra la consulta de cada tabla con el comando select* from

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

A continuacin se muestra el uso de where seleccionando condicional y especficamente el dato de la tabla.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

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

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.

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:

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Esta pantalla muestra la condicin de trigger, esta se ejecuta cuando se cumple una condicin establecida, como puede ser de insercin, actualizacin o borrado, por ejemplo en este caso insercin.

Comprobacin de cambios:

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

A continuacin 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 evala dos condiciones y verifica cual es la verdadera, puede ser que ambas condiciones lo sean o no.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

En la siguiente imagen se muestra cuando solamente tenemos un dato verdadero y si se cumple la condicin 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 condicin Not nos muestra los datos que no pertenecen a la condicin que se indica.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

UNION esta condicin 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 nmero de seguro social que tenemos entre 1233 y 1235. El cual es 1234.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El comando INNER JOIN emparejar filas de distintas tablas de forma ms eficiente.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

El comando DELETE permite eliminar registros de una tabla

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Aqu se muestra la eliminacin de la fila en la tabla Proyecto.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 7 Ttulo: Utilizar las Sentencias VISTA, ASERTOS, TRIGGERS, REVOKE, GRANT. Fundamentos de Base de Datos 100% 1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Fecha: 17/01/13 Calificacin

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

VISTAS, ASERTOS, TRIGGERS, REVOKE, GRANT

Diagrama de la Base de Datos ClubAmigos2

Tablas con informacin

Tabla CLUB2

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Tabla INTEGRANTES2

Tabla REFERENCIA2

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

VISTAS. Sintaxis para crear vistas en SQL. CREATE VIEW <nombre de la vista> AS <expresin 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.

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.

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 creacin de los Trigger en cual existen restricciones que se deben de cumplir, en este ejemplo se muestra la modificacin 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.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

La tabla se encuentra inicialmente. Insercin 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'

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 Rodrguez a insertar, modificar e insertar sobre las culminas de la tabla referencia2. Se les garantiza, adems, 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 }.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 8 Ttulo: Vistas, Seguridad y SQL procedural.

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Fundamentos de Base de Datos 100%

1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Fecha: 17/01/13 Calificacin

Contenido. 5. Vistas. 5.1 Definicin y objetivo de las vistas. 5.2 Instrucciones para la administracin de vistas. 6. Seguridad. 6.1 Esquemas de autorizacin. 6.2 Instrucciones GRANT y REVOKE.

7. Introduccin al SQL Procedural. 7.1 Procedimientos almacenados. 7.2 Disparadores (Triggers).

Introduccin.

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 opcin se presenta la de imprimir su saldo actual el cual debe ser consistente y permanente su modificacin.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Las vistas proporcionan un nivel de seguridad para el usuario as como para la compaa.

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 opcin de cuanto de desea retirar, otro opcin seria la forma de retiro si es en cheque o efectivo y al final si desea imprimir su saldo actual.

Vistas.

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

Ejemplo: En un cajero automtico de algn banco se desea retirar cierta cantidad de dinero la informacin a mostrar solo seria tu saldo, mas los datos personales no son mostrados as como son tu telfono, direccin o trabajo.

Niveles de abstraccin.

Nivel fsico: El nivel ms bajo de abstraccin, en este nivel los datos son almacenados con los detalles de los mismos.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Nivel lgico: El siguiente nivel ms alto de abstraccin, aqu se encuentran los datos almacenados y la relacin que existe entre esos datos.

Nivel de vistas: El nivel ms alto de abstraccin, 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 creacin de vistas.

Create view <nombre de la vista> as <expresin de consulta>.

Ejemplo:

Creacin de las vistas en SQL.

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 condicin 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 instruccin anterior es para mostrar el resultado de la creacin de vista a partir de la primera instruccin.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Borrar una vista.

Borra la creacin de las vista anterior.

Modificacin 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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Interfaz de las vistas a partir de la creacin 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 mostraran en una cuarta tabla que seria T4 en la que hace la recopilacin de los datos solicitados.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Ejemplo de las vistas aqu se muestra una interfaces de cmo 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 algn usuario.

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 contrasee 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 administracin de vistas.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

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

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

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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

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

Seguridad.

La ejecucin de alguna operacin en una base de datos por parte de un usuario, depende de la autorizacin con la que el usuario cuenta es por eso que en SQL existen istrucciones para el acceso a cierta infraccin 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 automticamente todos los privilegios aplicables a dicho objeto, con la posibilidad de darles tambin a otros usuarios dichos privilegios (privilegio de concesin). Un usario que tenga un privilegio y posea adems sobre l, el privilegio de concesin puede asignarle tal privilegio a otro usuario y pasarle tambin el privilegio de concesin. Los privilegios los concede quien tiene el permiso (es decir el propietario del objeto y quien tiene el privilegio de concesin) 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 estn protegidos al cien por ciento.

Es por eso que se aplican medidas de seguridad a las 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 autorizacin a realizar cierta funcin en la base de datos como puede ser la eliminacin, modificacin, creacin 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 Autorizacin.

La autorizacin 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 autorizacin de lectura: Los datos se pueden leer, pero no modifica.

*La autorizacin de insercin: Solo puede insertar datos, pero no puede modifica los datos existentes.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*La autorizacin de actualizacin: Puede modificar los datos, pero no los puede borrar.

*La autorizacin de borrado: Puede borrar los datos.

Instrucciones GRANT y REVOKE.

La instruccin 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 instruccin REVOKE se utiliza para la no autorizacin. Esto se refiere que quita la autorizacin de algun usuario de cierta funcin.

Conceder permisos en Tablas:

GRANT SELECT ON TABLE INTEGRANTES2 TO Melina Rodriguez Concede al usuario Melina Rodrguez solo permiso de lectura o seleccin sobre la tabla INTEGRANTES2.

GRANT INSERT, DELETE ON TABLE REFERENCIA2 TO Melina Rodrguez, Lic.Derecho; Concede al usuario Melina Rodrguez y a las profesiones de Lic. Derecho los permisos de insercin y eliminacin de registros sobre la tabla INTEGRANTES2.

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 Rodrguez el permiso de lectura o seleccin sobre la tabla INTEGRANTES2. En este caso luego de ejecutada la sentencia Melina Rodrguez queda sin ningn tipo de autorizacin sobre la tabla.

REVOKE DELETE ON TABLE INTEGRANTES2 TO Omar Salinas; Revoca al usuario Omar Salina el permiso de eliminacin de registros sobre la tabla INTEGRANTES2. Obviamente el permiso revocado debi ser concedido previamente con la proposicin GRANT.

Introduccin al SQL Procedural.

SQL consisten en tres instrucciones bsicas como son: Select, From y Where.

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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

*From. Lista las relaciones que deben ser analizadas en la evaluacin de la expresin.

*Where. Es un predicado que engloba a los atributos de las relaciones que aparecen en la clusula from.

Ejemplo:

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

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

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Se muestra el numero mximo de integrantes que se encuentran en el CLUB2

Se muestra el numero mnimo de integrantes que se encuentran en el CLUB2

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.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Muestra todas las integrantes del club

direcciones de los 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 estndar de SQL-92 permite los constructores procedimentales, como son el for, while e ifthen-else.

Los procedimientos almacenados sirven para reducir el costo y el tiempo de la ejecucin en SQL ya que los datos estn 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.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Ejemplo:

SELECT *FROM CLUB2

Utilizando la instruccin FROM para mostrar toda la informacin de la tabla CLUB2.

Disparadores (Triggers).

Elementos de un disparador.

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.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Ver resultados del Trigger.

Borrar Trigger.

Combinaciones de triggers.

BEFORE statement trigger.

Antes de ejecutarse la operacin que desencadena el evento se ejecuta la accin del trigger. BEFORE row trigger

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Antes de modificar cada una de las filas afectadas por la operacin que desencadena el evento y antes de comprobar las reglas de integridad se ejecuta la accin del trigger (stos no bloquean la fila).

AFTER row trigger

Despus de modificar cada una de las filas afectadas por la operacin que desencadena el evento y las reglas de integridad asociadas, se ejecuta la accin del trigger para la fila actual (stos bloquean la fila)

AFTER statement trigger

Se ejecuta la accin del trigger despus de ejecutar la operacin que desencadena el evento y despus de aplicar las restricciones

Estado de triggers

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

Activar / ENABLE

Se puede disparar

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Por defecto (Consultar SGBD)

Desactivar / DISABLE

No se puede disparar

Eliminar / DROP

Ejemplo:

Crear Trigger en SQL.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO, EXT. PURISIMA

Actividad: Practica 9 Ttulo: Conexin con la B.D a un lenguaje de programacin (Java) realizando consultas y modificaciones. Fundamentos de Base de Datos 100% 1327 Ing. Martha Melina Rodrguez Vzquez Primer Parcial

Cdigo: FIO21080103 No. Rev.: 2 Fecha Rev.: 13-12-11 Hoja: 1 de 2

Fecha: 17/01/13 Calificacin