Sí, ya se escuchan a lo lejo las Cofradías preparando sus salidas y la Semana Grande ya está aquí. ¡Enhorabuena a quien pueda disfrutarla completamente!. Yo en mi caso espero descansar al menos el Jueves y el Viernes, porque Lunes y Martes tengo programada una visita de un colega ingeniero lituano, especialista en PBX, para repasar toda nuestra configuración para la migración que se producirá en las próximas semanas, desde la Avaya Definity actual a un modelo VoIP superior. Nos vemos.
Blog de José Gaitán: reflexiones sobre Analytics, Big Data, Business Intelligence, Data Science, Software Development, Databases, Data Engineering...y mucho más.
Well done!
¡Conseguido!. ¡El Proyecto de Migración al nuevo DataCenter ha sido todo un éxito!. Somos los primeros integrantes del Grupo que "transaccionamos" desde Dublín (hoy ya nada más poner en producción el sistema ya han empezado nuestros Agentes a hacer operaciones...). A nivel global funciona todo correctamente, mañana supongo que serán necesarios ciertos retoques a nivel de aplicativo en el BackOffice pero ya estamos en marcha... ¡Gracias a todos los que han aportado su granito de arena para que sea así!. Nos vemos.
En Stand-by ...
Sí, hoy estamos en stand-by en la compañía. Por razones de fuerza mayor (básicamente porque ciertos backups y restores no se pueden hacer en cuestión de horas, sino que llevan al menos un día...) hoy no "transaccionaremos". Creo que mañana podríamos retomar la actividad si todo va muy bien, al menos personalmente voy a intentar que sea así. Como siempre agradecimiento por adelantado al resto de colegas del equipo por su magnífico trabajo. Seguro que todo va a funcionar muchísimo mejor desde las próximas horas. ¡Que así sea!.
Migración de nuestros sistemas
Pues eso, que estamos finalizando en nuestro departamento IT el testing para asegurar una migración exitosa de todos nuestros servidores (Webs, Bases de Datos, Aplicaciones, etc) desde el Datacenter de Milán "en dirección" a Dublín. Hemos tenido que aumentar la "plantilla" de compañeros únicamente para este proyecto, dada la importancia que tiene que la próxima semana demos el OK definitivo para proceder a la puesta en producción desde la nueva ubicación, y poder decir ¡Ciao Italia, Hello Ireland!. Están siendo unos días intensos, con ajustes en configuraciones necesarias en muchos detalles y con los cinco sentidos puestos en este Proyecto, pero queremos que sea un hito y ser los primeros del grupo en conseguir "transaccionar" desde el nuevo DataCenter. Os cuento la semana que viene. Nos vemos.
Mis hijos aprenden SQL y Oracle (5)
Hoy toca algo más "serio" en el curso. Hablaremos del valor null, y de campos que pueden o no contener dicho valor. Podríamos referirnos a este valor como "vacío", pero no como cadena de caracteres vacía sino como "nada" ó "sin valor". Por tanto el motor de base de datos no coloca en ese campo ningún valor de ninguno de los tipos de datos que vimos: simplemente no hay nada. ¿Pero cómo insertar, manejar, controlar, etc estos valores?. No es fácil, y de hecho es uno de las causas más comunes de ciertos problemas de programación en Bases de Datos. Vamos con ello, y para eso vamos a crear una nueva tabla (dejamos los "juguetes" para más tarde, jajajaja), por ejemplo ésta:
create table peliculas(titulo varchar2(100) not null,
genero varchar2(25) not null,
sinopsis varchar2(300),
año number(4,0) null
);
Vamos a fijarnos bien en la definición de la tabla Peliculas: los campos "titulo" y "genero" NO admiten valores null (véase la construcción "not null" tras la declaración), mientras que sinopsis y año SÍ (el segundo porque así lo define explícitamente, el primero porque al no declarar nada el valor por defecto es que un campo sí pueda tener valores nulos). Es decir, si ejecutamos los siguientes comandos funcionarán correctamente:
insert into peliculas(titulo,genero,sinopsis,año) values ('Casablanca','Histórica','Romántica historia con final no muy feliz ',null);
insert into peliculas(titulo,genero,sinopsis,año) values ('Cars','Infantil',null,null);
insert into peliculas(titulo,genero) values ('Seven','Thriller');
insert into peliculas(titulo,genero) values ('Seven','Thriller');
Es importante ver que si vamos a asignar un valor null a un campo, opcionalmente podemos no incluirlo en la sentencia, como se aprecia en el caso de la inserción del film "Seven", donde se incluyen sólo en el "insert" los campos que obligatoriamente deben tener algún valor. Chicos, os dejo como ejercicio intentar insertar valores nulos en registros en alguno de los campos que no los admiten. Como se espera, el motor de base de datos os devolverá un error similar a éste:
Error SQL: ORA-01400: cannot insert NULL into ("SYSTEM"."PELICULAS"."nombre_campo")
01400. 00000 - "cannot insert NULL into (%s)"
01400. 00000 - "cannot insert NULL into (%s)"
Los campos "null" contienen un valor "vacío", pero sigue siendo un valor, por tanto lo podremos incluir en nuestras consultas como un valor más. Un ejemplo sería localizar las películas "sin año conocido de realización" (¿sería posible? Sí para nuestro propósito educativo, jejejejeje...):
select * from peliculas where año is null;
Mis hijos aprenden SQL y Oracle (4)
Chicos, ahora es el turno de aprender a modificar datos en un registro: usaremos el comando update. Por ejemplo si os habéis equivocado al asignar un color a un juguete (Playmobil en este caso...) debeis ejecutar la siguiente sentencia si el nuevo color es el rojo:
update juguetes set color='Rojo' where nombre='Playmobil';Pueden actualizarse varios campos en el mismo registro (o registros), sin más que separarlos por comas tras la palabra set. Como siempre chicos, un ejemplo es lo mejor:
update juguetes set color='Rojo',año=2003 where nombre='Playmobil';
Como habéis visto la sintaxis es sencilla: update (nombre de tabla) set (campos a modificar separados por coma, constando cada uno de ellos con la sintaxis "nombre_campo"="nuevo valor"). Opcionalmente como siempre si se usa la cláusula where significará que las actualizaciones se harán sobre los registros que cumplan la/s condición/es (ver mi post anterior para más detalles sobre la cláusula where). En caso contrario los cambios se harán efectivos a toda la tabla.
¡Una pregunta papi!...¿cómo ponemos anotaciones o explicaciones entre los comandos SQL?. ¡Buena pregunta chicos!. Es muy fácil: hay que escribir dos guiones (--) y a continuación lo que queráis, que obviamente no se ejecutará. Un ejemplo sería:
select * from juguetes; --listado de la tabla juguetes
Si queréis poner comentarios que ocupen varias líneas quizás os sea más fácil usar los caracteres delimitadores, que son /* para el comienzo y */ para el final. ¿Queréis un ejemplo?. ¡Allá va!:
select nombre,color from juguetes where año>=2002 and año<=2005;
/*Listado de juguetes:
Entre los años 2002 y 2005 */
Y ahora a "hacerle cosquillas" a vuestra tabla, cambiando todo lo que queráis usando update, y como consejo general: incluid comentarios donde sea necesario para luego ser capaces de recordar qué queríais hacer en vuestro código. ¡Esto es una regla de oro para los programadores!. Pero como siempre, si son pocos o muchos los comentarios que escribáis, o si son innecesarios porque se ve claramente su semántica en el código, no los incluyáis. Sólo si son útiles para vosotros o para alguien que en un futuro revise vuestro código: eso sí es una buena forma de hacer las cosas. ¡Hasta el próximo post!.
Suscribirse a:
Entradas
(
Atom
)