Sunteți pe pagina 1din 9

GDI

Escuela Profesional: Ingeniera de Sistemas. Ciclo y Turno: V-Tarde Fecha: ABRIL/2013

Semana N 3

Asignatura: GDI-II Semestre Acadmico: 2013-1

Sesin 3: CONSULTAS
Es un error capital teorizar antes de obtener datos (Arthur Conan Doyle) hechos distintos se deben almacenar en lugares distintos 1ra. Parte Agenda: Verificando el diseo fsico de la base de datos Restricciones PK, FK Las acciones de un FK (on update, on delete) ndices Revisar el diagrama preparado en la clase anterior Nota:
Primero, observe que aqu nos concentramos solamente en el diseo lgico (o conceptual), no en el diseo fsico. Desde luego, no estamos sugiriendo que el diseo fsico no sea importante; al contrario, el diseo fsico es muy importante. Sin embargo: a. Podemos abordar el diseo fsico como una actividad de seguimiento independiente. En otras palabras, la manera "correcta" de hacer el diseo de una base de datos consiste en hacer primero un diseo lgico (es decir, relacional) minucioso y despus, como un paso independiente posterior, transformar ese diseo lgico en cualquier estructura fsica que soporte el DBMS de destino. (Dicho de otro modo, el diseo fsico debe derivarse del diseo lgico y no al revs.) b. Por definicin, el diseo fsico tiende a ser en cierta forma especfico al DBMS. En contraste, el diseo lgico es, o debe ser, bastante independiente del DBMS y existen algunos principios tericos slidos que pueden ser aplicados al problema.

2da. Parte (SQL)

Una base de datos relacional es un conjunto de informacin relacionada que se ha organizado en tablas, Cada tabla almacena los datos en filas, los datos se organizan en columnas. Las tablas se almacenan en esquemas de bases de datos, que son reas en las que los usuarios pueden almacenar sus propias tablas. Un usuario puede conceder permisos a otros usuarios para que puedan acceder a sus tablas. Un punto importante a recordar es que la informacin que compone una base de datos es diferente del sistema usado para acceder a esa informacin. El software utilizado para acceder a una base de datos se conoce como un sistema de gestin de base de datos. Por supuesto, cada base de datos debe tener alguna forma de obtener los datos de entrada y salida de la misma, utilizando preferentemente un lenguaje comn entendido por todas las bases. Sistemas de gestin de bases de implementar un lenguaje estndar conocido como Lenguaje de consulta estructurado o SQL.

GDI

Entre otras cosas, permite a SQL a recuperar, aadir, modificar y eliminar informacin en una base de datos.

Originalmente era el lenguaje de interrogacin del DBMS relacional System R (IBM) en la segunda mitad de los aos 70. Posteriormente adoptado por otros sistemas Luego transformado en estndar:
1986 1989 1992 1999 Primera versin ANSI Llamado SQL-89 Llamado alternativamente SQL-92 o SQL-2 Llamado alternativamente SQL-99 o SQL-3

SQL contiene la funcionalidad tanto de un DDL (Data Definition Language), y de DML (Data Manipulation Language).
Hay cinco tipos de instrucciones SQL: Instrucciones de consulta para recuperar filas almacenadas en tablas de bases de datos. Lenguaje de manipulacin de datos (DML) modificar el contenido de las tablas. hay tres declaraciones DML: Data Definition Language (DDL) definir las estructuras de datos, tales como tablas, que componen una base de datos. SELECT INSERT UPDATE DELETE CREATE ALTER DROP RENAME TRUNCATE COMMIT ROLLBACK SAVEPOINT GRANT REVOKE

Transaccin de control (TC) Declaraciones de forma permanente grabar los cambios realizados en filas o deshacer esos cambios Lenguaje de control de datos (DCL) Declaraciones cambiar los permisos de las estructuras de base de datos.

CAPACIDADES DE INSTRUCCIONES SELECT DE SQL Proyeccin: Seleccione las columnas de una tabla que son devueltos por una consulta. Seleccin: Seleccione las filas de una tabla en la que son devueltos por una consulta. Varios criterios pueden ser utilizados para restringir las filas que se recuperan. Juntar: Reunir los datos almacenados en diferentes tablas especificando la relacin entre ellos.

GDI

Sentencia bsica SQL

GDI

Ejercicios: Mostrar todas las columnas y filas de la tabla empleado select * from empleado; Mostrar todas las columnas y filas de la tabla empleado alias e select * from empleado e; select * from empleado as e; Mostrar las columnas dni y nombre y todas las filas de la tabla empleado; SELECT dni,nombre FROM empleado;

Mostrar las columnas dni con alias Documento de Identidad y nombre con alias Empleado y todas las filas de la tabla empleado; SELECT dni as "Documento de Identidad",nombre as "empleado" FROM empleado; Mostrar las columnas dni con alias Documento de Identidad y nombre con alias Empleado y todas las filas de la tabla empleado; SELECT dni as "Documento de Identidad",nombre as "empleado" FROM empleado; SELECT dni "Documento de Identidad",nombre "empleado" FROM empleado; Utilizando operadores aritmticos ( + , - , * , / ) Toda expresin donde haya valor nulo la respuesta ser nula; Mostrar las columnas dni, nombre, salario, comision, y agregar un expresin donde se agregue 0.5 el nombre de esta columna debe ser Comision con aumento a cada empleado;
Analizar las siguientes sentencias:

SELECT dni, nombre, salario, comision, comision + 0.5 as "Comision con Aumento" FROM empleado;
SELECT dni, nombre, salario, comision, IFNULL(comision,0) + 0.5 as "Comision con Aumento" FROM empleado; SELECT dni, nombre, salario, comision, coalesce(comision,0) + 0.5 "Comision con Aumento" FROM empleado;

Concatenar columnas:
SELECT concat(dni,', ',nombre) as "Datos Personales", salario FROM empleado;

Utilizando DISTINCT Mostrar los departamentos que tienen asignados al menos un empleado:
SELECT DISTINCT iddepartamento FROM empleado;
Analizar la siguiente sentencia:

SELECT DISTINCT dni,iddepartamento FROM empleado;

Mostrar la estructura de una tabla: 4

GDI

DESCRIBE empleado; DESC empleado;

Operaciones de SELECCIN Mostrar todos los empleados que sean del departamento de sistemas (iddepartamento = 1):
SELECT dni, nombre, salario, comision FROM empleado WHERE iddepartamento = 1;

Mostrar todos los empleados que el apellido paterno sea Cerrn:


Analizar las siguientes sentencias:

SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE apellidop = 'cerron'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE apellidop like 'Cerron';
SELECT dni, nombre,Charset(apellidop), collation(apellidop), salario, comision FROM empleado WHERE apellidop like 'cerron';

Los siguientes ejercicios sern explicados por su entrenador:


SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE fechainicia = '2010-03-19'; SELECT dni, nombre,apellidop, salario, comision, date_format(fechainicia,'%d/%m/%Y') FROM empleado WHERE date_format(fechainicia,'%d/%m/%Y') = '19/03/2010'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE comision is not null; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE comision is null; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE salario between 1000 and 2000; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE iddepartamento in (1,2); SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE apellidop like 'Ca%'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE apellidop like '%os'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE apellidop like '%ma%'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE apellidop like '_a%'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE nombre like '%^_Jo%' ESCAPE '^'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE nombre like '%\_jo%' ESCAPE '\\'; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE iddepartamento = 1 and idcargo = 2 or comision is not null; SELECT dni, nombre,apellidop, salario, comision FROM empleado WHERE iddepartamento = 1 and (idcargo = 2 or comision is not null);

GDI

SELECT dni, nombre,apellidop, salario, comision FROM empleado ORDER BY salario; SELECT dni, nombre,apellidop, salario, comision FROM empleado ORDER BY salario desc; SELECT dni, nombre,apellidop, salario, comision FROM empleado ORDER BY 4 desc; SELECT dni, nombre,apellidop, salario as sueldo, comision FROM empleado ORDER BY sueldo desc; SELECT dni, nombre,apellidop, salario as sueldo, comision FROM empleado ORDER BY nombre,sueldo desc; Funciones u operadores

GDI

SELECT dni, concat(nombre,', ',apellidop) as "NOMBRES Y APELLIDOS", salario, comision FROM empleado; SELECT dni, length(concat(nombre,', ',apellidop)) as "cant letras", salario, comision FROM empleado; SELECT dni, length(nombre) as "cant letras", salario, comision FROM empleado; SELECT IF(1=2,'true','false')

SELECT dni, nombre||apellidop as "NOMBRES Y APELLIDOS",IF(comision>3,'Buena comision','Mala comision'), comision FROM empleado;

SELECT comision / 100 as "Comision %" FROM empleado; SELECT ifnull(comision,0) / 100 as "Comision %" FROM empleado; SELECT (CASE WHEN comision IS NOT NULL THEN comision / 100 ELSE 0 END) as "Comision" FROM empleado; SELECT CAST(14 AS CHARACTER(10)); SELECT CONVERT(14 ,CHARACTER(10)); SELECT ABS(-10); -- 10 SELECT POW(2,3); -- 8 SELECT POWER(2,3); -- 8 SELECT SQRT(4); SELECT POW(4,1/2); SELECT SQRT(10); SELECT POW(10,1/2);

GDI

SELECT ROUND(2581.658,0); -- 2582 SELECT ROUND(2581.658,2); -- 2581.66 SELECT ROUND(2581.658,-1); -- 2580 SELECT ROUND(2581.658,-2); -- 2600 SELECT TRUNCATE(2581.658,0); -- 2581 SELECT TRUNCATE(2581.658,2); -- 2581.65 SELECT TRUNCATE(2581.658,-1); -- 2580 SELECT TRUNCATE(2581.658,-2); -- 2500 SELECT MOD(7,2); -- 1 SELECT 7 DIV 2;-- 3 SELECT UCASE('chicana'); -- CHICANA SELECT INSTR('chicana','na'); -- 6 SELECT LENGTH('JORGE'); -- 5 SELECT LPAD('JORGE',7,'*'); -- **JORGE SELECT RPAD('JORGE',7,'*'); -- JORGE** SELECT MID('JORGE',2,3); -- ORG SELECT SUBSTRING('JORGE',2,3); -- ORG SELECT LEFT('CHICANA',3); -- CHI SELECT RIGHT('CHICANA',2); -- NA

Date and Time SELECT NOW(); SELECT CURDATE(); SELECT MONTH(CURDATE()); SELECT MONTH(CURDATE()); SELECT CONCAT('Fecha: ', CURDATE()) as Fecha; -- Investigar la funcion -- CONVERT_TZ(date,from_zone,to_zone) SELECT DATE(CURDATE()); SELECT DATE(NOW()); SELECT TIME(NOW()); SELECT NOW(),DATE_ADD(NOW(),interval 8 DAY); SELECT NOW(),DATE_ADD(NOW(),interval 8 MONTH); SELECT NOW(),DATE_ADD(NOW(),interval 8 YEAR); SELECT NOW(),DATE_ADD(NOW(),interval 8 HOUR); SELECT NOW(),SUBDATE(NOW(),interval 8 DAY); SELECT NOW(),SUBDATE(NOW(),interval 8 MONTH); SELECT NOW(),SUBDATE(NOW(),interval 8 YEAR); SELECT NOW(),SUBDATE(NOW(),interval 8 HOUR); SELECT DATE_FORMAT(NOW(),'%d/%m/%Y'); SELECT DATE_FORMAT(NOW(),'%H:%i:%S %p'); SELECT STR_TO_DATE(DATE_FORMAT(NOW(),'%d/%m/%Y'),'%d/%m/%Y');

GDI

Seguridad SELECT AES_ENCRYPT('123456','llave'); SELECT AES_DECRYPT(AES_ENCRYPT('123456','llave'),'llave'); FUNCIONES DE GRUPO SUM, COUNT, MAX, MIN, AVG, STD SELECT iddepartamento, count(*) cantidad FROM empleado GROUP BY iddepartamento ORDER BY 2 desc; SELECT iddepartamento, count(*) cantidad, min(salario),max(salario),avg(salario) FROM empleado GROUP BY iddepartamento ORDER BY cantidad desc; SELECT iddepartamento, count(*) cantidad, count(distinct iddepartamento), count(iddepartamento) FROM empleado GROUP BY iddepartamento; SELECT iddepartamento, count(comision), count(distinct comision), sum(case when comision is null then 1 else 1 end), count(*) FROM empleado GROUP BY iddepartamento; SELECT iddepartamento, count(*) cantidad, count(distinct iddepartamento), count(iddepartamento) FROM empleado GROUP BY iddepartamento HAVING cantidad >3; SELECT iddepartamento, sum(CASE year(fechainicia) WHEN 2006 THEN salario ELSE 0 END) "2006", sum(CASE year(fechainicia) WHEN 2007 THEN salario ELSE 0 END) "2007", sum(CASE year(fechainicia) WHEN 2008 THEN salario ELSE 0 END) "2008" FROM empleado GROUP BY iddepartamento,year(fechainicia);

S-ar putea să vă placă și