MySQL Instalar los paquetes: mysql-client y mysql-server (apt-get install <nombre paquete>) Iniciar: mysql -h localhost -u root -p Generalmente para adeministrar las bases de datos, se usan Sistemas de Administración de Bases de Datos, pero al querer Programar un sistema, es necesario saber SQL, para combinarlo Con PHP y hacer consultas y llamadas a la base de datos. Manejo de bases de datos usando un SABD (Sistema Administrador de B. de Datos) • Ejemplos de SABD • Oracle • Sybase • MySql • Access • localhost/phpmyadmin //si instalaron xampp • postgreSQL (Paquetes: postgresql-8.2 postgresql-client-8.2 pgadmin3) • lenguaje de consulta (query language) • SQL (standard query language) • lenguaje de comandos • no es un lenguaje de programación • lenguaje declarativo: expresa el qué y no el cómo Crear tabla: create tabla(columnas) create libros( id char(20), titulo char(50), autor char(50), editorial char(20), fecha char(8), primary key(id) ) create lectores( id char(20),nombre char(50), direccion char(50),fono char(10),email char(20), primary key(id) ) create prestamos( idLibro char(20),idLector char(20),fecha char(8), foreign key(idLibro) references(libros(id)), foreign key(idLector) references(lectores(id)) ) Agregar fila insert into tabla values(valores) insert into libros values( ´JA1’,’JavaDigmas’,’Alvarez’,’Acme’,’2003’) insert into lectores values( ‘123’,’Rosa’,’Blanco 2120’,’9782000’, ’rm@hotmail.com’) insert into prestamos values( ‘JA1’,’123’,’20060911’) Borrar filas delete from tabla where condición delete from prestamos where idLibro=’JA1’ delete from libros where fecha<´19000101’ Actualizar filas update tabla set columna=valor, ... where cond update prestamos set fecha=’20030908’ where idLibro=’JA1’ update libros set autor=‘Alvarez’ where autor=’Alvares’ Consultar (query) select columnas from tabla where condición Prob. Id y título de libros de autor “Goles” select id, titulo from libros where autor=’Goles’ id titulo X Algebra Y ... ... ... Prob. Libros de Java (con palabra Java en el título) select * from libros where titulo like ’%Java%’ %: 0 o + cars id titulo autor editorial fecha X Java... Y ...Java Z ...Java... Problema. Lector que tiene el libro de id X Solución 1. Con dos select select idLector from prestamos where idLibro=’X’ idLector Y select * from lectores where id=’Y’ id nombre dir fono email Solución 2. Con select encajonado select * from lectores where id= (select idLector from prestamos where idLibro=’X’) id nombre dir fono email Problema. Libros prestados al lector de id X Sol1. Con 2 select select idLibro from prestamo where idLector=’X’ idLibro Y Z select * from libros where id=’Y’ or id=’Z’ or ... id titulo autor edit fecha Y Z Sol2. Con select encajonado select * from libros where id in (select idLibro from prestamos where idLector=’X’) Problema. Lectores (con libros) ordenados alfabeticamente select * from lectores order by nombre where exists (select * from prestamos where idLector=lectores.id) Problema. Libros disponibles, ordenados por identificador select * from libros order by id where not exists (select * from prestamos where idLibro=libro.id) Join (pareo, cruce) select columnas from tablas where condición Prob. titulo y fecha de devolución de libros de Java (prestados) select libros.titulo, prestamos.fecha from libros, prestamos where libros.id = prestamos.idLibro and libros.titulo like ‘%Java%’ libros.titulo prestamos.fecha Funcionamiento de join • from libros,prestamos: genera todas las combinaciones entre filas de libros y prestamos (#Libros*#Prestamos filas concatenando columnas) • where cond: selecciona filas que cumplan la condición • select cols: de filas anteriores selecciona columnas indicadas libros. libros. id titulo X ...Java... libros. libros. libros. prestamos. prestamos. prestamos. autor edit fecha idLibro idLector fecha X Base de datos de alumnos universitarios create alumnos( id char(10),nombre char(50),puntaje dec(5), primary key(id) ) create carreras( id char(4),nombre char(50),primary key(id) ) create matriculas( idAlumno char(10),idCarrera char(4), foreign key(idAlumno) references(alumnos(id)), foreign key(idCarreras)references(carreras(id)) ) Consultas 1. Nombre de la carrera de Juan Pérez 2. Alumnos de la carrera de Computación ordenados por puntaje 3. Alumnos ordenados alfabéticamente con el nombre de la carrera Problema. Nombre de la carrera de Juan Pérez select nombre from carreras where id = (select idCarrera from matriculas where idAlumno = (select id from alumnos where nombre like ´Perez%Juan%’ ) ) Problema. Alumnos de la carrera de Computación ordenados por puntaje select * from alumnos order by puntaje desc where id in (select idAlumno from matriculas where idCarrera = (select id from carreras where nombre like ´%Computación%’ ) ) Problema. Alumnos ordenados alfabéticamente con el nombre de la carrera select alumnos.nombre, carreras.nombre from matriculas, alumnos, carreras order by alumnos.nombre where matriculas.idAlumno = alumnos.id and matriculas.idCarrera = carreras.id Problema. Nº de alumnos de la carrera de computación y los puntajes mayor, menor y promedio select count(*), max(puntaje), min(puntaje), avg(puntaje) //sum(puntaje)/count(*) from alumnos where id in (select idAlumno from matriculas where idCarrera = (select id from carreras where nombre like ´%Computación%’ ) ) Problema. Nº de alumnos de cada carrera select idCarrera, count(*) from matriculas group by idCarrera