TEMA 20: CONCEPTOS BÁSICOS DE SQL OBJETIVOS DEL TEMA • Introducción al lenguaje de consultas SQL. Para iniciar esta parte del curso se va a utilizar el programa SQLITE que es sencillo, multiplataforma y de código libre: http://www.sqlite.org Para Windows, hay que descargarse los dos ficheros siguientes desde el enlace 'download' , 'Precompiled Binaries for Windows' sqlite-3_6_23_1.zip (Programa de linea para acceso a SQLITE3) sqlitedll-3_6_23_1.zip (Biblioteca .dll con SQLITE3) Descomprimir los dos .zip en el directorio 'C:\FUNGISDB', tendremos los 3 ficheros: sqlite3.exe sqlite3.dll sqlite3.def 1.- EL LENGUAJE SQL SQL responde a Structured Query Language: Lenguaje Estructurado de Consultas. Como en el caso de los más modernos lenguajes relacionales, SQL está basado en el cálculo relacional de tuplas. Como resultado, toda consulta formulada utilizando el cálculo relacional de tuplas ( o su equivalente, el álgebra relacional) se puede formular también utilizando SQL. Hay, sin embargo, capacidades que van más allá del cálculo o del álgebra relacional. El lenguaje SQL consta de unas 30 sentencias que permiten desde la creación de tablas, hasta la recuperación de datos, modificación de éstos, asignación de permisos, etc. Para nuestros ejemplos del curso, al emplear SQLITE, el subconjunto de comandos SQL que utiliza están descritos en el enlace: http://www.sqlite.org/lang.html Hay algunas limitaciones con respecto al Estándar SQL92 descritas en el enlace: http://www.sqlite.org/omitted.html 2.- SENTENCIAS Todas las sentencias SQL comienzan por un verbo, una palabra clave que describe lo que la sentencia hace, como por ejemplo UPDATE, SELECT, ALTER, .... La sentencia continúa con una o más cláusulas. La cláusula puede especificar los datos sobre los que actúa la sentencia. Todas las cláusulas comienzan por una palabra clave como FROM, WHERE, etc. Algunas son opcionales, otras obligatorias. El estándar SQL1 ANSI/ISO especifica las palabras claves que se utilizan como verbos y cláusulas de sentencias. Capacidades aritméticas: En SQL es posible incluir operaciones aritméticas así como comparaciones, por ejemplo A < B + 3. Funciones agregadas: Operaciones tales como promedio (avg), suma (sum), máximo (max), etc. se pueden aplicar a las columnas de una relación para obtener una cantidad única. 3.- NOMBRES Es posible imprimir una relación construida por una consulta y asignar una relación calculada a un nombre de relación. Por ejemplo, de una consulta se puede extraer: ..... 1.1 * SUELDO AS SUELDO_INCREMENTADO .... ,se toma el sueldo, se multiplica por 1.1 y este SUELDO_INCREMENTADO. resultado se devuelve bajo el nombre 4.- DEFINICIÓN DE DATOS Como ya se indicó anteriormente, el lenguaje SQL incluye un conjunto de comandos para definición de datos. Esto es creación de tablas, modificación de éstas, creación de dominios, etc. Todo el proceso de creación de una BD se hace enteramente mediante sentencias SQL. Con el fin de ir viendo esto se tiene: Para crear una base de datos se utiliza el comando CREATE CREATE DATABASE dbname [WITH LOCATION = 'dbpath'] Por ejemplo, CREATE DATABASE 'C:\curso_bdatos\ejemplo1.db' (Nota: SQLITE no emplea este comando, en su lugar llama al programa sqlite3 con un nombre de fichero), entonces, para crear la base de datos “ejemplo1.db”, deberemos hacer: • Abrir una ventana de comandos DOS: 'Menu inicio'> 'ejecutar'> cmd • Situarse en el directorio creado antes, para ello teclear: cd C:\FUNGISBD • Crear base de datos nueva llamada “ejemplo1.db” y salir, teclear: sqlite3 ejemplo1.db sqlite> .exit Esto nos crea una base de datos nueva llamada 'ejemplo1.db' Las distintas tablas de la BD se crearon con el comando de creación de tablas cuya sintaxis es: CREATE [TEMP] TABLE class_name (attr1 type1 [DEFAULT expression] [NOT NULL], ...attrN [[CONSTRAINT name] CHECK condition1, ...conditionN] ) [INHERITS (class_name1, ...class_nameN)]; y en nuestro caso para la tabla cliente se hizo así: sqlite3 ejemplo1.db sqlite> CREATE TABLE CLIENTE ( DNI INTEGER NOT NULL, APELLIDOS VARCHAR(50), NOMBRE VARCHAR(20), EDAD INTEGER); 5.- TIPOS DE DATOS A continuación se muestra una lista de algunos tipos de datos soportados por SQL: INTEGER: entero binario con signo de palabra completa (31 bits de precisión + 1 bit de signo). SMALLINT: entero binario con signo de media palabra (15 bits de precisión + 1 bit de signo). DECIMAL (p[,q]): número decimal con signo de p dígitos de precisión, asumiendo q a la derecha para el punto decimal. (15 = p = qq = 0). Si q se omite, se asume que vale 0. FLOAT: numérico con signo de doble palabra y coma flotante. CHAR(n): cadena de caracteres de longitud fija, de longitud n. VARCHAR(n): cadena de caracteres de longitud variable, de longitud máxima n. (Nota: para SQLITE, los tipos de datos que emplea para almacenar información son algo distintos: NULL, INTEGER, REAL, TEXT y BLOB. Se pueden emplear los tipos de datos habituales SQL que se ajustarán por afinidad a estos cinco tipos. Para mas información ver detalles en:http://www.sqlite.org/datatype3.html ) RESUMEN DEL TEMA 20 El lenguaje SQL es un lenguaje que engloba dentro de sí todos los comandos para la creación de BD, así como la inserción y modificación de datos dentro de ésta. Se ha visto como se crea una BD, una tabla dentro de ésta. El lenguaje SQL, como cualquier lenguaje de programación permite definir variables y estas pueden ser de distinto tipo: Enteras, alfanuméricas, etc.