MySQL Instalar los paquetes: mysql-client y mysql-server (apt

Anuncio
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’,
’[email protected]’)
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
Descargar