bd 2

13
Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II PRÁCTICA N°04: MANEJO DE DATOS CON SQL Objetivo Modificarán el contenido de una base de datos mediante la aplicación de las tres sentencias del Lenguaje de Manipulación de Datos (DML). Sentencia INSERT La sentencia INSERT se utiliza para añadir registros a las tablas de la base de datos. El formato de la sentencia es: INSERT INTO Nombre_tabla [(nombre_columna1, nombre_columna1, nombre_columna n..)] VALUES (expr1, expr2, expr n...) Donde: Nombre_Tabla es únicamente el nombre de la tabla donde se desea ingresar los nuevos datos. Nombre_Columna es una lista opcional de nombres de campo en los que se insertarán valores en el mismo número y orden que se especificarán en la cláusula VALUES. Si no se especifica la lista de campos, los valores de expr en la cláusula VALUES deben ser tantos como campos tenga la tabla y en el mismo orden que se definieron al crear la tabla. Docente: Ing. Melina Alférez García 1

description

AA

Transcript of bd 2

Page 1: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

PRÁCTICA N°04: MANEJO DE DATOS CON SQL

Objetivo

Modificarán el contenido de una base de datos mediante la aplicación de las

tres sentencias del Lenguaje de Manipulación de Datos (DML).

Sentencia INSERT

La sentencia INSERT se utiliza para añadir registros a las tablas de la base de

datos. El formato de la sentencia es:

INSERT INTO Nombre_tabla [(nombre_columna1, nombre_columna1,

nombre_columna n..)] VALUES (expr1, expr2, expr n...)

Donde:

Nombre_Tabla es únicamente el nombre de la tabla donde se desea ingresar

los nuevos datos.

Nombre_Columna es una lista opcional de nombres de campo en los que se

insertarán valores en el mismo número y orden que se especificarán en la

cláusula

VALUES. Si no se especifica la lista de campos, los valores de expr en la

cláusula

VALUES deben ser tantos como campos tenga la tabla y en el mismo orden que

se definieron al crear la tabla.

Expr es una lista de expresiones o valores constantes, separados por comas,

para dar valor a los distintos campos del registro que se añadirá a la tabla. Las

cadenas de caracteres deberán estar encerradas entre comillas.

1. Crear la base de datos DBEJEMPLO_06

Docente: Ing. Melina Alférez García 1

Page 2: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

CREATE DATABASE DBEJEMPLO_06USE DBEJEMPLO_06

CREATE TABLE TUSUARIO (IDUSUARIO char(6) NOT NULL,NOM_USUA varchar(25) NOT NULL,APEPATER_USUA varchar(25) NOT NULL,APEMATER_USUA varchar(25) NOT NULL,FEC_NAC_USUA datetime NULL,FEC_REG_USUA datetime NULL,TIPO_DOC_USUA varchar(20) NOT NULL,NUM_DOC_USUA char(8) NOT NULL,COD_EST char(6) NOT NULL)

2. Insertar un único registro

Especificando todos los campos a ingresar.

INSERT INTO TUSUARIO (IDUSUARIO, NOM_USUA, APEPATER_USUA, APEMATER_USUA, FEC_NAC_USUA, FEC_REG_USUA, TIPO_DOC_USUA, NUM_DOC_USUA, COD_EST) VALUES ('U00001', 'LUIS', 'PEREZ', 'PRADO', '25/02/1989', '02/01/2009', 'DNI', '23453894', 'ACTIVO')

INSERT INTO TUSUARIO (IDUSUARIO, NOM_USUA, APEPATER_USUA, APEMATER_USUA, FEC_NAC_USUA, FEC_REG_USUA, TIPO_DOC_USUA, NUM_DOC_USUA, COD_EST) VALUES ('U00002', '', 'GOMEZ', 'MAMANI', '25/12/1980', '02/11/2013', 'DNI', '00453894', 'INACTIVO')

Cada sentencia INSERT añade un único registro a la tabla. En el ejemplo se han

especificado los nueve (09) campos con sus respectivos valores. Si no se

ingresara valores a un campo, este se cargará con el valor DEFAULT o NULL

(siempre y cuando haya sido especificado en la estructura de la tabla). Un valor

nulo –NULL- no significa blancos o ceros, sino que el campo nunca ha tenido un

valor.Docente: Ing. Melina Alférez García 2

Page 3: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

Especificando únicamente los valores de los campos.

INSERT INTO USUARIO VALUES('U00003', 'ANA', 'PEREZ', 'MAMANI', '25/02/1989', '02/01/2009', 'DNI', '00853094', 'ACTIVO')

INSERT INTO USUARIO VALUES('U00004', 'LUIS', 'PEREZ', 'PRADO', '25/02/1989', '02/01/2009', 'DNI', '23853894', 'ACTIVO')

El ejemplo anterior muestra que podría especificarse únicamente los valores

cuando se ingresen en todos los campos de tabla. Si no se especifica la lista de

campos, los valores en la cláusula VALUES deben ser tantos como campos

tenga la tabla y en el mismo orden que se definieron al crear la tabla.

Si se va a ingresar parcialmente los valores en una tabla, se debe especificar el

nombre de los campos a ingresar.

Insertar Múltiples Registros

Además, existe la posibilidad de agregar múltiples registros con ayuda del

comando SELECT.

3. Se tiene la tabla TUSUARIO con los siguientes datos:IDUSUARIO NOM_USUA APEPATER_USUA APEMATER_USUA FEC_NAC_USUA FEC_REG_USUA COD_EST

U00001 LUIS PEREZ MAMANI 25/02/1970 01/01/2000 ACTIVO

U00002 JUAN MARTELL GOMEZ 12/01/1979 01/01/2001 ACTIVO

U00003 ANA PAEZ LUQUE 12/108/1980 01/01/2004 INACTIVO

U00004 PEDRO LOZA PEREZ 22/05/1970 01/01/2007 ACTIVO

U00005 CARLOS ARIES NINAJA 12/01/1979 01/01/2008 INACTIVO

U00006 MARTHA MARES YAJO 21/07/1977 01/01/2008 INACTIVO

U00007 MILAGROS LLOSA URETA 05/02/1975 01/01/2009 ACTIVO

U00008 LUISA GRADOS LOPEZ 13/11/1988 01/01/2010 ACTIVO

U00009 BETTY NINA MAMANI 03/04/1988 01/01/2010 INACTIVO

U00010 JORGE LOPEZ ALVAREZ 03/07/1988 01/01/2011 ACTIVO

Docente: Ing. Melina Alférez García 3

Page 4: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

4. Crear una nueva tabla TEJEMPLO. Además, debe contiene los mismos

campos o columnas de la tabla TUSUARIO.

CREATE TABLE TEJEMPLO (IDUSUARIO char(6) NOT NULL,NOM_USUA varchar(25) NOT NULL,APEPATER_USUA varchar(25) NOT NULL,APEMATER_USUA varchar(25) NOT NULL,FEC_NAC_USUA datetime NULL,FEC_REG_USUA datetime NULL,TIPO_DOC_USUA varchar(20) NOT NULL,NUM_DOC_USUA char(8) NOT NULL,COD_EST char(6) NOT NULL)

5. Trasladar todos los clientes de la tabla TUSUARIO, que tengan

COD_EST=’ACTIVO’, a nuestra nueva tabla TEJEMPLO.

INSERT INTO TEJEMPLO (IDUSUARIO, NOM_USUA, APEPATER_USUA, APEMATER_USUA, FEC_NAC_USUA, FEC_REG_USUA, TIPO_DOC_USUA, NUM_DOC_USUA, COD_EST)SELECT IDUSUARIO, NOM_USUA, APEPATER_USUA, APEMATER_USUA, FEC_NAC_USUA, FEC_REG_USUA, TIPO_DOC_USUA, NUM_DOC_USUA, COD_ESTFROM TUSUARIOWHERE COD_EST='ACTIVO'

INSERT INTO TUSUARIO VALUES('U00005', 'PEDRO', 'PEREZ', 'MAMANI', '25/02/1989', '02/01/2009', 'DNI', '00853094', 'ACTIVO'),

('U00006', 'LUIS', 'PEREZ', 'MAMANI', '25/02/1989', '02/01/2009', 'DNI', '00853094', 'ACTIVO'),

('U00007', 'MARIBEL', 'PEREZ', 'MAMANI', '25/02/1989', '02/01/2009', 'DNI', '00853094', 'ACTIVO');

Docente: Ing. Melina Alférez García 4

Page 5: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

Nota:

Como se puede observar, es posible combinar el comando INSERT con las

consultas de Selección para agregar datos específicos sin tener la necesidad de

realizarlo uno por uno.

Sentencia UPDATE

La sentencia UPDATE se utiliza para cambiar el contenido de los registros de

una tabla de la base de datos. Su formato es:

UPDATE Nombre_tabla SET nombre_columna1 = expr1, nombre_columna2 =

expr2, …... [WHERE { condición }]

Nombre_Tabla es únicamente el nombre de la tabla donde se desea ingresar

los nuevos datos.

Nombre_columna es el nombre de columna o campo cuyo valor se desea

cambiar. En una misma sentencia UPDATE pueden actualizarse varios campos

de cada registro de la tabla.

Expr es el nuevo valor que se desea asignar al campo que le precede. La

expresión puede ser un valor constante o una subconsulta. Las cadenas de

caracteres deberán estar encerradas entre comillas. Las subconsultas entre

paréntesis.

La cláusula WHERE sigue el mismo formato que la vista en la sentencia

SELECT y determina qué registros se modificarán.

6. Crear la Base de Datos DBEJEMPLO_07

TCLIENTEIdcliente carácter (5)Nom_clie carácter (25)

Docente: Ing. Melina Alférez García 5

Page 6: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

Ape_clie carácter (25)Dir_clie carácter (45)Ruc_ clie carácter (11)Email_clie carácter (45)

TARTICULOIdarticulo carácter (5)Idmarca carácter (2)Des_ arti carácter (25)Pre_ arti numérico (7, 2)Stok_ arti numérico 5Idmarca carácter (2)

TEMPLEADOIdempleado carácter (5)Ape_ empl carácter (25)Nom_ empl carácter (25)Dir_ empl carácter (35)Sex_ empl lógicoTel_ empl carácter (9)Fein_empl date

TFACTURAIdfactuta carácter (10)Idempleado carácter (5)Idcliente carácter (5)Fec_ fact fechaSubt_ fact numérico (7, 2)Igv_ fact numérico (7, 2)Tot_ fact numérico (7, 2)

TDETALLEIdfactura carácter (10)Idarticulo carácter (5)Pre_arti numérico (7, 2)Can_deta numérico (7, 2)Sue_empl numérico (7,2)

TMARCAIdmarca carácter (2)Nomb_mar carácter (25)

Docente: Ing. Melina Alférez García 6

Page 7: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

7. Ingresar registros a la base de datos DBEJEMPLO_07.

TCLIENTE

IDCLIENTE NOM_CLIE APE_CLIE EMAIL_CLIEC0001 ANA MARIA PEREZ TORRESC0002 HUMBERTO LUIS GONZALES GIMENEZC0003 MARIA LUISA ROJAS MARTINEZ

TARTICULO

IDARTICULO DES_ARTI PRE_ARTI STOK_ARTI IDMARCAA0001 MONITOR SVGA COLOR 17’ 230.00 40 01A0002 MOUSE LOGITECH 15.00 20 02

TEMPLEADO

IDEMPLEADO APE_EMPL NOM_EMPL SUE_EMPL FEIN_EMPE0001 PEREZ ALVARES JUANA LUISA 1500.00 12/02/2010E0002 MAMANI MIRANDA MARIO PEDRO 1800.00 11/03/2014

TFACTURA

IDFACTURA IDCLIENTE IDEMPLEADO FEC_FACT SUBT_FACT TOT_FACT002-003745 C0002 E0002 12/05/2011 490.00 578.2

TDETALLE

IDFACTURA IDARTICULO PRE_ART CAN_DETA002-003745 A0001 230.00 2.00002-003745 A0002 15.00 2.00

TMARCA

IDMARCA NOMB_MAR01 LG02 TOSHIBA

8. Se le solicita fijar un stock único para todos los artículos. No se utiliza la

cláusula WHERE.

UPDATE ARTICULO SET STOK_ ARTI = 20

Docente: Ing. Melina Alférez García 7

Page 8: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

9. Subir el precio del artículo de la tabla del TARTÍCULO en un 10% de

aquellos que tengan menos de 5 unidades en stock.

UPDATE ARTICULO SET PRE_ARTI = PRE_ARTI * 1.1 WHERE STOK_ARTI< 5

10. Se le solicita fijar la fecha de registro de un usuario (en la tabla TUSUARIO)

de todos aquellos usuarios que tengan la fecha de registro vacía (nula) a

la fecha actual.

UPDATE TUSUARIO SET FEC_REG_USUA = GETDATE() WHERE

FEC_REG_USUA IS NULL

11. Se le solicita asignar precio a todos los artículos que no lo tienen.

Ese precio será el resultante de calcular la media entre los artículos que sí

lo tenían.

UPDATE TARTICULO SET PRE_ARTI = (SELECT AVG(PRE_ARTI) FROM

TARTICULO WHERE PRE_ARTI IS NOT NULL ) WHERE PRE_ARTI IS NULL

DELETE

DELETE es especialmente útil cuando se desea eliminar varios registros. En una

instrucción DELETE con múltiples tablas debe incluir el nombre de tabla

(Tabla.*). Si especifica más de una tabla para eliminar registros, todas deben

tener una relación de muchos a uno. Si desea eliminar todos los registros de

una tabla, eliminar la propia tabla es más eficiente que ejecutar una consulta

de borrado.

Se puede utilizar DELETE para eliminar registros de una única tabla o desde

varios lados de una relación uno a muchos. Las operaciones de eliminación en

Docente: Ing. Melina Alférez García 8

Page 9: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

cascada en una consulta únicamente eliminan desde varios lados de una

relación. Por ejemplo, en la base de datos DBVENTA, la relación entre las tablas

Cliente y Factura, la tabla Factura es la parte de muchos, por lo que las

operaciones en cascada sólo afectarán a la tabla Factura. Una consulta de

borrado elimina los registros completos, no únicamente los datos en campos

específicos. Si desea eliminar valores en un campo especificado, crea una

consulta de actualización que cambie los valores a Null.

Una vez que se han eliminado los registros utilizando una consulta de borrado,

no puede deshacer la operación. Si desea saber qué registros se eliminarán,

primero examine los resultados de una consulta de selección que utilice el

mismo criterio y después ejecute la consulta de borrado. Mantenga copias de

seguridad de sus datos en todo momento. Si elimina los registros equivocados

podrá recuperarlos desde las copias de seguridad.

El formato de la sentencia es:

DELETE FROM Nombre_Tabla [WHERE { condición }]

Nombre_Tabla es únicamente el nombre de la tabla donde se desea borrar los

datos.

La cláusula WHERE sigue el mismo formato que la vista en la sentencia

SELECT y determina qué registros se borrarán.

Cada sentencia DELETE borra los registros que cumplen la condición impuesta

o todos si no se indica cláusula WHERE

12. Borrar todos los registros de la tabla TUSUARIO cuyo estado de usuario es

INACTIVO.

DELETE FROM TUSUARIOWHERE COD_EST='ACTIVO'

Docente: Ing. Melina Alférez García 9

Page 10: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

ACTIVIDAD 01

Usando TRANSACT/SQL, realice las siguientes actividades en la base de datos

DBEJEMPLO_08:

1. Inserte tres (3) registros a todas las tablas.

2. Elimine el artículo con descripción ‘MOUSE LOGITECH’. ¿Es factible realzar

esta actividad? Explique.

3. Actualice la descripción de la TARTICULO con código ‘A0002’ por

‘TECLADO’.

4. Inserte el empleado con código ‘E0003’, asegúrese que el sueldo sea

mayor a 2000.

5. Cree una tabla llamada TCopiaEmpleado con la misma estructura de la

tabla TEmpleado.

6. Inserte a la tabla TCopia_Empleado, todos los empleados de la tabla

TEMPLEADO, cuyo año de ingreso se encuentre entre los años 2010 y

2012.

7. Actualice el campo EMAIL_CLIE de la tabla TCLIENTE de todos los clientes

que no tengan correo electrónico (valor ‘NO REGISTRA’).

8. Actualice el campo fecha de ingreso y el teléfono del empleado con código

‘E0001’. La fecha de ingreso actualícela por la fecha actual y el campo

teléfono por el número ‘23471151’.

ACTIVIDAD 02

Creación y mantenimiento de índices

- Determinan la necesidad de empleo de índices en una base de datos.

- Emplean los comandos CREATE y DROP para el uso de índices.

ACTIVIDAD 03

Docente: Ing. Melina Alférez García 10

Page 11: bd  2

Universidad José Carlos Mariátegui Base de Datos II C.P. Ingeniería de Sistemas e Informática Semestre 2015 - II

Funciones de grupo de valores

Funciones que devuelven valores de caracteres

Funciones que devuelven valores numéricos

Funciones de fecha y hora

Docente: Ing. Melina Alférez García 11