Firebird Tema 2-Caracteristicas Basicas

download Firebird Tema 2-Caracteristicas Basicas

of 34

Transcript of Firebird Tema 2-Caracteristicas Basicas

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    1/34

    FIREBIRD:CARACTERSTICASBSICAS

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    2/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag i IES Pedro Espinosa

    FIREBIRD:CARACTERSTICAS BSICAS

    1.- INTRODUCCIN.............................................................................................................................. 12.- SQL..................................................................................................................................................... 43.- ESTRUCTURA DE UNA BASE DE DATOS .................................................................................. 5

    3.1.- METADATOS Y ELEMENTOS FSICOS EN UNA BASE DE DATOS................................ 54.- SCRIPTS ............................................................................................................................................ 75.- TIPOS DE DATOS. ........................................................................................................................... 8

    5.1.- Variables de contexto .................................................................................................................. 85.2.- Cadenas predefinidas................................................................................................................... 95.3.- Conversin de tipos ................................................................................................................... 105.4.- NULL......................................................................................................................................... 105.5.- Tipos de datos numricos. ......................................................................................................... 115.6.- Tipos fecha y hora. .................................................................................................................... 125.7.- Tipos cadena de caracteres. ....................................................................................................... 145.8.- Tipos especiales......................................................................................................................... 15

    6.- EXPRESIONES Y PREDICADOS.................................................................................................. 176.1- Operadores.................................................................................................................................. 18

    6.1.1.- Operadores concatenacin.................................................................................................. 186.1.2.- Operadores aritmticos. ...................................................................................................... 186.1.3.- Operadores de comparacin. .............................................................................................. 196.1.4.- Operadores lgicos. ............................................................................................................ 21

    6.2.- Funciones................................................................................................................................... 236.2.1.- Funciones de conversin. ................................................................................................... 246.2.2.- Funciones CASE................................................................................................................. 246.2.3.- Funciones de agregacin. ................................................................................................... 266.2.4.- Funciones generales............................................................................................................ 26

    6.2.5.- Funciones numricas. ......................................................................................................... 276.3.6.- Funciones sobre cadenas. ................................................................................................... 296.3.7.- Funciones de fecha y hora. ................................................................................................. 29

    6.4.- Expresiones regulares. ............................................................................................................... 306.5.- Casos de uso .............................................................................................................................. 32

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    3/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 1 IES Pedro Espinosa

    1.- INTRODUCCINFirebird deriva del cdigo fuente de Interbase 6.0 de Borland. Es open source y no hay

    licencias duales. Tanto para uso comercial como para aplicaciones open source, es totalmente libre. La

    tecnologa de Firebird lleva 20 aos funcionando, esto hace que sea un producto muy maduro y

    estable.

    El desarrollo de Firebird lleva aparejado la aparicin de versiones que incluyen nuevas

    caractersticas y posibilidades. As se comenz con la versin 1.0 (simplemente portar el cdigo de

    internase 6.0 en c ), la versin 1.5 (conversin de firebird a c++), la versin 2.0 (nuevas caractersticas

    como tablas derivadas, etc), la versin 2.1 (caractersticas de gestin de sesiones, etc) y as hasta llegar

    a la ltima prevista, versin 3.0. Estos temas estn escritos con las caractersticas hasta la versin

    actual disponible (2.5) por lo que puede que algunas caractersticas no estn disponibles en versiones

    anteriores.

    Firebird tiene todas las caractersticas y la potencia de un RDBMS. Se pueden manejar bases

    de datos desde unos pocos KB hasta varios Gigabytes con buen rendimiento y casi sin mantenimiento.

    Sus caractersticas principales son:

    Soporte completo de Procedimientos Almacenados y Triggers Las Transacciones son totalmente ACID compliant Integridad referencial Arquitectura Multi Generacional Muy bajo consumo de recursos Completo lenguaje para Procedimientos Almacenados y Triggers (PSQL) Soporte para funciones externas (UDFs) Poca o ninguna necesidadde DBAsespecializados Prcticamente no necesita configuracin- slo instalar y empezar a usarla! Una gran comunidad y muchas pginas donde conseguir buen soporte gratuito Opcin a usar la versin embebida - de un solo fichero - ideal para crear CDROM con

    catlogos, versiones de evaluacin o monousuario de aplicaciones

    Docenas de herramientas de terceros, incluyendo herramientas visuales de administracin,replicacin, etc.

    Escritura segura - recuperacin rpida sin necesidad de logs de transacciones Muchas formas de acceder a tus bases de datos: nativo/API, driver dbExpress, ODBC,

    OLEDB, .Net provider, driver JDBC nativo de tipo 4, mdulo para Python, PHP, Perl, etc.

    Soporte nativo para los principales sistemas operativos, incluyendo Windows, Linux, Solaris,MacOS.

    Backups incrementales Disponible para arquitecturas de 64bits Completa implementacin de cursores en PSQL

    El servidor Firebird viene en tres versiones: SuperServer, ClassicyEmbedded. Actualmente,

    Classic es la versin recomendada para mquinas con SMP y algunas otras situaciones especficas.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    4/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 2 IES Pedro Espinosa

    SuperServer comparte su cach para todas las conexiones y usa un hilo de ejecucin para cada

    conexin. sta se suele usar en windows. Classic inicia un proceso de servidor independiente para

    cada conexin que se haga.

    La versin embedded es una interesante variacin del servidor. Es un servidor Firebird con

    todas sus caractersticas, empaquetado en unos pocos ficheros. El servidor no necesita instalacin.Ideal para CDROM de catlogos, demos o aplicaciones de escritorio monousuario.

    Firebird viene con un completo paquete de utilidades de lnea de comando que te permiten

    crear bases de datos, generar estadsticas, ejecutar comandos y scripts SQL, hacer y recuperar copias

    de seguridad, etc. Si prefieres usar herramientas visuales, hay montones de opciones donde elegir,

    incluyendo gratuitas.

    En Windows, se puede ejecutar Firebird como servicio o como aplicacin. El instalador puedecrear un icono en el panel de control que permite controlar el servidor (iniciarlo, pararlo, etc).

    Firebird es un SGBD en plataforma cliente/servidor. El servidor acepta peticiones TCP/IP de

    los clientes, por defecto sobre el puerto 3050 (gds_db). Adems puede comunicarse usando IPX. Para

    que los equipos clientes puedan conectarse al servidor es necesario instalar unas herramientas cliente,

    generalmente una librera, que en windows consiste en el fichero gds32.dll/fbclient.dll. Cuando

    instalamos firebird en un sistema podemos llegar a una configuracin en dos niveles o en n-niveles.

    Modelo 2- niveles

    Modelo n-niveles

    Adems del protocolo TCP/IP se aceptan otros modos de conexin como local (XNET) sobre

    redes windows o usando NetBEUI (redes Windows), aunque se aconseja TCP/IP para acceder a todas

    las caractersticas que aporta FIREBIRD.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    5/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 3 IES Pedro Espinosa

    Firebird tiene establecido un sistema de seguridad basado en usuarios y contraseas. Pordefecto, cuando se hace una instalacin, se tiene el usuario SYSDBA con contrasea masterkey. Estainformacin de usuarios se almacena en un fichero de base de datos Firebird: security2.fdb (paraversiones de Firebird 2 o superiores).

    Cuando un cliente quiere contactar con el servidor debe usar un protocolo de comunicacin.

    Firebird aporta este protocolo implementado en forma de una DLL en el caso de WIN que se sita enuna carpeta accesible del disco duro (normalmente c:\windows\system32) llamada GDS32.DLL,usada para compatibilidad con versiones anteriores o fbclient.dll.

    El soporte principal de Firebird se puede encontrar en la pgina www.firebirdsql.org. Ademsse dispone de una pgina de soporte para la comunidad hispana en www.firebird.com.mx

    Estos temas estn creados a partir de la documentacin de las notas de versin de Firebirdque acompaan a las versiones instaladas y del libro The Firebird Book de Helen Borrie, libro con elque me inici en Firebird.

    http://www.firebirdsql.org/http://www.firebird.com.mx/http://www.firebird.com.mx/http://www.firebirdsql.org/
  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    6/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 4 IES Pedro Espinosa

    2.- SQL.En Firebird, todas las operaciones se realizan a partir de SQL, un sublenguaje para acceso a

    sistemas de manejo de bases de datos relacionales.Desde su introduccin, el estndar SQL ha sufrido tres grandes revisiones: SQL-89, SQL-92 y

    la ms reciente SQL 3, obtenido a partir de un trabajo publicado como parte de SQL-99.

    El lenguaje de consulta SQL es no procedimental, es decir, es orientado a los resultados de laoperacin en lugar de a indicar como obtener los mismos.Los diferentes fabricantes se encargan de implementar en mayor o menor medida una versin

    de SQL, introduciendo, en la mayora de los casos, caractersticas propias. En relacin a Firebird, steimplementa completamente el estndar SQL-92 y un gran nmero de caractersticas del SQL-99.

    SQL describe una sintaxis. En teorca, para cualquier operacin que se quiera realizar sobreuna Base de Datos, debe existir una sentencia que lo realice.

    Las sentencias sintcticas se suelen agrupar segn su propsito en:- Sentencias de definicin de datos (DDL): Sentencias para la creacin, modificacin y

    borrado de los objetos en la base de datos. (CREATE, ALTER y DROP)

    - Sentencias de manipulacin de datos (DML). Se incluyen tanto sentencias para obtenerdatos de la Base de Datos (SELECT) como para introducir, modificar o borrar los propiosdatos almacenados (INSERT, UPDATE y DELETE).

    En Firebird se tiene una implementacin del lenguaje SQL que se puede dividir en variossubgrupos:

    - SQL Embebido (ESQL): Es la implementacin SQL base, consistente en sintaxis DDL yDML que incorporan otros subconjuntos. Es la implementacin original de SQL.

    - SQL Dinmica (DSQL): Es el subconjunto ms usado actualmente. Es usado como capa deinterfaz para comunicar con el servidor a travs de la interfaz de programacin deaplicacin (API). Algunas sentencias DDL implementadas en ESQL no estan disponiblesaqu por lo que se reemplazan con funciones API.

    - SQL Interactiva (ISQL): Es el lenguaje implementado para la utilidad en lnea de comandosisql. Est basada en DSQL con extensiones para ver metadatos y algunas estadsticas delsistema.

    - SQL Procedimental (PSQL): Es el lenguaje para escribir los procedimientos almacenados ylos triggers. Se compone de todas las sentencias DML junto con otras extensionesespecficas para procedimientos.

    Las sentencias SQL embebidas y las precompiladas en cdigo son conocidas como SQLesttico (ESQL). En contraste, las sentencias generadas por el cliente y enviadas al servidor para suejecucin son conocidas como SQL dinmico (DSQL). Por lo general siempre se trabaja con DSQL.Aqu podemos encontrarnos con las sentencias en la utilidad isql o las que se ejecutan a travs de laAPI directa o indirectamente (a traves de controladores ODBC, JDBC, etc).

    Trabajar con DSQL es siempre ms lento que trabajar con ESQL, ya que para cada sentencia esnecesario analizarla y prepararla para ejecucin cada vez que se lance. En ESQL, se realiza la

    preparacin una sla vez.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    7/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 5 IES Pedro Espinosa

    3.- ESTRUCTURA DE UNA BASE DE DATOSFirebird es un sistema gestor de bases de datos relacional. Como tal, esta diseado para

    soportar la creacin y mantenimiento de estructuras de datos abstractas, no slo almacenar datos sinotambin mantener las relaciones y optimizar la velocidad y consistencia cuando los datos pedidos sonenviados a los clientes.

    En su conjunto, los objetos definidos en una base de datos son conocidos como metadatos oesquema. El proceso de creacin y modificacin de los metadatos es conocido como definicin dedatos.

    Todos los objetos del esquema son creados usando un subconjunto del lenguaje SQL conocidocomo Lenguaje de Definicin de Datos (DDL). Una sentencia DDL comienza con alguna de las

    palabras CREATE, ALTER, RECREATE o DROP, permitiendo crear, modificar, reconstruir odestruir respectivamente un objeto del esquema.

    Firebird almacena los metadatos en un conjunto de tablas que se crean dentro de la Base dedatos, las tablas de sistema. Todas las tablas del sistema tienen identificadores que comienzan con

    RDB$. Por ejemplo RDB$DATABASE contiene informacin de definicin de la propia base dedatos.

    3.1.- METADATOS Y ELEMENTOS FSICOS EN UNA BASE DE DATOS

    Fsicamente se almacenan los datos y las relaciones existentes entre ellos mediante una serie deelementos. Adems se establecen mecanismos para garantizar las restricciones establecidas. Todosestos elementos son:

    - Tablas: Una tabla de una base de datos es un bloque bidimensional compuesto de columnasy filas en donde se almacena la informacin del mundo real.

    - Ficheros y pginas: Todos los datos de una base de datos se almacenan en un fichero ocomo mucho, en un conjunto de ficheros enlazados. Un fichero se divide fsicamente en

    pginas. Se tienen diferentes tipos de pginas, acorde al tipo de dato que almacena(columnas de tablas, BLOBS, indices, etc). Todas las pginas tienen el mismo tamao y sonreservadas (localizadas) en el momento en el que son necesarias. El tamao de pgina seestablece en el momento de crear la Base de Datos y no puede ser modificada. Debido aesta forma de almacenamiento, es posible que los registros de una tabla no estnalmacenados fsicamente de forma continua (pueden estar en diferentes pginas endiferentes partes del fichero o incluso en diferentes ficheros).

    - Columnas y Campos: Abstractamente una columna es un conjunto de valores para los quese les ha definido un tipo y que pueden ser almacenados en una celda de una fila de unatabla. En la definicin de la tabla se establece un orden de izquierda a derecha en la que seevaluarn los campos y que puede ser modificado al devolverlo en una consulta. Un campoes el valor de una columna en una fila determinada. En muchas ocasiones se intercambianel significado de columna y campo.

    - Claves: Las claves son valores que identifican a las filas de las tablas. Nos encrontramoso Clave primaria: Representa una o varias columnas que, para cada tabla, identifican

    de forma unvoca (no puede haber dos filas con idnticos valores en los campos declave) cada fila. En un SGBD se conoce como restriccion PRIMARY KEY.

    o Clave nica: Adems de definir una clave primaria, se pueden definir otras clavesque identifican de forma unvoca cada fila. En firebird se realiza mediante larestriccin UNIQUE.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    8/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 6 IES Pedro Espinosa

    o Clave fornea: Son el mecanismo por el que se establecen las relaciones entrediferentes tablas. Se entienden como la columna A de la tabla 1 tiene como valoruno de los que hay en la columna B de la tabla 2 a la que hace referencia

    Normalmente se usan como claves valores que no deban modificarse una vez establecidosy que puedan ser fcilmente gestionables. En general se usan columnas de tipo entero que

    no contienen informacin significativa para la fila. Por ejemplo en una identificacin de uncurso se podra usar como clave la columna con la descripcin del mismo (Curso 1 AESO), aunque cualquier error al rellenarlo podra suponer un problema en todas las tablasrelacionadas. En su lugar se usa una columna de tipo entero que identifique la fila, (el 1representa a Curso 1 A ESO). Si cambiamos la descripcin, no es necesario para nadamodificar la clave, el 1.

    Una clave no es un ndice. Una clave es una restriccin a nivel de tabla. Normalmente, elSGBD responde a esta restriccin creando uno o ms metadatos para facilitar su gestin,como podran ser ndices nicos para claves primarias o nicas, indices no nicos paraclaves forneas, etc.

    - Integridad Referencial: Es el mecanismo que se establece fsicamente en la base de datospara mantener restricciones que se hayan establecido. As en una restriccin de clave nicagarantiza que dos filas no tienen el mismo valor en la columna clave.

    - Indices y planes de consulta: Un ndice es el mecanismo que nos aporta la base de datospara localizar de forma rpida valores dentro de una tabla. Un bun ndice acelera lasbsquedas. Un mal ndice o simplemente no tener ndice puede hacer ms lentas lasbsquedas, uniones y ordenaciones.Cuando tenemos una consulta en la que se combinan dos o ms tablas se hace necesarioestablecer fsicamente como se realiza la unin de las mismas. Firebird utiliza algoritmosde optimizacin basados en el coste. Para una consulta dada, el optimizador evalua el coste

    relativo de usar o ignorar los ndices disponibles y devuelve un plan de consulta. Este plande consulta es posible establecerlo manualmente, aunque siempre se aconseja usar elobtenido por el optimizador.

    - Vistas: Una vista es una consulta predefinida almacenada en la base de datos. Una vista esuna clase de tabla que no almacena fsicamente datos. Se suele usar cuando se quiererestringir el acceso a una columna a usuarios o para acceder a consultas que se utilizanmucho.

    - Procedimientos almacenados y triggers: Son mdulos de cdigo ejecutable compilados enel servidor y que se ejecutarn directamente en l. El cdigo fuente se genera a partir de unconjunto de extensiones de lenguaje SQL conocido como SQL Procedimental o PSQL.

    Un procedimiento almacenado puede ser ejecutable o seleccionable. Pueden recibirargumentos de entrada y devolver conjuntos de salida. Los procedimientos ejecutablesdevuelven una sola fila de valores constantes. Los procedimientos seleccionables devuelvenuna o ms filas de un conjunto resultado, al estilo de una tabla o vista.Un trigger es un mdulo que se declara para ejecutarse en una o ms de los seis estados/fases (antes o despus de una insercin, actualizacin o borrado) durante una operacin demanipulacin de datos en una tabla. No aceptan argumentos de entrada ni devuelvenconjuntos resultados.En PSQL se establecen mecanismos para manejar excepciones. As se podr definirexcepciones como cdigo para gestionar las mismas en un mdulo.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    9/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 7 IES Pedro Espinosa

    4.- SCRIPTSCon Firebird, como con otros SGBD SQL, se pueden crear todos los metadatos de una base de

    datos as como rellenarla a partir de sentencias SQL. Esta operacin se puede automatizar mediante unscript. Un script no es ms que un conjunto de sentencias de DDL y/o DML almacenadas en un ficherode texto plano. Se suele usar para crear, modificar o borrar objetos de una base de datos, as como para

    rellenar, modificar o borrar datos de ella.

    En un script se puede usar cualquier sentencia de DDL y de DML, junto con:- COMMIT, ROLLBACK: sentencia que permite guardar o deshacer los cambios que se

    realizan en las sentencias anteriores.- SET AUTODDL {ON | OFF}: Hace que automticamente se guarden o no los cambios

    realizados en sentencias DDL.- Comentarios: En un script se puede indicar dos tipos de comentarios: en bloque (/*

    comentario */) o en lnea ( -- comentario).- Terminadores: todas las sentencias en un script deben finalizar con un smbolo. Por defecto

    se utiliza el ;. Esto es siempre as salvo en los procedimientos almacenados, en los que al

    estar definiendo bloque de cdigo se debe establecer otro terminador. Esto se realizamediante la sentencia SET TERM. Por ejemplo podramos tener el siguiente script:..CREATE GENERATOR generador; -- linea con su terminador ;SET TERM ^ ; -- fija a partir de ahora como terminador ^^CREATE TRIGGER mitriger FOR tablaACTIVE BEFORE INSERT POSITION 0AS

    IF (NEW.PK IS NOT NULL) THENNEW.PK=GEN_ID(generador,1);

    END ^^ -- cierro la sentencia CREATE TRIGGER con el nuevo terminadorSET TERM ;^^ /* establezco de nuevo como terminador el ; y acabo la sentencia con el terminadoractual */..

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    10/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 8 IES Pedro Espinosa

    5.- TIPOS DE DATOS.Cuando se crea una nueva columna en una tabla se debe definir el tipo de la misma, el cual

    establece el conjunto de valores vlidos. Adems el tipo de dato establece tambin las operaciones que

    se pueden realizar sobre el mismo. Los tipos de datos definen tambin el espacio necesario para su

    almacenamiento en disco. Elegir el tamao de dato acertado es importante a la hora de almacenar grancantidad de informacin.

    Firebird soporta los siguientes tipos de datos:

    a) Tipos de datos numricos:- BIGINTEGER, INTEGER y SMALLINT- FLOAT y DOUBLE PRECISION- NUMERIC y DECIMAL

    b) Tipos fecha y hora- DATE, TIME y TIMESTAMP

    c) Tipos caracter- CHARACTER, VARYING CHARACTER y NATIONAL CHARACTER

    d) Tipos especiales- BLOB y ARRAYComo se puede observar no existe un tipo lgico (boolean) como tal. En la prctica se define

    como un nico carcter (con valores S o N, V o F) o mediante un SMALLINT.

    Relacionado con los tipos estn los dialectos SQL (propios de firebird). Versiones antiguas de

    interbase usaban el dialecto 1. A partir de Interbase 5 (interbase 6 y firebird) se usa el dialecto 3. El

    dialecto establece restricciones sobre los tipos de datos. En nuestro caso siempre usaremos el dialecto

    3.

    El tipo BLOB (binary large object) permite almacenar datos que no pueden ser almacenados

    fcilmente en los tipos SQL estandars. Suele usarse para objetos de un tamao variable e

    indeterminado, como imgenes, videos, captulos de un libro, etc.

    El tipo ARRAY no los veremos al no ser un tipo que podemos encontrar en otros SGBD.

    5.1.- Var iables de contexto

    Firebird incluye una serie de variables mantenidas por el sistema que nos permiten acceder a

    datos interesantes durante una conexin de un cliente. Nos podemos encontrar:

    VARIABLE TIPO DESCRIPCIN

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    11/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 9 IES Pedro Espinosa

    CURRENT_CONNECTION INTEGER ID de la conexin actual

    CURRENT_DATE DATE Fecha actual del servidor

    CURRENT_ROLE VARCHAR(31) ROLE que usa el usuario en la conexin

    CURRENT_TIME TIME Hora actual en el servidor.

    CURRENT_TIMESTAMP TIMESTAMP Fecha/hora actual en el servidor

    CURRENT_TRANSACTION INTEGER ID de la transaccin actualCURRENT_USER VARCHAR(128) Nombre del usuario actual

    ROW_COUNT INTEGER Nmero de filas afectadas (cambiadas, borradas,

    aadidas) por la ltima sentencia de DML realizada.

    Solo en procedimientos almacenados

    UPDATING BOOLEAN True si es una sentencia de actualizacin. Slo en

    triggers.

    INSERTING BOOLEAN True si es una sentencia de insercin. Slo en

    triggers.

    DELETING BOOLEAN True si es una sentencia de borrado. Slo entriggers.

    SQLCODE INTEGER Devuelve el SQLCODE dentro de un bloque

    WHEN. Solo en PSQL

    GDSCODE INTEGER Devuelve el GDSCODE dentro de un bloque

    WHEN. Solo en PSQL

    USER VARCHAR(128) Nombre de usuario que es comunicado a travs de

    la librera cliente.

    Por ejemplo se podra usar una variable de contexto:Select current_time as hora from RDB$DATABASE;

    5.2.- Cadenas predef ini das.

    En Firebird existen unas cadenas con un significado propio cuando se usan en determinadas

    sentencias.

    CADENA TIPO SIGNIFICADO

    NOW TIMESTAMP Dia/hora actualTODAY DATE Dia actual

    YESTERDAY DATE Dia actual 1

    TOMORROW DATE Dia actual + 1

    Por ejemplo podramos tener:Select NOW as hora from RDB$DATABASE

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    12/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 10 IES Pedro Espinosa

    5.3.- Conversin de tipos

    Normalmente se deben utilizar tipos compatibles para realizar operaciones aritmticas o para

    comparar datos en condiciones de bsqueda. Si se necesitan realizar operaciones sobre datos de tipos

    distintos se hace necesario conversin entre ellos. En firebird se realizan conversiones de tipo

    implcitas y explcitas. Las primeras las realiza de forma automtica el sistema, generando un error en

    caso de no poder realizarla. Las segundas se realizan mediante la funcin cast.Cast(valor |NULL AS tipo_dato)

    Por ejemplo podramos tener:Cast(1 as smallint), cast(12/01/2008 as date), cast(null as integer)

    5.4.- NUL L

    NULL es un punto en el que nos encontramos con resultados inesperados en operaciones

    realizadas con una base de datos. NULL indica sin valor o indeterminado, es decir, cualquier valorposible y por lo tanto no es igual a ninguno concreto. NULL es distinto de los valores cero: cadena

    vaca, 0 para los nmeros, false para los lgicos, etc.

    El valor NULL puede ser almacenado en cualquier columna que se haya definido como

    nullable (valor por defecto). Este valor se asigna automticamente cuando se hace una sentencia de

    insercin y no se indica valor para una columna, y adems, sta no tiene definido un valor por defecto.

    Como he dicho antes, NULL no es ningn valor concreto y por lo tanto no se pueden hacer

    sentencias del tipo where (columna = NULL), en la que se generarara un error, y no se pueden hacercomparaciones (=, >,

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    13/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 11 IES Pedro Espinosa

    Si colA y colB tienen valores distinto de NULL y distintos, la igualdad se evalua a false y el

    NOT a true. Si colA o colB tienen valor NULL, la igualdad se evalua a NULL (false), y el NOT a

    NULL(false)

    Por ltimo, es posible asignar directamente el valor NULL a una columna en sentencias de

    insercin o de actualizacin.

    5.5.- Tipos de datos numricos.

    Firebird soporta tipos numricos decimales y de punto flotante. Entre los decimales nos

    encontramos con los que tienen parten fraccionaria 0 (SMALLINT, INTEGER y BIGINT) y los que

    tienen parte fraccionaria de tamao fijo (NUMERIC y DECIMAL). Los tipos de punto flotante

    soportados son FLOAT y DOUBLE PRECISION. Firebird no soporta tipos de datos numricos sin

    signo.

    TIPO TAMAO RANGO/PRECISIN DESCRIPCINSMALLINT 16 bits 32,768 to 32,767 Entero corto con signoINTEGER 32 bits 2,147,483,648 a

    2,147,483,647Entero con signo

    BIGINT 64 bits -263 a 263-1 Entero largo con signoNUMERIC(precision, escala)

    Variable (16,32 o 64 bits)

    Precisin: 1 a 18, especificael nmero exacto de dgitosde precisin.Escala: 0 a 18, especifica elnmero de lugaresdecimales.

    Por ejemplo NUMERIC(10,4) sera un nmero conformato PPPPPP.EEEE (123456.7890)

    DECIMAL(precision, escala)

    Variable (16,32 o 64 bits)

    Precisin: 1 a 18, especificael nmero mnimo de dgitosde precisin.Escala: 0 a 18, especifica elnmero de lugaresdecimales.

    Por ejemplo DECIMAL(10,4) sera un nmero conformato PPPPPP.EEEE (123456.7890)

    FLOAT 32 bits 1.175 x 1038 a 3.402 x 1038 IEEE simple precisin: 7 digitosDOUBLEPRECISION

    64 bits 2.225 x 10308 a 1.797 x 10308 IEEE doble precisin: 15 digitos

    En firebird, con los tipos de datos numricos, se pueden realizar las operaciones ms comunes:

    - Comparaciones: con los operadores relacionales (=, , =, o =)- Aritmticas: (+, -, *, /)Como se ha comentado anteriormente, se puede trabajar con datos decimales con la parte

    fraccionaria de tamao fijo. Para ello se utilizan los tipos NUMERIC y DECIMAL. Estos tipos seutilizan cuando queremos trabajar con decimales con una precisin fija. Por ejemplo, si queremosmanejar el precio de los articulos en un almacn, siempre usaremos un numero con 4 decimales. Si loimplementamos con un nmero real en punto flotante tendremos problemas a la hora del redondeo conoperaciones como multiplicaciones o divisiones. Si usamos en su lugar, por ejemplo, un NUMERIC,se acabarn estos problemas.

    En SQL estandar se definen estos dos tipos de datos: NUMERIC y DECIMAL.Conceptualmente son idnticos con la nica diferencia que dada una precisin, en NUMERIC slo se

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    14/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 12 IES Pedro Espinosa

    admiten nmeros hasta esa precisin, mientras que en DECIMAL se admiten nmeros cuya precisines de al menos la indica.

    Para comprobar lo anterior queremos almacenar varios nmeros para lo que definimos:- NUMERIC(4,2): podemos almacenar el 7.2345 (se guarda como 7.23), el 23.45 pero no

    podra almacenarse el 753.22 (al necesitar una precisin de 5).- DECIMAL(4,2): se podran almacenar todos los nmeros indicados para NUMERIC

    adems del 753.22, ya que hemos indicado una precisin de al menos 4 cifras.Internamente estos tipos de datos se almacenan como un entero del tamao necesario para la

    precisin indicada.

    En relacin con las operaciones aritmticas con operandos de distinto tipo es interesante teneren cuenta que una divisin entre enteros da un resultado entero. 6/2 da 3, mientras que 1/3 da 0. Siqueremos obtener un resultado de tipo real tendremos que hacer que uno de los operandos sea real. Porejemplo 1/3 lo haramos como (1*1.0)/3 o como (1+0.0)/3 dndonos el resultado de 0.333.

    Firebird da soporte a la definicin de literales hexadecimales y cadenas hexadecimales. En

    ambas se limita el nmero de caracteres hexadecimales a 16:- literal hexadecimal: { 0x | 0X } [ ... ]. Por ejemplo 0x12AF23.- cadena hexadecimal: { x | X } [ ... ] . Por ejemplo x12AF23

    5.6.- Ti pos fecha y hora.

    Nos encontramos aqu con tres tipos:

    NOMBRE TAMAO RANGO/PRECISIN DESCRIPCINDATE 32 bits con

    signo

    1 enero 100 a.c. a 29 febrero

    32768 dc

    Fecha

    TIME 32 bits sinsigno

    00:00 a 23:59:59.9999 Hora

    TIMESTAMP 64 bits 32,768 to 32,767 Fecha y hora almacenada como dos enteros.

    Al estar todos los tipos fecha almacenados como nmeros, es posible, realizar operacionesaritmticas. As si a un tipo DATE le sumamos o restamos un entero, obtenemos una nueva fecha conel incremento o decremento en das correspondiente. Si restamos dos fechas, obtenemos el nmero dedas entre ellas. Si restamos dos horas, obtenemos el nmero de segundos entre ellas.

    Select today 5 from RDB$DATABASE

    Cuando utilizamos fechas en expresiones con cadenas de caracteres, se suelen utilizarcaracteres para identificar las diferentes partes:

    CARACTERES DESCRIPCINCC Centenario, Primeros dos dgitos de un ao.YY Ao en el centenario. Dos ltimas cifras de lao. Si no se indica la parte del

    centenario se obtiene una de forma automtica.MM Mes. Entero que representa al mes en el rango de 1 a 12.MMM Mes. Iniciales en ingls del ao. (JAN, FEB, MAR, etc)DD Dia del ms. Entero en el rango de 1 a 31

    HH Hora. Entero en el rango 00 a 23.NN Minutos. Entero en el rango de 00 a 59SS Segundos. Entero en el rango de 00 a 59

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    15/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 13 IES Pedro Espinosa

    nnnn Diezmilsimas de segundo. En el rango de 0 a 9999.

    As nos podramos encontrar fechas como CCYY-MM-DD, YY-MM-DD,MM/YY/CCYY, MM/DD/YY, horas como HH:NN:SS.nnnn y timestamp como MM/DD/CCYYHH:NN:SS.nnnn.

    Cuando se trabaja con fechas se obtiene el formato que se est usando segn el separador. As,

    y esto hay que tenerlo en cuenta, en una fecha que usemos / se sigue el formato MM/DD/CCYY(mes/dia/ao). Por lo tanto la fecha 14/01/2008, no es vlida en Firebird ya que representa el 1 del

    mes 14 de 2008, ms que no existe.

    Como ya se indic anteriormente se pueden utilizar una serie de literales y variables de

    contexto relacionados con las fechas: NOW (fecha-hora actual), TODAY (fecha actual),

    TOMORROW (maana), YESTERDAY (ayer), CURRENT_TIMESTAMP (fecha-hora actual),

    CURRENT_DATE (fecha actual) y CURRENT_TIME (hora actual).

    Una operacin muy usual con las fechas es su conversin a cadena de caracteres. En Firebird se

    hace mediante CAST, convirtiendo el tipo a una cadena de tamao adecuado:

    Select cast(10+(cast(today as date) as char(25)) from RDB$DATABASE.

    Por ltimo, Firebird incorpora una funcin para obtener partes de una fecha/hora, la funcin

    EXTRACT.

    EXTRACT(elemento FOM fecha-hora)

    Esta funcin devuelve el elemento indicado del campo fecha-hora. Los posibles valores para

    elemento son:

    ELEMENTO TIPO DEVUELTO RANGO DESCRIPCIN

    YEAR SMALLINT 0-5400 Ao de la fecha o timestamp

    MONTH SMALLINT 1-12 Mes de la fecha o timestamp

    DAY SMALLINT 1-31 Da de la fecha o timestamp

    HOUR SMALLINT 0-23 Hora de la hora o timestampMINUTE SAMLLINT 0-59 Minutos de la hora o timestamp

    SECOND DECIMAL(6,4) 0-59.9999 Segundos de la hora o timestamp

    WEEKDAY SMALLINT 0-6 Da de la semana (0: domingo,, 6: sabado)

    YEARDAY SMALLINT 1-366 Da del ao de la fecha o timestamp

    WEEK SMALLINT 1-52 Semana del ao de la fecha o timestamp

    Por ejemplo podramos tener:

    select extract(YEAR from current_date) as anio from RDB$DATABASE.select cast(extract(SECOND from current_time) as char(2)) as segundos from RDB$DATABASE

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    16/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 14 IES Pedro Espinosa

    5.7.- Tipos cadena de caracteres.

    Firebird permite trabajar con cadenas de longitud fija y de longitud variable. En las cadenas de

    caracteres de tamao fijo se almacenan exactamente todos los caracteres. En una cadena de longitud

    variable se almacenan los caracteres que realmente se usan mas un entero con la longitud de la cadenausada. As, si tengo la cadena hola, y la quiero como una cadena de longitud 10, si uso cadenas de

    longitud fija se almacenara fsicamente como hola mientras que con cadenas de longitud

    variable sera hola junto con longitud 4.

    Firebird define los siguientes tipos para cadenas de caracteres:

    NOMBRE TAMAO DESCRIPCINCHAR(n), CHARACTER(n) N caracteres Cadena de n caracteres de longitud fija.

    NCHAR(N), NATIONALCHAR(n) N caracteres Cadena de n caracteres de longitud fija en la que seusa como conjunto de caracteres el ISO8859_1VARCHAR(n), CHARACTERVARYING (n)

    N caracteres Cadena de n caracteres de longitud variable.

    NCHAR VARYING(N),NATIONAL CHAR VARYING(n)

    N caracteres Cadena de n caracteres de longitud variable en la quese usa como conjunto de caracteres el ISO8859_1

    Las cadenas no pueden ocupar ms de 32767 bytes. Esta limitacin hay que tenerla muy en

    cuenta ya que, segn el conjunto de caracteres, se utilizan uno, dos o tres bytes para almacenar un

    carcter. As podremos almacer como mximo 32767, 16383 o 8191 caracteres dependiendo del

    conjunto de caracteres utilizado.

    En Firebird se utiliza la comilla simple para delimitar una cadena () (esta es la cadena). Esto

    lleva al problema de cmo introducir una comilla dentro de una cadena. Para ello se utiliza un carcter

    escape, la comilla simple. Por ejemplo para poner la frase IES Pedro espinosa indicaramos la

    cadena IES Pedro Espinosa.

    Una operacin muy usual con cadenas de caracteres es la concatenacin. En Firebird se realiza

    mediante ||. Por ejemplo.Select nombre || apellido1 || apellido2 as nombre_completo from RDB$DATABASE

    Como he referido antes, es necesario tener en cuenta el conjunto de caracteres que se utiliza.

    En un conjunto de caracteres (character set) se definen los caracteres que reconoce y el nmero de

    bytes utilizados para almacenar cada carcter. En un conjunto de caracteres se establece el valor

    numrico que representa cada carcter. Es por ello, que el mismo carcter puede tener diferentes

    valores en diferentes conjuntos de caracteres. Adems se establece la secuencia de ordenacin (collate)

    que indica el orden alfabtico de ordenacin de los caracteres en el conjunto de caracteres. Puede

    ocurrir que varios grupos usen el mismo conjunto de caracteres (espaoles y suecos) pero que cadagrupo establezca diferentes criterios de ordenacin de esos caracteres (collate).

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    17/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 15 IES Pedro Espinosa

    Cuando trabajamos con una base de datos, se establece un conjunto de caracteres por defecto.

    Este conjunto por defecto es el que se aplicar a todas las definiciones de columnas salvo se indique

    una especfica. Si no se indica ninguno se utiliza el conjunto de caracteres NONE.

    Los principale conjuntos de caracteres definidos son:CONJUNTO TAMAO DESCRIPCIN

    NONE 1 byte Cada byte es parte de una cadena, pero no se realiza ninguna

    relacin entre el byte y conjunto de caracteres alguno.

    OCTETS 1 byte Los bytes no se pueden interpretar como caracteres. Se utiliza

    para almacenar datos binarios.

    ASCII 1 byte Los valores de 0..127 definidos por la tabla ASCII. Los

    nmeros fuera del rango no son caracteres aunque estn

    reservadosUNICODE_FSS 2 bytes Implementacin del UTF8. En ella tambin se puede almacenar

    UCS16.

    ISO8859_1

    (LATIN_1)

    1 byte Implementacin de la pagina de cdigo 8859-1 definida por

    ISO. Incorpora los caracteres utilizados en Europa. Semejante a

    la tabla ASCII, pero con los caracteres extendidos rellenos.

    WIN1250, WIN1251,

    WIN1252, WIN1253,

    WIN1254

    2 Bytes Implementacin de pginas de cdigos de Windows.

    En Firebird se puede establecer tanto la pgina de cdigos como el orden. Por ejemplo

    podramos tenerAlter table prueba add Cadena varchar(40) character set ISO8859_1 collate ES_ES

    group by cadena collate CA_CA establece la agrupacin en una sentencia segn un criterio

    5.8.- Tipos especiales.

    Aqu nos encontramos tantos los BLOBS como los ARRAYS. Los arrays quedarn pendientes.Un BLOB (Binary Large Object) es una estructura compleja para almacenar datos de objetos

    de tamao variable, desde unos pocos bytes a gigabytes. Firebird los almacena como punteros. En el

    registro aparece la referencia a otro lugar donde se almacena realmente el contenido.

    En un BLOB se puede almacenar cualquier tipo de informacin: una imagen de mapa de bits,

    una imagen vectorial, un video, un captulo de un libro. Esto hace que el cliente sea el encargado de

    procesar la informacin almacenada y que un campo BLOB no pueda ser indexado.

    Aunque en un blob se puede almacenar cualquier tipo de informacin, Firebird incorpora ya

    dos tipos predefinidos (mediante el atributo subtype):

    - BLOB SUB_TYPE 0: Puede almacenar cualquier tipo de dato.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    18/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 16 IES Pedro Espinosa

    - BLOB SUB_TYPE 1o BLOB SUB_TYPE TEXT: Para almacenar texto plano. Aportandoalgunas peculiaridades.

    En firebird, es posible definir un subtipo propio. Para ello es necesario definir un filtro que nos

    permita transformar la informacin desde el servidor al cliente.

    Para definir un campo blob haramosCreate table (campo_memo BLOB SUB_TYPE 1);

    En Firebird se tiende a hacer equivalentes las cadenas de caracteres y los BLOB TEXT. As en

    todas las sentencias donde se puede usar una cadena de caracteres, se puede usar un campo BLOB.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    19/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 17 IES Pedro Espinosa

    6.- EXPRESIONES Y PREDICADOSLas expresiones SQL proporcionan mtodos para calcular, transformar y comparar valores. Es

    el mecanismo por el que transformamos la datos almacenados en la Base de Datos en informacin tilpara el usuario.

    Las expresiones se usan para:- Transformar datos devueltos como columnas (clusula SELECT de una sentenciaSELECT)

    - Indicar condiciones de bsqueda en la clusula WHERE de una sentencia de DML.- Establecer condiciones de validacin en una restriccin CHECK.- Definir columnas calculadas (COMPUTED BY en CREATE TABLE o ALTER TABLE)- Cuando se generan conjuntos de entrada en sentencias INSERT o UPDATE.- Cuando se establecen criterios de ordenacin o agrupacin en conjuntos resultados.- Como condiciones de control de flujo en mdulos PSQL.- En tiempo de ejecucin para determinar condiciones en conjuntos.Un predicado es una expresin que establcee la veracidad de una condicin sobre un valor, es

    decir, indica si es verdad o no una determinada condicin establecidad sobre un dato.

    En SQL se suelen usar los predicados en:- Clusulas WHERE.- Sentencias CASE (CASE, COALESCE y NULLIF).- Condiciones en un JOIN- Condiciones en un HAVING.- En PSQL, condiciones para IF, WHILE y WHEN.Un predicado puede ser Verdadero, Falso o no probado (NULL). En un predicado se

    consideran estos dos ltimos valores como semejantes, es decir, si no es verdadero, es falso.

    En una expresin nos podremos encontrar:- Nombres de columnas de objetos de la base de datos.- Nombres de columnas en conjuntos de salida.- La palabra clave AS (usada en los alias de columnas o para campos calculados)- Operadores aritmticos (+, -, /, *)- Operadores lgicos (NOT, AND y OR)- Operadores de comparacin (, =, = y ).- Otros operadores de comparacin (LIKE, STARTING WITH, CONTAINING,

    BETWEEN, SIMILAR y IS [NOT ] NULL)- Operadores existenciales (IN, EXISTS, SINGULAR, ALL, ANY y SOME).- Operador concatenacin (|| para cadenas).- Constantes (23, hola, etc)- Literales de fecha (NOW, YESTERDAY, TOMORROW)- Variables internas de contexto.- Subconsultas.- Variables locales (en PSQL variables definidas)- Funciones (incluye todo tipo de funciones como CASE, CAST, SUBSTRING, etc).- (). Para agrupar expresiones.En este tema desarrollaremos muchos de los ejemplos a partir del siguiente esquema de unabase de datos muy elemental.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    20/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 18 IES Pedro Espinosa

    6.1- Operadores

    SQL incorpora una serie de operadores para trabajar con columnas y constantes. Se puedenagrupar en cuatro grandes bloques:- Operadores de concatenacin.- Operadores aritmticos.- Operadores lgicos.- Operadores de comparacin.Cuando nos encontramos en una expresin operadores de diferentes tipos, Firebird aplica unas

    reglas de precedencia para establecer el orden en el que se evalan. Este orden de mayor a menorprecedencia es: Operadores concatenacin, aritmticos, comparacin y lgicos.

    6.1.1.- Operadores concatenacin.Aqu nos encontramos con el operador de concatenacin de cadenas ||. Permite combinar dos

    cadenas para formar una sla.select b.nom_banco || - || a.nom_accta a banco_accionista

    from bancos binner join ban_accta ba on (ba.cod_banco=b.cod_banco)inner join accionistas a on (a.cod_accta=ba.cod_accta)

    6.1.2.- Operadores aritmticos.

    Las expresiones aritmticas son evaluadas de izquierda a derecha, excepto cuando hayambigedad. En este caso se aplica la siguiente tabla:Operador Significado Precedencia* Multiplicacin 1/ Divisin 2+ Suma 3- Resta 4

    Si en una expresin queremos cambiar el orden de precedencia podemos utilizar los parntesis.

    select ba.cod_accta-1000/10+ba.cod_banco

    from ban_acctaselect (ba.cod_accta*1000)/(10+ba.cod_banco)

    from ban_accta -- sera distinto de la sentencia anterior al introducir los parntesis.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    21/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 19 IES Pedro Espinosa

    6.1.3.- Operadores de comparacin.Los operadores de comparacin comprueban la relacin especfica entre dos valores o entre un

    valor y un rango de valores. Como resultado se obtiene un valor que puede ser verdadero o falso (eneste caso NULL actua como falso).

    Se aplica el siguiente orden de precedenciaOperador Significado Precedencia

    = Igual a 1, !=, ~=, ^= Distinto a 2> Mayor que 3< Menor que 4>= Mayor o igual a 5, ~>, ^> No mayor a 7!

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    22/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 20 IES Pedro Espinosa

    I N(valor IN ({l ista | subconsul ta}))toma como argumento una lista de valores y comprueba siel valor est o no en la lista. Esta lista se puede obtener a partir de una subconsulta de lista.

    select *from bancoswhere cod_banco IN (1,2,10) obtiene los datos de los bancos cuyo codigo es 1, 2 o 10

    select cod_acctafrom ban_acctawhere cod_banco IN (select cod_banco from cotizaciones) obtiene todos los cod_accta para

    los bancos que han tenido cotizaciones

    LIKE(valor LIKE patron [ESCAPE carecer])es un operador sensible al contexto (distinguemaysculas y minsculas). Se usa para realizar comparaciones con patrones de caracteres. Se puedenutilizar dos caracteres especiales:

    - %: puede ser sustituido por cualquier carcter cualquier nmero de veces, incluida ninguna.Por ejemplo %an% puede ser sustituido por banco, el banesto, pero no por BANCOni BaNesto.

    - _ puede ser sustituido por cualquier carcter una sla vez. Por ejemplo _o_a puede sersustituido por cosa, cola, MoTa pero no por rebosa ni come.

    Si se buscan cadenas que incluyen algn carcter especial se usa un carcter de escape.

    select *from bancoswhere nom_banco LIKE %an%

    select *from bancoswhere nom_banco LIKE B_nco %

    select *from bancoswhere nom_banco LIKE %#_% ESCAPE # bancos que contienen en su nombre un

    subrayado

    LIKE nunca hace las bsquedas sobre indices aunque estn disponibles.

    STARTING WITH (valor STARTING WITH arg) es equivalente a LIKE arg%. Busca laaparicin de una cadena al inicio de la misma. Puede usar un ndice si est disponible.

    select *

    from bancoswhere nom_banco STARTING WITH Ban devuelve los bancos cuyo nombre empieza porBan

    SIMILAR TO (valor SIM I LAR TO expresin regular [ESCAPE carcter ]). Busca sivalor cumple con la expresin regular indicada como parmetro.

    select *from bancoswhere nom_banco SIMILAR TO [BC]%a devuelve los bancos cuyo nombre empieza por Bo

    C y acaban con a

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    23/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 21 IES Pedro Espinosa

    6.1.4.- Operadores lgicos.Firebird soporta tres operadores lgicos: NOT, OR y AND.- NOT niega la condicin sobre la que opera.- AND une dos condiciones. Slo vale true cuando todas las condiciones son ciertas.- OR une dos condiciones. Vale true si alguna de las condiciones es cierta. Firebird utiliza

    una ejecucin corta que hace que se devuelva true tan pronto encuentre una condicin true,

    sin evaluar las condiciones siguientes.

    El orden de precedencia en los operadores es NOT, AND y OR, en orden de mayor a menorprecedencia. Este orden puede ser cambiado mediante los ().

    select *from bancoswhere cod_banco > 1000 AND

    (pre_ac_ac between 0 and 100 OR pre_ac_ac>1000) ANDNOT nom_banco like %ban%

    Junto a estos operadores lgicos, Firebird aporta una serie de predicados que se evalan a

    cierto o falso.

    El predicado IS NULL (valor I S [NOT] NULL)permite comprobar si un valor es nulo o no.Hay que recordar que el valor NULL es un valor especial que indica nada o desconocido y quetiene sus propias implicaciones en la evaluacin de las expresiones.

    select *from bancoswhere pre_ac_ac IS NOT NULL selecciona los bancos para los que se ha establecido el

    campo pre_ac_ac (se les ha asignado un valor)

    Predicados existenciales. Son aquellos predicados en los que se pueden establecer condicionessobre valores devueltos por una subconsulta. Los predicados disponibles son:

    Predicado SignificadoALL Comprueba si la comparacin es igual para todos los

    valores devueltos por la subconsulta[NOT] EXISTS Existe (o no) en al menos un valor devuelto por la

    subconsulta

    [NOT] IN Existe (o no) en al menos un valor devuelto por lasubconsulta

    [NOT] SINGULAR Comprueba si exactamente un valor es devuelto por lasubconsulta. Si la subconsulta devuelve NULL o ms deuna fila, SINGULAR devuelve false.

    SOME Comprueba si la comparacin es true para al menos unvalor devuelto por la subconsulta

    ANY Equivalente a SOME

    EXISTS ([NOT] EXISTS(subconsulta)), permite comprobar si existen o no filas en lasubconsulta indicada. Es el mecanismo ms rpido para comprobar la existencia de filas en unconjunto de datos (no usar count(*) por su alto coste de clculo). No genera un conjunto de salida.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    24/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 22 IES Pedro Espinosa

    Este predicado recorre el conjunto de datos hasta que encuentra una fila que cumple la condicin, enese momento finaliza la bsqueda. Si no encuentra ninguna fila devuelve false.

    select *from bancoswhere EXISTS(select * from accionistas) -- devuelve todos los bancos si hay accionistas en

    la base de datos

    Normalmente se usa en combinacin con la consulta principal para comprobar la existencia defilas en la subconsulta en las que se relaciona una o varias columnas con la consulta principal.

    select b.*from bancos bwhere EXISTS(select * from ban_accta ba

    where ba.cod_banco=b.cod_banco) -- devuelve todos los bancos quetienen accionistas

    Se utiliza para implementar la diferencia del lgebra relacional. Para ello se utiliza el NOTEXISTS () en el que se unen la subconsulta con la consulta principal. Se tiene que trabajar con el NOTya que se evalua la no existencia de filas con la condicin indicada en la subconsulta. Por ejemplo,

    para saber los bancos que no tienen accionistas, podramos tener:

    select b.*from bancos bwhere NOT EXISTS(select * from ban_accta ba

    where ba.cod_banco=b.cod_banco) -- devuelve todos los bancos queno tienen accionistas, es decir, a todos los bancos les quitamos aquellos bancosque tienen algn accionistas.

    IN (valor [NOT] IN (subconsulta)). Es semejante al operador EXISTS con la diferencia que ya

    se realiza una unin entre un valor y el campo devuelto en el conjunto de datos obtenido en lasubconsulta. Al igual que con EXISTS se evaluan las filas hasta que se encuentra valor en lasubconsulta. En este caso se devuelve true. Si se evala todo el conjunto resultado de la subconsultasin que se encuentre el valor, se devuelve false.

    select *from bancoswhere cod_banco IN(select cod_banco from ban_accta) -- devuelve todos los bancos que

    tienen accionistas.

    Al igual que con el NOT EXISTS, el NOT IN se utiliza para implementar el operadordiferencia del lgebra relacional. En el caso anterior, para obtener los bancos que no tienen accionistas

    podramos tener:

    select *from bancoswhere cod_banco NOT IN(select cod_banco from ban_accta) -- devuelve todos los bancos

    que tienen accionistas.

    ALL (valor {|=||}ALL (subconsul ta)). Comprueba que el valor sea menor, mayor,igual, etc que todos los valores de columna devueltos en conjunto de datos de la subconsulta.

    select *from bancoswhere pre_ac_ac >= ALL

    (select pre_ac_fe from cotizaciones) -- devuelve los bancos cuyo pre_ac_ac es mayoro igual a todas las cotizaciones existentes, es decir, se haya los bancos cuyasu precio actual es igual al mximo de las cotizaciones.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    25/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 23 IES Pedro Espinosa

    Igual que con los otros operadores existenciales pueden usarse enlazando la subconsulta con laconsulta principal.

    select *from bancos bwhere b.pre_ac_ac >= ALL

    (select pre_ac_fefrom cotizaciones cwhere b.cod_banco=c.cod_banco) -- devuelve los bancos cuyo pre_ac_aces mayor o igual a todas las cotizaciones existentes para ese banco, esdecir, se haya los bancos cuya su precio actual es igual al mximo de lascotizaciones suyas.

    SINGULAR(valor {|=||} SINGULAR (subconsul ta)). Este predicado es semejanta aALL con la nica diferencia de que la subconsulta slo puede dar como resultado una y slo una fila.

    select *from bancos b

    where b.pre_ac_ac >= SINGULAR(select pre_ac_fe

    from cotizaciones cwhere b.cod_banco=c.cod_banco) -- devuelve los bancos cuyo pre_ac_ac es mayor o

    igual a la nica cotizacion existente para ese banco

    ANY (valor {|=||} ANY(subconsulta)) y SOME (valor {|=||} SOME(subconsulta)) son dos predicados idnticos. Son true cuando se cumple la condicin en la que valores menor, mayor, etc que algn valor devuelto por la subconsulta.

    select *from bancos b

    where b.pre_ac_ac > SOME(select pre_ac_fe

    from cotizaciones cwhere b.cod_banco=c.cod_banco) -- devuelve los bancos cuyo pre_ac_aces mayor que el de alguna cotizacin existente para el banco.

    6.2.- Funciones.

    En las expresiones es posible usar funciones para realizar diferentes operaciones. En Firebirdse trabaja con dos tipos de funciones: funciones internas y funciones definidas por el usuario (UDF).Las funciones internas son aquellas que implementa Firebird en su ncleo y que estn siempredisponibles. Las funciones UDF son funciones creadas en otros lenguajes como C y que se incorporana una Base de Datos. Normalmente se incorpora a la base de datos un fichero con la interfaz de lasfunciones definidas dentro de archivos DLL. Estos ficheros debern estar accesibles en el momento enel que se quieran usar las funciones.

    En este tema trataremos las funciones internas.

    Las funciones internas se pueden agrupar en diferentes bloques:

    - De conversin. Usadas en la conversin de datos como CAST.- Case. Familia de funciones derivadas de CASE, como CASE, COALESCE y NULLIF.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    26/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 24 IES Pedro Espinosa

    - De agregacin. Funciones que se usan para obtener resultados sumarizados de grupos dedatos. Tenemos funciones como SUM, COUNT, AVG, etc.

    - Generales. Funciones de gestin general.- Numricas. Funciones para tratamientos numricos.- Cadenas. Funciones para tratamiento de cadenas.- De fecha y hora. Funciones para tratamiento de fechas y horas.

    6.2.1.- Funciones de conversin.Son funciones que premiten transformar tipos de datos. Muchas funciones de otros bloques se

    pueden considerar tambin como de conversin, en tanto convierten entre distintos tipos de datos. Porejemplo podramos tener EXTRACT (para fechas/horas), ASCII_VAL (para cadenas), etc.

    Nos encontramos en este bloque conCAST (Cast(valor |NULL AS tipo_dato)). Convierte el valor al tipo de dato indicado. Para que

    esto se pueda hacer es necesario que valor sea compatible con tipo_dato. Por ejemplo si conviertovalor (que es cadena) a integer, valor debe ser una cadena con valores numricos.

    Select cod_banco, CAST(cod_banco as CHAR(5)) || || nom_banco as identificacinfrom bancos

    6.2.2.- Funciones CASE.Nos encontramos aqu aquellas funciones relacionadas con la funcion CASE definida en el

    estandar SQL-99. Se obtiene un resultado a partir de una condicin que se evala en tiempo deejecucin.

    CASE. En esta funcin se indican una o ms condiciones obtenindose un resultado por

    condicin. Se empiezan a evaluar las condiciones y se devuelve el resultado correspondiente a laprimera que se evala como trae. Si no se cumple ninguna y se tiene clusula ELSE, se devolver elresultado indicado en esta clusula. Si no se cumple ninguna condicin ni se tienen clusula ELSE, lafuncin devolver NULL.

    Tiene definidas dos sintaxis:CASE elemento

    WHEN {NULL | valor1} THEN {r esultado1 | NULL}..WHEN {NULL | valorN} THEN {resultadoN | NULL}[EL SE {r esultadoN+1 | NULL}

    END

    CASEWHEN condicion1 THEN {resultado1 | NUL L}..WHEN condicionN THEN {resultadoN | NULL}[EL SE {r esultadoN+1 | NULL}

    END

    La primera sintaxis se usa cuando las condiciones se establecen sobre valores de un elemento(una columna, una variable). La segunda se utiliza cuando queremos establecer condiciones especiales

    para cada caso.

    Select cod_banco,case cod_banco

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    27/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 25 IES Pedro Espinosa

    when 0 then Banco nuevowhen 1 then Banco especialelse nom_banco

    end as tipofrom bancos

    Select cod_banco,case

    when cod_banco

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    28/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 26 IES Pedro Espinosa

    6.2.3.- Funciones de agregacin.Son funciones que obtienen resultados a partir de bloques de valores. Suelen usarse en

    conjuncin con sentencias con clusula GROUP BY en las que se pretende obtener resultados sobrelos conjuntos obtenidos.

    COUNT (COUNT ([DI STINCT] columna | * )) Permite contar ocurrencias de filas (*) ocolumnas. Permite adems contar valores distintos de columna (con DISTINCT).

    SUM (SUM(columna)). Suma los valores de una columna determinada.

    AVG (AVG(columna)). Obtiene la media de los valores de una columna.

    MAX (MAX(columna)). Obtiene el mximo de los valores de una columna.

    MIN (MIN(columna)). Obtiene el mnimo de los valores de una columna.

    Select cod_banco,COUNT(*) as num_bancos,SUM(pre_ac_ac) as suma_precio_actual,AVG(pre_ac_ac) as precio_medio,MIN(pre_ac_ac) as precio_minimo,MAX(pre_ac_ac) as precio_maximo

    From bancosGroup by cod_banco

    LIST(L IST( [ {ALL | DI STI NCT} ] expresion [, delimitador] )). Devuelve una cadena que es

    la concatenacin de todos los valores de un grupo no nulos usando el delimitador indicado. ALL es elvalor por defecto. Si se omite delimitador se usa ,.

    select cod_banco, list(cod_accta, -) as lista_accionistasfrom ban_accta

    group by cod_banco

    6.2.4.- Funciones generales.Nos encontramos aqu funciones difcilmente ubicables en los otros bloques.

    GEN_ID (GEN_ID(generador , valor_paso)). Se usa con los generadores. Calcula un nuevovalor para el generador y devuelve el valor obtenido. El nuevo valor se obtiene aadiendo al actual elvalor_paso. Normalmente se usa como valor_paso el 1. Si usamos el 0, obtenemos el ltimo valorgenerado.

    Select GEN_ID(generador,1) as numero FROM RDB$DATABASE

    GEN_UUID (GEN_UUID()). Devuelve un identificador universal nico. Un UUID se defineen el formato de char(16) de OCTECTS

    CHAR_TO_UUID (CHAR_TO_UUID(cadena)

    ), UUID_TO_CHAR(UUID_TO_CHAR(cadena)). Permite realizar conversiones de UUID entre su formato de char(16)OCTECT y char(32) ASCII ((XXXXXXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX).

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    29/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 27 IES Pedro Espinosa

    select char_to_uuid('93519227-8D50-4E47-81AA-8F6678C096A1')from rdb$database;

    select uuid_to_char(gen_uuid())from rdb$database;

    RDB$GET_CONTEXT (RDB$GET_CONTEXT(espacio, vari able))RDB$SET_CONTEXT (RDB$GET_CONTEXT(espacio, vari able, valor )). Estas funcionesde sistema se usan para acceder a las variables de contexto, as como para asignar y devolver datos deusuario y datos asociados a una transaccin o conexin.

    Se pueden usar los siguientes espacios:- USER_SESSION: Permite trabajar con variables definidas por el usuario en la sesin actual

    (conexin con el servidor).- USER_TRANSACTION: Permite trabajar con variables definidas por el usuario en la

    transaccin actual.- SYSTEM: Permite acceder en modo de solo lectura a las siguiente variables.

    o NETWORK_PROTOCOL :Protocolo de red usada por el cliente. Los posiblesbalores son Currently used values: TCPv4, WNET, XNET y NULL.

    o CLIENT_ADDRESS La direccin remota del cliente como cadena. The wireprotocol address of the remote client, represented as a string. La direccin IP si elprotocolo es TCPv4, en la forma "xxx.xxx.xxx.xxx". El ID de proceso local si seusa XNET y NULL para cualquier otro protocolo.

    o DB_NAME Nombre de la base de datos actual. Ser el alias o el nombre completoincluyendo la ruta.

    o ISOLATION_LEVEL Nivel de bloqueo para la transaccin actual. El valor puedeser "READ COMMITTED", "SNAPSHOT", "CONSISTENCY".

    o TRANSACTION_ID Identificador de la transaccin actual. Es equivalente a lavariable CURRENT_TRANSACTION.

    o SESSION_ID Identificador de sesin actual. Es equivalente a la variableCURRENT_CONNECTION.

    o CURRENT_USER Usuario actual. Es equivalente a CURRENT_USER y USER.o CURRENT_ROLE Role usado en la conexin. Es equivalente a la variable

    CURRENT_ROLE.

    select RDB$SET_CONTEXT(USER_SESSION,edad,20)from rdb$database rellena la variable edad definida en el espacio de usuario de sesion a 20.

    select RDB$SET_CONTEXT(USER_SESSION,edad,NULL)from rdb$database se elimina la variable edad.

    select RDB$GET_CONTEXT(SYSTEM,NETWORK_PROTOCOL)

    from rdb$database

    6.2.5.- Funciones numricas.Se incluyen aqu funciones para tratamiento de valores numricos.

    ABS (ABS(numero)). Valor absoluto de un nmero.

    ACOS, ASIN, ATAN (funcion(numero)). Arcocoseno, arcoseno, arcotangente de un nmero

    entre -1 y 1. El resultado est en el rango -/2 y /2.

    ATAN2(ATAN2(valor1,valor2)). Devuelve el arcotangente de valor1/valor2.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    30/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 28 IES Pedro Espinosa

    BIN_AND, BIN_OR, BIN_XOR(funcion(numero[, numero...] )) Realiza la and, or y xor anivel binario sobre los nmeros que se pasan como parmetros.

    BIN_SHL, BIN_SHR (funcion(numero1,numero2)). Realiza un desplazamiento a nivel debits del primer nmero hacia la izquierda (numero1 > numero2)

    tantas veces como nos indica el segundo.CEIL, CEILING, FLOOR (funcion(numero)). Devuelve el entero ms pequeo que es

    mayor o igual a nmero (redondeo por arriba) (CEIL, CEILING) o el entero mayor que es menor oigual a nmero (redondeo por abajo) (FLOOR).

    COS, COSH, COT, SIN, SINH, TAN, TANH (funcion(numero)). Coseno, cosenohiperblico, cotangente (1/tan(numero), seno, seno hiperblico, tangente y tangente hiperblica de unnmero.

    EXP, LN (funcion(numero)). Devuelve respectivamente la potencia nmero en base e y el

    logaritmo neperiano de nmero.

    LOG (LOG(numero1,numero2)). logaritmo en base numero1 de numero2.

    LOG10 (LOG10(numero)). Logaritmo en base 10 de numero.

    MAXVALUE, MINVALUE (funcion(valor1,., valorn)). Devuelven respectivamente elmximo y el mnimo de la lista de valores.

    MOD (MOD(numero1,numero2)). Resto entero de la divisione de numero1 entre numero2.

    PI (PI()). Devuelve el valor de PI.

    POWER(POWER(numero1,numero2)). Devuelve numero1 elevado a numero2.

    RAND (RAND()). Devuelve un nmero aleatorio en el rango 0 a 1.

    ROUND (ROUND(numero[,escala])). Redondea un nmero a la escala indicada. Si la escalaes negativa o se omite, se redonde la parte entera.

    ROUND(1234.567,0) devuelve 1235.000ROUND(1234.567,1) devuelve 1234.600ROUND(1234.567,-1) devuelve 1230.000.

    SIGN (SIGN(numero)). Devuelve 1, 0 o .-1 dependiendo de si nmero es positivo, cero onegativo.

    SQRT (SQRT(numero)). Obtiene la raiz cuadrada de numero.

    TRUNC (TRUNC(numero[,escala])). Devuelve la parte entera hasta la escala indicada.TRUNC(1234.567) devuelve 1234TRUNC(1234.567,1) devuelve 1234.500TRUNC(1234.567,-1) devuelve 1230.000.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    31/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 29 IES Pedro Espinosa

    6.3.6.- Funciones sobre cadenas.Se incluyen aqu funciones que trabajan sobre cadenas o que nos permiten obtener cadenas.

    ASCII_CHAR (ASCII_CHAR(numero)). Devuelve el carcter cuyo cdigo ASCII esnmero. Nmero debe estar entre 0 y 255.

    ASCII_VAL (ASCII_VAL(cadena)).Devuelve el cdigo ASCII del primer carcter de lacadena. Si la cadena est vaca devuelve 0. Si el primer carcter es multibyte genera un error.

    BIT_LENGTH, CHAR_LENGTH, OCTET_LENGTH (funcion(cadena)). Devuelvenrespectivamente el nmero de bits, el nmero de caracteres y el nmero de bytes que ocupa la cadena.Las dos ltimas darn resultados s la cadena es de un tipo de caracteres multibyte.

    HASH (HASH(cadena)). Devuelve el hash de la cadena.

    LEFT, RIGHT (funcion(cadena,numero)). Devuelve los numero caracteres de la parteizquierda o derecha de una cadena. La cadena empieza en la posicin 1.

    LOWER, UPPER(funcion(cadena)). Develve la cadena convertida a minscula o mayscula.

    LPAD, RPAD (funcion(cadena1, longitud[, cadena2])). Aade cadena2 al inicio o al final decadena1 hasta que el tamao de la cadena resultante sea longitud. Si se omite cadena2, se aadenespacios en blanco.

    OVERLAY (OVERLAY(cadena1 PLACING cadena2 FROM inicio [FOR longitud])).Permite sustituir en cadena1 los longitud caracteres desde inicio por cadena2. Si se omite longitud, sesustituyen la longitud de cadena 2.

    Es equivalente a SUBSTRING(cadena1, 1 FOR inicio - 1) || cadena2 || SUBSTRING(cadena1,

    inicio + longitud)

    POSITION (POSITION(cadena2 IN cadena1), POSITION(cadena2,cadena1 [,desplazamiento])). Obtiene la primera posicin de cadena2 en cadena1. En la segunda sintaxis se

    puede indicar una posicin desde la que comenzar a buscar.

    REPLACE (REPLACE(cadena, cad_a_buscar, cad_reemplazo)). Reemplaza en cadena todaslas apariciones de cad_a_buscar con cad_reemplazo.

    REVERSE (REVERSE(cadena)). La cadena invertida.

    SUBSTRING (SUBSTRING(valor FROM pos_ini [ FOR longitud])). Permite obtener unasubcadena de una dada (valor) empezando en la pos_ini y con un tamao mximo longitud. Pos_ini ylongitud se deben evaluar a un valor >=1.

    TRIM (TRIM ([ [L EADI NG | TRAILI NG | BOTH ] [ cadena_borr ar ] FROM ] cadena).Permite borrar la cadena_borrar al inicio (LEADING), final (TRAILING) o en ambas partes decadena. Por defecto se tendr BOTH y como cadena_borrar .

    6.3.7.- Funciones de fecha y hora.Son funciones para manejo de fechas y horas.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    32/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 30 IES Pedro Espinosa

    DATEADD (DATEADD(numero TO fecha_hora), DATEADD(,numero,fecha_hora)). Devuelve una fecha/hora a partir de fecha_hora con incrementada(decrementada) en nmero. puede ser {YEAR | MONTH | DAY | HOUR | MINUTE |SECOND | MILLISECOND}

    DATEADD(-1 DAY TO CURRENT_DATE) seria ayer

    DATEDIFF (DATEDIFF( FROM fecha_hora_ini TO fecha_hora_fin),DATEDI FF(, fecha_hora_ini , fecha_hora_fi n)). Devuelve un valor numrico que representala diferencia entre las fechas dadas para la parte indicada. Este valor puede ser positivo(fecha_hora_ini < fecha_hora_fin), 0 (fecha_hora_ini = fecha_hora_fin) o negativo (fecha_hora_ini >fecha_hora_fin) Parte puede ser {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND |MILLISECOND}.

    EXTRACT (EXTRACT(parte FROM campo)). Extrae la parte indicada de un campo de tipofecha segun la tabla siguiente:

    PARTE TIPO DEVUELTO RANGO DESCRIPCINYEAR SMALLINT 0-5400 Ao de la fecha o timestamp

    MONTH SMALLINT 1-12 Mes de la fecha o timestamp

    DAY SMALLINT 1-31 Da de la fecha o timestamp

    HOUR SMALLINT 0-23 Hora de la hora o timestamp

    MINUTE SAMLLINT 0-59 Minutos de la hora o timestamp

    SECOND DECIMAL(6,4) 0-59.9999 Segundos de la hora o timestamp

    WEEKDAY SMALLINT 0-6 Da de la semana (0: domingo,, 6: sabado)

    YEARDAY SMALLINT 1-366 Da del ao de la fecha o timestampWEEK SMALLINT 1-52 Semana del ao de la fecha o timestamp

    Select EXTRACT(YEAR FROM pre_ac_fe) as anioFrom bancos

    6.4.- Expresiones regul ares.

    Una expresin regular permite definir un patrn de caracteres con el que podremos establecer

    si una cadena cumple o no con el mismo. Se utilizan en el predicado SIMILAR TO y permitenextender las bsquedas que se pueden realizar mediante el predicado LIKE ( mucho mas limitado).

    El predicado SIMILAR TO tiene como sintaxisvalor [ NOT ] SIM ILAR TO [ ESCAPE ]

    cadena SIMILAR TO A1 cadena debe cumplir con el patrn A1se1 SIMILAR TO %1 true ya que se1 cumple con el patron %1.

    Una expresin regular est formada por una o ms caracteres o smbolos acompaados de otroscon un significado especial. Son expresiones regulares AA, A01 o abcd que se emparejaran con

    cadenas con exactamente esos caracteres, o expresiones como A*B, [1-5]{2,} en las que aparecencaracteres con significados especiales.

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    33/34

    Firebird: Caractersticas bsicas Tema 2

    Vicente Tejero Trueba Pag 31 IES Pedro Espinosa

    Los caracteres que se utilizan son:

    Caracter Busca Ejemplo| Indica uno de dos posibles

    valoresab | cd | ef Encuentra ab o ef pero no abc.

    _ Indica cualquier carcter novaco _ Encuentra a, 1 pero no ni a1

    % Indica una cadena decualquier longitud incluyendola cadena vaca

    % Encuentra , asssad.A%A Encuentra AA, AbbdgA, pero no A nibA

    () Agrupa varios caracteres paraque se tomen como uno slo

    (a2)* Encuentra a2, a2a2a2 pero no aa2a22

    [] Cualquier carcter que seincluya dentro

    [em]sto Encuentra esto y msto pero no asto

    [^] Ninguno de los caracteresincluidos

    [^em]sto Encuentra asto pero no esto

    Adems se pueden usar unos determinados caracteres para indicar el nmero de repeticionesdel carcter que le precede.

    Caracter Con el que lo precede Ejemplo* 0 o mas veces co*che Encuentra cche, coche y coooooche pero

    no cache.? 0 o 1 vez co?che Encuentra coche pero no cooche+ 1 o mas veces co+che Encuentra coche pero no cche{n} Exactamente n veces co{3}che Encuentra coooche.

    {n,} N veces o mas co{3,}che Encuentra cooooche pero no cooche{n,m} Entre n y m veces co{1,2}che Encuentra coche y cooche pero nocoooche

    Ya que es muy normal referirnos a un carcter alfabtico o a una cifra decimal, se definen losidentificadores de clases de caracteres:

    Identificador Descripcin NotasALPHA Todos las letras simples latinas (a-z, A-Z) Se incluyen letras con acentos

    cuando el criterio de ordenacin esinsensibe a los acentos

    UPPER Todas las letras maysculas latinas (A-Z) Se incluyen las letras enminsculas si el criterio deordenacin no distingue el caso

    LOWER Todas las letras minsculas latinas (a-z) Se incluyen las letras en maysclassi el criterio de ordenacin nodistingue el caso

    DIGIT Todos los dgitos numricos (0-9)SPACE Carcter de espacio (ASCII 32)WHITESPACE Todos los caracteres de espacio (tabulador vertical

    (9), nueva linea (10), tabulador horizontal (11),retorno de carro (13), inicio de linea (12), espacio(32))

    ALNUM Todos los caracteres que son letras latinas(ALPHA) o dgitos numricos (DIGIT)

  • 7/23/2019 Firebird Tema 2-Caracteristicas Basicas

    34/34

    Firebird: Caractersticas bsicas Tema 2

    Por ejemplo podramos tener

    '4' SIMILAR TO '[[:DIGIT:]]' -- Verdadero'a' SIMILAR TO '[[:DIGIT:]]' -- falso'4' SIMILAR TO '[^[:DIGIT:]]' -- falso'a' SIMILAR TO '[^[:DIGIT:]]' -- verdadero

    En determinadas ocasiones es necesario incluir un carcter especial pero sin que tenga unsignificado especial. En este caso se utiliza un carcter de escape:

    telefono similar to '\([0-9]{3}\) [0-9]{6}' escape '\' define un nmero de telfono como (111) 111111

    6.5.- Casos de uso

    Como ya se ha indicado anteriormente y como se ver en tems posteriores, las expresiones sepueden utilizar en numerosas sentencias. Aqu veremos unos ejemplos con los que ubicar el uso de las

    mismas.

    En sentencias de DDL.

    CREATE TABLE prueba (numero integer CHECK (numero in (0,1)), -- expresin para indicar los valores posiblesnumero_texto COMPUTED BY (case numero when 0 then BASE when 1 then GRANDE

    end), expresin para definir un campo calculadofecha DATE DEFAULT CURRENT_DATE) fecha tiene como valor por defecto una variable

    de contexto.

    En sentencias de DML.

    select (fecha+1) as dia_despues, cast(numero as char(5)) as numero1 expresiones en los camposdevueltos

    from pruebawhere fecha between 01/01/2008 and 07/01/2008 en la clusula where

    update pruebaset fecha=current_date expresin en una sentencia update

    En mdulos de PSQL

    if (numero not in (select ..)) then

    .numero = numero + 25;