ADMINISTRACION
Introducción a las tareas de Administración
Modelos de ejecución del Firebird y sus diferencias
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
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?
Usando Firebird con procesadores multi-núcleo
Los archivos temporales del Firebird
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é
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
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
El ciclo BACKUP/RESTORE usando GBAK
Aumentando la velocidad de NBACKUP
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
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
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
¿Es seguro usar Servidor y embedded al mismo tiempo?
CONSULTAS a los metadatos
Consultas de generadores o secuencias
Nombres de las funciones externas que estás usando
Nombres de los stored procedures
Cantidad de columnas de una tabla
Nombre de la Primary Key de una tabla
Partner index description is not found
Detectando una consulta que está tardando mucho
Buscando las tablas en las cuales se encuentra una columna
Usuarios de nuestra Base de Datos
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
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 precios de costo y de venta
¿CHAR O VARCHAR? ¿Cuál es mejor?
Registrando los productos borrados
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
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
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?
Cambiando el CHARACTER SET de una columna
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
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
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
Partner index description is not found
No se puede renombrar una Base de Datos
Error: Foreign key references are present for the record
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 con Global Temporary Table
Error: database file appears corrupt
Error 10060. No se puede conectar al Servidor
ERROR: Connection rejected by remote interface
Error: Too many contexts of Relation/Procedure/Views. Maximum allowed is 255
Error de arithmetic overflow, division by zero, or string truncation en un SELECT
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!!!
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
Usando un SELECT dentro de una función agregada
Un poco más sobre la función AVG()
Usando la función LIST() para concatenar filas
Funciones internas
CHAR_LENGTH(), CHARACTER_LENGTH()
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
Muchísimas gracias a IBSurgeon
Eligiendo el tipo de dato numérico que se usará en una columna
Más de 10.000 visitas a mi blog
Guardando y mostrando fotografías
Modificando los archivos del Firebird
Averiguando cuales son los puertos que están abiertos
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
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
¿Se puede usar Dropbox con bases de datos?
Más ejemplos de tablas que no cumplen con la 1FN
Más de 50.000 visitas a mi blog
Una técnica para mantener los saldos actualizados
Borrando filas cuando las condiciones están en otra tabla
Usando scripts para documentar la Base de Datos
¡¡¡Más de 100.000 visitas a mi blog!!!
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
Discos SSD. Pueden aumentar la velocidad en un 300%
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
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)
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
Aplicaciones horizontales y aplicaciones verticales
El feedback o retroalimentación
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
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
Generando códigos dependientes
Detectando modificaciones no autorizadas a nuestras tablas
¿Cómo insertar rápidamente filas en una tabla desde otra tabla?
Insertando valores por defecto
Usando EMS SQL Manager para copiar entre bases de datos
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
Averiguando cuales son los puertos que están abiertos
¿En cuál carpeta tener las bases de datos?
Instalando Firebird silenciosamente
Averiguando la carpeta donde se instaló el Firebird
Averiguando cual es la arquitectura que tienes instalada
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
NOTICIAS
Driver 4.1.5.0 para conectar a Firebird con ADO
Libros gratis sobre Informática durante dos días
Firebird 3.0 Beta 2 ya puede ser descargado
Versión 4.8.1.0 de Firebird ADO.NET
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
OLAP y OLTP
Aplicaciones OLTP y aplicaciones OLAP
¿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
Recreando los índices de las tablas
Maestro/Detalle. Como averigual el identificador del Maestro
Usando índices correctos para aumentar la velocidad de las consultas
Entendiendo a las Foreign Keys
Los índices de las restricciones
Claves primarias ¿simples o compuestas?
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
PRINCIPIANTES
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 stored procedures
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
Usando CASE en la cláusula WHERE
Entendiendo los índices de expresión
PROGRAMAS
Database Comparer de Clever Components
SQL_RENDIMIENTO. Verificando la velocidad de las operaciones
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
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
Restringiendo el acceso a las bases de datos
Aumentando la seguridad con ALIASES.CONF
Proteger a las bases de datos visibles en Internet
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. Parte 2
Ejemplos del uso de Zebedee con Firebird
Impidiendo la conexión a una Base de Datos
Atacando a una Base de Datos: SQL injection
Protegiendo las bases de datos contra accesos no autorizados
PROYECTO DE REPLICACIÓN
Replicación 1. Pasos iniciales
Replicación 2. Un captura de pantalla
REPLICACIÓN Y SHADOW
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 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 las funciones externas que estás usando
Nombres de los stored procedures
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
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
Obteniendo el nombre del día de la semana
Generando códigos dependientes
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
Cuando usar el predicado EXISTS()
¿Importa dónde se ponen las condiciones de un JOIN?
Mostrando las fechas con cualquier formato
Entendiendo el contenido de un PLAN
Un error de concepto en la cláusula WHERE
Usando una subconsulta en un JOIN
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
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
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()
Validando números escritos en distintos formatos
Ejemplo de recursión (7). Números faltantes en una serie
SQL
Teoría de Conjuntos: Unión, Intersección, Diferencia
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
Nombres de los stored procedures
Maestro/Detalle: como averiguar el identificador del Maestro
Un stored procedure para conocer la cantidad de filas de todas las tablas
Un stored procedure para averiguar la cantidad de filas de todas las tablas
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
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
¿Cuáles errores no se pueden atrapar?
Capturando excepciones del usuario
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
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)
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
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
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
Modos de bloqueo de las transacciones
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
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
Nombres de todas las tablas y de todas las vistas
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?
Usando la función COALESCE() o la función ISNULL()
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
Data truncated | Firebird SQL
Oct 02, 2013 @ 02:14:43
El generador autoincremental | Firebird SQL
Oct 02, 2013 @ 21:05:07
La notación camello | Firebird SQL
Oct 03, 2013 @ 18:53:15
Edgar Suarez Kummers
Ene 09, 2015 @ 05:17:27
Estimado Walter:
Desearte Un Año 2015 lleno de Felicidad junto a tu Esposa e Hija.
Adicionalmente Felicitarte por tan formidable trabajo que has realizado con Firebird.
wrov
Ene 09, 2015 @ 22:49:48
Mil gracias Edgar, y que la pases súper este año.
Saludos.