Professional Documents
Culture Documents
Introduccin
DB2 Express-C es un miembro de la familia IBM
DB2 de poderosas aplicaciones de servidores de
datos para manejar tanto datos relacionales
como XML. DB2 Express-C es una edicin de
DB2 libre, sin lmites y fcil de usar.
Ventana 2. Siguiente
Ventana 3. Seleccionar Acepto los trminos , Siguiente
Ventana 4. Siguiente
Ventana 5. Siguiente
Ventana 6. Siguiente
Ventana 7. Siguiente
Ventana 8. Siguiente
Ventana 9. Escribir como contrasea la palabra password, Siguiente
Creacin de tablespaces
Los tablespaces son contenedores de objetos de
una base de datos, como tablas e indices.
Sintaxis para crear un tablespace:
CREATE TABLESPACE nombreTableSpace
Ejemplo:
CREATE TABLESPACE tsAuditoria
Tipos de datos
SMALLINT 5 dgitos de -32 768 a 32 767.
INTEGER 10 dgitos -2 147 483 648 a +2 147 483 647.
BIGINT 19 dgitos de -9 223 372 036 854 775 808 a
+9 223 372 036 854 775 807.
DECIMAL o NUMERIC 31 digitos.
REAL
DOUBLE o FLOAT
BLOB 2 gb
CHAR de 1 hasta 254
VARCHAR 32.672
CLOB 2 gigabytes menos 1 byte
DATE de 0001 a 9999
TIME
TIMESTAMP
XML
) in ts
Agregar restricciones
Para llaves primarias:
Para agregar una restriccin de llave primaria la
sintaxis es:
ALTER TABLE tabla ADD CONSTRAINT
nombreRestriccion PRIMARY KEY(campos)
Agregar restricciones
Tipo Check:
Sintaxis:
ALTER TABLE tabla ADD CONSTRAINT
nombreRestriccion CHECK(condicion)
Ejemplos:
ALTER TABLE empleados ADD CONSTRAINT
chksal CHECK (salario > 40000)
ALTER TABLE empleados ADD CONSTRAINT
chknom check(nombre like 'A%A')
Eliminar restricciones
Sintaxis:
ALTER TABLE tabla DROP CONSTRAINT
nombreRestriccion
Ejemplos:
ALTER TABLE empleados DROP CONSTRAINT
chksal
Comandos DML
INSERT
DELETE
UPDATE
SELECT
commit work;
connect reset;
Terminate;
Sintaxis bsica:
INSERT INTO Tabla [(campo1, campo2, .., campoN)] VALUES (valor1, valor2, ...,
valorN)
DELETE FROM tabla [WHERE condicion(es)]
UPDATE tabla_o_vista SET Campo1=Valor1[, Campo2=Valor2, ... CampoN=ValorN]
[WHERE condicion(es)]
SELECT [predicado]
{ * | nombre_tabla.* | [nombre_tabla.]campo1 [AS alias1] [, [nombre_tabla.]campo2
[AS alias2] [, ]]}
FROM <nombre_tabla>
[ INNER | LEFT [OUTER]| RIGHT [OUTER]]
[JOIN ] <nombre_tabla> ON <condicion_join>[ AND|OR <condicion>]
[WHERE <condicion> [ AND|OR <condicion>]]
[GROUP BY <nombre_campos>]
[HAVING <condicion>[ AND|OR <condicion>]]
[ORDER BY <nombre_campo> [ASC | DESC]
[FETCH FIRST <numero> ROWS ONLY ]
INSERT
INSERT se utiliza para insertar datos en una tabla.
Existen 4 formas de utilizar INSERT:
1ra forma: Insertar un registro con todos sus campos.
INSERT INTO nombreTabla VALUES (lista de valores separados por comas
y ordenados conforme a la definicin de la tabla)
EJEMPLO:
INSERT INTO Sucursal VALUES (2, Mty,89898989);
EJEMPLO:
INSERT INTO Sucursal(idSucursal, Nombre) VALUES (22, Centro)
INSERT INTO Sucursal(idSucursal,Telefono, Nombre) VALUES
(22,898989,Centro)
Ejemplos:
- Borra todos los registros de la tabla Artista
DELETE FROM Artista
TRUNCATE
Sintaxis:
TRUNCATE [TABLE] nombreTabla [IMMEDIATE]
TRUNCATE quita todas las filas de una tabla sin registrar las eliminaciones
individuales de filas. Desde un punto de vista funcional, TRUNCATE TABLE
es equivalente a la instruccin DELETE sin una clusula WHERE; no
obstante, TRUNCATE TABLE es ms rpida y utiliza menos recursos de
registros de transacciones y de sistema.
Ejemplo:
TRUNCATE TABLE Artista
No se puede utilizar TRUNCATE TABLE en las siguientes tablas:
- Tablas a las que se hace referencia mediante una restriccin FOREIGN KEY
Ventajas de TRUNCATE respecto a DELETE:
-Se utiliza menos espacio del registro de transacciones.
Ejemplos:
- A los artistas que como pais tengan la redaccion Mxico, mxico o Mexicana cambiar
por Mexico
UPDATE Artista SET pais='Mexico' WHERE pais='Mxico' Or pais='mxico' Or pais='Mexicana
FROM <nombre_tabla>
[ INNER | LEFT [OUTER]| RIGHT [OUTER] | FULL [OUTER] ]
[JOIN ] <nombre_tabla> ON <condicion_join>[ AND|OR <condicion>]
[WHERE <condicion> [ AND|OR <condicion>]]
[GROUP BY <nombre_campos>]
[HAVING <condicion>[ AND|OR <condicion>]]
[ORDER BY <nombre_campo> [ASC | DESC]
[FETCH FIRST <numero> ROWS ONLY ]
suma
3+3
Resta
Negacin
3-1
-1
Multiplicaci
n
3*3
Divisin
3/3
porcentaje
20%
Exponencia
l
Igual o menor
que
A<=B
<>
Distinto a
A<>B
!=
Distinto a
A!=B
!<
No menor que
A!<B
!>
No mayor que
A!>B
Not (no)
And (y)
Exp1
Exp2
Resultado
Exp1
Exp2
Resultado
Exp1
Resultado
-Mostrar los datos de los CDs que hayan sido lanzados en el ao 2008 en
adelante y que sean de la compaia discografica Sony y del idGenero 9
SELECT * FROM Cd WHERE fechaLanzamiento>='01/01/2008' And
ciaDiscografica='Sony' And idGenero=9
- Mostrar los datos de los Artistas que son de Mexico y que son artistas que tiene
el idTipo 1,2 y 4
SELECT * FROM Artista WHERE pais='Mexico' And (idTipo=1 OR idTipo=2 OR
idTipo=4)
-Mostrar los datos de los CD que tengan como precio entre 100 y 200 pesos
SELECT * FROM Cd WHERE Precio>=100 And Precio<=200
IN:
- Mostrar los datos de los Artistas que son de Mexico y que son artistas que tiene
el idTipo 1,2 y 4
SELECT * FROM Artista WHERE pais='Mexico' And (idTipo=1 OR idTipo=2 OR
idTipo=4)
SELECT * FROM Artista WHERE pais='Mexico' And idTipo IN(1,2,6)
Si es probable que haya valores NULL almacenados en los datos y no desea que
aparezcan valores NULL en los datos, se debera crear consultas e instrucciones
de modificacin de datos que quiten los valores NULL o los transformen en algn
otro valor. Para revisar o manejar los valores NULL revisemos las siguientes
funciones
IS NULL, IS NOT NULL y COALESCE.
Para obtener filas con valor NULL o no NULL. Para determinar si una expresin es
NULL, utilice IS NULL o IS NOT NULL en lugar de los operadores de comparacin
(como = o !=).
SELECT * FROM Artista WHERE pais IS NULL
SELECT * FROM Artista WHERE pais IS NOT NULL And idTipo=1
AVG
Es una funcin que retorna el
promedio de un conjunto de nmeros.
Ejemplo:
COUNT
Es una funcin que retorna el numero
de renglones o valores.
Ejemplo:
ASCII
CHAR
COALESCE
DAY,DAYNAME,DAYOFWEEK
Devuelve el dia (valor numrico) de
una fecha.
Devuelve el nombre del dia de una
fecha.
Devuelve el dia de la semana del
argumento, donde 1 es el dia domingo
WEEK, YEAR
Devuelve el numero de semana en un
rango de 1 a 54 de la expresion
indicada.
Devuelve el ao de una expresion.
DAYOFYEAR,HOUR,
Devuelve el dia del ao del argumento
en un rango de 1-366.
Extrae la hora(0-24) de un argumento.
Funciones relacionadas:
minute,second,microsecond.
Obtiene la longitud de una cadena.
Elimina los espacios en blanco de la
izquierda en una cadena, tambin
existe RTRIM.
MONTH,MONTHNAME,LCASE,UCASE
Del argumento devuelve el mes. Un
entero en el rango 1 a 12.
Del argumento extrae el mes pero lo
regresa como texto.
REPEAT
Regresa una cadena que corresponde a
el primer argumento repetido tantas
veces como indica el segundo
argumento. El resultado es un
varchar de 4000.
Ejemplo:
VALUES(CHAR(REPEAT(Hola,4),20))
REPLACE
Reemplaza todas las ocurrencias de
expression2 en expression1 con
expression3.
Ejemplo: Reemplazar todas las
ocurrencias de N en DINING por VID
VALUES CHAR (REPLACE ('DINING', 'N', 'VID'), 10)
SOUNDEX
Regresa un cdigo de 4 caracteres que
representa el sonido del argumento.
Ejemplo:
SELECT EMPNO, LASTNAME
FROM EMPLOYEE
WHERE SOUNDEX(LASTNAME) = SOUNDEX(Lee)
SUBSTR
Regresa una parte de la cadena pasada
como argumento. Si no se especifica
length se toma desde start hasta el
final de la cadena.
Ejemplo 1:
SELECT * FROM PROJECT
WHERE SUBSTR(PROJNAME,1,10) = OPERATION
Ejemplo 2:
SELECT SUBSTR(PROJNAME,1,10) FROM PROJECT
FUNCIONES DE AGREGADO
Las funciones de agregado realizan un clculo sobre un conjunto de valores y
devuelven un solo valor.
Ejemplos:
-- Mostrar por cada artista(idArtista) cuantos CDs tienen registrados.
SELECT idArtista, COUNT(*) AS Cantidad de CDs
FROM Cd
GROUP BY idArtista
-- Mostrar cuantos artistas se tienen por cada pais. Ordene los datos por pais
SELECT pais, COUNT(*) As Cantidad de artistas
FROM Artista
GROUP BY pais
ORDER BY pais
--Mostrar cuanto se ha gastado en CDs por cada genero(idGenero). Ordene los
datos por Gasto de mayor a menor
SELECT idGenero, SUM(Precio) As Gasto en CDs
FROM Cd
GROUP BY idGenero
ORDER BY Gasto en CDs DESC
-Mostrar cuanto se ha gastado en CDs por cada genero(idGenero). Ordene los datos por
Gasto de mayor a menor. Muestre solo aquellos que registren un gasto superior a 2000
pesos.
SELECT idGenero, SUM(Precio) As 'Gasto en CDs'
FROM Cd
GROUP BY idGenero
HAVING SUM(Precio)>2000
ORDER BY 'Gasto en CDs' DESC
-- Mostrar los datos de los empleados que estn en el mismo departamento que
ITZAE LOPEZ HERNANDEZ.
SELECT *
FROM Empleado
WHERE idDepto IN(SELECT idDepto FROM Empleado WHERE
UPPER(aPaterno)=LOPEZ And UPPER(aMaterno)=HERNANDEZ And
Mostrar los datos de las canciones que son del CD No. _____
Mostrar los nombres de los artistas que tienen el mismo pais que el artista________
Borre los artistas que no tienen un CD registrado.
Actualice el costo de los CDs que son del genero ______
Mostrar los CD que son del artista _________
Mostrar los datos de las canciones que son del CD que como nombre de album es
_______
CONSULTAS MULTITABLA
Libro
Editorial
SELECT *
PRODUCTO CARTESIANO
CONSULTAS MULTITABLA
Libro
Editorial
INNER JOIN
CONSULTAS MULTITABLA
Libro
Editorial
LEFT JOIN
CONSULTAS MULTITABLA
Libro
Editorial
RIGTH JOIN
CONSULTAS MULTITABLA
Libro
Editorial
FULL JOIN
INTERSECCION
DIFERENCIA
UNION. El operador unin puede ser usado para unir dos conjuntos de
Datos que tienen las mismas columnas y en el mismo orden.
El operador union elimina renglones duplicados del resultado.
Ejemplo:
Procedimientos Almacenados
Son objetos que encapsulan cdigo SQL y lgica del negocio. Mantener parte
de la lgica de la aplicacin en la base de datos proporciona mejoras en el
desempeo, adems proporciona un lugar centralizado para todo el cdigo
de tal manera que otras aplicaciones pueden utilizarlos.
Sintxis
CREATE PROCEDURE nombreProcedimiento(tipoParam NombreParam1 tipoDeDato,
tipoParam NombreParam2 tipoDeDato,
...
tipoParam NombreParamn tipoDeDato)
LANGUAGE SQL
BEGIN
--Sentencias del Procedimiento (codigo)
END
nombreParam1
nombreParam2
Parmetros
Los parmetros permiten introducir datos hacia un stored o extraer datos del
mismo.
Parmetros
Versin 1. Si no utilizamos parmetros.
Sp_aumentaSueldo
Parmetros
Versin 2. Con un parmetro de entrada: p_cant
Sp_aumentaSueldo
890
p_cant
num
Al contener un parametro p_cant se puede especificar desde el exterior del stored el valor
a utilizar; ya sea utilizando un valor constante(890) o una variable(num).
Parmetros
Versin 3. Con dos parmetros de entrada: p_cant, p_idDepto
Sp_aumentaSueldo
p_cant
UPDATE Empleados
SET sueldo = sueldo + p_cant
WHERE idDepto = p_idDepto
p_idDepto
Al contener dos parametros se puede especificar desde el exterior del stored la cantidad a
aumentar (p_cant) y el numero de departamento (p_idDepto) que debe tener el
empleado para aplicar el aumento.
Parmetros
Versin 4. Con 2 parmetros de entrada: p_cant, p_idDepto y 1
parametro de salida:
p_totalEmp
Sp_aumentaSueldo
p_cant
p_idDepto
UPDATE Empleados
SET sueldo = sueldo + p_cant
WHERE idDepto = p_idDepto;
SET pTotalEmp = (SELECT .);
P_totalEmp
Este Stored recibe el aumento y la clave del departamento de los empleados que se les
aplicara el aumento, ademas de un parametro de salida que regresara el total de
empleados a los que se le aplico el aumento.
Parmetros
p_ca
nt
Ver. 4
p_id
Dept
o
P_tot
alEm
p
Ver. 3
p_ca
nt
p_id
Dept
o
Ver. 2
Ver. 1
p
_
ca
nt
UPDATE Empleados
SET sueldo = sueldo +
p_cant
WHERE idDepto =
p_idDepto;
SET pTotalEmp = (SELECT
.);
El uso de parmetros
hace al stored mas
generico ya que este
realiza su funcion en
base a sus parametros.
General
UPDATE Empleados
SET sueldo = sueldo +
p_cant
WHERE idDepto =
p_idDepto
UPDATE
Empleados SET
sueldo = sueldo +
p_cant
UPDATE Empleados
SET sueldo = sueldo +
400
Sin parmetros el
aumento es fijo.
Especifico
Parmetros
Cuando se define en parametro es necesario indicar:
1. Tipo del Parametro.
2. Nombre
3. TipoDeDato
Tipos de parmetros:
IN: Parmetro de entrada cuyo valor es utilizado dentro del store
OUT: Parmetro de salida en el se guarda un valor que sera devuelto por el
store.
INOUT: Parametro que es de entrada y salida, es decir que puede utilizarse el
valor que tenga el parametro al llamar el stored y cuando se termine su
trabajo esta misma variable puede utilizarse para regresar un resultado.
Parmetros
Nombre del parmetro:
El nombre debe seguir las mismas reglas que las variables. No comenzar con
numeros, no utilizar espacios y que sea un nombre descriptivo.
Se recomienda utilizar un prefijo p_ para que no genere confusiones con
nombres de campos o tablas.
Tipo de dato:
Es el tipo de dato SQL y el tamao si es aplicable. (Integer, Decimal, varchar,
etc).
Parmetros
Ejemplo declaracin del store version 4.
Sp_aumentaSueldo
p_cant
p_idDepto
Codigo
Codigo
Codigo
Codigo
P_totalEmp
Procedimiento Almacenado
Ejemplo store version 3 completo:
Sp_aumentaSueldo
p_cant
UPDATE Empleados
SET sueldo = sueldo + p_cant
WHERE idDepto = p_idDepto
p_idDepto
Comentarios
Para especificar comentarios en un procedimiento SQL se tienen dos formas:
Se pueden utilizar dos guiones --:
-- este texto es un comentario.
Comentarios
CREATE PROCEDURE sp_aumentaSueldo ( IN p_cant decimal(8,2),
IN p_idDepto integer)
LANGUAGE SQL
BEGIN
-- -------------------------------------------------------------------------------------- Autor: Juan Perez
-- Fecha Creacin: 02/02/2014
-- Propsito: Aumentar el sueldo a los empleados de un departamento.
-- Parmetros:
-- IN p_Cant: Aumento que ser aplicado
-- IN p_idDepto: clave del departamento que debe tener el empleado para
-aplicar el aumento
-- --------------------------------------------------------------------------------------
EJEMPLO INSERT
Stored que permite almacenar un nuevo artista.
CREATE PROCEDURE sp_Artista_Insert(IN p_idartista VARCHAR(15),
IN p_nombre VARCHAR(80),
IN p_pais VARCHAR(80),
IN p_idtipo INTEGER)
LANGUAGE SQL
BEGIN
INSERT INTO ARTISTA (IDARTISTA, NOMBRE, PAIS, IDTIPO)
VALUES (p_idartista, p_nombre, p_pais, p_idtipo);
END;
EJEMPLO DELETE
Stored que permite eliminar artistas pero de un pas en especifico.
CREATE PROCEDURE sp_Artista_Delete(IN p_pais VARCHAR(80))
LANGUAGE SQL
BEGIN
DELETE FROM ARTISTA WHERE pais= p_pais;
END;
CALL SP_ARTISTA_DELETE('Mxico);
EJEMPLO UPDATE
Stored que permite cambiar el tipo de artista a un artista en especifico.
CREATE PROCEDURE sp_Artista_UpdateTipo(IN p_idArtista VARCHAR(15),
IN p_idTipo INTEGER)
LANGUAGE SQL
BEGIN
UPDATE ARTISTA SET IDTIPO = p_idTipo
WHERE IDARTISTA = p_idArtista;
END;
CALL SP_ARTISTA_UPDATETIPO('1507440-1A',2);
EJEMPLO SELECT
Stored que permite obtener la informacin de todos los artistas.
CREATE PROCEDURE sp_ArtistasSelect
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE c_artistas CURSOR WITH RETURN TO CLIENT
FOR SELECT * FROM ARTISTA;
OPEN c_artistas;
END;
CALL sp_artistasSelect;
Variables
Las variables se crean utilizando la sentencia DECLARE. Cada declaracin de
variable consiste de un nombre, tipo de datos y opcionalmente una valor por
default (inicial).
Sintaxis:
DECLARE nombreVariable tipoDeDato;
DECLARE nombreVariable tipoDeDato DEFAULT valor;
Las variables deben ser colocadas despues de BEGIN y antes de que
cualquier sentencia SQL.
Se recomienda utilizar el prefijo v_ antes del nombre para que se evite
confusiones con campos o parametros.
Variables
Ejemplo: Crear un stored que cambie el sueldo a un empleado y le sea
asignado el sueldo mas alto que se tenga registrado actualmente. Ademas se
necesita que guarde en una bitacora el cambio realizado.
CREATE PROCEDURE sp_AsignaSueldoMasAlto( IN p_idEmpAAsignar integer)
LANGUAGE SQL
BEGIN
DECLARE v_SueldoMax DECIMAL(10,2);
DECLARE v_SueldoAnt DECIMAL(10,2);
SET v_SueldoMax = (SELECT max(Sueldo) FROM Empleados);
SET v_SueldoAnt= (SELECT Sueldo FROM Empleados
WHERE idEmp = p_idEmpAAsignar);
UPDATE Empleados SET Sueldo = v_SueldoMax
WHERE idEmp = p_idEmpAAsignar;
INSERT INTO Bitacora(idEmp,sueldoAnt,SueldoNuevo)
VALUES(P_idEmpAAsignar,v_SueldoAnt,v_SueldoMax);
END;
Sentencia Condicional IF
IF es utilizado para realizar la ejecucin de sentencias bajo cierta condicin.
Por lo general se utilizan dos bloque de codigos que son ejecutados cuando
la condicion es cierta o falsa.
En general existen 3 tipos diferentes de IF
IF condicion THEN
SENTENCIAS
END IF;
IF condicion THEN
SENTENCIAS
ELSE
SENTENCIAS
END IF;
IF condicion THEN
SENTENCIAS
ELSEIF condicion THEN
SENTENCIAS
ELSEIF condicion THEN
SENTENCIAS
ELSE
SENTENCIAS
END IF;
Ejemplo IF
Crear un stored que permita aumentar el precio de un disco tomando en
cuenta un valor que indica el rating de ventas. 1 aumenta 10%, 2 aumenta
5% y 3 aumenta 1%.
CREATE PROCEDURE sp_AumentaPrecio( IN p_idCd VARCHAR(15),
IN p_rating INTEGER)
LANGUAGE SQL
BEGIN
IF p_rating =1 THEN
UPDATE CD SET precio = precio * 1.10
WHERE IDCD = p_idCd;
ELSEIF p_rating =2 THEN
UPDATE CD SET precio = precio * 1.05
WHERE IDCD = p_idCd;
ELSEIF p_rating =3 THEN
UPDATE CD SET precio = precio * 1.01
WHERE IDCD = p_idCd;
END IF;
Triggers (Disparadores)
Son objetos de base de datos asociados a una tabla los cuales definen
operaciones que seran ejecutadas cuando una operacin INSERT, UPDATE o
DELETE es realizada. Los triggers son activados automaticamente.
Tipos de Triggers:
Before triggers. Son activados antes de que un renglon sea insertado,
modificado o borrado.
After triggers. Son activados despues de que una sentencia
INSERT,DELETE o UPDATE es ejecutada exitosamente.
Before Triggers
Ejemplo 1:
Ejemplo 2:
After Triggers
Ejemplo 1:
Funciones.
Son objetos de base de datos que ejecutan una serie de sentencias y
devuelven un valor como resultado.
Tipos de funciones:
Funciones Escalares.
Funciones de Tabla.