ADMINISTRACION

Introducción a las tareas de Administración

Modelos de ejecución del Firebird y sus diferencias

Alias, archivos y rutas

Configurando al Firebird

La arquitectura MGA

Detectando y evitando errores en las bases de datos

Verificando la salud de la Base de Datos

¿Cuál Sistema Operativo usar en el Servidor?

Un archivo de lotes para mantenimiento de la Base de Datos

Consejos para optimizar el rendimiento de las bases de datos

Forced Writes

La forma más fácil de cambiar un dominio

Usando ISQL.EXE para extraer los metadatos

Creando y usando tablas temporales

Averiguando el tamaño en bytes de una tabla

Usando dos servidores para aumentar la velocidad de las operaciones

Manteniendo la Base de Datos en buen estado

Pasos a seguir para actualizar la versión de Firebird

Evitando que el tamaño de la Base de Datos se incremente demasiado

Especificando el archivo FIREBIRD.MSG que queremos usar

¿Cómo las bases de datos de Firebird aumentan de tamaño?

Acelerando los SORT

Usando Firebird con procesadores multi-núcleo

Los archivos temporales del Firebird

Usando Firebird con WiFi

Usando Firebird durante 24/7/365

Precauciones al usar Firebird Embedded

Detectando y eliminando filas duplicadas

Conectando a una Base de Datos desde dos servidores

SuperServer: optimizando el tamaño del caché

Classic: optimizando el tamaño del caché

Optimizando SuperServer: poniendo toda la Base de Datos en la memoria caché

Entendiendo la memoria caché

Evitando confusiones con las fechas

45 formas de aumentar la velocidad de las bases de datos de Firebird

La forma correcta de realizar el SWEEP

Entendiendo a GSTAT (1)

Entendiendo a GSTAT (2)

Entendiendo a GSTAT (3)

Entendiendo a GSTAT (4)

BACKUP Y RESTORE

Restaurar un Backup a una versión más reciente del Firebird

¿Cómo saber si la Base de Datos está validada?

Cantidad máxima de modificaciones que puede tener un stored procedure

Backup y Restauración al mismo tiempo

La forma más rápida de hacer backup

Tamaño de la Base de Datos crece después de restaurarla

Backup y restore a una versión más nueva del Firebird

Los métodos para hacer backup

El ciclo BACKUP/RESTORE usando GBAK

Aumentando la velocidad de NBACKUP

Haciendo backups con GBAK (1)

Haciendo backups con GBAK (2)

Haciendo backups con GBAK (3)

Teniendo los backups en la nube

Copiando completamente o parcialmente una Base de Datos (1)

Copiando completamente o parcialmente una Base de Datos (2)

Backups locales y backups remotos

Viendo las estadísticas de un backup y de un restore

CONEXIONES

Conectar el Cliente al Servidor

Para saber cuales puertos está usando la computadora

Como saber si el Servidor se está comunicando con el Cliente

Como saber si alguien más está usando la Base de Datos

Problemas de conexión

Proteger a las bases de datos visibles en Internet

¿Cómo se cancela toda la conexión a una Base de Datos?

Limitando la cantidad de usuarios conectados

Sobre conexiones y desconexiones

Usando un «connection pool»

Conectándose con ADO a las bases de datos

Evitando que un usuario se conecte más de una vez a la Base de Datos

Evitando que un usuario se conecte más de una vez (método mejorado)

Cantidad de conexiones concurrentes

Conexión a través de Internet

¿Es seguro usar Servidor y embedded al mismo tiempo?

CONSULTAS a los metadatos

Consultas de generadores o secuencias

Nombres de los triggers

Nombres de las funciones externas que estás usando

Nombres de los stored procedures

Código fuente de una vista

Cantidad de columnas de una tabla

Nombre de la Primary Key de una tabla

Quien creó esta Base de Datos

Partner index description is not found

Detectando una consulta que está tardando mucho

Revisando las dependencias

Buscando las tablas en las cuales se encuentra una columna

Usuarios de nuestra Base de Datos

Derechos de los usuarios

Averiguando el tamaño de la Base de Datos

Un stored procedure para recrear todas las vistas

Una vista para verificar la transacción actual

Conociendo las sentencias en ejecución

Potenciando a DESCRIPTION

Para conocer la versión del Firebird que estás usando

Todas las columnas que se usan como Primary Key

Como saber si una tabla existe en una Base de Datos

Listando las funciones externas

DERECHOS DE ACCESO

Agregando, modificando y borrando usuarios

Otorgando permisos con EMS SQL Manager

Delegando el otorgamiento de derechos

Derechos que poseen los usuarios de la Base de Datos

Limitando los derechos de ejecución de los usuarios

DISEÑO DE BASES DE DATOS

El manejo de los impuestos

El manejo de los precios de costo y de venta

¿CHAR O VARCHAR? ¿Cuál es mejor?

Registrando los productos borrados

Ventas por caja

La problemática de las tablas maestras

La problemática de la modificación de datos y del borrado de filas

Conociendo la aplicación que insertó filas a una tabla

Curso: Introducción a las bases de datos

Usando IDENTIFICADORES y CÓDIGOS en nuestras tablas

Entendiendo COLLATE

Modificando los metadatos

Inferencia de datos

Usando columnas de tipo BLOB

Nombres de tablas con guión bajo

Guardando las columnas BLOB en tablas separadas

Determinando la precisión y la escala de una columna NUMERIC

Confusiones comunes al declarar una columna como NUMERIC o DECIMAL

¿Cuándo se actualiza la estructura de una tabla?

Utilizando columnas computadas

Algunos ejemplos de uso de las columnas computadas

Encriptando columnas de una tabla

Encontrando filas duplicadas

Entendiendo a los conjuntos de caracteres

Algo más sobre los conjuntos de caracteres

Funciones útiles con los conjuntos de caracteres

Máxima cantidad de columnas en una tabla

Almacenamiento de las columnas de tipo BLOB

Cambiando el tipo de una columna: de caracter a numérico y viceversa

¿Cómo Firebird trata a los cambios de dominio?

Ejemplos de dominios

Indices de múltiples columnas

Cambiando el CHARACTER SET de una columna

Los alias de las columnas

Usando un solo generador autoincremental como Primary Key para TODAS las tablas

Ejemplos de SELECTs para principiantes

Ejemplo Nº 001 – Mostrando un mensaje

Ejemplo Nº 002 – Mostrar una operación aritmética

Ejemplo Nº 003 – Mostrar un mensaje y una operación aritmética

Ejemplo Nº 004 – Mostrar todas las columnas de una fila

Ejemplo Nº 005 – Escribiendo en mayúsculas y en minúsculas

Ejemplo Nº 006 – Alias de las columnas

Ejemplo Nº 007 – Concatenando columnas

Ejemplo Nº 008 – Al concatenar las columnas el Firebird automáticamente convierte los tipos

Ejemplo Nº 009 – Obtener el nombre del usuario, la fecha y la hora

Ejemplo Nº 010 – Mostrando solamente las primeras filas de una tabla

Ejemplo Nº 011 – Para ver algunas filas después de saltearse las primeras

Ejemplo Nº 012 – La forma moderna de ver las primeras filas

Ejemplo Nº 013 – La forma moderna de ver las filas salteadas

Ejemplo Nº 014 – Usando la función EXTRACT() para obtener los componentes de una fecha

Ejemplo Nº 015 – Usando el CASE simple

Ejemplo Nº 016 – Usando el CASE de búsqueda

Ejemplo Nº 017 – Usando la cláusula WHERE para imponer condiciones

Ejemplo Nº 018 – Usando la cláusula WHERE con el operador AND

Ejemplo Nº 019 – Usando la cláusula WHERE con el operador OR

Ejemplo Nº 020 – Usando la cláusula WHERE con la palabra clave IN

Ejemplo Nº 021 – Usando la cláusula WHERE con el operador NOT y la palabra clave IN

Ejemplo Nº 022 – Condiciones más complejas en la cláusula WHERE

Ejemplo Nº 023 – Usando BETWEEN para acotar valores

Ejemplo Nº 024 – Usando la palabra clave IN en criterios numéricos

Ejemplo Nº 025 – Obteniendo filas que tienen valores nulos

Ejemplo Nº 026 – Obteniendo filas que no tienen valores nulos

Ejemplo Nº 027 – Usando comodines en las cadenas alfanuméricas (1)

Ejemplo Nº 028 – Usando comodines en las cadenas alfanuméricas (2)

Ejemplo Nº 029 – Usando comodines en las cadenas alfanuméricas (3)

Ejemplo Nº 030 – Usando comodines en las cadenas alfanuméricas (4)

Ejemplo Nº 031 – Usando comodines en las cadenas alfanuméricas (y 5)

Ejemplo Nº 032 – Mostrando los datos ordenados

Ejemplo Nº 033 – Mostrando los datos ordenados en forma descendente

Ejemplo Nº 034 – Ordenando por varias columnas

Ejemplo Nº 035 – Ordenando por varias columnas mezlando ascendentes y descendentes

Ejemplo Nº 036 – Combinando las cláusulas WHERE y ORDER BY

Ejemplo Nº 037 – Respondiendo preguntas

Ejemplo Nº 038 – Agrupando datos

Ejemplo Nº 039 – Agrupando datos y contándolos

Ejemplo Nº 040 – Poniendo condiciones filtros a los datos agrupados

Ejemplo Nº 041 – Sumando los valores de una columna

Ejemplo Nº 042 – Hallando el promedio de una columna

Ejemplo Nº 043 – Usar la función LIST() para obtener todos los valores que tiene una columna

Ejemplo Nº 044 – Obtener el valor máximo de una columna

Ejemplo Nº 045 – Obtener el valor mínimo de una columna

Ejemplo Nº 046 – Usando funciones (1)

Ejemplo Nº 047 – Usando funciones (2)

Ejemplo Nº 048 – Usando funciones (3)

Ejemplo Nº 049 – Usando DISTINCT

Ejemplo Nº 050 – Más sobre el uso de DISTINCT

Ejemplo Nº 051- ¿Cómo saber si una tabla tiene registros?

Ejemplo Nº 052 – Comparando strings

Ejemplos de SELECTs para intermedios

Introducción a los SELECTs para intermedios

Ejemplo Nº 001 – Usando INNER JOIN

Ejemplo Nº 002 – Usando INNER JOIN eficientemente

Ejemplo Nº 003 – Escribiendo varios INNER JOIN

Ejemplo Nº 004 – Usando un INNER JOIN para autoreferenciar una tabla

Ejemplo Nº 005 – Usando LEFT JOIN

Ejemplo Nº 006 – Usando LEFT JOIN e INNER JOIN

Ejemplo Nº 007 – Encontrando las filas de una tabla que no existen en otra tabla

Autorreferenciar una tabla. Algunos ejemplos

Listando todos los documentos de cada día

Usos de la función COUNT()

Usando DISTINCT y EXISTS() eficientemente

Usando CTE (Common Table Expression)

Otro ejemplo de CTE: ventas semanales

Convirtiendo filas en columnas

Facturas que vencen hoy, en 7 días, en 15 días, y en 30 días

Consultando datos que NO EXISTEN en una tabla

Consultas con columnas condicionales

Algunos ejemplos de funciones agregadas

Eligiendo entre LIKE y CONTAINING en los SELECT

Usando UNION para reemplazar condiciones complejas

Fechas aleatorias

ERRORES y sus soluciones

Connectivity error: Dynamic SQL error

INET/inet_error: read errno = 104

Reparación de una Base de Datos corrupta

Error 10054 en Windows y 104 en Linux

Unsupported on-disk structure for file xxx.FDB; found 32779, support 15

Valor duplicado en una Primary Key o en una Unique Key

Page 99999 is an orphan

Partner index description is not found

No se puede renombrar una Base de Datos

El archivo de LOG

Error 126

Data truncated

Error: Foreign key references are present for the record

FOR SELECT y tablas CTE

SQL error code = -104: Unexpected end of command

Multiple rows in singleton select

Lock conflict on no wait transaction. Deadlock.

Arithmetic overflow or division by zero has occurred.

Count of read-write columns does not equal count of values

Error en embedded Firebird

Error con Global Temporary Table

Error: database file appears corrupt

Error 10060. No se puede conectar al Servidor

Error 802 en una consulta

ERROR: Connection rejected by remote interface

Error: Too many contexts of Relation/Procedure/Views. Maximum allowed is 255

Error al ejecutar GSEC

Error SQLSTATE = HY000

Error 10061

Error de arithmetic overflow, division by zero, or string truncation en un SELECT

FIREBIRD 3

¿Por qué Firebird 3?

Los archivos de configuración del Firebird 3

Entendiendo a los plug-in del Firebird 3

Parametrizando el archivo DATABASES.CONF

Agregando el usuario SYSDBA en Firebird 3

El tipo de datos BOOLEAN en Firebird 3

¡¡¡Firebird 3 es más rápido que MySQL!!!

Instalando Firebird 3 (1)

Instalando Firebird 3 (2)

Desinstalando Firebird 3

Firebird 3: usando bases de datos anteriores

Firebird 3: verificando el restore antes del backup completo

Firebird 3: software de 32 bits y de 64 bits

Migrando bases de datos a Firebird 3

Usuarios y seguridad en Firebird 3 (1)

Usuarios y seguridad en Firebird 3 (2)

Usuarios y seguridad en Firebird 3 (3)

Usuarios y seguridad en Firebird 3 (4)

Usuarios y seguridad en Firebird 3 (5)

Usuarios y seguridad en Firebird 3 (6)

Cantidad de usuarios conectados a la Base de Datos

FORO

El foro del blog Firebird21. Puedes escribir tus preguntas aquí.

Funciones agregadas

La función AVG()

La función COUNT()

La función SUM()

La función MAX()

La función MIN()

La función LIST()

Usando un SELECT dentro de una función agregada

Usando un índice descendente

Un poco más sobre la función AVG()

Usando la función LIST() para concatenar filas

Funciones internas

ABS()

ACOS()

ASCII_CHAR()

ASCII_VAL()

ASIN()

ATAN()

ATAN2()

BIN_AND()

BIN_OR()

BIN_SHL()

BIN_SHR()

BIN_XOR()

BIT_LENGTH()

CAST()

CEIL(), CEILING()

CHAR_LENGTH(), CHARACTER_LENGTH()

COALESCE()

COS()

COSH()

COT()

DATEADD()

DATEDIFF()

DECODE()

EXP()

EXTRACT()

FLOOR()

GEN_ID()

GEN_UUID()

HASH()

IIF()

LEFT()

LN()

LOG()

LOG10()

LOWER()

LPAD()

MAXVALUE()

MOD()

NULLIF()

OCTET_LENGTH()

OVERLAY()

PI()

POSITION()

POWER()

RAND()

RDB$GET_CONTEXT()

RDB$SET_CONTEXT()

REPLACE()

REVERSE()

RIGHT()

ROUND()

RPAD()

SIGN()

SIN()

SINH()

SQRT()

SUBSTRING()

TAN()

TANH()

TRIM()

TRUNC()

UPPER()

UUID_TO_CHAR()

GENERAL

Modificaciones a los metadatos

Usando un SELECT dentro de una función agregada

The Firebird Book, segunda edición

Usando un disco RAM para aumentar la velocidad

Trazabilidad en el tiempo

La hoja de consulta rápida

Entendiendo ACID

Muchísimas gracias a IBSurgeon

Entendiendo la replicación

Eligiendo el tipo de dato numérico que se usará en una columna

Usando Numeric y Decimal

Más de 10.000 visitas a mi blog

Usando la restricción CHECK

Guardando y mostrando fotografías

Modificando los archivos del Firebird

El archivo HOSTS del Windows

Averiguando cuales son los puertos que están abiertos

Entendiendo a los scripts

¿Qué es la versión de ODS?

Registrando los cambios realizados a los datos de una tabla

Entendiendo los derechos de acceso

En cual carpeta tener las bases de datos

Otorgando permisos con EMS SQL Manager

Columnas computadas

SET AUTODDL ON

Actualización de saldos: cuando sí y cuando no

Borrando filas de detalle en Maestro/detalle

Verificando si la operación se realizó con éxito

Entendiendo las tablas autoreferenciadas

¿Columna numérica o alfanumérica?

Algunos comentarios sobre Firebird 3.0 Alpha1

Borrando filas cuando la condición depende de otra tabla

En memoria de James Martin

¿Se puede usar Dropbox con bases de datos?

Diseño de bases de datos. 1FN

Más ejemplos de tablas que no cumplen con la 1FN

Diseño de bases de datos. 2FN

Diseño de bases de datos. 3FN

Los eventos del Firebird

Más de 50.000 visitas a mi blog

Una técnica para mantener los saldos actualizados

Denormalizando las tablas

OT: Coursera

Aplicaciones multimoneda

Borrando filas cuando las condiciones están en otra tabla

Acceso remoto a la PC

¿Por qué elegiste Firebird?

Usando scripts para documentar la Base de Datos

Bases de datos shareware

Bases de datos shareware (2)

¡¡¡Más de 100.000 visitas a mi blog!!!

Bases de datos shareware (3)

Entendiendo «forced writes»

Mejorando el rendimiento de las bases de datos (1)

Mejorando el rendimiento de las bases de datos (2)

Mejorando el rendimiento de las bases de datos (3)

Usando Excel para leer bases de datos de Firebird

Usando MEGA para guardar archivos en la nube

Recordatorio sobre libros de Informática gratis

Usando el comando NET del Windows

Libros sobre Firebird en castellano

Libro electrónico para consultas con Firebird

Feliz Día del Trabajador

Atlassian. Trabajo en equipo

Discos SSD. Pueden aumentar la velocidad en un 300%

Pensando distinto

El foro del blog Firebird21

Creando un archivo batch para ejecutar a ISQL

Entendiendo las páginas de la Base de Datos

Eligiendo el tamaño adecuado de las páginas de la Base de Datos

Desarrollando aplicaciones inteligentes

Firebird 3: campaña de lanzamiento

Descargar gratis archivos de configuración optimizados

¡¡¡Más de 500.000 visitas a mi blog!!!

Usando Servidor y embedded en la misma aplicación

Usando Servidor y embedded en la misma aplicación (2)

Resultados posibles de una división de números escalados

Duplicar una tabla

Corrección a un artículo del blog

Aprendiendo o mejorando tu Firebird

¿Por qué las bases de datos de Firebird son tan seguras?

Una tabla para encontrar lo que necesitas

Planillas EXCEL dinámicas con Firebird (1)

Planillas EXCEL dinámicas con Firebird (2)

DSN de archivo con EXCEL

Optimizando un SELECT que compara columnas de la misma tabla

Optimizando un SELECT que compara columnas de la misma tabla (2)

Buscando texto eficientemente dentro de un string grande

Ventajas y desventajas de usar servidores virtuales con Firebird

¿Cuál es la mejor manera de almacenar una IP?

Firebird 3.0 Quick Start Guide

Completa documentación sobre Firebird 2.5 disponible

Arquitecturas de Firebird – Un repaso

INFORMÁTICA Y NEGOCIOS

Nueva categoría del blog: Informática y Negocios

Fuentes del dinero

Aplicaciones horizontales y aplicaciones verticales

El caballo de batalla

El producto mínimo viable

El feedback o retroalimentación

Los niveles de usuarios

Como decir NO diciendo SÍ

INSERTs y UPDATEs

Como evitar que una tabla tenga más de una fila

Insertando una gran cantidad de filas

Maestro/Detalle. Como averiguar el identificador del Maestro

Importar datos desde otra Base de Datos

Usando la restricción CHECK

Guardando y mostrando fotografías

Registrar los cambios a los precios de venta

Usando un script para insertar datos fijos

Insertar, modificar, o borrar filas en una Base de Datos externa

Como distinguir el tipo de UPDATE

CSV2GDB

Usando UPDATE OR INSERT

Generando códigos dependientes

La arquitectura MGA

Guardando fechas

Detectando modificaciones no autorizadas a nuestras tablas

¿Cómo insertar rápidamente filas en una tabla desde otra tabla?

Insertando valores por defecto

Tablas de validación

Usando EMS SQL Manager para copiar entre bases de datos

El generador autoincremental

El comando INSERT

Insertando datos en tablas externas

PHP: guardando un archivo en un campo BLOB

Eliminando códigos de control en las cadenas alfanuméricas

Capturando una excepción y continuando con el procesamiento

Insertando en una tabla filas de otra tabla

La forma correcta de hacer un UPDATE

Actualizando una tabla con datos de otra tabla

INSTALACIÓN

Como instalar Firebird dos (o más) veces en la misma computadora

Instalando manualmente al Firebird como una aplicación

Diferencias entre SuperServer, Classic y SuperClassic

El archivo HOSTS del Windows

Averiguando cuales son los puertos que están abiertos

¿En cuál carpeta tener las bases de datos?

Usando Oracle VM VirtualBox

Instalando Firebird silenciosamente

Averiguando la carpeta donde se instaló el Firebird

Averiguando cual es la arquitectura que tienes instalada

Instalando Firebird 3 (1)

Instalando Firebird 3 (2)

Desinstalando Firebird 3

Instalando Firebird en Ubuntu (Linux)

INTERMEDIOS

Entendiendo la recursividad en los SELECT

Entendiendo la cláusula GROUP BY: agrupando datos

La cláusula GROUP BY requiere estar ordenada

La cláusula HAVING: filtrando las filas agrupadas

¿Usar subconsultas o usar joins?

LAS TABLAS DEL SISTEMA

Las tablas RDB$ y MON$

NOTICIAS

Firebird 3.0 Alpha 1

Driver 4.1.5.0 para conectar a Firebird con ADO

Libros gratis sobre Informática durante dos días

Se liberó Firebird 2.5.3

Firebird 2.5.4 fue liberado

Firebird 3 y Firebird 4

Firebird 3.0 Beta 2 ya puede ser descargado

Versión 4.8.1.0 de Firebird ADO.NET

Liberado Firebird 2.5.5

Firebird 2.5 Language Reference, Beta Release 1

Firebird 3.0 Release 2 ya puede ser descargado

¡¡¡FIREBIRD 3.0 HA SIDO LIBERADO!!!

Firebird 2.5.6 ha sido liberado

Firebird 3.01. ya está disponible

Liberada la versión 2.5.7 de Firebird

Liberada la versión 3.0.2 de Firebird

Liberada la versión 3.0.3 de Firebird

Liberada la versión 3.0.4 de Firebird

Versión 2.5.9 liberada

Versión 3.0.7 liberada

OLAP y OLTP

Aplicaciones OLTP y aplicaciones OLAP

Tablas agregadas

Usando una cross-table

¿Por qué usar una cross-table?

Creando tablas agregadas e insertándoles datos

Creando y actualizando tablas agregadas de uso general

Otro ejemplo de uso de tablas agregadas

Ventas mensuales a cada cliente usando tablas agregadas

Ordenando las columnas variables de las tablas agregadas

PRIMARY KEYs, FOREIGN KEYs, UNIQUE KEYs e ÍNDICES

Mantenimiento de índices

Recreando los índices de las tablas

Selectividad de los índices

Los índices son positivos

Maestro/Detalle. Como averigual el identificador del Maestro

Uso de la Primary Key

Usando un PLAN

Usando índices correctos para aumentar la velocidad de las consultas

Entendiendo a las Foreign Keys

Usando un índice descendente

Agregando una Primary Key

Los índices de las restricciones

Claves primarias ¿simples o compuestas?

Usando índices en Firebird

Recreando índices y calculando estadísticas

Entendiendo los índices compuestos

Conceptos sobre las Foreign Keys

Indexando una columna computada

Usando expresiones regulares en la restricción CHECK

Indices ascendentes y descendentes

Indices simples y compuestos

PRINCIPIANTES

Entendiendo Cliente/Servidor

Entendiendo a las Bases de Datos

Entendiendo a los metadatos del programador

Entendiendo a las Primary Keys

Entendiendo el diseño de tablas

Entendiendo a los dominios

Entendiendo a las vistas

Entendiendo a los stored procedures

Entendiendo a los triggers

Entendiendo a las excepciones

Entendiendo a las variables de contexto

Comentando las líneas de los stored procedures y de los triggers

Entendiendo a las Foreign Keys

Entendiendo los derechos de acceso

¿En cuál carpeta tener las Bases de Datos?

Ejemplo Nº 001 – Mostrando un mensaje

Ejemplo Nº 002 – Mostrar una operación aritmética

Ejemplo Nº 003 – Mostrar un mensaje y una operación aritmética

Ejemplo Nº 004 – Mostrar todas las columnas de una fila

Ejemplo Nº 005 – Escribiendo en mayúsculas y en minúsculas

Ejemplo Nº 006 – Alias de las columnas

Ejemplo Nº 007 – Concatenando columnas

Ejemplo Nº 008 – Al concatenar las columnas el Firebird automáticamente convierte los tipos

Ejemplo Nº 009 – Obtener el nombre del usuario, la fecha y la hora

Ejemplo Nº 010 – Mostrando solamente las primeras filas de una tabla

Ejemplo Nº 011 – Para ver algunas filas después de saltearse las primeras

Ejemplo Nº 012 – La forma moderna de ver las primeras filas

Ejemplo Nº 013 – La forma moderna de ver las filas salteadas

Ejemplo Nº 014 – Usando la función EXTRACT() para obtener los componentes de una fecha

Ejemplo Nº 015 – Usando el CASE simple

Ejemplo Nº 016 – Usando el CASE de búsqueda

Ejemplo Nº 017 – Usando la cláusula WHERE para imponer condiciones

Ejemplo Nº 018 – Usando la cláusula WHERE con el operador AND

Ejemplo Nº 019 – Usando la cláusula WHERE con el operador OR

Ejemplo Nº 020 – Usando la cláusula WHERE con la palabra clave IN

Ejemplo Nº 021 – Usando la cláusula WHERE con el operador NOT y la palabra clave IN

Ejemplo Nº 022 – Condiciones más complejas en la cláusula WHERE

Ejemplo Nº 023 – Usando BETWEEN para acotar valores

Ejemplo Nº 024 – Usando la palabra clave IN en criterios numéricos

Ejemplo Nº 025 – Obteniendo filas que tienen valores nulos

Ejemplo Nº 026 – Obteniendo filas que no tienen valores nulos

Ejemplo Nº 027 – Usando comodines en las cadenas alfanuméricas (1)

Ejemplo Nº 028 – Usando comodines en las cadenas alfanuméricas (2)

Ejemplo Nº 029 – Usando comodines en las cadenas alfanuméricas (3)

Ejemplo Nº 030 – Usando comodines en las cadenas alfanuméricas (4)

Ejemplo Nº 031 – Usando comodines en las cadenas alfanuméricas (y 5)

Ejemplo Nº 032 – Mostrando los datos ordenados

Ejemplo Nº 033 – Mostrando los datos ordenados en forma descendente

Ejemplo Nº 034 – Ordenando por varias columnas

Ejemplo Nº 035 – Ordenando por varias columnas mezlando ascendentes y descendentes

Ejemplo Nº 036 – Combinando las cláusulas WHERE y ORDER BY

Ejemplo Nº 037 – Respondiendo preguntas

Ejemplo Nº 038 – Agrupando datos

Ejemplo Nº 039 – Agrupando datos y contándolos

Ejemplo Nº 040 – Poniendo condiciones filtros a los datos agrupados

Ejemplo Nº 041 – Sumando los valores de una columna

Ejemplo Nº 042 – Hallando el promedio de una columna

Ejemplo Nº 043 – Usar la función LIST() para obtener todos los valores que tiene una columna

Ejemplo Nº 044 – Obtener el valor máximo de una columna

Ejemplo Nº 045 – Obtener el valor mínimo de una columna

Ejemplo Nº 046 – Usando funciones (1)

Ejemplo Nº 047 – Usando funciones (2)

Ejemplo Nº 048 – Usando funciones (3)

Ejemplo Nº 049 – Usando DISTINCT

Ejemplo Nº 050 – Más sobre el uso de DISTINCT

Consideraciones a tener en cuenta al diseñar una Base de Datos

Entendiendo a las transacciones

Entendiendo la integridad referencial

Entendiendo subconsultas y tablas derivadas

El resultado de un SELECT es una tabla

Entendiendo gráficamente un SELECT simple

Poniendo ceros a la izquierda

Usando CASE en la cláusula WHERE

Entendiendo los índices de expresión

PROGRAMAS

Firebird Maestro

Firebird Data Wizard

Firebird Code Factory

Firebird PHP Generator

Firebird DataSync

GBAK Scheduler

DBInfo Database Information

CSV2GDB

Database Comparer de Clever Components

IBAnalyst de IBSurgeon

SQL_RENDIMIENTO. Verificando la velocidad de las operaciones

Usando Trace Manager

Más sobre Trace Manager

Usando FBClone para copiar datos

Herramientas gratuitas de IbSurgeon

Enterprise Architect – Modelado de Bases de Datos al más alto nivel

Usando Database Comparer en línea de comandos

Herramientas para Firebird de Devart

Firebird Stored Procedure Generator

CloudaIDE framework

PROTECCIÓN Y SEGURIDAD

¿Cómo evitar que se conecten a una Base de Datos?

Como proteger a los stored procedures, triggers y relaciones

Como evitar que una tabla tenga más de una fila

Base de Datos corrupta debido a un corte de luz

¿Qué es eso de BLR?

Restringiendo el acceso a las bases de datos

Aumentando la seguridad con ALIASES.CONF

Proteger a las bases de datos visibles en Internet

El archivo SECURITY2.FDB

Precaución para no dejar accesibles las bases de datos

Una técnica para dificultar el acceso no autorizado

Evitando que los mirones averigüen nuestro password en ISQL

Usando Zebedee con Firebird

Usando Zebedee con Firebird. Parte 2

Ejemplos del uso de Zebedee con Firebird

Inferencia de datos

Impidiendo la conexión a una Base de Datos

Atacando a una Base de Datos: SQL injection

Algo más sobre GRANT y ROLE

Protegiendo las bases de datos contra accesos no autorizados

PROYECTO DE REPLICACIÓN

Proyecto de replicación

Replicación 1. Pasos iniciales

Replicación 2. Un captura de pantalla

 REPLICACIÓN Y SHADOW

Creando una copia shadow

Entendiendo la replicación

SELECTs

Nunca usar la cláusula ORDER BY en una vista

¿Cómo saber si el Servidor se está comunicando con el Cliente?

¿Cómo saber si alguien más está usando la Base de Datos?

Nombres de todas las tablas y de todas las vistas

Nombres de todas las tablas

Nombres de todas las vistas

Consulta de usuarios

Nombres de todos los índices que tiene una tabla

Nombres de todas las restricciones que tiene una tabla

Nombres de todas las columnas de una tabla

Información completa sobre una columna

Consulta de generadores o secuencias

Nombres de los triggers

Nombres de las funciones externas que estás usando

Nombres de los stored procedures

Código fuente de una vista

Cantidad de columnas de una tabla

Nombre de la Primary Key de una tabla

Averiguando si hay datos duplicados

Como saber rapidamente la cantidad de filas que tiene una tabla

Consultas lentas, causas y soluciones

¿Quién creó esta Base de Datos?

Usando un SELECT dentro de una función agregada

Partner index description is not found

Usando un PLAN

Detectando una consulta que está tardando mucho

Usando índices correctos para aumentar la velocidad de las consultas

Numerando las filas de un SELECT

Importar datos desde otra Base de Datos

¿Por qué esta consulta a la Base de Datos está lenta?

Una forma rápida de escribir un SELECT

Usando subconsultas en expresiones

Usando un índice descendente

Usando cursores

Obteniendo el nombre del día de la semana

Generando códigos dependientes

Optimizando las consultas

Un truco para encontrar valores que pueden estar en varias columnas

Consultando con peso de las variables buscadas

Consultando sin importar mayúsculas ni acentos

Haciendo consultas que involucren a dos tablas de dos bases de datos diferentes

Usando un cursor con parámetros

Optimizando las subconsultas

Los predicados de comparación

Usando SIMILAR TO

Optimizando los JOIN

Cuando usar el predicado EXISTS()

¿Importa dónde se ponen las condiciones de un JOIN?

Paginando un SELECT

Mostrando las fechas con cualquier formato

Entendiendo el contenido de un PLAN

Un error de concepto en la cláusula WHERE

El problema con ASCII_CHAR(0)

Usando una subconsulta en un JOIN

Validando un e-mail

Usando una tabla autoreferenciada para averiguar números consecutivos faltantes

Obteniendo la fecha y la hora actuales

Validando que el contenido de un CHAR o VARCHAR sea numérico

Optimizando un SELECT al usar una tabla derivada

Poniendo los JOIN en el orden correcto

El problema con las consultas negativas

¿Por qué deben escribirse primero los INNER JOIN?

Evitando que el optimizador … optimice

Obteniendo las primeras o las últimas Facturas de cada Cliente

Usando recursividad con CTE

Creando una subconsulta que devuelva muchas columnas

Ejemplo de recursión (1). Filas salteadas

Ejemplo de recursión (2). Numerar filas

Ejemplo de recursión (3). Fechas consecutivas

Ejemplo de recursión (4). Actualizando filas recursivamente

Ejemplo de recursión (5). Saldos acumulados

Ejemplo de GROUP BY (1). Respondiendo a «todos» o «en cada uno»

Ejemplo de recursión (6). Repitiendo las filas

Ordenando una UNION

Entendiendo WITH LOCK

Obteniendo la primera fila de cada grupo

Verificando si un string es un número válido

Agregando filas adicionales (2)

Restando fechas que se encuentran en distintas filas

Restando fechas que se encuentran en distintas filas (2)

Precaución al usar la función SUM()

Hallando la primera palabra

Hallando la última palabra

Validando números escritos en distintos formatos

Ejemplo de recursión (7). Números faltantes en una serie

SQL

Entendiendo a los JOIN

Entendiendo a las UNION

Teoría de Conjuntos: Unión, Intersección, Diferencia

Tablas derivadas

INNER JOIN y OUTER JOIN

Los predicados existenciales

NATURAL JOIN y CROSS JOIN

Usando UNION para reemplazar condiciones complejas

Usando la tabla RDB$DATABASE para mostrar resultados

Usando alias para identificar a las tablas

Usando un SELECT en una columna computada

Agrupar y ordenar por nombres o por posiciones de las columnas

JOIN implícito y JOIN explícito

Relacionando dos tablas: la forma vieja y la forma nueva

Algunas preguntas y respuestas sobre el SQL de Firebird

Mostrando los resultados ordenados por cualquier criterio

STORED PROCEDURES y TRIGGERS

El uso de SET TERM

¿Qué es eso de BLR?

Nombres de los stored procedures

Entendiendo a los triggers

Entendiendo las excepciones

Maestro/Detalle: como averiguar el identificador del Maestro

Un stored procedure para conocer la cantidad de filas de todas las tablas

La doble validación

Un stored procedure para averiguar la cantidad de filas de todas las tablas

EXECUTE STATEMENT

Algo más sobre PLAN

Los triggers de la Base de Datos

Importar datos desde otra Base de Datos

Actualizando el valor de todos los generadores (secuencias)

Otro ejemplo de trigger de actualización

Registrar los cambios a los precios de venta

Usando subconsultas en expresiones

Insertar, modificar, o borrar filas en una Base de Datos externa

Agregando una Primary Key

Usando cursores

Generando códigos dependientes

¿Es conveniente usar stored procedures?

Registrando errores en una tabla de LOG

Como impedir que los usuarios modifiquen el valor de una columna

Similitudes y diferencias entre stored procedures y triggers

Otro ejemplo del uso de la tabla de LOG

Verificando la ejecución óptima de los stored procedures

Poniéndoles filas adicionales a las consultas

Otro ejemplo de filas adicionales en las consultas

Capturando excepciones

Insertando datos aleatorios

¿Cuáles errores no se pueden atrapar?

Capturando excepciones del usuario

Tablas sin una Primary Key

La notación camello

Stored procedures recursivos

Evitando tráfico innecesario en la red

Consultas a bases de datos externas

Un stored procedure para recrear todas las vistas

Usando EXECUTE STATEMENT con argumentos

Enmascarando los stored procedures

Un stored procedure para guardar la cantidad de registros de cada tabla

Un stored procedure para guardar la cantidad de registros de una tabla

Enviando y recibiendo una cantidad variable de parámetros en los stored procedures

Hallando los montos totales comprados cada mes

Usando un cursor con parámetros

Creando tablas dentro de un stored procedure o de un trigger

Creando tablas agregadas e insertándoles datos

Creando y actualizando tablas agregadas de uso general

Otro ejemplo de uso de tablas agregadas

Ventas mensuales a cada cliente usando tablas agregadas

Ordenando las columnas variables de las tablas agregadas

Un stored procedure para encriptar y desencriptar datos

Obteniendo el TIMESTAMP de la última actualización a una tabla

Escribiendo un stored procedure

Escribiendo un trigger

Usando variables en Firebird

Triggers para los SELECTs

Un stored procedure para otorgarle TODOS los derechos a un usuario

Usando un stored procedure como una función

Crear una tabla e insertarle filas DENTRO de un stored procedure

Hallando todas las ventas entre dos fechas dadas

Hallar los movimientos ocurridos entre dos fechas (otro método)

Crear una tabla por programa

Verificando si la operación en una Base de Datos externa tuvo éxito

Un stored procedure para borrar filas de cualquier tabla

Sentencias simples y sentencias compuestas

Un stored procedure para obtener el contenido de los dominios

Valores de las variables en un stored procedure

Error con IN AUTONOMOUS TRANSACTION

Un stored procedure para conocer el tamaño total de los BLOB

Un stored procedure que retorna una cantidad variable de valores

Escribiendo un trigger condicional

Agregando filas adicionales

Actualización de stored procedures y triggers

Stored procedure con cantidad de parámetros variables

Crear una función en Firebird 2.x que nos devuelva una fecha en cualquier  formato

Auditoría informática

TRANSACCIONES

Detectando aplicaciones y usuarios que mantienen las transacciones abiertas durante mucho tiempo

COMMIT y ROLLBACK en stored procedures y triggers

Terminar las transacciones de los SELECTs

Bloqueos mortales

Modos de bloqueo de las transacciones

La arquitectura MGA

Maestro/detalle en Visual FoxPro y Firebird

Transacciones optimistas y transacciones pesimistas

Entendiendo a los identificadores de las transacciones

Evitando conflictos cuando las transacciones superan el límite

Verificando que SET TRANSACTION no inicia una transacción

Entendiendo sweep y garbage collection

Un ejemplo de transacciones mal administradas

Usando transacciones con acceso exclusivo a tablas

Conociendo el programa que mantiene una transacción abierta

Teniendo FOR SELECT anidados

Algo más sobre transacciones optimistas y transacciones pesimistas

¿Por qué en Firebird es preferible que las transacciones sean optimistas?

Transacciones cabecera/detalle

La Next Transaction después de un ciclo backup/restore

Evitando conflictos en las transacciones

Evitando actualizaciones concurrentes del mismo registro

Presentación sobre transacciones de Alexey Kovyazin

3 preguntas sobre transacciones

Respuestas a las 3 preguntas sobre transacciones

Más preguntas sobre transacciones (2)

Respuestas a más preguntas sobre transacciones (2)

Más preguntas sobre transacciones (3)

Respuestas a más preguntas sobre transacciones (3)

Más preguntas sobre transacciones (4)

NO RECORD_VERSION es el defecto en el aislamiento READ COMMITTED

Respuestas a más preguntas sobre transacciones (4)

Más preguntas sobre transacciones (5)

Respuestas a más preguntas sobre transacciones (5)

¿Cómo funciona una transacción SNAPSHOT?

VISTAS

Nunca usar la cláusula ORDER BY en una vista

Uso de las vistas

Nombres de todas las tablas y de todas las vistas

Nombres de todas las vistas

Código fuente de una vista

¿Está la vista optimizada?

Un stored procedure para recrear todas las vistas

Una vista para verificar la transacción actual

Visual FoxPro y Firebird

¿Cómo enviar parámetros a un stored procedure?

Registrar los errores en un archivo de texto

¿Cómo saber cuales tablas tiene una Base de Datos?

¿Cómo saber si te puedes conectar a una Base de Datos?

Tratamiento de columnas NULL

Usando la función COALESCE() o la función ISNULL()

Usando EXECUTE BLOCK

Guardando y mostrando fotografías

Aplicaciones portables con Visual FoxPro y Firebird

Manejo de variables en VFP y en Firebird

Maestro/detalle en Visual FoxPro y Firebird

Usando los eventos de Firebird en Visual FoxPro

Ejemplo del uso de eventos con Visual FoxPro

¿Por qué no se pueden crear DLLs en VFP para usar con Firebird?

Enmascarando los stored procedures

Ejecutando un script desde Visual FoxPro

Un formulario para mostrar la transacción actual

Conectándose con ADO a las bases de datos

Obteniendo los nombres de todos los usuarios

Guardando y leyendo una columna de tipo TIMESTAMP en VFP

Guardando y recuperando fotografías y vídeos

Enviando una consulta a EXCEL