You are on page 1of 11

1. EL LENGUAJE SQL Lenguaje declarativo (se le dice qu se quiere hacer, no cmo) de definicin, control y manipulacin de BD.

Algunos ejemplos: CREAR UNA TABLA: CREATE TABLE productos (cod_producto INTEGER, nom_producto CHAR (20), tipo CHAR (20), descripcin CHAR (50), precio REAL, PRIMARY KEY (cod_producto)) INSERTAR un producto en la tabla: INSERT INTO productos Values (1250, LENA, Mesa, Diseo J. Ruz. Ao 1920, 250000 CONSULTAR qu productos son sillas: SELECT cod_producto, nom-producto FROM productos WHERE tipo = silla ; (o WHERE precio > 100000, por ejemplo) Sentencias de definicin CREATE: crea BD, tablas, dominios, aserciones y vistas ALTER: modifica tablas y dominios. DROP: borra todo lo anterior. CREATE SCHEMA { [nom_esquema] / [AUTHORIZATION usuario] } [lista_de_elementos_del_esquema] Nomenclatura utilizada: Las maysculas son palabras reservadas del lengyaje, lo que haya entre [...] se puede poner o no, y la notacin {A/.../B} indica que hemos de escoger al menos una opcin. DROP SCHEMA nom_esquema {RESTRICT / CASCADE} RESTRICT borra slo si el esquema est vaco, CASCADE, borra aunque no lo est CREATE DATABASE y DROP DATABASE, tambin son validas en la mayora de BD. 1. Creacin de tablas CREATE TABLE nom_tabla ( definicin_columna [ , definicin_columna ] [ , restricciones_tabla ]) donde definicin_columna es:

nom_columna {tipo_datos /dominio} [def_defecte] [restric_col ] Tipos de datos:

CHARACTER ( longitud) NUMERIC (n, m) DECIMAL (n, m) INTEGER REAL DOUBLE PRECISION DATE TIME TIEMSTAMP

Cadena de caracters de longitud fija Decimales con n dgitos y m decimales Decimales con n dgitos y m decimales Enteros Nmeros con coma flotante y precisin predefinida Igual, pero con ms precisin que el REAL YEAR, MONTH, DAY (1978-12-25) HOUR, MINUT, SECOND (17:15:00.00000) DATE y TIME juntos (1998-7-8 9:30:05)

Restricciones de columna: NOT NULL UNIQUE PRIMARY KEY REFERENCES tabla [(columna)] CHECK (condiciones) Restricciones de tabla: UNIQUE (columna [ , columna...] ) PRIMARY KEY ( columna [, columna...] ) FOREIGN KEY (columna [columna...] ) REFERENCES [(columna2 [columna 2])] CHECK (condiciones) Clave alternativa de la tabla Clave primaria de la tabla columnas son una clave secundaria que referencia a columnas2, clave primaria Condicones a cumplir por la tabla No puede tener valores nulos No puede tener valores repetidos. Es la clave alternativa Ni valores repetidos ni nulos. Es la clave primaria Clave secundaria de la col y tabla especificada Debe cumplir las condiciones especificadas.

Modificacin y borrado de claves primarias con claves secundarias: FOREIGN KEY clave_secundaria REFERENCES tabla [ (clave_primaria) ] [ON DELETE {NO ACTION / CASCADE / SET DEFAULT / SET NULL } ] [ON UPDATE {NO ACTION / CASCADE / SET DEFAULT / SET NULL } ] donde NO ACTION = restriccin (no permitira el borrado o modificacin). Aserciones: son restricciones generales que afectan a una o ms columnas de ms de una tabla. CREATE ASSERTION nom_asercin CHECK (condiciones) DROP ASSERTION nom_ asercin Modificar y borrar tablas: ALTER TABLA nom_tabla {accin_modificar_columna / accin_modif_restriccin_tabla } Donde las accones pueden ser: {ADD/ALTER/DROP [COLUMN ]} Y {ADD restriccin / DROP CONSTRAINT restriccin {RESTRICT / CASCADE } }

DROP TABLE nom_tabla { RESTRICT / CASCADE }

2. Consultas en una BD relacional SELECT nom_columna_a_seleccionar [ [ AS ] col_renombrada ] [ , nom_columna_a-seleccionar .[ AS ...] ... ] FROM tabla_a_consultar [ [ AS ] tabla_renombrada] WHERE condiciones Ejemplo: SELECT * FROM clientes (el * es comodn) Para indicar las condiones en WHERE, usaremos los operadores de comparacin (=, <, >, <=, >=, <>) y los lgicos (NOT, AND, OR). Si queremos ver la consulta sin filas repetidas, pondremos SELECT DISTINT en lugar de SELECT. Funciones de agregacin: se aplican a columnas, por lo que van con SELECT ( ej. SELECT COUNT) COUNT (total filas), SUM (suma), MIN, MAX, AVG (media). Subconsultas: son consultas dentro de WHERE. WHERE precio = (SELECT MAX (precio) FROM proyectos) Otros predicados: BETWEEN (entre), [NOT] IN (similar a = [<>]), LIKE, IS [NOT] NULL , ALL/ANY/ SOME, [NOT] EXISTS. Ejemplos: WHERE sueldo BETWEEN 2.0E+6 AND 5.0E+6 WHERE ciudad IN (Lleida, Tarragona) (Solo coge los de Lleida y Tarragona) WHERE nom_empleado LIKE J% ( _ y % seran los equivalentes a ? y * respectivamente) WHERE num_proyecto IS NULL WHERE precio > ALL/ANY/SOME (subconsulta) WHERE EXISTS (subconsulta) Otras clusulas: ORDER BY columnas: ordena la consulta segn lo especificado aqu GROUP BY columnas: agrupa las filas segn las col especificadas. HAVING: segn las condiciones indicadas aqu. SELECT columna FROM tabla (tambin se pueden indicar aqu varias tablas) [WHERE condiciones] GROUP BY columnas [HAVING condiciones ] (podemos usar aqu las funciones de agregacin SUM, MAX, etc.) [ORDER BY columna_de_ordenacin [DESC] [ , col_ordenacin [DESC]...] ] 3. Combinaciones.(Join en ingls). Consultas a ms de una tabla. La combinacin consiste en crear una sola tabla a partir de las tablas especificadas en la clusula FROM, haciendo coincidir los valores de las columnas relacionadas de estas tablas. Para indicar la columna de una tabla, se escribe con el formato tabla.columna. Podemos usar alias para referirnos a las tablas, si los especificamos en FROM ( ej. FROM clientes c, proyectos p )

Se puede hacer una combinacin de la manera bsica , o usando la clusula JOIN que nos aporta el SQL92 completo. Comparemos ambas: SELECT p.precio, p.codi_proy, c.nif, p.codi_client, c.codi_cli FROM clients c, proyectos p WHERE c.codi_cli = p.codi_client AND c.codi_cli = 20 SELECT p.precio, p.codi_proy, c.nif, p.codi_client, c.codi_cli FROM clients c JOIN proyectos p ON c.codi_cli = p.codi_client WHERE c.codi_cli = 20 Combinacin natural: la podemos hacer de la misma forma, usan NATURAL JOIN en vez de JOIN.Es una equicombinacin, que combina columnas del mismo nombre y elimina las repetidas. Combinacin interna (INNER JOIN): es la que hace por defecto. Se queda con las filas que tienen valores idnticos en las columnas de las tablas que compara. Esto puede hacer que perdamos alguna fila interesante, si por ejemplo se encuentra un valor nulo en alguna de las tablas al hacer la combinacin. Combinacin externa: nos permite subsanar lo anterior, obteniendo todos los valores de la tabla de la izquierda (LEFT OUTER JOIN), de la derecha (RIGHT OUTER JOIN), o de ambas ( FULL OUTER JOIN). El formato sera: SELECT columnas FROM t1 [NATURAL] { LEFT/RIGHT/FULL } [OUTER] JOIN t2 [ON condiciones] [USING (columna [ , [columna] ) ] Combinaciones con ms de dos tablas: dos posibilidades, segn usemos el SQL92 introductorio o el completo: SELECT * FROM empleados, proyectos, clientes WHERE num_proy = codi_proy AND codi_client = codi_cli (nombres de col. diferentes) SELECT * FROM (empleados JOIN proyectos ON num_proy = codi_proy ) JOIN clientes ON codi_client = codi_clI Unir consultas: usaremos la clusula UNION [ALL] (sin el ALL evitamos las filas repetidas), entre cada sentencia SELECT. Interseccin: Usaremos INTERSECT [ALL] entre cada sentencia SELECT. Otra posibilidad es usar las clusulas IN o EXISTS: SELECT columnas FROM filas WHERE columna IN ( SELECT columna FROM tabla [WHERE condiciones] ) SELECT columnas FROM filas WHERE EXISTS ( SELECT * FROM tabla [WHERE condiciones] ) Diferencia: usaremos EXCEPT [ALL]entre cada consulta SELECT.

2. DISEO DE BASES DE DATOS RELACIONALES Consiste en definir la estructura de la BD, que ser un conjunto de esquemas de relacin, con sus atributos, dominios, claves primarias y secundarias, etc. Este diseo, se ha de descomponer en etapas, que son tres: diseo conceptual, diseo lgico y diseo fsico. 1. Diseo conceptual Obtendremos aqu la estructura de la futura BD, independientemente de la tecnologa a emplear posteriormente para llevarla a cabo. Para modelizar esa estructura, se usa el modelo ER (EntityRelatioship), donde las entidades seran ms o menos las tablas a definir, los atributos las columnas de la tabla ( definiremos tambin los atributos que actuan como claves), y las interrelaciones (relationship) las relaciones entre tablas (asociacin entre entidades). Una interrelacin piede asociar una o ms entidades, pudiendo dar lugar, en este ltimo caso, a la creacin de nuevas entidades. Por ejemplo, si tenemos la interrelacin ESTUDIANTE ASIGNATURA y queremos tambin tener constancia de las asignaturas que ha cursado en cada trimestre, deberemos crear la entidad TRIMESTRE. Una interrelacin binaria, puede ser 1:1 (DELEGACINCIUDAD), 1:N (DESPACHOEMPLEADOS), o M:N (ESTUDIANTESASIGNATURAS). Ejemplo: BD casas de colonias 1 RESIDENCIA 1 N N N NIO ALOJAMIENTO 1 CASA-COLONIAS OFERTA M N ACTIVIDAD SITUACIN COMARCA

Las entidades seran: CASA-COLONIAS(nom-casa, capacidad), ACTIVIDAD(nom-actividad), NIO (cod-nio, nombre, apellidos, telfono), COMARCA (nom-comarca, superficie, numero-habitantes). Los atributos subrayados seran las claves primarias. Comentarios al modelo ER: Al decidir si COMARCA sera un atributo de CASA-COLONIAS y de NIN o una entidad propia, optamos por lo ltimo, pues nos interesa reflejar datos adiccionales de la comarca (numero hab., superficie)como atributos de esta entidad. La misma decisin cabe tomar con ACTIVIDAD. Se crea como entidad, pues una casa de colonias puede ofrecer varias actividades y otras no. Otra eleccin dificil que sepresenta al disear un modelo ER, es decidir si una informacin es entidad o interrelacin. En el ejemplo, podramos haber puesto OFERTA como entidad entre CASACOLONIAS y ACTIVIDAD (OFERTA(nom-casa, nom-actividad, nivel), pero no sera del todo correcto, pues se identifica con las claves de las dos entidades entre las cuales est lo que nos debera hacer sospechar. 2. Diseo lgico: la transformacin al modelo relacional Las entidades, darn lugar a relaciones. Las interrelaciones, a claves secundarias (las 1:1 y 1:N), o bien a nuevas relaciones (las M:N y todas las n-arias). Los atributos y clave primaria de la entidad, lo sern ahora de la relacin. 3. Diseo fsico: No nos es necesario pues cada SGBDR se encarga de implementarlo, de forma transparente al usuario.

SQL (LENGUAJE DE CONSULTA) Introducciones que permiten trabajar sobre las bases de datos hay dos formas de trabajar las consultas 1 en forma de diseo, es decir. CONSULTA: Este lenguaje consiste en sentencias muy prximas al ingles diseadas para seleccionar registros de una o varias tablas de acuerdo con el criterio utilizado. Las sentencias de solicitud SQL pueden ser usadas en el momento del diseo en la propiedad recordsouce de un control de datos esto permitira crear mediante programacin Dynaset, Shapstmos asociados a controles de datos los criterios SQL utilizan la palabra clave SELECT, seguida de una de estas palabras claves WHERE, FROM HAVING, GROUP-BY, ORDER BY. CARACTERISTICAS DE SQL: El SQL es un lenguaje basado en el idioma ingles usa palabras tales como SELECT, FROM, WHERE, GROUP-BY, ORDER-BY, como parte del conjunto de comandos. El SQL no es un lenguaje de procedimientos es decir el usuario especifica que informacin necesita y no como obtenerla, en otras palabras el SQL no le pide al usuario el mtodo de acceso. SQL procesa 1 o ms tablas a la vez. SQL puede ser usado por un rango de usuarios que incluye al administrador de base de datos, programadores, personal administrativo y otros tipos de usuarios. SELECT : La sentencia SELECT forma el ncleo de base de datos de SQL esta sentencia sirve para seleccionar o recuperar la filas y columnas deseadas de las tablas de nuestra base de datos. La sintaxis de la sentencia SELECT consta de 5 clapsla construida normalmente de la siguiente manera: SELECT < LISTA DE CAMPOS> FROM<LISTA DE TABLAS> (WHERE < Especificacin de Seleccin de Filas>) (GROUP BY <Especificacin de Agrupacin>) (HAVING<Especificacin de seleccin de grupos>) (ORDER BY <Especificacin de Ordenacin>). WHERE: Para hacer una seleccin desde la misma tabla bajo ciertas condiciones o con alguna restriccin, se debe usar la clusula WHERE, que corresponde al operador del Algebra Relacional llamado Restriccin. Los operadores de combinacin que pueden ser usados por el comando WHERE son los lgicos y los propios de SQL: OPERADORES LOGICOS: = IGUAL MAYOR >= MAYOR IGUAL < MENOR <= MENOR IGUAL. OPERADORES SQL: Existen 4 operadores SQL con los cuales se puede operar cualquier tipo de datos de una Base de Datos. BETWEEN ... AND .... : Permite encontrar un conjunto de valores a partir de dos valores dados incluyendo tambin estos mismos. Ej. Sueldo Base y telfono (70000 y 300000) SELECT NOMBRES, APELLIDOS, S_BASE, TELEFONO FROM EMPLEADOS WHERE S_BASE BETWEEN 70000 AND 300000; IN : El operador IN chequea los valores en una lista especifica. WHERE NOMBRE ATRIBUTO IN (11111-11112-11113) Ejemplo: SELECT NOMBRE, APELLIDOS, S_BASE, TELEFONO, FICHA FROM EMPLEADOS

WHERE FICHA IN (11111-1112-11113); ** CUANDO QUIERA VER CARACTERES PONER APOSTROFE. LIKE: El operador LIKE se usa cuando no se sabe exactamente el valor a buscar, a se conoce solo una parte de l usando este operador es posible seleccionar filas parecidas con un patrn de caracteres en el cual se reemplaza lo desconocido por un caracteres en el cual se reemplaza lo desconocido por un carcter *, para reemplazar un solo carcter ocupamos el comodn *reemplaza todo reemplaza un carcter Mostrar todos los atributos de la tabla empleados cuyos apellidos comiencen con la letra S. los apellidos que terminen con S IS NULL: El operador concretamente busca los campos cuyos valores son nulos. Ejemplo: Buscar todos los empleados que no tienen valoren campo carga WHERE NOMBRE atributo IS NULL SELECT * FROM EMPLEADOS 1 WHERE CARGAS IS NULL; 2 WHERE CARGAS IS NULL OR NOMBRES IS NULL; OPERADORES NEGADOS: NOT BETWEEN.... AND... CARGAS ( 2 AND 4) EJEMPLO SELECT * FROM EMPLEADOS WHERE S_BASE NOT BETWWEN 100000 AND 800000; NOT IN: Va ha mostrar todos lo que este fuera de la cadena NOT LIKE: El patrn del campo no debe ser igual al patrn dado. IS NOT NULL: OPERADORES ARITMETICOS: Otros componentes de la clusula SELECT son las expresiones aritmticas, una expresiones aritmticas es una combinacin de uno o ms valores con operadores que le dan valor a un dato las expresiones aritmticas pueden contener: Nombres de las columnas, valores constantes numricos y los operadores aritmticos suma, resta, multiplicacin, divisin. Si una expresin aritmtica tiene ms de un operador la primera prioridad la tiene los operadores, multiplicacin y divisin, si se quiere alterar este orden se debe usar los parntesis. SELECT NOMBRE, APELLIDOS sueldo *1,5. SELECT NOMBRES, APELLIDOS, S_BASE * 1,5 FRON EMPLEADOS; OPERADORES RELACIONALES: Los operadores relacionales con una o ms tablas restriccin esta operacin selecciona y despliega datos de una tabla es posible desplegar todas las filas o slo aquellas filas que cumplan con una condicin o varias condiciones esto tambin es conocido como sub-conjunto horizontal. RESTRICION: Pregunta cuales son los proveedores Santiaguinos Respuesta: Ciudad=Santiago PROYECCIN: Pregunta cuales son las ciudad en donde hay Proveedores Respuesta: SELECT CIUDAD FROM PROVEEDORES; PRODUCTO: Tabla elemento Tabla Proveedores CODIGO 2 1 ATRIBUTO Descripcin Color

Elemento Tarro pintura. PRODUCTO es el resultado de cuando las filas de dos tablas son concatenadas, todas las filas de la primera tabla son concatenada con las filas de la segunda tabla, esto produce una nueva tabla. Las tablas no necesitan tener la misma estructura (se van unir). Usualmente al hacer esta operacin se produce un producto cartesiano sin una condicin de igualdad. ** cuando se crea la consulta hay que agregar en el SELECT el nombre de la tabla ms el atributo. Ejemplo: SELECT ELEMENTOS.DESCRIPCION, COLORES.COLOR FROM COLORES, ELEMENTO Restriccin WHERE.COLORES.COLOR=AZUL; EL JOIN: Es el resultado de cuando las filas que estn en dos tablas son conectadas de acuerdo a una condicin doble. Como trabaja: crear dos tablas 1 Pacientes Cdigo nmero de 3 Nombre paciente Cdigo de cama 2 Ubicacin Cdigo de cama. Descripcin Seleccionar Nombre de paciente y ubicacin. Y queda? Ejemplo: Conectar dos tablas de acuerdo a un atributo en comn: SELECT PACIENTE.NOMBRE_PACIENTE, UBICACIN.Ubicacin FRON PACIENTE, Ubicacin WHERE UBICACIN Ubicacin.CODCAMA=PACIENTE.CODCAMA:

Otra etapa importante es la unin. UNION: Despliega todas las filas que estn en una de las dos tablas. Para que dos tablas puedan unir las estructuras de los datos seleccionados dichas estructuras de los datos deben ser compatibles; es decir, si en ambas tablas hay tuplas iguales queda solo una de ellas por lo tanto la duplicidad de elementos no se nota: ORDER BY DIVISION Crear dos tablas = Proveedores Nombre texto Ciudad Texto Cdigo N entero o 0000 SELECT NOMBRE, CIUDAD, CODIGO FROM PROVEEDORES UNION SELECT NOMBRE, CIUDAD, CODIGO FROM PROVEEDORES, PROVEEDORES 2; INTERSECCIN: Muestra todos los elementos que se repiten en las dos tablas. Despliega todas las filas que estn en las dos tablas a la vez, tambin debe cumplir las mismas condiciones que para la unin y queda: SELECT PROVEEDORES FROM PROVEEEDORES, PROVEEDORES WHERE PROVEEDORES.CODIGO=PROVEEDORES2.CODIGO DIFERENCIA: Es lo que est en la primera tabla que no se repite en la segunda.

SELECT PROVEEDORES FROM PROVEEDORES WHERE PROVEEDORES.CODIGO<>PROVEEDORES.CODIGO O WHERE PROVEEDORES.CODIGO NOT=PROVEEDORES.CODIGO FUNCIONES AGREGADAS Las funciones agregadas son las que actan sobre los grupos de datos, m{as sobre filas individuales. Los grupos de datos pueden ser una columna o un conjunto de columnas incluyendo toda la tabla. La funcin agregada es aplicada en la lnea del SELECT como si fuera un nombre de columna la sintaxis general es: SELECT FUNCION (NOMBRE COLUMA O *) FROM FUNCION AVG= Calcula el promedio de un conjunto de valores. FUNCION COUNT= Cuenta el nmero de ocurrencia de los miembros de un conjunto. FUNCION MAX= Determina el valor mximo de un conjunto de valores. FUNCION MIN= Determina el valor mnimo de un conjunto de valores. FUNCION SUM= Suma un conjunto de valores. Ejercicio Calcular el promedio de sueldo Cual es el valor ms bajo y el mas alto Contar la cantidad de empleados Sumar las cargas familiares. SELECT S_BASE, FICHA, CARGAS SELECT AVG(S_BASE) AS (PROM_SUELDO), MIN(S_BASE) AS (SUELDO MINIMO), MAX(S_BASE) AS (SUELDO MAXIMO), COUNT(FICHA) AS CANT_EMPLEADOS), SUM(CARGAS) AS (CARGAS FAMILIARES) FROM EMPLEADOS WHERE S_BASE < 400000; ***OJO** DESPUES DE AS CON PARENTESIS CUADRADOS*** FUNCIONES DE GRUPO DE FILAS Las clusulas DROPDRIVE sirve para ocupar los datos de acuerdo a un atributo en comn AVG(S_BASE) El SQL internamente hace la clasificacin de acuerdo al atributo incorporando en el atributo DROPDRIVE Una vez que los grupos estn formados, la funcin asociada al comando SELECT es aplicada en forma individual a estos grupos, es decir, primero se ocupa DROPDRIVE. Ejemplo: Tabla empleado SELECT CentroCosto, AVG(S_BASE) FROM EMPLEADOS GROUP BY CentroCosto HAVING= Al igual que la clusula WHERE para especificar la bsqueda por condicin para grupos de filas se usa la clusula HAVING. SELECT FROM (WHERE) GROUP BY HAVING= Acta sobre un grupo seleccionado. Buscar todos los promedios -<< 150000. SELECT CentroCosto, AVG(S_BASE) AS PROMEDIO. FROM EMPLEADOS GROUP BY CentroCosto HAVING AVG(S_BASE) < 150000;

ORDER BY= La funcin ORDER BY permite ordenar los datos de acuerdo al valor de un atributo asociado, este orden puede ser tanto ascendente como descendente. ORDER BY NOMBRE CAMPO (ASC), CAMPO2 ASC ORDER BY NOMBRE CAMPO (DESC), CAMPO2 DESC Ejemplo: SELECT CentroCosto, AVG(s_BASE) FROM EMPLEADOS GROUP BY CentroCosto ORDER BY CentroCosto ASC; O ORDER BY CentroCosto DESC; SELECT CentroCosto, AVG(s_BASE), COUNT(FICHA) FROM EMPLEADOS WHERE TURNO <>NO GROUP BY CentroCosto ORDER BY CentroCosto DESC; ****************************************

principio de la materia