Universidad Santiago de Cali
Bases de Datos
Autor: Rafael Alberto Moreno Parra
Comandos en IBM DB2
Contenido
Descarga ................................................................................................................................................................................................................................................................. 2
Instalacin .............................................................................................................................................................................................................................................................. 8
Iniciando con IBM Data Studio 4.1.2 ......................................................................................................................................................................................................... 42
Crear un nuevo esquema grficamente ................................................................................................................................................................................................... 47
Crear tablas grficamente ............................................................................................................................................................................................................................. 50
Crear tablas con comandos SQL.................................................................................................................................................................................................................. 53
Llave primaria compuesta y Llave fornea.............................................................................................................................................................................................. 56
Insertar datos en una tabla usando todos los campos ....................................................................................................................................................................... 59
Insertar datos en una tabla usando algunos campos ......................................................................................................................................................................... 61
Insertar gran cantidad de datos en una tabla ....................................................................................................................................................................................... 62
Consulta con SQL .............................................................................................................................................................................................................................................. 65
Consultas con clculos .................................................................................................................................................................................................................................... 66
Borrado de registros ........................................................................................................................................................................................................................................ 67
Actualizacin de registros .............................................................................................................................................................................................................................. 69
Alias en las columnas ...................................................................................................................................................................................................................................... 71
Limitacin de nmero de resultados .......................................................................................................................................................................................................... 72
Clculos en consultas....................................................................................................................................................................................................................................... 75
Cambiar nombre a una tabla ........................................................................................................................................................................................................................ 76
Adicionar un campo a una tabla existente .............................................................................................................................................................................................. 77
Cambiar el nombre a una columna o campo .......................................................................................................................................................................................... 78
Cambiar el tipo de dato a una columna o campo ................................................................................................................................................................................. 79
Eliminar una columna o campo.................................................................................................................................................................................................................... 80
Cambiar el formato de presentacin de la fecha .................................................................................................................................................................................. 81
Hora y fecha actual........................................................................................................................................................................................................................................... 82
Extraer ao, mes, da de una fecha ........................................................................................................................................................................................................... 84
Calcular la edad de una persona ................................................................................................................................................................................................................. 85
Concatenar ........................................................................................................................................................................................................................................................... 86
Operador lgico .................................................................................................................................................................................................................................................. 87
Combinando tablas ........................................................................................................................................................................................................................................... 90
Uso del JOIN ........................................................................................................................................................................................................................................................ 92
Uso del NOT ......................................................................................................................................................................................................................................................... 93
Uso del UNION.................................................................................................................................................................................................................................................... 95
Diferencia de UNION con UNION ALL .................................................................................................................................................................................................... 96
SubSelecciones................................................................................................................................................................................................................................................... 98
1
Descarga
Dirjase al sitio https://www.ibm.com/analytics/us/en/technology/db2/ y de clic en Try DB2
Ilustracin 1: Sitio oficial de IBM DB2 en https://www.ibm.com/analytics/us/en/technology/db2/
Ilustracin 2: Dar clic en "Browse DB2 trials"
2
Ilustracin 3: Se trabajar con IBM DB2 Express-C
Ilustracin 4: De clic en "Proceed without an IBM ID"
3
Ilustracin 5: Seleccione el instalador segn el sistema operativo donde instalar el gestor
Ilustracin 6: Datos pedidos por IBM
4
Ilustracin 7: De clic en "I agree" y luego en el botn "I confirm"
Ilustracin 8: Puede descargarlo por un instalador Web o descargar todo el instalador via http
5
Ilustracin 9: En este caso se descarga completamente
Ilustracin 10: Este es el instalador
6
Ilustracin 11: Datos del instalador
7
Instalacin
Ilustracin 12: Se descomprime el archivo .zip y se ejecuta setup.exe
Ilustracin 13: Pantalla de inicio de instalacin
8
Ilustracin 14: Al dar clic en Informacin del release
Ilustracin 15: Al dar clic en Planificacin previa a la instalacin
9
Ilustracin 16: Al dar clic en Informacin de la actualizacin
Ilustracin 17: Al dar clic en Instalar un producto, luego se presiona el botn Instalar nuevo
10
Ilustracin 18: Inicia la instalacin
Ilustracin 19: Leer y aceptar los trminos de la licencia
11
Ilustracin 20: Se selecciona instalacin Tpica
Ilustracin 21: Se selecciona Instalar DB2 Express-C en este sistema y guardar mis valores en un archivo de respuestas
12
Ilustracin 22: Directorio donde se instalar el gestor de base de datos
Ilustracin 23: Dejar por defecto que instale el servidor SSH
13
Ilustracin 24: Cuenta del administrador y la contrasea
Ilustracin 25: Instalar instancia DB2
14
Ilustracin 26: Resumen de la instalacin
Ilustracin 27: Se recomienda leer este resumen
15
Ilustracin 28: Instalacin en progreso
Ilustracin 29: Crea una instancia llamada SAMPLE
16
Ilustracin 30: Instalacin finalizada
Ilustracin 31: La pantalla de bienvenida
Cerramos esa pantalla de bienvenida. Empezaremos con lo instalado en el sistema operativo.
17
Iniciando e instalando un cliente grfico para IBM DB2
Ilustracin 32: En el men de Windows 10 aparece el grupo de IBM DB2
18
Ilustracin 33: Dando clic a Primeros pasos de DB2, obtenemos de nuevo la pantalla de bienvenida. Se procede a instalar IBM Data Studio
19
En https://www.ibm.com/developerworks/downloads/im/data/ es la web oficial de IBM Data Studio. Va a ser necesaria esta herramienta
para tener un entorno grfico en el cul se puedan hacer operaciones sobre la base de datos.
Ilustracin 34: Descargar IBM Data Studio
Ilustracin 35: Se va a requerir un usuario de IBM para descargar
20
Ilustracin 36: OJO! Es la versin 4.1.x
21
Ilustracin 37: Comprimido del IBM Data Studio versin 4.1.x
Ilustracin 38: Se ejecuta launchpad.exe
22
Ilustracin 39: Inicia la instalacin del IBM Data Studio 4.1.2
23
Ilustracin 40: Informacin de la versin
24
Ilustracin 41: Apuntes sobre esta versin 4.1.2
25
Ilustracin 42: El tipo de instalacin a realizar. Si tiene usuario administrador se recomienda el primero
26
Ilustracin 43: Primero se instala el "Installation Manager"
27
Ilustracin 44: Leer y aceptar los trminos de acuerdo de licencia
28
Ilustracin 45: Donde va a ubicar los archivos
29
Ilustracin 46: El resumen de la instalacin
Ilustracin 47: Descarga e instala
30
Ilustracin 48: El "Installation Manager" ha terminado de instalarse
31
Ilustracin 49: Pantalla de inicio del "Installation Manager
32
Ilustracin 50: Ahora se procede a instalar el IBM Data Studio 4.1.2
Ilustracin 51: Preparativos para instalar el IBM Data Studio
33
Ilustracin 52: Leer y aceptar la licencia
34
Ilustracin 53: Dnde sern instalados los archivos
35
Ilustracin 54: En este manual se cambi el sitio a C:\DataStudio
36
Ilustracin 55: Creacin de paquetes
37
Ilustracin 56: Idioma que se instala
38
Ilustracin 57: Los componentes a actualizar. En este manual se selecciona todo.
39
Ilustracin 58: Resumen de la instalacin
40
Ilustracin 59: Instalacin terminada
41
Iniciando con IBM Data Studio 4.1.2
Este software debe Ejecutar como Administrador
Ilustracin 60: Entrada del men de Windows 10 del IBM Data Studio
Ilustracin 61: Inicia el cliente
Ilustracin 62: Directorio de trabajo
42
Ilustracin 63: Pantalla inicial
43
Ilustracin 64: Al abrir el rbol en "localhost" muestra que existe la instancia SAMPLE pero est desconectado
Ilustracin 65: Dar clic botn derecho en SAMPLE y seleccionar "Hacer ping..."
44
Ilustracin 66: Se ponen los datos de usuario y contrasea, luego se da clic en Probar conexin
Ilustracin 67: Si todo marcha bien, se tiene un Ping satisfactorio!
Ilustracin 68: Ahora a conectarse
45
Ilustracin 69: Los objetos de la base SAMPLE
46
Crear un nuevo esquema grficamente
Ilustracin 70: Al dar clic en Esquemas
47
Ilustracin 71: Clic botn derecho y se selecciona "Crear esquema"
Ilustracin 72: Nombre del esquema
48
Ilustracin 73: Se pone un nombre
Ilustracin 74: Se crea el esquema
49
Crear tablas grficamente
Ilustracin 75: Dar clic botn derecho en "Tablas" y seleccionar la opcin "Crear tabla"
Ilustracin 76: Pide en que esquema estar esa tabla. En este manual se pondr en el esquema recien creado
50
Ilustracin 77: Nombre de la tabla
Ilustracin 78: En Columnas se da clic en el botn "Nueva"
Ilustracin 79: Se selecciona llave primaria en este caso y el tipo de dato INTEGER
51
Ilustracin 80: Para el Nombre el tipo de dato es Varchar
Ilustracin 81: Y se observa en "Tablas" que la tabla ha sido creada. Debe dar clic en "Refrescar"
Ilustracin 82: Al dar doble clic, se muestra la estructura de la tabla
52
Crear tablas con comandos SQL
Este sera el comando
CREATE TABLE prueba.pelicula (
codigo Integer PRIMARY KEY not null,
titulo varchar(40) NOT NULL,
presupuesto integer NOT NULL,
fechaproduccion date,
genero varchar(10),
duracion integer
)
Ilustracin 83: Vaya por la opcin de ingresar comandos SQL
Ilustracin 84: Crea la tabla con el comando SQL
53
Ilustracin 85: Se prueba efectivamente que la tabla est creada
Ilustracin 86: Y la estructura es la esperada
Otros ejemplos
CREATE TABLE Prueba.ciudad (
codigo integer PRIMARY KEY NOT NULL,
nombre varchar(255) NOT NULL
);
CREATE TABLE Prueba.colorojos (
codigo integer PRIMARY KEY NOT NULL,
nombre varchar(255) NOT NULL
);
CREATE TABLE Prueba.division (
codigo integer PRIMARY KEY NOT NULL,
nombre varchar(255) NOT NULL
);
CREATE TABLE Prueba.eps (
codigo integer PRIMARY KEY NOT NULL,
nombre varchar(255) NOT NULL
);
CREATE TABLE Prueba.estadocivil (
codigo integer PRIMARY KEY NOT NULL,
nombre varchar(255) NOT NULL
);
CREATE TABLE Prueba.fondopension (
codigo integer PRIMARY KEY NOT NULL,
nombre varchar(255) NOT NULL
);
CREATE TABLE Prueba.profesion (
codigo integer PRIMARY KEY NOT NULL,
nombre varchar(255) NOT NULL
);
54
CREATE TABLE Prueba.serie (
Codigo integer PRIMARY KEY NOT NULL,
Nombre varchar(30) NOT NULL
);
Ilustracin 87: Se crean el resto de tablas
55
Llave primaria compuesta y Llave fornea
Una serie de televisin tiene varios personajes, luego en la tabla de personajes la llave primaria son dos campos: el cdigo de la serie de
televisin y el cdigo del personaje. Adems el cdigo de la serie en la tabla personaje tiene relacin con la tabla de series. Este sera el
comando:
CREATE TABLE Prueba.personaje (
Serie integer NOT NULL REFERENCES Prueba.serie(Codigo),
Codigo integer NOT NULL,
Nombre varchar(50) NOT NULL,
PRIMARY KEY (Serie,Codigo)
);
Ilustracin 88: Ejecucin correcta del script
Otro ejemplo
CREATE TABLE Prueba.nominanorm (
Codigo integer PRIMARY KEY NOT NULL,
Nombre1 varchar(255) NOT NULL,
Nombre2 varchar(255) NOT NULL,
Apellido1 varchar(255) NOT NULL,
Apellido2 varchar(255) NOT NULL,
TipoSangre varchar(255) NOT NULL,
EstadoCivil integer NOT NULL REFERENCES Prueba.estadocivil(codigo),
Ciudad integer NOT NULL REFERENCES Prueba.ciudad(codigo),
Altura integer NOT NULL,
Peso integer NOT NULL,
FechaNace date NOT NULL,
NumeroCalzado integer NOT NULL,
ColorOjos integer NOT NULL REFERENCES Prueba.colorojos(codigo),
ZurdoDiestro varchar(255) NOT NULL,
EPS integer NOT NULL REFERENCES Prueba.eps(codigo),
FondoPensiones integer NOT NULL REFERENCES Prueba.fondopension(codigo),
Profesion integer NOT NULL REFERENCES Prueba.profesion(codigo),
Division integer NOT NULL REFERENCES Prueba.division(codigo)
);
56
Ilustracin 89: Script y ejecucin
Ilustracin 90: Tabla creada
57
Ilustracin 91: Estructura de la tabla creada
58
Insertar datos en una tabla usando todos los campos
insert into Prueba.ciudad(codigo,nombre) values (1,'Alcal');
Ilustracin 92: Insertar registro, luego presione ejecutar
Ilustracin 93: Consulte la tabla y presione vista de datos
59
Ilustracin 94: El registro insertado est en la tabla
O tambin
insert into Prueba.ciudad values (2,'Andaluca');
Ilustracin 95: Otra forma de insertar datos
60
Insertar datos en una tabla usando algunos campos
Este sera un ejemplo de instruccin
insert into Prueba.Pelicula (Codigo, Titulo, presupuesto) values(1, 'Thor: Ragnarok.', 150000000);
Ilustracin 96: Insertar registro pero de algunos campos
Ilustracin 97: Registro insertado
61
Insertar gran cantidad de datos en una tabla
Tiene los datos en un archivo CSV
Ilustracin 98: Archivo CSV de datos, separador es coma
Se hace uso de esta instruccin:
CALL SYSPROC.ADMIN_CMD('import from "C:\Users\engin\Desktop\ciudad.csv" OF DEL INSERT INTO prueba.ciudad(codigo, nombre)');
Y luego se importa
Ilustracin 99: Importacin del archivo CSV
62
Ilustracin 100: Importacin de los registros. Observe el caso de las tildes.
Para arreglar las tildes y s, debe convertir el archivo CSV en codificacin ANSI
Ilustracin 101: Convierta el archivo en codificacin ANSI
Se repite la misma operacin de importacin, sin variar nada
63
Ilustracin 102: Importacin correcta con las tildes
Otro ejemplo:
CALL SYSPROC.ADMIN_CMD('import from "C:\Users\engin\Desktop\nominanorm.csv" OF DEL INSERT INTO prueba.nominanorm(Codigo,
Nombre1, Nombre2, Apellido1, Apellido2, TipoSangre, EstadoCivil, Ciudad, Altura, Peso, FechaNace, NumeroCalzado, ColorOjos,
ZurdoDiestro, EPS, FondoPensiones, Profesion, Division)');
64
Consulta con SQL
select * from prueba.pelicula
Ilustracin 103: Consultar todos los campos
select codigo, titulo from prueba.pelicula
Ilustracin 104: Consultar algunos campos
65
Consultas con clculos
La siguiente consulta muestra la altura y el peso de la persona, y adicionalmente hace el clculo del ndice de masa corporal. Observe el
uso de cast para convertir valores enteros en valores de tipo float y poder hacer el clculo
select Nombre1, Nombre2, Altura, Peso,
cast(Peso as float)/(cast(Altura as float)/100*cast(Altura as float)/100) as IMC
from Prueba.nominanorm
Ilustracin 105: Calculo en la consulta
66
Borrado de registros
delete from Prueba.nominanorm where Codigo=4001;
Ilustracin 106: Registros originales
Ilustracin 107: Borrado del registro
67
Ilustracin 108: Nueva consulta en donde se muestra que el registro ha sido borrado
68
Actualizacin de registros
update Prueba.nominanorm set Nombre1='zzzzzz' where Codigo=4002;
Ilustracin 109: Registros originales
Ilustracin 110: Actualizacin del registro
69
Ilustracin 111: Se observa el registro actualizado
70
Alias en las columnas
El campo calculado se le pone un alias
select Nombre1, Nombre2, Altura, Peso,
cast(Peso as float)/(cast(Altura as float)/100*cast(Altura as float)/100) as IMC
from Prueba.nominanorm
Ilustracin 112: El campo calculado tiene un alias
71
Limitacin de nmero de resultados
Se hace uso de la palabra reservada LIMIT.
select Nombre1, Nombre2, Altura, Peso,
cast(Peso as float)/(cast(Altura as float)/100*cast(Altura as float)/100) as IMC
from Prueba.nominanorm
limit 4
Ilustracin 113: Se limita el nmero de registros a mostrar
Se puede hacer uso de LIMIT 0 para probar una consulta SQL sin necesidad que se ejecute. til si la base de datos es muy grande y no se
quiere traer datos.
72
Ilustracin 114: LIMIT 0 hace que se valide la sentencia sin procesarla
Un uso importante de LIMIT es para paginacin al mostrar la tpica pantalla de consulta. De esa forma se restringe la cantidad de
registros. LIMIT se combina con OFFSET, donde LIMIT es el nmero de registros a traer y OFFSET desde que registro.
select Codigo, Nombre1, Nombre2, Altura, Peso,
cast(Peso as float)/(cast(Altura as float)/100*cast(Altura as float)/100) as IMC
from Prueba.nominanorm
limit 4 offset 2
73
74
Clculos en consultas
select 3.1415926537 / 9.123 FROM SYSIBM.SYSDUMMY1
Ilustracin 115: Operacin matemtica directa
Ver ms en:
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0011043.html#r0011043__t1104
3-6
75
Cambiar nombre a una tabla
rename table Prueba.serie to series
Ilustracin 116: Renombrar una tabla
OJO! No es posible renombrar una tabla si esta tiene referencias, por ejemplo:
Ilustracin 117: Nominanorm tiene referencias de otras tablas, no puede renombrarse
76
Adicionar un campo a una tabla existente
alter table Prueba.series add column sinopsis varchar(50) default null;
Ilustracin 118: Adicionar una columna a una tabla
Ilustracin 119: Columna adicionada
77
Cambiar el nombre a una columna o campo
alter table Prueba.series rename column sinopsis to descripcion;
Ilustracin 120: Se renombra una columna
Ilustracin 121: Columna renombrada
78
Cambiar el tipo de dato a una columna o campo
alter table Prueba.series alter column descripcion set data type integer;
Ilustracin 122: Cambia el tipo de dato de una columna de una tabla
Ilustracin 123: Tipo de dato de la columna es cambiado
79
Eliminar una columna o campo
alter table Prueba.series drop column descripcion;
Ilustracin 124: Eliminando una columna
Ilustracin 125: Columna eliminada
80
Cambiar el formato de presentacin de la fecha
Ver: https://www.ibm.com/developerworks/data/library/techarticle/0211yip/0211yip3.html
http://www-01.ibm.com/support/docview.wss?uid=swg21647834
Ilustracin 126: Mostrar la fecha en otro formato
81
Hora y fecha actual
SELECT current date FROM sysibm.sysdummy1;
SELECT current time FROM sysibm.sysdummy1;
SELECT current timestamp FROM sysibm.sysdummy1;
Ilustracin 127: Fecha actual
Ilustracin 128: Hora actual
82
Ilustracin 129: Fecha y hora actual
83
Extraer ao, mes, da de una fecha
select fechanace, YEAR(fechanace), MONTH(fechanace), DAY(fechanace) FROM prueba.nominanorm;
Ilustracin 130: Extrae el ao, mes, da de un campo de fecha. Vista como texto.
Ilustracin 131: Extrae el ao, mes, da de un campo de fecha. Vista como tabla
84
Calcular la edad de una persona
select nombre1, fechanace,
integer(floor((current date - fechanace)/10000)) as edad
from prueba.nominanorm;
Ilustracin 132: Calcula la edad de una persona
85
Concatenar
Se hace uso de la funcin concat, pero esta recibe slo dos parmetros:
select concat(nombre1, nombre2) as nombre from prueba.nominanorm;
Ilustracin 133: Concatena los dos nombres
Si se requiere que exista un espacio entre ambos nombres, se debe usar la funcin de esta forma:
select concat( concat(nombre1, ' '), nombre2) as nombre from prueba.nominanorm;
Ilustracin 134: Concatena los nombres poniendo un espacio intermedio
86
Operador lgico
SELECT 56 IN (12, 45, 11, 23, 56, 78, 90, 11) FROM SYSIBM.SYSDUMMY1
No funciona con el IBM Data Studio porque no lo permite una conexin JDBC
Ilustracin 135: No es permitida esta operacin desde el cliente JDBC
Pero si lo hace directo, es posible
Ilustracin 136: Lnea de comandos directa con IBM DB2
87
Ilustracin 137: Se conecta a SAMPLE
Ilustracin 138: Usando la lnea de comandos (conexin directa a DB2) si es posible
88
Ilustracin 139: Tabla del AND y del OR
SELECT 5 > 4 FROM SYSIBM.SYSDUMMY1
Ilustracin 140: Comparativa
Operadores lgicos:
Operador
Mayor que >
Menor que <
Mayor o igual que >=
Menor o igual que <=
Diferente <>
Igual =
89
Combinando tablas
Tenemos la tabla series de televisin
Ilustracin 141: Tabla de series de televisin
Y la tabla de personajes
Ilustracin 142: Tabla de personajes por serie
Se requiere un informe que muestre el nombre de la serie y los personajes
SELECT Prueba.serie.Nombre, Prueba.personaje.Nombre
FROM Prueba.personaje, Prueba.serie
WHERE Prueba.personaje.Serie = Prueba.serie.Codigo;
90
Ilustracin 143: Traer el nombre de la serie junto con el personaje
91
Uso del JOIN
Hace lo mismo que la consulta anterior
SELECT Prueba.serie.Nombre, Prueba.personaje.Nombre
FROM Prueba.personaje
INNER JOIN Prueba.serie ON Prueba.personaje.Serie = Prueba.serie.Codigo;
Ilustracin 144: Uso del JOIN para traer el nombre de la serie y el personaje
92
Uso del NOT
Es el operador negacin en una sentencia lgica.
SELECT * from Prueba.serie where codigo = 1
Ilustracin 145: Consulta normal
93
SELECT * from Prueba.serie where not codigo = 1
Ilustracin 146: Uso del NOT
94
Uso del UNION
Une dos o ms consultas. Mismo nmero de campos y tipo de dato
select * from Prueba.colorojos union select * from Prueba.estadocivil
Ilustracin 147: Uso del UNION
95
Diferencia de UNION con UNION ALL
Modificando para que se muestre slo el cdigo, se obtiene
Ilustracin 148: UNION hace un DISTINCT de los datos retornados
No se repiten los cdigos. UNION hace un DISTINCT
Ahora se cambia la instruccin
96
Ilustracin 149: UNION ALL no hace DISTINCT
El UNION ALL trae la suma de ambas consultas sin importar que los datos se repitan
97
SubSelecciones
Una instruccin trae un resultado que es usado por otra seleccin. Ejemplo:
select Nombre1, Nombre2, Altura Muestre el nombre y altura de las personas con mayor
from Prueba.nominanorm altura
where Altura = (select max(Altura) from Prueba.nominanorm);
Ilustracin 150: Subseleccin
98