Universidad Santiago de Cali Bases de Datos Autor: Rafael Alberto Moreno Parra Comandos en IBM DB2 Contenido Descarga ..
Views 173 Downloads 3 File size 5MB
Universidad Santiago de Cali Bases de Datos Autor: Rafael Alberto Moreno Parra Comandos en IBM DB2 Contenido Descarga ................................................................................................................................................................................................................................................................. 2 Instalación .............................................................................................................................................................................................................................................................. 8 Iniciando con IBM Data Studio 4.1.2 ......................................................................................................................................................................................................... 42 Crear un nuevo esquema gráficamente ................................................................................................................................................................................................... 47 Crear tablas gráficamente ............................................................................................................................................................................................................................. 50 Crear tablas con comandos SQL.................................................................................................................................................................................................................. 53 Llave primaria compuesta y Llave foránea.............................................................................................................................................................................................. 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 cálculos .................................................................................................................................................................................................................................... 66 Borrado de registros ........................................................................................................................................................................................................................................ 67 Actualización de registros .............................................................................................................................................................................................................................. 69 Alias en las columnas ...................................................................................................................................................................................................................................... 71 Limitación de número de resultados .......................................................................................................................................................................................................... 72 Cálculos 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 presentación de la fecha .................................................................................................................................................................................. 81 Hora y fecha actual........................................................................................................................................................................................................................................... 82 Extraer año, mes, día de una fecha ........................................................................................................................................................................................................... 84 Calcular la edad de una persona ................................................................................................................................................................................................................. 85 Concatenar ........................................................................................................................................................................................................................................................... 86 Operador lógico .................................................................................................................................................................................................................................................. 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 Diríjase al sitio https://www.ibm.com/analytics/us/en/technology/db2/
y de clic en “Try DB2”
Ilustración 1: Sitio oficial de IBM DB2 en https://www.ibm.com/analytics/us/en/technology/db2/
Ilustración 2: Dar clic en "Browse DB2 trials"
2
Ilustración 3: Se trabajará con IBM DB2 Express-C
Ilustración 4: De clic en "Proceed without an IBM ID"
3
Ilustración 5: Seleccione el instalador según el sistema operativo donde instalará el gestor
Ilustración 6: Datos pedidos por IBM
4
Ilustración 7: De clic en "I agree" y luego en el botón "I confirm"
Ilustración 8: Puede descargarlo por un instalador Web o descargar todo el instalador via http
5
Ilustración 9: En este caso se descarga completamente
Ilustración 10: Este es el instalador
6
Ilustración 11: Datos del instalador
7
Instalación
Ilustración 12: Se descomprime el archivo .zip y se ejecuta setup.exe
Ilustración 13: Pantalla de inicio de instalación
8
Ilustración 14: Al dar clic en “Información del release”
Ilustración 15: Al dar clic en “Planificación previa a la instalación”
9
Ilustración 16: Al dar clic en “Información de la actualización”
Ilustración 17: Al dar clic en “Instalar un producto”, luego se presiona el botón “Instalar nuevo”
10
Ilustración 18: Inicia la instalación
Ilustración 19: Leer y aceptar los términos de la licencia
11
Ilustración 20: Se selecciona instalación “Típica”
Ilustración 21: Se selecciona “Instalar DB2 Express-C en este sistema y guardar mis valores en un archivo de respuestas”
12
Ilustración 22: Directorio donde se instalará el gestor de base de datos
Ilustración 23: Dejar por defecto que instale el servidor SSH
13
Ilustración 24: Cuenta del administrador y la contraseña
Ilustración 25: Instalar instancia DB2
14
Ilustración 26: Resumen de la instalación
Ilustración 27: Se recomienda leer este resumen
15
Ilustración 28: Instalación en progreso
Ilustración 29: Crea una instancia llamada SAMPLE
16
Ilustración 30: Instalación finalizada
Ilustración 31: La pantalla de bienvenida
Cerramos esa pantalla de bienvenida. Empezaremos con lo instalado en el sistema operativo.
17
Iniciando e instalando un cliente gráfico para IBM DB2
Ilustración 32: En el menú de Windows 10 aparece el grupo de IBM DB2
18
Ilustración 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 gráfico en el cuál se puedan hacer operaciones sobre la base de datos.
Ilustración 34: Descargar IBM Data Studio
Ilustración 35: Se va a requerir un usuario de IBM para descargar
20
Ilustración 36: ¡OJO! Es la versión 4.1.x
21
Ilustración 37: Comprimido del IBM Data Studio versión 4.1.x
Ilustración 38: Se ejecuta launchpad.exe
22
Ilustración 39: Inicia la instalación del IBM Data Studio 4.1.2
23
Ilustración 40: Información de la versión
24
Ilustración 41: Apuntes sobre esta versión 4.1.2
25
Ilustración 42: El tipo de instalación a realizar. Si tiene usuario administrador se recomienda el primero
26
Ilustración 43: Primero se instala el "Installation Manager"
27
Ilustración 44: Leer y aceptar los términos de acuerdo de licencia
28
Ilustración 45: Donde va a ubicar los archivos
29
Ilustración 46: El resumen de la instalación
Ilustración 47: Descarga e instala
30
Ilustración 48: El "Installation Manager" ha terminado de instalarse
31
Ilustración 49: Pantalla de inicio del "Installation Manager
32
Ilustración 50: Ahora se procede a instalar el IBM Data Studio 4.1.2
Ilustración 51: Preparativos para instalar el IBM Data Studio
33
Ilustración 52: Leer y aceptar la licencia
34
Ilustración 53: Dónde serán instalados los archivos
35
Ilustración 54: En este manual se cambió el sitio a C:\DataStudio
36
Ilustración 55: Creación de paquetes
37
Ilustración 56: Idioma que se instala
38
Ilustración 57: Los componentes a actualizar. En este manual se selecciona todo.
39
Ilustración 58: Resumen de la instalación
40
Ilustración 59: Instalación terminada
41
Iniciando con IBM Data Studio 4.1.2 Este software debe “Ejecutar como Administrador”
Ilustración 60: Entrada del menú de Windows 10 del IBM Data Studio
Ilustración 61: Inicia el cliente
Ilustración 62: Directorio de trabajo
42
Ilustración 63: Pantalla inicial
43
Ilustración 64: Al abrir el árbol en "localhost" muestra que existe la instancia SAMPLE pero está desconectado
Ilustración 65: Dar clic botón derecho en SAMPLE y seleccionar "Hacer ping..."
44
Ilustración 66: Se ponen los datos de usuario y contraseña, luego se da clic en “Probar conexión”
Ilustración 67: Si todo marcha bien, se tiene un ¡Ping satisfactorio!
Ilustración 68: Ahora a conectarse
45
Ilustración 69: Los objetos de la base SAMPLE
46
Crear un nuevo esquema gráficamente
Ilustración 70: Al dar clic en Esquemas
47
Ilustración 71: Clic botón derecho y se selecciona "Crear esquema"
Ilustración 72: Nombre del esquema
48
Ilustración 73: Se pone un nombre
Ilustración 74: Se crea el esquema
49
Crear tablas gráficamente
Ilustración 75: Dar clic botón derecho en "Tablas" y seleccionar la opción "Crear tabla"
Ilustración 76: Pide en que esquema estará esa tabla. En este manual se pondrá en el esquema recien creado
50
Ilustración 77: Nombre de la tabla
Ilustración 78: En Columnas se da clic en el botón "Nueva"
Ilustración 79: Se selecciona llave primaria en este caso y el tipo de dato INTEGER
51
Ilustración 80: Para el Nombre el tipo de dato es Varchar
Ilustración 81: Y se observa en "Tablas" que la tabla ha sido creada. Debe dar clic en "Refrescar"
Ilustración 82: Al dar doble clic, se muestra la estructura de la tabla
52
Crear tablas con comandos SQL Este sería 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 )
Ilustración 83: Vaya por la opción de ingresar comandos SQL
Ilustración 84: Crea la tabla con el comando SQL
53
Ilustración 85: Se prueba efectivamente que la tabla está creada
Ilustración 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 );
Ilustración 87: Se crean el resto de tablas
55
Llave primaria compuesta y Llave foránea Una serie de televisión tiene varios personajes, luego en la tabla de personajes la llave primaria son dos campos: el código de la serie de televisión y el código del personaje. Además el código de la serie en la tabla personaje tiene relación con la tabla de series. Este sería 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) );
Ilustración 88: Ejecución 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
Ilustración 89: Script y ejecución
Ilustración 90: Tabla creada
57
Ilustración 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á');
Ilustración 92: Insertar registro, luego presione ejecutar
Ilustración 93: Consulte la tabla y presione vista de datos
59
Ilustración 94: El registro insertado está en la tabla
O también insert into Prueba.ciudad values (2,'Andalucía');
Ilustración 95: Otra forma de insertar datos
60
Insertar datos en una tabla usando algunos campos Este sería un ejemplo de instrucción insert into Prueba.Pelicula (Codigo, Titulo, presupuesto) values(1, 'Thor: Ragnarok.', 150000000);
Ilustración 96: Insertar registro pero de algunos campos
Ilustración 97: Registro insertado
61
Insertar gran cantidad de datos en una tabla Tiene los datos en un archivo CSV
Ilustración 98: Archivo CSV de datos, separador es coma
Se hace uso de esta instrucción: CALL SYSPROC.ADMIN_CMD('import from "C:\Users\engin\Desktop\ciudad.csv" OF DEL INSERT INTO prueba.ciudad(codigo, nombre)'); Y luego se importa
Ilustración 99: Importación del archivo CSV
62
Ilustración 100: Importación de los registros. Observe el caso de las tildes.
Para arreglar las tildes y Ñs, debe convertir el archivo CSV en codificación ANSI
Ilustración 101: Convierta el archivo en codificación ANSI
Se repite la misma operación de importación, sin variar nada
63
Ilustración 102: Importación 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
Ilustración 103: Consultar todos los campos
O select codigo, titulo from prueba.pelicula
Ilustración 104: Consultar algunos campos
65
Consultas con cálculos La siguiente consulta muestra la altura y el peso de la persona, y adicionalmente hace el cálculo del índice de masa corporal. Observe el uso de “cast” para convertir valores enteros en valores de tipo float y poder hacer el cálculo
select Nombre1, Nombre2, Altura, Peso, cast(Peso as float)/(cast(Altura as float)/100*cast(Altura as float)/100) as IMC from Prueba.nominanorm
Ilustración 105: Calculo en la consulta
66
Borrado de registros delete from Prueba.nominanorm where Codigo=4001;
Ilustración 106: Registros originales
Ilustración 107: Borrado del registro
67
Ilustración 108: Nueva consulta en donde se muestra que el registro ha sido borrado
68
Actualización de registros update Prueba.nominanorm set Nombre1='zzzzzz' where Codigo=4002;
Ilustración 109: Registros originales
Ilustración 110: Actualización del registro
69
Ilustración 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
Ilustración 112: El campo calculado tiene un alias
71
Limitación de número 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
Ilustración 113: Se limita el número 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
Ilustración 114: LIMIT 0 hace que se valide la sentencia sin procesarla
Un uso importante de LIMIT es para paginación al mostrar la típica pantalla de consulta. De esa forma se restringe la cantidad de registros. LIMIT se combina con OFFSET, donde LIMIT es el número 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
Cálculos en consultas select 3.1415926537 / 9.123 FROM SYSIBM.SYSDUMMY1
Ilustración 115: Operación matemática directa
Ver más 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
Ilustración 116: Renombrar una tabla
¡OJO! No es posible renombrar una tabla si esta tiene referencias, por ejemplo:
Ilustración 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;
Ilustración 118: Adicionar una columna a una tabla
Ilustración 119: Columna adicionada
77
Cambiar el nombre a una columna o campo alter table Prueba.series rename column sinopsis to descripcion;
Ilustración 120: Se renombra una columna
Ilustración 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;
Ilustración 122: Cambia el tipo de dato de una columna de una tabla
Ilustración 123: Tipo de dato de la columna es cambiado
79
Eliminar una columna o campo alter table Prueba.series drop column descripcion;
Ilustración 124: Eliminando una columna
Ilustración 125: Columna eliminada
80
Cambiar el formato de presentación 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
Ilustración 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;
Ilustración 127: Fecha actual
Ilustración 128: Hora actual
82
Ilustración 129: Fecha y hora actual
83
Extraer año, mes, día de una fecha select fechanace, YEAR(fechanace), MONTH(fechanace), DAY(fechanace) FROM prueba.nominanorm;
Ilustración 130: Extrae el año, mes, día de un campo de fecha. Vista como texto.
Ilustración 131: Extrae el año, mes, día 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;
Ilustración 132: Calcula la edad de una persona
85
Concatenar Se hace uso de la función “concat”, pero esta recibe sólo dos parámetros: select concat(nombre1, nombre2) as nombre from prueba.nominanorm;
Ilustración 133: Concatena los dos nombres
Si se requiere que exista un espacio entre ambos nombres, se debe usar la función de esta forma: select concat( concat(nombre1, ' '), nombre2) as nombre from prueba.nominanorm;
Ilustración 134: Concatena los nombres poniendo un espacio intermedio
86
Operador lógico 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 conexión JDBC
Ilustración 135: No es permitida esta operación desde el cliente JDBC
Pero si lo hace directo, es posible
Ilustración 136: Línea de comandos directa con IBM DB2
87
Ilustración 137: Se conecta a SAMPLE
Ilustración 138: Usando la línea de comandos (conexión directa a DB2) si es posible
88
Ilustración 139: Tabla del AND y del OR
SELECT 5 > 4 FROM SYSIBM.SYSDUMMY1
Ilustración 140: Comparativa
Operadores lógicos: Operador Mayor que Menor que Mayor o igual que Menor o igual que Diferente Igual
> < >=