bd 2
-
Upload
hebert-jonathan-vilca-mamani -
Category
Documents
-
view
17 -
download
0
description
Transcript of 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
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
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
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
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
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
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
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
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
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
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