Story Transcript
Programación Orientada al Multimèdia, Curso 2003 Página 1
Conceptos Avanzados de Programación en Internet (1) Introducción a las Bases de Datos (2) Lenguaje Estándar de Consultas SQL
Programación Orientada al Multimèdia, Curso 2003 Página 2
Lenguaje SQL. Introducción BD • Justificación de las Bases de Datos (BD) – En general: • Estructura ordenada y relacionada de un gran volumen de información (frente el sistema de ficheros tradicional)
– En nuestro caso: Internet (WWW) • Generación dinámica de contenido en los sitios web • Permite desacoplar (separar) el diseño y el contenido (los datos) • Un primer ejemplo: – Listado de todos los productos de una empresa, con las características de cada producto, su imagen, etc... ⇒ Atención! añadir un nuevo producto no implica ninguna modificación del fichero HTML, sino solamente añadir el producto en la BD!
Programación Orientada al Multimèdia, Curso 2003 Página 3
Lenguaje SQL. Introducción BD • Aplicaciones Web + BD. Ejemplos – Catálogo de productos on-line – Mantenimiento del sitio: • Administración de los datos (“updates”) por parte del cliente
– Intranet corporativa – Administrador de contenido (noticias, calendarios, etc.) –…
Programación Orientada al Multimèdia, Curso 2003 Página 4
Lenguaje SQL. Introducción BD • Estructura de la información en una BD (I) – Tabla: productos (cod_prod, nombre, precio) cod_prod
nombre
precio
P1
Camiseta
45
P2
Pantalón
80
P3
Chaqueta
100
• Tabla bidimensional con atributos (columnas) y los datos correspondientes (filas) • Columnas: atributos que reflejan las características o propiedades de la tabla • Filas: contienen los datos que describen los productos • Clave (key): Identificador de la tabla (formado por uno o más atributos de la tabla)
Programación Orientada al Multimèdia, Curso 2003 Página 5
Lenguaje SQL. Introducción BD • Estructura de la información en una BD (II) – Relación entre Tablas: empleados (cod_emp, nombre, sueldo, cod_dept, cod_pro) departamentos (cod_dept, nombre, edificio, ciudad) proyectos (cod_pro, nombre, presupuesto) • Un empleado pertenece a un único departamento. • Un empleado está asignado a un proyecto.
Programación Orientada al Multimèdia, Curso 2003 Página 6
Lenguaje SQL. Introducción BD • Estructura de la información en una BD (II) – Relación entre Tablas (empleados – departamentos) empleados (cod_emp, nombre, sueldo, cod_dept, cod_pro) departamentos (cod_dept, nombre, edificio, ciudad) proyectos (cod_pro, nombre, presupuesto) • El atributo cod_dept de la tabla empleados hace referencia a la tabla departamentos
Programación Orientada al Multimèdia, Curso 2003 Página 7
Lenguaje SQL. Introducción BD • Estructura de la información en una BD (II) – Relación entre Tablas (empleados – proyectos) empleados (cod_emp, nombre, sueldo, cod_dept, cod_pro) departamentos (cod_dept, nombre, edificio, ciudad) proyectos (cod_pro, nombre, presupuesto) • El atributo cod_pro de la tabla empleados hace referencia a la tabla proyectos
Programación Orientada al Multimèdia, Curso 2003 Página 8
Lenguaje SQL. Introducción • SQL = Standard Query Language • Actualmente es el lenguaje estándar para los sistemas de base de datos relacionales – Aceptado por ANSI / X3H2 – Versiones: SQL/86, SQL2 (92), SQL3 (99) – Pero existen variantes del lenguaje en función del Sistema de Gestión de Base de Datos (SGBD) !!! • Trabajaremos con MySQL
Programación Orientada al Multimèdia, Curso 2003 Página 9
Lenguaje SQL. Introducción • Utilización – Permite acceder a los datos mediante un lenguaje bastante “cercano” al lenguaje humano • Ejemplo: “Seleccionar todos los productos con un precio mayor a 50”: cod_prod
nombre
precio
P1
Camiseta
45
P2
Pantalón
80
P3
Chaqueta
100
SELECT cod_prod, nombre, precio FROM productos WHERE precio > 50;
Programación Orientada al Multimèdia, Curso 2003 Página 10
Lenguaje SQL. Introducción • Componentes del lenguaje SQL – DML (Data Manipulation Language) • Manipulación de los datos – Seleccionar / Añadir / Modificar / Borrar
– DDL (Data Definition Language) • Creación de objetos de la BD – Creación de tablas, ...
– DCL (Data Control Language) • Control de acceso de los datos de los usuarios
Programación Orientada al Multimèdia, Curso 2003 Página 11
Lenguaje SQL. DML • DML = Data Manipulation Language (Manipulación de los Datos) – Select • Permite hacer consultas en la BD, obteniendo una nueva “tabla” con los resultados de la consulta
– Insert • Permite añadir datos en la BD (filas de una tabla)
– Update • Permite modificar datos en la BD (filas de una tabla)
– Delete • Permite borrar datos en la BD (filas de una tabla)
Programación Orientada al Multimèdia, Curso 2003 Página 12
Lenguaje SQL. DML (Select) • Consulta de datos: SELECT • Notación: SELECT FROM ; • Ejemplo sobre la tabla empleados: empleados (cod_emp, nombre, sueldo, cod_dept, cod_pro)
SELECT nombre, sueldo FROM empleados;
Programación Orientada al Multimèdia, Curso 2003 Página 13
Lenguaje SQL. DML (Select) • Para mostrar todos los atributos (columnas) de la tabla empleados: SELECT * FROM empleados; • Para evitar mostrar filas duplicadas: SELECT DISTINCT nombre FROM empleados;
Programación Orientada al Multimèdia, Curso 2003 Página 14
Lenguaje SQL. DML (Select) – Filtros (WHERE). Aplicar condiciones (o restricciones) en la selección de datos • Notación: SELECT FROM WHERE ; • Ejemplo: SELECT cod_emp, sueldo FROM empleados WHERE nombre = "Josep";
Programación Orientada al Multimèdia, Curso 2003 Página 15
Lenguaje SQL. DML (Select) • Operadores de comparación aplicables en la cláusula WHERE = > < >= = 3; BETWEEN: SELECT * FROM empleados WHERE cod_emp BETWEEN 2 AND 5; LIKE: SELECT * FROM empleados WHERE nombre LIKE "M%" AND cod_emp >= 3;
Programación Orientada al Multimèdia, Curso 2003 Página 17
Lenguaje SQL. DML (Select) • Ejemplos: IS (NOT) NULL: SELECT * FROM empleados WHERE cod_pro IS NOT NULL; SELECT * FROM empleados WHERE cod_pro IS NULL;
Programación Orientada al Multimèdia, Curso 2003 Página 18
Lenguaje SQL. DML (Select) – Ordenación de los datos presentados (ORDER BY) • Notación: SELECT FROM [ WHERE ] ORDER BY , ..., ; • Ejemplo: SELECT nombre, sueldo FROM empleados ORDER BY sueldo DESC; {por defecto es ASC}
Programación Orientada al Multimèdia, Curso 2003 Página 19
Lenguaje SQL. DML (Select) – Funciones de agregación COUNT() {devuelve el total de filas seleccionadas} SUM() {suma los valores de una columna} MIN() {devuelve valor mínimo columna} MAX() {devuelve valor máximo columna} AVG() {devuelve la mediana de la columna} ... • Ejemplos: SELECT COUNT(*) SELECT AVG(sueldo) FROM empleados; FROM empleados;
Programación Orientada al Multimèdia, Curso 2003 Página 20
Lenguaje SQL. Ejemplos •
Ejemplos (I) 1) Mostrar todos los datos de la tabla empleados. 2) Mostrar el nombre y sueldo de todos los empleados. 3) Obtener el nombre y sueldo de todos los empleados que trabajan en el departamento con código 1. 4) Obtener el nombre y sueldo de todos los empleados que trabajan en el departamento con código 1, tal que su sueldo es mayor de 20000 euros.
Programación Orientada al Multimèdia, Curso 2003 Página 21
Lenguaje SQL. DML (Select) – Consultas en más de una tabla • Notación: SELECT FROM , , ... , [ WHERE ] • Ejemplo (I): empleados (cod_emp, nombre, sueldo, cod_dept, cod_pro) departamentos (cod_dept, nombre, edificio, ciudad) SELECT e.cod_emp, d.cod_dept, d.nombre FROM empleados e, departamentos d WHERE e.cod_dept = d.cod_dept;
Programación Orientada al Multimèdia, Curso 2003 Página 22
Lenguaje SQL. Ejemplos •
Ejemplos (II) 1) Mostrar los nombres de los empleados que trabajan en departamentos ubicados en la ciudad de BARCELONA. 2) Obtener el nombre y sueldo de los empleados que trabajan en el departamento de VENTAS. 3) Mostrar los nombres de los departamentos situados en MADRID, tal que alguno de sus empleados ganan más de 40000 euros. 4) Mostrar el código, nombre, sueldo y nombre del departamento de los empleados cuyo sueldo es mayor de 45000 euros y su departamento está ubicado en Madrid.