LENGUAJE ESTRUCTURADO DE CONSULTAS SQL (2)



Documentos relacionados
[ EDICION ESPECIAL] En el siguiente ejemplo se agrega un archivo de datos de 5 MB a la base de datos BD_Ejemplo01.

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio

ÍNDICE PRIMERA PARTE... 17

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

BASES DE DATOS AVANZADAS Transacciones en MYSQL

mysql Departamento de Lenguajes y Computación Universidad de Almería mysql Contenidos

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

Diseño de bases de datos

Formato para prácticas de laboratorio

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Base de Datos SQL Server

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

GUIA DE LABORATORIO N 9 B. (000Webhost Php- Para desarrollar en casa)

Base de datos Procedimientos Almacenados y Funciones

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero

EXAMEN TEMAS 3, 4 y 5. CREACIÓN Y EXPLOTACIÓN DE UNA BASE DE DATOS

Otros objetos de Base de Datos

Bases de Datos: Structured Query Language (SQL)

6. PROGRAMACIÓN CON TRANSACT-SQL

Restricciones de Integridad

8 SQL SERVER 2008 RA-MA

Bases de Datos SQL - Ejemplos

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

SQL Los fundamentos del lenguaje

SQL: Vistas, Triggers, y Procedimientos Almacenados

RESTRICCIONES DE DOMINIOS

Tema: Procedimientos almacenados y cursores. Facultad : Ingeniería Escuela : Computación Asignatura: SQL SERVER. GUÍA 2 Pág. 1

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

Laboratorio Informix. Stored Procedures Triggers

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 27 28, SQL básico. Carlos Rodrigo Blanco LAEFF INTA

Trabajos de Ampliación. Bases de datos NoSQL.

Haga clic para PostgreS cambiar el estilo

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

Tema: PROCEDIMIENTOS ALMACENADOS.

Formatos para prácticas de laboratorio

Bases de Datos / Elementos de Bases de Datos Que es un Stored Procedure? Stored Procedures: Ventajas

Lenguaje para descripción de datos

T12 Vistas y tablas temporales

Curso de MySQL y Java

- Bases de Datos - - Diseño Físico - Luis D. García

LENGUAJE SQL. Bárbula, Febrero de Historia y Definición

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

2- Intente crear una tabla llamada "clientes" UTILIZANDO el modo de Consulta, en el modo SQL :

MANUALITO MS-SQL SERVER

1. Se usará la Base de Datos llamada. 2. Borrar la tabla CtasBanc anterior y crearla: 5.1 Procedimientos y Funciones Almacenados SQL Server

Procedimientos, Funciones, Trigger y Cursores en ORACLE

APÉNDICE SQL (Structures Query Language)

Capítulo 8. Construcción de guiones

RUEDA TORRES DULCE CAROLINA 3CM2. MySQL CON NET BEANS PRÁCTICA 8

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

ADMINISTRACIÓN DE BASE DE DATOS

SQL (Structured Query Language)- DML

Bases de Datos / Elementos de Bases de Datos 2015

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

Procedimientos almacenados con parametros de salida

TEMA 8. CONSTRUCCIÓN DE GUIONES DE ADMINISTRACIÓN

Utilizar la cláusula RETURNS es obligatorio al momento de definir una función y sirve para especificar el tipo de dato que será devuelto.

1. Dadas las tablas ALUM y NUEVOS, insertar en la tabla ALUM los nuevos alumnos.

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

Acceso a bases de datos MySQL con PHP

Restricciones (constraints) FOREIGN KEY

Consultas con combinaciones

Disparadores en Oracle (Ejemplos Prácticos)

Disparadores en ORACLE

Bases de Datos Relacionales

5.1 Procedimientos y Funciones Almacenados. 5.2 Disparadores (Triggers).

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Ejemplo completo: Empleados.

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos

Bases de Datos 2. Teórico

Motores de Base de Datos Libres: Postgresql y MySql. Ing. Ricardo Naranjo Faccini, M.Sc

Ejercicios para Access Create Tabla, Insert, Update y Delete

SERVICIO NACIONAL DE APRENDIZAJE SENA

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Unidad 6. Procedimientos Almacenados y Disparadores

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

A.1. Definiciones de datos en SQL

Práctica 3. Consultas SQL

Tema: Disparadores Parte I.

10 - Desencadenadores.

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

UNIVERSIDAD TECNOLÓGICA ECOTEC FACULTAD DE SISTEMAS COMPUTACIONALES SYLLABUS. Base de Datos II CODIGO COM 338 CREDITOS 3

Tutorial Sencillo Yii Framework

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1)

Transcripción:

LENGUAJE ESTRUCTURADO DE CONSULTAS SQL (2) N O T A S D E L A M A T E R I A B A S E S D E D A T O S I L I C E N C I A T U R A E N C I E N C I A S D E L A C O M P U T A C I Ó N U N I V E R S I D A D D E S O N O R A M A E S T R A : D R A. M A R Í A D E G U A D A L U P E C O T A O R T I Z

EJERCICIO 1 Create database `inform`; CREATE TABLE `t1` ( `id` int(11) NOT NULL auto_increment, `campo1` int(11) default NULL, PRIMARY KEY (`id`) ) CREATE TABLE `t2` ( `id` int(11) NOT NULL auto_increment, `campo2` int(11) default NULL, PRIMARY KEY (`id`) )

INSERCIONES INSERT INTO `t1` VALUES (1,10); INSERT INTO `t1` VALUES (2,20); INSERT INTO `t1` VALUES (3,30); INSERT INTO `t1` VALUES (4,40); INSERT INTO `t1` VALUES (5,50); INSERT INTO `t1` VALUES (6,80); INSERT INTO `t1` VALUES (7,120); INSERT INTO `t2` VALUES (1,10); INSERT INTO `t2` VALUES (2,2); INSERT INTO `t2` VALUES (3,10); INSERT INTO `t2` VALUES (4,20);

RESULTADO

ACTUALIZAR DATOS update t1 inner join t2 on t1.campo1 = t2.campo2 set t1.campo1 = 0 where t1.id = t2.id Valores originales: Valores modificados: Instrucción alternativa: update t1 set campo1 = 0 where campo1 in(select campo2 from t2 where t1.id = t2.id)

EJERCICIO 2 a) Seleccionar la base de datos nwind : Use nwind ; b) Crear una réplica de la estructura de la tabla Clientes y nombrarla como temp_clientes : CREATE TABLE `temp_clientes` ( `IdCliente` varchar(5) default NULL, `NombreCompania` varchar(40) default NULL, `NombreContacto` varchar(30) default NULL, `CargoContacto` varchar(30) default NULL, `Direccion` varchar(60) collate latin1_general_ci default NULL, `Ciudad` varchar(15) collate latin1_general_ci default NULL, `Region` varchar(15) collate latin1_general_ci default NULL, `CodPostal` varchar(10) collate latin1_general_ci default NULL, `Pais` varchar(15) collate latin1_general_ci default NULL, `Telefono` varchar(24) collate latin1_general_ci default NULL, `Fax` varchar(24) collate latin1_general_ci default NULL, UNIQUE KEY `PrimaryKey` (`IdCliente`), KEY `Ciudad` (`Ciudad`), KEY `CódPostal` (`CodPostal`), KEY `NombreCompañía` (`NombreCompania`), KEY `Region` (`Region`) ); c) Insertar valores en la tabla: insert into temp_clientes select * from clientes where isnull(region);

Crear vista de la tabla Clientes a) Crear vista vista_clientes1 : CREATE VIEW vista_clientes1 AS SELECT * FROM temp_clientes; b) Realizar consulta para verificar contenido de la vista creada: select * from vista_clientes1; c) Actualizar el campo region con valor NULL con valor DESCONOCIDA : UPDATE vista_clientes1 set region = 'DESCONOCIDA'; d) Realizar consulta para verificar contenido de la vista: select * from vista_clientes1; (Notar que el campo region que antes tenia valores NULL ahora tiene el valor 'DESCONOCIDA')

Modificar estructura lógica de la vista temp_clientes a) Modificar estructura eligiendo solamente dos campos: ALTER VIEW vista_clientes1 as select IdCliente, Region from clientes; b) Realizar consulta para verificar cambios: Select * from vista_clientes1; (Notar que la tabla temp_clientes solamente tiene dos campos y el campo region no perdió el valor después de modificar la vista) c) Modificar la estructura de la vista nuevamente: alter VIEW vista_clientes1 AS SELECT * FROM temp_clientes; d) Eliminar vista_clientes1 : drop view vista_clientes1;

Crear Procedimiento Almacenado a) Crear Procedimiento Almacenado muestra_clientes) que recibe de entrada un valor como argumento para realizar la consulta: CREATE PROCEDURE muestra_clientes(regione varchar(20)) BEGIN SELECT NombreContacto FROM clientes where region = regione; END; CREATE PROCEDURE `muestra_clientes`(regione varchar(20)) BEGIN SELECT NombreContacto collate latin1_general_ci FROM clientes where region collate latin1_general_ci = regione collate latin1_general_ci; END; b) Invocar el Procedimiento Almacenado: call muestra_clientes('bc'); c) Eliminar el procedimiento almacenado: drop procedure if exists muestra_clientes;

Crear Procedimiento Almacenado a) Crear procedimiento: CREATE PROCEDURE num_clientes(regione varchar(50)) BEGIN END select count(*) into cuantos_son from clientes where region collate latin1_general_ci = regione collate latin1_general_ci; b) Invocar el procedimiento: CALL num_clientes('bc'); c) Eliminar procedimiento validando que exista: drop procedure if exists num_clientes;

Crear procedimiento a) Crear procedimiento: CREATE PROCEDURE contar(out param1 INT) BEGIN END; SELECT COUNT(*) INTO param1 FROM clientes where region = 'BC'; b) Invocar procedimiento: CALL contar(@param1); c) Consultar valor almacenado en variable en memoria; select @param1 as 'total';

Ejercicio Procedimiento Almacenado a) Crear tabla tempo2 : CREATE TABLE `tempo2` ( ); `id` int(11) NOT NULL auto_increment, `nombre` varchar(50) collate latin1_general_ci default NULL, `apellido_p` varchar(50) collate latin1_general_ci default NULL, `apellido_m` varchar(50) collate latin1_general_ci default NULL, `salario` double(8,2) default NULL, PRIMARY KEY (`id`) b) Crear procedimiento almacenado: CREATE PROCEDURE `proc`(out param VARCHAR(50), OUT param1 VARCHAR(50),OUT param1b VARCHAR(50),IN param2 INT) BEGIN INSERT INTO tempo2 VALUES(param2,'Alejandro','Gomez','Durazo',20000.00); SELECT nombre, apellido_p, apellido_m INTO param, param1, param1b FROM tempo2 WHERE id = param2; END;

Ejercicio Procedimiento Almacenado c) Invocar procedimiento: CALL proc(@nombre,@apellido_p,@apellido_m, 1); d) Revisar resultados: select @Nombre, @Apellido_p, @Apellido_m e) Revisar resultados concatenando: select @Nombre as 'Nombre', concat(@apellido_p, ' ', @Apellido_m) as 'Apellido'

a)crear procedimiento: CREATE PROCEDURE repetir(p1 INT) BEGIN SET @x = 0; REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT; END Uso de ciclos en procedimientos almacenados b) Invocar procedimiento: CALL repetir(1000); SELECT @x;

Ejercicio 3 (Revisar resultados) CREATE TABLE t (qty INT, price INT); INSERT INTO t VALUES(3, 50), (5, 60); CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t; SELECT * FROM v; UPDATE v set qty = 8 where qty = 3; SELECT * FROM v; SELECT * FROM v WHERE qty = 5; ALTER VIEW v as select qty, price from t; UPDATE v set qty = 3 where qty = 8; DROP VIEW v; DROP VIEW B;

Ejercicio 4 (Revisar resultados) CREATE PROCEDURE simple (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM t; END; CALL simple(@param1); SELECT @param1; SELECT @param1 as Resultado ; SALIDA: 3

Ejercicio 5 (Revisar resultados) CREATE FUNCTION hola (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hola ', s,'!'); SELECT hola('mundo'); SALIDA: Hola mundo!

Ejercicio 6 (Revisar resultados) CREATE TABLE test1(a1 INT); CREATE TABLE test2(a2 INT); CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY); CREATE TABLE test4( a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b4 INT DEFAULT 0);

Ejercicio 6 (CREAR TRIGGER) a) Crear disparador (TRIGGER): CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END; b) Insertar valores para probar el disparador: INSERT INTO test3 (a3) VALUES (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL); INSERT INTO test4 (a4) VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0); INSERT INTO test1 VALUES (1), (3), (1), (7), (1), (8), (4), (4);

Ejercicio 6 (Revisar resultados) SELECT * FROM test1; SELECT * FROM test2;

Ejercicio 6 (Revisar resultados) SELECT * FROM test3; SELECT * FROM test4;

Otras instrucciones de Sql select user(), current_date() SHOW PROCESSLIST; #VISUALIZA USUARIOS CONECTADOS SHOW DATABASES; #VISUALIZA LISTA DE BASES DE DATOS show tables; #VISUALIZA LISTA DE TABLAS describe clientes; #VISUALIZA ESTRUCTURA LOGICA explain clientes; #VISUALIZA ESTRUCTURA LOGICA INSTRUCCION PARA CARGAR DATOS EN UNA TABLA DESDE UN ARCHIVO DE TEXTO QUE UTILIZA COMO SEPARADOR EL TABULADOR Y ESTA ORGANIZADO POR LINEAS: LOAD DATA LOCAL INFILE '/datos_prueba.txt' INTO TABLE t1 FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'

Exportar datos de MySql a un archivo externo (Ejercicio 7) a) Crear tabla temporal en nwind : CREATE TABLE `temporal` ( ) `idproveedor` int(11) default NULL, `compañia` varchar(50) collate latin1_general_ci default NULL, `contacto` varchar(50) collate latin1_general_ci default NULL, `idproducto` int(11) default NULL, `nombreproducto` varchar(50) collate latin1_general_ci default NULL, `unidadexistencia` int(11) default NULL, `UnidadPedido` int(11) default NULL, `costo` int(11) default NULL

Exportar datos de MySql a un archivo externo (Ejercicio 7) b) Insertar los valores regresados en la siguiente consulta en la tabla temporal creada en el inciso a). insert into temporal select r1.idproveedor, r1.nombrecompania, r1.cargocontacto, r2.idproducto, r2.nombreproducto, sum(r2.unidadesenexistencia) AS 'U en Existencia', sum(r2.unidadesenpedido) as 'U en Pedido', sum(format(r2.preciounidad * unidadesenpedido, 2)) as 'Costo' from proveedores as r1 left join productos as r2 on r1.idproveedor = r2.idproveedor group by r2.idproveedor, r2.idproducto with rollup

Exportar datos de MySql a un archivo externo (Ejercicio 7) c) Insertar los valores de la tabla temporal en el archivo y ruta especificada SELECT * INTO OUTFILE '/alumnobd/valores_consulta.txt' FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' FROM temporal Los valores se exportan separados por tabulador y en registros por línea.