martes, 26 de abril de 2011

Agregación

Las funciones de agrupación operan sobre conjuntos de filas para dar un resultado por grupo. Así tenemos para atributos numéricos
  • AVG: da un amedia
  • SUM: suma los valores
  • MIN: calcula el valor mínimo
  • MAX: calcula el valor máximo
Las funciones de agrupación ignoran los valores NULL en las consultas, aunque se puede utilizar NVL (en Oracle) para forzar a que considere a NULL como un valor determinado.

SELECT AVG(NVL(sueldo,0)) FROM empleado
Calcula el sueldo medio de los empleados, considerando 0 los valores que sean NULL

Mediante la cláusula GROUP BY se dividen las filas que devuelve una consulta en pequeños grupos. Cuando lo utilicemos hay que tener en cuenta que todas las columnas que pongamos en el SELECT que no estén en el GROUP BY, han de estar en una función de agrupación.

Así es correcto
SELECT departamento, AVG(sueldo) FROM empleados GROUP BY departamento

Así no es correcto
SELECT departamento, sueldo FROM empleados GROUP BY departamento

Tiene sentido ya que si agrupamos los empleados por departamente ¿el sueldo de cual nos devolvería?
Eso sí, la columna que pongamos en el GROUP BY no ha de estar en el SELECT y podemos utilizar más de una columna. Con GROUP BY no se utiliza WHERE, sino HAVING, que sirve para seleccionar grupos.

SELECT departamento, MAX(sueldo) FROM empleados GROUP BY departamento HAVING MAX(sueldo) > 2000
En este nos selecciona el sueldo máximo agrupado por departamento, siempre y cuando el sueldo sea mayor que 2000

Aritmética

Este tipo de funciones trabajan únicamente con datos númericos del tipo number, y se pueden dividir en tres grupos principales.

Funciones de valores simples

Estas funciones son las más sencillas y trabajan con un único numero, variable o columna de la tabla.



Función Propósito
ABS(n) Nos devuelve el valor absoluto de n
CEIL(n) Nos devuelve el valor entero igual o inmediatamente superior a n
FLOOR(n) Nos devuelve el valor entero igual o inmediatamente inferior a n
MOD(m,n) Nos devuelve el resto de la división de m entre n
POWER(m, exponente) Calcula la potencia de m elevado a exponente
SIGN(valor) Nos devuelve el signo de valor
NVL(valor, expresión) Función que nos sustituye valor por expresión siempre que valor sea NULL
ROUND(número[, m]) Nos redondea numero a m decimales
SQRT(n) Nos devuelve la raíz cuadrada de n
TRUNC(número[,m ]) Trunca los números para que tengan m decimales.

Pasamos a poner algunos ejemplos para que os quede más claro como se utilizan:

Select ceil(2.3) from tabla; (esta consulta nos devolvería 3)

Select mod (11,4) from tabla; ( nos devolvería 3)

Select round(22.38,1) from tabla; (nos devolvería 22.4)

Funciones de grupos de valores

Este tipo de funciones se utilizan principalmente para realizar estadísticas, por lo que los valores nulos no se toman en cuenta.

Dentro de este grupo se encuentran las siguientes funciones:

Función Propósito
AVG(n) Nos devuelve la media de n
COUNT(*|expresión) Nos devuelve el número de veces que aparece expresión.
MAX(expresión) Nos devuelve el valor máximo de expresión
MIN (expresión) Nos devuelve el valor mínimo de expresión
VARIANCE(expresión) Nos devuelve la varianza de expresión
SUM(expresión) Nos devuelve la suma de valores de expresión.

Pasamos a poner algunos ejemplos:

Select avg(salario) from empleado; (nos devolvería el salario medio de todos los empleados)

Select count(*)from empleado; (nos devuelve el numero de empleados que tenemos)

Select min(salario) from empleado; (nos devuelve el menor salario encontrado en la tabla empleado)

sábado, 2 de abril de 2011

Borrar tabla


A veces podemos decidir que necesitamos eliminar una tabla en la base de datos por alguna razón. SQL nos permite hacerlo, ya que podemos utilizar el comando DROP TABLE:
DROP TABLE "nombre_tabla"
Entonces, si deseamos eliminar una tabla denominada cliente que creamos en la sección CREATE TABLE, simplemente ingresamos
DROP TABLE cliente.

Crear Tablas

Para la creación de una tabla usaremos la sintaxis SQL CREATE TABLE:
CREATE TABLE "nombre_tabla"
("columna 1" "tipo_de_datos_para_columna_1",
"columna 2" "tipo_de_datos_para_columna_2",
... )
Entonces, si queremos crear una tabla para el cliente ingresaríamos:
CREATE TABLE cliente
(Nombre char(50),
Apellido char(50),
Direccion char(50),
Ciudad char(50),
Fecha_nacimiento date);

También puede limitar el tipo de información que una tabla puede mantener. Esto se realiza a través de lapalabra clave CONSTRAINT, en cuyas restricciones comunes se incluyen las que se estan usando en fbd:
- NOT NULL: especifica que la columna no puede contener un valor nulo.
- CHECK: especifica una condición que se debe evaluar a "cierto".
- UNIQUE: no permite duplicados; combinado con NOT NULL es la forma de definir una clave alternativa.
- Clave primaria (Primary Key): identifica de manera única a cada fila de la tabla mediante una o varias columas, estas columnas que forman la clave primaria no pueden tener valores nulos.
- Clave externa (Foreign Key): establece una relación entre una(s) columna(s) de la tabla y otra(s) columna(s) de la tabla referenciada, siendo esta última(s) columna(s) la PRIMARY KEY


Si queremos que por ejemplo el nombre sea un campo obligatorio para rellenar, que no puede estar vacío le asignamos NOT NULL, de tal modo que quedaría así:
CREATE TABLE cliente
(Nombre char(50) NOT NULL,
Apellido char(50),
Direccion char(50),
Ciudad char(50),
Fecha_nacimiento date);

También hay que tener en cuenta que toda tabla debe tener una clave primaria para poder identificar de forma única cada línea en la tabla. Una tabla puede tener varias claves primarias, en este caso se denominaría claves compuestas.

Para verlo aplicado vamos a crear una tabla como la anteriormente vista en otros ejemplos, pero en este caso añadiendo el campo DNI como clave primaria:
CREATE TABLE cliente 
(DNI char (9),
 Nombre char(50) NOT NULL,
 Apellido char(50),
 Direccion char(50),
 Ciudad char(50),
 Fecha_nacimiento date, 

   PRIMARY KEY (DNI));

También podemos trabajar con 2 tablas relacionadas, por ejemplo, una tabla tienda y otra tabla vendedor, y para relacionarlas utilizaremos la clave ajena, de tal modo que ambas tablas queden relacionadas. Esto lo que hace es que una clave externa es un campo (o campos) que señala la clave primaria de otra tabla. El propósito de la clave externa es asegurar la integridad referencial de los datos.

Tabla vendedor:
CREATE TABLE vendedor
(DNI char (9),
 Nombre char(50) NOT NULL,
 Apellido char(50),
 Direccion char(50),
 Ciudad char(50),
 Fecha_nacimiento date, 

   PRIMARY KEY (DNI));
Tabla pedido:
CREATE TABLE pedido
(
ID_pedido integer;
 vendedor integer,
 Fecha_pedido date,
 cantidad integer,
 precio double,
   Primary Key (ID_pedido),
   FOREIGN KEY (vendedor) REFERENCES vendedor(DNI));

jueves, 17 de marzo de 2011

Inner Join

Muestra el resultado de la relación entre 2 tablas.

SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t1.col1=t2.col2;



Outer join

Una combinación que incluye filas incluso si no tienen filas relacionadas en la tabla combinada es una combinación externa. Puede crear tres JOIN diferentes externa para especificar las filas no coincidentes que se incluirán:


Left Outer Join

En combinación externa izquierda, todas las filas de la primera tabla con nombre, es decir, "izquierda" del circulo, que parece más a la izquierda en la cláusula JOIN, están incluidos. Filas coincidentes en la tabla de la derecha no aparecen.

SELECT * FROM table1 t1 LEFT OUTER JOIN table2 t2 ON t1.col1=t2.col2



Right Outer Join

En combinación externa derecha, todas las filas de la segunda tabla con nombre, es decir, "derecho" del circulo, que parece más a la derecha en la cláusula JOIN, están incluidos. Filas coincidentes en la tabla de la izquierda no están incluidos.

SELECT * FROM table1 t1 RIGHT OUTER JOIN table2 t2 ON t1.col1=t2.col2


Full Outer Join

En combinación externa completa, todas las filas en todas las tablas combinadas se incluyen, si se hacen coincidir o no.
SELECT * FROM table1 t1 FULL OUTER JOIN table2 t2 ON t1.col1=t2.col2



Ejercicios Resueltos

 Aquí están los ejercicios resueltos de FBD. Conforme vallan poniendo los ejercicios para hacer los iré colgando resueltos.

T02
T03
T04
T05
T06
T07
T08
T09

Enlaces de interés

En este primer enlace habla sobre los fundamentos del modelo relacional, sin entrar mucho en detalle pero que si lo cumplimentamos con los apuntes dados en FBD son bastante aclaratorios, y explicados con una serie de ejemplos para facilitar su entendimiento.

Fundamentos modelo relacional.

Otra página que habla sobre el modelo relacional, pero este entra un poco mas en detalle que el enlace anterior, tratando temas mas teóricos y a su vez, mas aclaratorios.

Modelo relacional

El segundo enlace habla sobre los modelos de datos (E-R,  MR, Paso a tablas), comentando un poco su desarrollo, contenido y como se trabaja con ello, facilitando dicha información con ejemplos.

Modelos de datos.

Información generalizada

Todos en este sitio
Ingeniería del software, un modelo de entidad-relación (m E-R) es una representación abstracta y conceptual de los datos.
Modelado de entidad-relación es un método de modelado de bases de datos, utilizado para producir un tipo de esquema conceptual o un modelo semántico de datos de un sistema. A menudo una base de datos relacional.
Los diagramas creados por este proceso se llaman diagramas de Entidad-Relación; diagramas ER, o ERD.
La primera etapa del diseño del sistema de información utiliza estos modelos durante el análisis de los requisitos para describir las necesidades de información o el tipo de información que se almacena en una base de datos. La técnica de modelado de datos se puede utilizar para describir cualquier ontología de una determinada zona de interés. En el caso del diseño de un sistema de información que se basa en una base de datos, el modelo conceptual de datos es, en una etapa posterior, asignado a un modelo de datos lógicos, como el modelo relacional, lo que a su vez se asigna a un modelo físico durante el diseño físico. Hay que tener en cuenta que a veces, a estas dos fases se les conoce como diseño físico.

Una entidad puede ser definida como una cosa reconocida capaz de tener una existencia independiente y que se puede identificar de forma exclusiva. La entidad es una abstracción de las complejidades de un dominio. Cuando hablamos de una entidad que normalmente hablan de algún aspecto del mundo real que puede distinguirse de otros aspectos del mundo real.

Una entidad puede ser un objeto físico, como una casa o un coche, un evento como una venta de casa o un servicio, o un concepto como una transacción de un cliente o pedido. Aunque el concepto de entidad es el más utilizado, después de Chen que realmente debe distinguir entre una entidad y un tipo de entidad. Una entidad de tipo es una categoría. La entidad, en sentido estricto, es una instancia de una determinada entidad de tipo. Hay muchos casos por lo general de una entidad de tipo. Debido a que el concepto de entidad de tipo es algo complicado, la mayoría de la gente tiende a utilizar el concepto de entidad como sinónimo de este término.


Las entidades pueden ser consideradas como sustantivos. Ejemplos:una computadora, un empleado, una canción, un teorema matemático.
Una relación capta cómo dos o más entidades se relacionan entre sí. Las relaciones pueden ser considerados como los verbos, entre dos o más nombres. Por ejemplo: un propietario de la relación entre una empresa y una computadora, una supervisa la relación entre un empleado y un departamento, una lleva a cabo la relación entre un artista y una canción, una relación demostrada entre un matemático y un teorema.

El aspecto lingüístico del modelo descrito anteriormente se utiliza en el lenguaje de consultas declarativo Errol, que imita las construcciones del lenguaje natural.

Las entidades y las relaciones puede tener atributos. Ejemplos: una entidad empleado puede tener un Número de Seguro Social (SSN) atributo, la relación resultado puede tener un atributo de fecha.


Todas las entidades debe tener un conjunto mínimo de atributos de identificación única, que se denomina clave primaria de la entidad.

Diagramas de entidad-relación no se muestran las entidades individuales o casos individuales de las relaciones. Por el contrario, muestran conjuntos de entidades y conjuntos de relaciones. Ejemplo: una canción en particular es una entidad. La colección de todas las canciones de una base de datos es un conjunto de entidades. La relación entre comer un niño y su comida es una relación única. El conjunto de todas las relaciones como el almuerzo de los niños en una base de datos es un conjunto de relaciones. En otras palabras, un conjunto relación corresponde a una relación de las matemáticas, mientras que una relación se corresponde a un miembro de la relación.

Ciertas restricciones de cardinalidad de conjuntos relación puede estar indicada también.