Documente Academic
Documente Profesional
Documente Cultură
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
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
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?
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
CREATE TABLE TELEVISORA.EMPLEADOS (APELLIDO CHAR(15) NOT NULL , NOMBRE CHAR(15) , EDAD SMALLINT(2) NOT NULL , DIRECCION CHAR(150) NOT NULL WITH DEFAULT ,
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
PAISES
Llave primaria
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
Te explico
DB2 UDB
DB2 valida los permisos del usuario
Aplicaciones
Bases de datos
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
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
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
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 ...
Te explico
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)
Length 14 10 13
DIVISION CORPORATIVO CENTRO METRO METRO CENTRO BAJIO PACIFICO NORTE
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
SELECT * FROM Q. STAFF WHERE (( SALARY + COMM) > 18000) AND JOB NOT LIKE 'M%
ID 20 40 70 90
DEPTO 20 38 15 42
ANTIGEDAD 8 6 7 6
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
SUM(SALARIO)
CUENTA
50032.00
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
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
DEPARTAMENTOS
NOMDEPTO COMPUTO DESARROLLO SOFTWARE ADMINISTRACION SUCURSAL2 NUMGR 000010 000100 000070 -
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
Cada rengln de la tabla derecha (EMPLEADOS) que no tenga una correspondencia para la tabla izquierda se llena con el carcter NULL (-)
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
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)
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
Unidades,ventas
Fabricante
Funciones estadsticas
VARIANCE CORRELATION COVARIANCE
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)
DEPT 15 20 15 20 20 15 20 15
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
SEQ 1 2 3 4 5 6 7 8
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)
DEPT 15 15 15 15 20 20 20 20
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
QUARTER 4 1 2
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'
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.
Te explico
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
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
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
20
GRAND TOTAL
COMPANY CONFIDENTIAL
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