Sunteți pe pagina 1din 90

Fundamentos DB2

Qu es una tabla

Objetivos:
Conocer los servicios proporcionados por un administrador de la base de datos (DBA) Definir que es una RELACIN Conocer el lenguaje usado para dialogar con el administrador de la base de datos relacional (RDBM) Conocer las caractersticas asignadas a cada columna Conocer los tipos de los datos que pueden asignarse un la columna

Usando bases de datos relacionales


EMPNO LASTNAME -----------------BOONE BROWN NICHOLSON ESTUARDO QUINTANA ALLEN HERZIGOVA MICHAELS JACKSON LENNON MCVIE FIRSTNME ----------------DANIEL JAMES JACK MARIA ROSA IRVING EVA SALLY MICHAEL JOHN CHRISTINE IN. ----K K S A M W T K B W R DEPT --------------WILDLIFE MUSIC MOVIES ADMIN THEATRE PRODUCT ANATOMY SPORTS BABIES POETRY NEWSPAPERS PHONE -------------123-4503 123-4506 123-8543 111-7543 101-0021 321-8743 906-0900 231-2314 214-7623 123-5123 123-8532

DB2 UDB es un sistema de administracin de bases de datos relacionales que incluye los siguientes servicios:
Logging Seguridad Optimizacin Locking Recuperacin Integridad de datos

Relacin = TABLA
EMPLEADOS.SOLTEROS EMPLEADAS.SOLTERAS
LASTNAME LASTNAME -----------------ABREU BLANCO OVIEDO PARDO PATIO VILLA FIRSTNME -------------------SEBASTIAN CUAUHTEMOC FRANCISCO PAVEL CRISTIAN GERMAN -----------------CASTRO CONDE GUARDIA HERZIGOVA RUBIO BLANCO BROWN CAMPOS GARCIA LOPEZ PARDO FIRSTNME -------------------VERONICA NINEL MARIBEL EVA PAULINA CUAUHTEMOC MELVIN JORGE LUIS JOSE LUIS PAVEL STATUS ------------SOLTERA SOLTERA SOLTERA SOLTERA SOLTERA SOLTERO SOLTERO SOLTERO SOLTERO SOLTERO SOLTERO

Una tabla es un arreglo de datos acomodados en columnas y renglones Una base de datos relacional es un conjunto de tablas relacionadas

DB2 provee de servicios tales como:


Concurrencia: Permitir a varios usuarios accesar el
mismo dato al mismo tiempo en modo de lectura.

Integridad: Si un rengln esta siendo modificado por un


usuario, ese rengln estar accesible para hasta que el proceso de modificacin termine.

Seguridad: Otorga a los usuarios permisos de lectura y


modificacin.

Creacin de tablas
Cmo creo una base de datos? Para crear tablas en DB2, debemos proveer la siguiente informacin
El nombre de la tabla y una descripcin de la informacin que contendr la tabla como: Nombre de la columna Descripcin de los datos de la columna/Longitud de la columna Caracterstica nula (NULL)

HASTA LLEGAR A

Tabla Creada
(Ejemplo) PERSONAL.EMPRESA
EMPNO LASTNAME -----------------BOONE BROWN NICHOLSON ESTUARDO QUINTANA ALLEN HERZIGOVA MICHAELS JACKSON LENNON MCVIE FIRSTNME -------------------DANIEL JAMES JACK MARIA ROSA IRVING EVA SALLY MICHAEL JOHN CHRISTINE IN. -------------------K K S A M W T K B W R DEPT --------------WILDLIFE MUSIC MOVIES ADMIN THEATRE PRODUCT ANATOMY SPORTS BABIES POETRY NEWSPAPERS PHONE -------------123-4503 123-4506 123-8543 111-7543 101-0021 321-8743 906-0900 231-2314 214-7623 123-5123 123-8532

Creacin de tablas
Existen reglas relacionadas a la creacin?

Convenciones de nombres para las tablas y las columnas El primer carcter debe ser alfabtico (A-Z), $, Q, #. El primer carcter no puede ser numrico ni guiones bajos. Los caracteres subsecuentes pueden ser alfabticos, numricos, $, @, #, _

Creacin de tablas
Algunas ms?

Tipos de datos en las columnas


Tipo carcter CHAR(X) Longitud fija (1-254) VARCHAR(X) Longitud variable (1-4K) Tipo numrico SMALLINT 0 a +/- 32K INTEGER 0 a +/- 2 billones DEC(X,Y) hasta 31 dgitos. Tipo fecha/tiempo DATE TIME TIMESTAMP

Creacin de tablas
Caracterstica Nula NOT NULL La columna siempre debe tener un valor NOT NULL WITH DEFAULT La columna debe tener siempre un valor. En el caso de que el usuario no lo proporcione, DB2 lo har NULLABLE La columna puede estar marcada como Valor desconocido

Creacin de tablas desde un editor

CREATE TABLE TELEVISORA.EMPLEADOS (APELLIDO CHAR(15) NOT NULL , NOMBRE CHAR(15) , EDAD SMALLINT(2) NOT NULL , DIRECCION CHAR(150) NOT NULL WITH DEFAULT ,

Area de descripcin de columnas

Creacin de tablas
Cmo acceso informacin de modo directo? Llave nica Tipos Simple, cuando solo involucra una columna Compuesta, cuando involucra mas de una columna Caractersticas Contiene valores nicos Pueden existir mas de una llave nica en una tabla Llave primaria Solo puede haber una por tabla Todas las columnas deben ser NOT NULL

Creacin de tablas
Enunciado CREATE TABLE
CREATE TABLE PAIS (CODIGO_PAIS CHAR(6) NOT NULL , NOMBRE_PAIS CHAR(30) NOT NULL, EXTENSION INT, NUM_PROVINCIAS INT, PRIMARY KEY (CODIGO_PAIS) )

DBA

Creacin de tablas
Qu es una llave fornea?

Llave fornea
Columna o conjunto de columnas que contienen valores de llaves nicas de tablas. Las llaves forneas se utilizan para crear relaciones entre nuestras tablas de la base de datos.

Creacin de tablas

Ejemplo de Create

CREATE TABLE CIUDADES (CIUDAD_ID CHAR(6) NOT NULL , NOMBRE_CIUDAD CHAR(20) NOT NULL , CODIGO_PAIS CHAR(6) NOT NULL , KMS_A_LA SMALLINT NOT NULL , POBLACION INT , HEMISFERIO CHAR(1) , INGRESO_PROMEDIO DECIMAL(9,2) , ULTIMO_CENSO DATE , ULTIMA_ACTUALIZACION TIMESTAMP NOT NULL WITH DEFAULT , DESCRIP_CIUDAD VARCHAR(300) , PRIMARY KEY (CIUDAD_ID) , FOREIGN KEY (CODIGO_PAIS) REFERENCES PAIS )

Creacin de tablas
Qu relacin tiene una llave primaria con una fornea?

CIUDADES
Llave primaria

Llave fornea

CIUDAD-ID NOMBRE_CIUDAD CODIGO_PAIS KMS A LA

PAISES
Llave primaria

Codigo Pais Nombre_Pais Extension NUM_Provincia

EMPLEADOS
Llave primaria PK
NUM_EMPLEADO 80910 80930 80950 APELLIDO ESPINOSA ROCHA GARCIA NOMBRE JUAN MANUEL ERNESTO

Llave nica UK
DEPARTAMENTO 12 81 15 RFC EIZJ701209 ROHM680624 GAPE759618 SUELDO 18000.00 15000.00 7000.00

DEPARTAMENTO
PK
DEPARTAMENTO 12 81 15

Llave Fornea FK
NOMBRE_DEPARTAMENTO GERENTE COMPRAS 80524 PERSONAL 80873 OPERACIONES 80102

BENEFICIOS

PK
IMSS SAR 520.00 480.00 260.00

FK
RFC 800.00 EIZJ701209 750.00 ROHM680624 450.00 GAPE759618

Cmo se modifica la informacin?

Te explico

Proceso de modificacin de datos


Esta autorizado para accesar? Se pasa el usuario y contrasea a DB2

Administrador de aplicaciones (puede manejar


su propio esquema de seguridad)

DB2 UDB
DB2 valida los permisos del usuario

Aplicaciones

Bases de datos

(1)El usuario se conecta al DB2 e introduce su identificacion de usuario y password

DB2 UDB

(2) DB2 valida si el usuario esta autorizado a realizar cambios en la base de datos

Catalogo

Bases de datos

(3) DB2 aplica un LOCK (bloqueo) sobre los datos que se modificarn y los manipula en sus buffers

Despus de modificar los datos


(7) DB2 envia mensajes de xito o falla al usuario

DB2 UDB
(2) DB2 modifica los datos en su buffer. (5) DB2 modifica los datos en la tabla (6) Se quita el bloqueo de escritura de los datos.

(1) DB2 escribe una copia en el LOG de los datos sin modificaciones (3) DB2 escribe una copia en el LOG de los datos modificados (4) COMMIT

LOG
(registro de eventos)

Bases de datos

Quin me ayudar para la ejecucion de mis programas y consultas productivas?

Te explico

Tareas y responsabilidades
Administrador de sistemas Instalacin del producto DB2 Creacin de las bases de datos Definir el esquema de seguridad (privilegios) para los usuarios que accesan la base de datos Monitoreo del funcionamiento del DB2 Administrador de la base de datos Creacion de tablas, vistas, indices y demas objetos en la base de datos Definir el esquema de seguridad para modificacin de objetos Preparar las aplicaciones que interactuaran con DB2 Responsable de ejecutar las utileras de DB2 Programador Creacin de ambientes de prueba para nuevas aplicaciones Creacin de SQLs prototipo Codificacin de programas, procedimientos almacenados, SQL, etc Preparar sus programas para ser ejecutados

Tareas y responsabilidades
Usuario final Ejecutar aplicaciones Modificar objetos (si tiene la autoridad) Generar reportes Realizar consultas Operador Realizar respaldos de bases de datos Realizar cargas de base de datos Restaurar bases de datos

Ahora usted puede:


Describir los servicios proporcionados por un administrador de bases de datos Definir una RELACIN Nombrar el lenguaje usado para dialogar con el administrador de la base de datos relacional (RDBM) Reconocer las caractersticas asignadas a cada columna Identificar los varios tipos de datos que pueden asignarse a una columna

Usuarios Finales trabajando con DB2

Objetivos:
Conocer los varios mtodos para interactuar con DB2 Conocer los mltiples mtodos para generar una declaracin SQL Conocer varias formas para agregar, remover o cambiar renglones en una tabla Conocer las formas para leer datos y generar reportes

ALTER GRANT

CREATE SELECT
Un usuario final es toda persona que utiliza declaraciones de SQL, ya sea ejecutando programas que utilizan declaraciones de SQL o que escribe sus propios SQL

DROP UPDATE

SQL DELETE

INSERT REVOKE

Declaracin de SQL
Una declaracin de SQL esta compuesta de clausulas.

SELECT ... FROM ... WHERE ... INSERT ... INTO ... VALUES ... UPDATE ... SET WHERE ...

? (No me quedo claro )

Te explico

SELECT (selecciona una lista de elementos) 1 - X elementos (nombres de


columnas, expresiones, literales, funciones de columna, funciones escalares)

FROM (tabla/ vista) 1 - X WHERE (pruebas, condiciones, predicados) 1 - X GROUP BY (subagrupa el grupo de renglones que cumplen con las
condiciones de la clausula WHERE)

HAVING (pruebas, condiciones, predicados - en grupos) ORDER BY (clasifica los renglones del resultado)

La declaracion SQL SELECT se usa con cuatro clausulas:

SELECT FROM WHERE SORT BY


Usando estas clausulas, el resultado ser el despliegue de aquellos renglonesque cumplan con los requisitos de los filtros definidos por las clausulas

SELECT * FROM Q.STAFF


Esta ltima declaracin dara como resultado el despliegue de todos los renglones de la tabla

Descripcin de la tabla Q.STAFF


Column Name ID NOMBRE DEPTO PUESTO ANTIGEDAD SALARIO COMM
ID 10 20 30 40 50 60 70 80 90 100 NOMBRE GOMEZ GONZALEZ JIMENEZ SALGADO MARTINEZ NARCISO HERNANDEZ BARRIENTOS LOPEZ SANCHEZ

Data Type SMALLINT VARCHAR SMALLINT CHAR SMALLINT DECIMAL DECIMAL


DEPTO 20 20 38 38 15 38 15 20 42 42 PUESTO MGR SALES MGR SALES MGR SALES SALES CLERCK SALES Mgr

Length 9 5 (7,2) (7,2)


ANTIGEDAD 7 8 5 6 10 7 6 7

Nulls NO YES YES YES YES YES YES


SALARIO $18,357.00 $18,171.00 $17,506.00 $18,006.00 $20,659.00 $16,808.00 $16,502.00 $13,504.00 $18,001.00 $18,352.00 COMM $612.00 $846.55 $650.00 $1,152.00 $128.00 $1,386.00 $206.00

Descripcin de la tabla Q.ORG


Column Name NUMDEPTO NOMDEPTO GERENTE DIVISION LOCALIDAD Data Type SMALLINT VARCHAR SMALLINT VARCHAR VARCHAR
GERENTE 160 50 10 30 100 140 270 290

Length 14 10 13
DIVISION CORPORATIVO CENTRO METRO METRO CENTRO BAJIO PACIFICO NORTE

Nulls NO YES YES YES YES


LOCALIDAD MEXICO MEXICO MEXICO MEXICO MEXICO GUANAJUATO SONORA NUEVOLEON

NUMDEPTO NOMDEPTO 10 15 20 38 42 51 66 84 CORPORATIVO COYOACAN SATELITE CUAUTITLAN NARVARTE GUANAJUATO HERMOSILLO MONTERREY

Ejemplo de cmo seleccionar renglones especificos con SELECT SELECT PUESTO, NOMBRE FROM Q. STAFF WHERE DEPT = 20
Tabla Conceptual
ID NOMBRE 10 GOMEZ 20 GONZALEZ 80 BARRIENTOS DEPTO PUESTO 20 MGR 20 SALES 20 CLERCK ANTIGEDAD 7 8 SALARIO $18,357.00 $18,171.00 $13,504.00 COMM $612.00 $1,386.00

El resultado es
PUESTO MGR SALES CLERCK NOMBRE GOMEZ GONZALEZ BARRIENTOS

Comparaciones Nmericas Se utilizan los siguientes formatos de datos nmericos


WHERE DEPTO = 20 AND COMM = 612.00 AND (SALARIO = 18171.00 OR SALARY = 18000) -- (entero) -- (con punto decimal pt.) -- (sin coma) -- (igual a 18000.00)

y las siguientes alternativas de comparacin


OPERADORES ( >, <>, <, >=, <= ) BOOLEANOS (AND, OR) VALORES PARCIALES (POR EJEMPLO '_ A% ') VALORES EN UN RENGLON (COMM > SALARY) VALORES CALCULADOS VALUE (COMM/ 12)

SELECT * FROM Q. STAFF WHERE (( SALARY + COMM) > 18000) AND JOB NOT LIKE 'M%

ID 20 40 70 90

NOMBRE GONZALEZ SALGADO HERNANDEZ LOPEZ

DEPTO 20 38 15 42

PUESTO SALES SALES SALES SALES

ANTIGEDAD 8 6 7 6

SALARIO $18,171.00 $18,006.00 $16,502.00 $18,001.00

COMM $612.00 $846.55 $128.00 -

Funciones
FUNCTION_ NAME( argumento) Funciones de Columna
SUM AVG MIN MAX COUNT(*) COUNT( DISTINCT nombre_de_columna ) Este tipo de funcion genera a la salida un solo rengln con el resultado

Funciones escalares
Este tipo de funciones genera un valor por cada rengln de la seleccin.

Funciones de columna
SELECT SUM( SALARIO) AS SUM_ SALARIO, COUNT(*) AS CUENTA FROM Q. STAFF WHERE DEPTO = 20
COUNT(*) cuenta todos los renglones que cumplen con la clausula WHERE. SUM(SALARIO) suma los valores de la columna SALARIO. DB2 crearia la siguiente tabla conceptal de este enunciado:
ID NOMBRE 10 GOMEZ 20 GONZALEZ 80 BARRIENTOS DEPTO PUESTO 20 MGR 20 SALES 20 CLERCK ANTIGEDAD 7 8 SALARIO $18,357.00 $18,171.00 $13,504.00 COMM $612.00 $1,386.00

y el resultado sera un rengln de total por definicin

SUM(SALARIO)

CUENTA

50032.00

Funciones escalares SELECT DIGITS( NUMDEPTO) AS C_ DEPTO FROM Q. ORG


NUMDEPTO NOMDEPTO 10 15 20 38 42 51 66 84 CORPORATIVO COYOACAN SATELITE CUAUTITLAN NARVARTE GUANAJUATO HERMOSILLO MONTERREY GERENTE 160 50 10 30 100 140 270 290 DIVISION CORPORATIVO CENTRO METRO METRO CENTRO BAJIO PACIFICO NORTE LOCALIDAD MEXICO MEXICO MEXICO MEXICO MEXICO GUANAJUATO SONORA NUEVOLEON
C_DEPTO

Se genera un valor por rengln por definicin hecha

00010 00015 00020 00038 00042 00051 00066 00084

Otras funciones escalares son: MONTH DAY DAYS COALESCE SUBSTR DATE DECIMAL DIGITS ROUND TRIM STRIP NULLIF

La funcin escalar UPPER permite realizar busquedas sin importar si los caracteres estan en mnusculas o myusculas.

SELECT ID, NOMBRE, DEPTO, PUESTO, SALARIO FROM Q. STAFF WHERE UPPER( PUESTO) = 'MGR
ID 10 30 50 100 NOMBRE GOMEZ JIMENEZ MARTINEZ SANCHEZ DEPTO 20 38 15 42 PUESTO MGR MGR MGR Mgr SALARIO $18,357.00 $17,506.00 $20,659.00 $18,352.00 COMM $650.00 $206.00

Ejecucin conceptual de SELECT


SELECT DEPTO, PUESTO, AVG( SAL) FROM EMPLEADO WHERE PUESTO <> G' GROUP BY DEPTO, PUESTO HAVING AVG( SAL) > 28000 ORDER BY 3 DESC
La tabla EMPLEADO es la siguiente
PUESTO V G V M V G V M V G V V M V V SAL 31000 32000 30000 27000 33000 31000 32000 28000 30000 33000 31000 35000 27000 29000 29000 DEPTO AZU ROJ AZU VER VER AZU ROJ VER ROJ VER ROJ VER AZU ROJ AZU

Ejecucin conceptual de SELECT -(2)


Al aplicar WHERE PUESTO <> G
PUESTO V V M V V M V V V M V V SAL 31000 30000 27000 33000 32000 28000 30000 31000 35000 27000 29000 29000 DEPTO AZU AZU VER VER ROJ VER ROJ ROJ VER AZU ROJ AZU

Al aplicar GROUP BY DEPTO, PUESTO


PUESTO M V V V V V V V M M V V SAL 27000 31000 30000 29000 32000 30000 31000 29000 27000 28000 33000 35000 DEPTO AZU AZU AZU AZU ROJ ROJ ROJ ROJ VER VER VER VER

Ejecucin conceptual de SELECT -(3)


Al aplicar HAVING AVG( SAL) > 28000
PUESTO V V V V V V V V V SAL 31000 30000 29000 32000 30000 31000 29000 33000 35000 DEPTO AZU AZU AZU ROJ ROJ ROJ ROJ VER VER

Al aplicar SELECT DEPTO, PUESTO, AVG( SAL)


PUESTO V V V DEPTO AZU ROJ VER AVG(SAL) 30000 30500 34000

Recuerde, AVG es funcin de tabla

Al aplicar ORDER BY 3 DESC


PUESTO V V V DEPTO VER ROJ AZU AVG(SAL) 34000 30500 30000

SELECT algo AS nuevo_nombre, SELECT expresin AS nombre multiparte" SELECT DEPTO AS DEPARTAMENTO, SALARIO + COMM AS INGRESOS FROM EMPLEADO En este ejemplo, la palabra clave AS se utiliza para cambiar nombres de columnas El resultado sera algo como:
DEPARTAMENTO VER ROJ AZU INGRESOS 48000 58000 64000

RECUERDE
La recuperacin de datos de multiples tablas se implementa con la clausula FROM The result table can contain columns from any table named in the FROM clause Para relacionar tablas por medio de las columnas que tienen datos comunes, podemos usar: El predicado "JOIN" La clausula WHERE La clausula ON clause, que es una extensin de la clusula FROM

EJEMPLO CON LA CLAUSULA FROM


EMPLEADOS
EMPNO 000010 000150 000020 000250 000100 000070 200140 APELLIDO HERNANDEZ AVILA TORRES SANCHEZ SALAZAR PEREZ NAVARRO

DEPARTAMENTOS
NOMDEPTO COMPUTO DESARROLLO SOFTWARE ADMINISTRACION SUCURSAL2 NUMGR 000010 000100 000070 -

SELECT APELLIDO, NOMDEPTO FROM EMPLEADO, DEPARTAMENTOS WHERE EMPNO = NUMMGR


APELLIDO HERNANDEZ SALAZAR PEREZ NOMDEPTO COMPUTO SOFTWARE ADMINISTRACION

EJEMPLO DE INNER JOIN


EMPLEADOS
EMPNO 000010 000150 000020 000250 000100 000070 200140 APELLIDO HERNANDEZ AVILA TORRES SANCHEZ SALAZAR PEREZ NAVARRO

DEPARTAMENTOS
NOMDEPTO COMPUTO DESARROLLO SOFTWARE ADMINISTRACION SUCURSAL2 NUMGR 000010 000100 000070 -

SELECT LASTNAME, DEPTNAME FROM EMPL INNER JOIN DEPT ON EMPNO = MGRNO
APELLIDO HERNANDEZ SALAZAR PEREZ NOMDEPTO COMPUTO SOFTWARE ADMINISTRACION

Un caso especial es el INNER JOIN +(tambien llamado OUTER JOIN), ya que el resultado incluiria tambien todos aquelos renglones que no cumplan con las condiciones del SELECT

OUTER JOIN A LA DERECHA


SELECT APELLIDO, NUMDEPTO FROM EMPLEADO RIGHT OUTER JOIN DEPARTAMENTOS APELLIDO NOMDEPTO ON EMPNO = NUMMGR HERNANDEZ COMPUTO
SALAZAR SALAZAR DESARROLLO SOFTWARE ADMINISTRACION SUCURSAL2

Cada rengln de la tabla derecha (EMPLEADOS) que no tenga una correspondencia para la tabla izquierda se llena con el carcter NULL (-)

OUTER JOIN A LA IZQUIERDA


SELECT LASTNAME, DEPTNAME FROM EMPL LEFT OUTER JOIN DEPT ON EMPNO = MGRNO
APELLIDO HERNANDEZ AVILA TORRES SANCHEZ SALAZAR PEREZ NAVARRO NOMDEPTO COMPUTO SOFTWARE ADMINISTRACION -

Cada rengln de la tabla izquierda (DEPARTAMENTOS) que no tenga una correspondencia para la tabla izquierda se llena con el carcter NULL (-)

Expresiones CASE
Las expresiones CASE nos permiten manejar una logica IF/THEN SELECT PARTNO, DESCRIPT, COLOR, CASE WHEN SIZE= 'S' THEN 'Small' WHEN SIZE= 'M' THEN 'Medium' WHEN SIZE= 'L' THEN 'Large' WHEN SIZE= 'X' THEN 'Xlarge' ELSE 'Unknown' END AS SIZE, QTY FROM CATALOG WHERE QTY <= REORDER_ PT El resultado sera algo como PARTNO DESCRIPT 12- 234 SWEATER 12- 235 SWEATER 14- 276 JACKET

COLOR SIZE QTY BLUE Small 18 RED Medium 22 GREEN Unknown 9

Declaracin INSERT
La declaracin INSERT nos permite insertar renglones
EMPNO 000010 000020 000030 000050 LASTNAME WORKDEPT HAAS A00 THOMPSON B01 KWAN C01 GEYER E01 HIREDATE 1965- 01- 01 1973- 10- 10 1975- 04- 05 1949- 08- 17 SALARY 52750.00 41250.00 39250.00 40175.00 BONUS 1000.00 800.00 800.00 800.00

INSERT INTO TESTEMP VALUES ('000111', 'SMITH', 'C01', '1998- 06- 25', 25000, NULL), ('000113', 'JONES', 'C01', '2001- 06- 25', 25000, NULL), ('000114', 'THOMPSON', 'C01', '2001- 06- 25', 25000, NULL)

o tambien podramos codificar


INSERT INTO TESTEMP (EMPNO, LASTNAME, WORKDEPT, HIREDATE, SALARY) VALUES ('000111', 'SMITH', 'C01', '1998- 06- 25', 25000), ('000113', 'JONES', 'C01', '2001- 06- 25', 25000), ('000114', 'THOMPSON', 'C01', '2001- 06- 25', 25000)

Como resultado se insertaran los siguientes renglones


EMPNO 000111 000113 000114 000010 000020 000030 000050 LASTNAME WORKDEPT SMITH C01 JONES C01 THOMPSON C01 HAAS A00 THOMPSON B01 KWAN C01 GEYER E01 HIREDATE 1998- 06- 25 2001- 06- 25 2001- 06- 25 1965- 01- 01 1973- 10- 10 1975- 04- 05 1949- 08- 17 SALARY 27000.00 26000.00 26000.00 52750.00 41250.00 39250.00 40175.00 BONUS 1000.00 800.00 800.00 800.00

Declaracin UPDATE
La declaracin UPDATE nos permite modificar los valores de las columnas especificados por uno mas renglones de la tabla
EMPNO 000111 000113 000114 000010 000020 000030 000050 LASTNAME WORKDEPT SMITH C01 JONES C01 THOMPSON C01 HAAS A00 THOMPSON B01 KWAN C01 GEYER E01 HIREDATE 1998- 06- 25 2001- 06- 25 2001- 06- 25 1965- 01- 01 1973- 10- 10 1975- 04- 05 1949- 08- 17 SALARY 27000.00 26000.00 26000.00 52750.00 41250.00 39250.00 40175.00 BONUS 1000.00 800.00 800.00 800.00

UPDATE TESTEMP SET BONUS = 500, SALARY = 26000 WHERE EMPNO = '000111'
EMPNO 000111 000113 000114 000010 000020 000030 000050 LASTNAME WORKDEPT SMITH C01 JONES C01 THOMPSON C01 HAAS A00 THOMPSON B01 KWAN C01 GEYER E01 HIREDATE 1998- 06- 25 2001- 06- 25 2001- 06- 25 1965- 01- 01 1973- 10- 10 1975- 04- 05 1949- 08- 17 SALARY 27000.00 26000.00 26000.00 52750.00 41250.00 39250.00 40175.00 BONUS 500.00 1000.00 800.00 800.00 800.00

Declaracin DELETE
La declaracin DELETE elimina uno o mas renglones de la tabla, dependiendo de la clausula WHERE. Si la clausula WHERE es omitida, todos los renglones de la tabla o de la vista se eliminan
EMPNO 000111 000113 000114 000010 000020 000030 000050 LASTNAME WORKDEPT SMITH C01 JONES C01 THOMPSON C01 HAAS A00 THOMPSON B01 KWAN C01 GEYER E01 HIREDATE 1998- 06- 25 2001- 06- 25 2001- 06- 25 1965- 01- 01 1973- 10- 10 1975- 04- 05 1949- 08- 17 SALARY 27000.00 26000.00 26000.00 52750.00 41250.00 39250.00 40175.00 BONUS 500.00 1000.00 800.00 800.00 800.00

DELETE FROM TESTEMP WHERE EMPNO = '000111'


EMPNO 000113 000114 000010 000020 000030 000050 LASTNAME WORKDEPT JONES C01 THOMPSON C01 HAAS A00 THOMPSON B01 KWAN C01 GEYER E01 HIREDATE 2001- 06- 25 2001- 06- 25 1965- 01- 01 1973- 10- 10 1975- 04- 05 1949- 08- 17 SALARY 26000.00 26000.00 52750.00 41250.00 39250.00 40175.00 BONUS 1000.00 800.00 800.00 800.00

Analisis Multidimensional -OLAP

Unidades,ventas

Fabricante

Funciones estadsticas
VARIANCE CORRELATION COVARIANCE

REGR_SLOPE REGR_COUNT REGR_AVGX

REGR_INTERCEPT REGR_R2 REGR_AVGY

SELECT COUNTRY, STATE CORRELATION( SUMSALES, INCOME_ RANGE) AS CORRELATION, REGR_ SLOPE( INCOME_ RANGE, SUMSALES) AS SLOPE FROM ... WHERE El resultado sera COUNTRY USA USA USA USA USA USA USA STATE AK AL DE GA IL KS LA CORRELATION -0.13 0.29 0.20 0.28 0.16 -0.47 0.15 SLOPE -0.28 0.62 0.35 0.73 0.49 -5.84 0.86

ROLLUP( )
Genera un reporte con multiples niveles de informacin
SELECT DIVISION, DEPT, ID, SUM(SALARY) AS SUM, COUNT(*) AS COUNT FROM Q.STAFF, Q.ORG WHERE DEPT = DEPTNUMB AND DEPT IN (15,20, 84) AND JOB IN ('SALES', 'MGR') GROUP BY ROLLUP(DIVISION, DEPT, ID) DIVISION DEPT EASTERN WESTERN EASTERN 15 EASTERN 20 WESTERN 84 EASTERN 15 EASTERN 15 EASTERN 20 EASTERN 20 WESTERN 84 WESTERN 84 WESTERN 84 ID 50 70 10 20 290 300 340 SUM 126807.88 73691.38 53116.50 37162.63 36528.75 53116.50 20659.80 16502.83 18357.50 18171.25 19818.00 15454.50 17844.00 COUNT 7 4 3 2 2 3 1 1 1 1 1 1 1

RANK() -Detalle
Genera un reporte en funcion a rangos dentro de una columna
SELECT ID, DEPT, COMM, RANK() OVER (ORDER BY COMM DESC NULLS LAST) AS SEQ FROM Q.STAFF WHERE DEPT IN (15, 20)

ID 70 20 110 80 190 170 10 50

DEPT 15 20 15 20 20 15 20 15

COMM 1152.00 612.45 206.60 128.20 126.50 110.10 -

SEQ 1 2 3 4 5 6 7 7

RANK() -Sumarizacin
Genera un reporte que incluya funciones de columna o estadisticas
SELECT DEPT, SUM(COMM) AS "TOT COMM", RANK() OVER (ORDER BY SUM(COMM) DESC NULLS LAST) AS SEQ FROM Q.STAFF GROUP BY DEPT

DEPT 51 84 38 66 42 15 20 10

TOT COMM 2333.40 2279.10 1913.30 1911.30 1546.50 1468.70 867.15 -

SEQ 1 2 3 4 5 6 7 8

RANK() -Por conjuntos


Genera un reporte que genera rangos por conjuntos dentro de la tabla
SELECT ID, DEPT, SALARY, RANK() OVER (PARTITION BY DEPT ORDER BY SALARY DESC) AS "RANK W/N DEPT", RANK() OVER (ORDER BY SALARY DESC ) AS "OVER ALL RANK" FROM Q.STAFF WHERE DEPT IN (15, 20) ORDER BY DEPT, "RANK W/N DEPT"

ID 50 70 110 170 10 20 190 80

DEPT SALARY RANK W/ N DEPT OVER ALL RANK 15 20659.80 1 1 15 16502.83 2 4 15 12508.20 3 7 15 12258.50 4 8 20 18357.50 1 2 20 18171.25 2 3 20 14252.75 3 5 20 13504.60 4 6

Funciones de reporte
SELECT ID, DEPT, SALARY, SUM(SALARY) OVER (PARTITION BY DEPT) AS DEPTSUM, DECIMAL(SALARY, 17,0) * 100 / SUM(SALARY) OVER (PARTITION BY DEPT) AS "PCT OF DEPT TOT" FROM Q.STAFF WHERE DEPT IN (15, 20)

ID 50 70 110 170 10 20 80 190

DEPT 15 15 15 15 20 20 20 20

SALARY 20659.80 16502.83 12508.20 12258.50 18357.50 18171.25 13504.60 14252.75

DEPTSUM PCT OF DEPT TOT 61929.33 33.3 61929.33 26.6 61929.33 20.1 61929.33 19.7 64286.10 28.5 64286.10 28.2 64286.10 21.0 64286.10 22.1

Funciones acumulativas
SELECT DIVISION, DEPT, ID, SALARY, SUM(SALARY) OVER (PARTITION BY DEPT ORDER BY ID) AS "DEPT CUM", SUM(SALARY) OVER(PARTITION BY DIVISION ORDER BY DEPT, ID) AS "DIV CUM", SUM(SALARY) OVER(ORDER BY DIVISION, DEPT, ID) AS "TOT CUM" FROM Q.STAFF, Q.ORG WHERE DEPT = DEPTNUMB AND DEPT IN (10, 15, 20) AND JOB <> 'CLERK
DIVISION --------CORPORATE CORPORATE CORPORATE CORPORATE EASTERN EASTERN EASTERN EASTERN DEPT ----10 10 10 10 15 15 20 20 ID ----160 210 240 260 50 70 10 20 SALARY ---------22959.20 20010.00 19260.25 21234.00 20659.80 16502.83 18357.50 18171.25 DEPT CUM ---------22959.20 42969.20 62229.45 83463.45 20659.80 37162.63 18357.50 36528.75 DIV CUM ---------22959.20 42969.20 62229.45 83463.45 20659.80 37162.63 55520.13 73691.38 TOT CUM ---------- 83463.45 83463.45 83463.45 83463.45 120626.08 120626.08 157154.83 157154.83

Porcentajes de cambio
SELECT YEAR(SALES_DATE) AS YEAR, QUARTER(SALES_DATE) AS QUARTER, SUM(SALES) AS "TOT SALES", SUM(SALES) *100 / SUM(DECIMAL(SUM(SALES))) OVER (ORDER BY YEAR(SALES_DATE), QUARTER(SALES_DATE) ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) - 100 AS "PCT CHANGE" FROM Q.SALES GROUP BY YEAR(SALES_DATE), QUARTER(SALES_DATE) ORDER BY YEAR, QUARTER

YEAR 1995 1996 1996

QUARTER 4 1 2

TOT SALES 8 104 43

PCT CHANGE 1200.00 -58.65

Curva de variacin
SELECT T_DATE, CLOSE_PRICE AS CP, AVG(CLOSE_PRICE) OVER (ORDER BY T_DATE ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING) AS "R CP" FROM Q.STOCK WHERE SYMBOL = 'IBM' AND T_DATE BETWEEN '1999-08-01' AND '1999-09-01'

Curva de variacin (2)


T DATE ---------1999- 08- 02 1999- 08- 03 1999- 08- 04 1999- 08- 05 1999- 08- 06 1999- 08- 09 1999- 08- 10 1999- 08- 11 1999- 08- 12 1999- 08- 13 1999- 08- 16 1999- 08- 17 1999- 08- 18 1999- 08- 19 1999- 08- 20 1999- 08- 23 1999- 08- 24 1999- 08- 25 1999- 08- 26 1999- 08- 27 1999- 08- 30 1999- 08- 31 CP --------110.125 109.500 112.000 110.625 112.750 110.625 108.375 109.250 109.375 108.500 110.250 108.375 108.375 109.375 112.000 113.125 114.875 115.500 113.375 115.625 113.625 112.875 R CP -------- 110.562 111.000 110.937 110.571 110.446 110.428 109.928 109.875 109.250 108.928 109.071 109.464 110.000 110.910 111.660 112.375 113.410 114.017 114.142 114.500 114.437 114.225

Minado de datos
Proceso de extraer informacion previamente desconocida comprensible y util de grandes bases de datos para usarla en la toma de decisiones cruciales para el negocio. Para qu? Los volumenes de datos son demasiado grandes para tratar de aplicar tcnicas tradicionales de anlisis.

Algoritmos de minado de datos


Tres categorias: Sin prediccin Prediccin de un evento Prediccin de todo Los algoritmos son: Clustering Clasificacin Descubrimiento de asociaciones Descubrimientos de patrones secuenciales

Cmo me comunico con DB2?

Te explico

Dependiendo tu ambiente de trabajo, puedes comunicarte a travs de


Command Line Procesor Command Line Window (Command Center) Control Center QMF (en zOS) SPUFI (en zOS)

Command Line Processor Es la interfase mas comn para el usuario Es interactivo, aunque se puede trabajar en modo no interactivo, o sea : Interactivo: aparece el promptuario DB2=> No Interactivo: se debe de preceder cada comando con la palabra DB2 Comandos de DB2 y de SQL se pueden introducir al sistema a travs de esta interfase.

Command Center

SPUFI

Edicin de un SQL en SPUFI


**********************************************
EDIT URID. DB2FUN. LIB( TEST) Columns 00001 00072 Command ===> Scroll ===> PAGE ****** ********** Top of Data **************** 000100 SELECT DEPT, JOB, NAME, SALARY 000200 FROM Q. STAFF 000300 WHERE DEPT IN (15, 20) 000400 ORDER BY NAME, JOB ****** ********* Bottom of Data **************

El resultado es
SELECT DEPT, JOB, NAME, SALARY FROM Q. STAFF WHERE DEPT IN (15, 20) ORDER BY NAME, JOB ---------+---------+---------+---------+---------+---------+ DEPT JOB NAME SALARY ---------+---------+---------+---------+---------+---------+ 15 MGR HANES 20659.80 20 CLERK JAMES 13504.60 15 CLERK KERMISCH 12258.50 15 CLERK NGAN 12508.20 20 SALES PERNAL 18171.25 15 SALES ROTHMAN 16502.83 DSNE610I NUMBER OF ROWS DISPLAYED IS 8 DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 100 ---------+---------+---------+---------+---------+---------+ DSNE617I COMMIT PERFORMED, SQLCODE IS 0 DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 0

QMF

Composicin de queries en QMF


SQL QUERY MODIFIED LINE 1 SELECT DEPT, JOB, NAME, SALARY FROM Q. STAFF WHERE DEPT IN (15, 20) ORDER BY DEPT, JOB *** END *** 1= Help 2= Run 3= End 4= Print 5= Chart 6= Draw 7= Backward 8= Forward 9= Form 10= Insert 11= Delete 12= Report OK, cursor positioned. COMMAND ===> SCROLL ===> PAGE

El reporte generado es
REPORT DEPT JOB ---------15 SALES 15 MGR 15 CLERK 15 CLERK 20 SALES 20 CLERK *** END *** NAME --------ROTHMAN HANES KERMISCH NGAN PERNAL JAMES SALARY --------- 16502.83 20659.80 12258.50 12508.20 18171.25 13504.60

Customizacin de reportes con QMF


DEPT. NUMBER -----15 DIVISION EARNINGS REPORT EMPLOYEE NAME SALARY ------------------ ROTHMAN $16,502. 83 HANES $20,659. 80 KERMISCH $12,258. 50 NGAN $12,508. 20 ---------- DEPT 15 TOTAL $61,929. 33 PERNAL SANDERS JAMES SNEIDER DEPT 20 TOTAL $18,171. 25 $18,357. 50 $13,504. 60 $14,252. 75 ---------- $64,286. 10 =========== $126,215. 40

JOB ----SALES MGR CLERK CLERK

20

SALES MGR CLERK CLERK

GRAND TOTAL

COMPANY CONFIDENTIAL

Formateo de reportes con QMF

QMF Windows

Datos entregados por QMF Windows

Reportes en QMF Windows

ODBC Windows

Especificando la tabla

Ahora usted :
Conoce los varios mtodos para dialogar con DB2 Conoce mltiples mtodos para generar una declaracin SQL Conoce varias formas para agregar, remover o cambiar renglones en una tabla Conoce varias formas para leer datos y generar reportes

Ahora usted puede:


Listar varias consideraciones de planeacin para la distribucin de datos. Listar algunas de las habilidades requeridas para distribuir datos en forma exitosa Listar algunas de las consideraciones respecto a seguridad con datos distribuidos Diferenciar entre unidad de trabajo remota, Unidad distribuida de trabajo y requerimiento distribuido

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