SlideShare ist ein Scribd-Unternehmen logo
1 von 39
DPOM - Bases de datos MySQL. Prof. Eugenio T1
Bases de Datos MySQL
Tablas y consultas.
DPOM - Bases de datos MySQL. Prof. Eugenio T2
Bases de Datos MySQL
Recordemos el modelo
Entidad – Relación de una escuela...
DPOM - Bases de datos MySQL. Prof. Eugenio T3
Bases de Datos MySQL
DPOM - Bases de datos MySQL. Prof. Eugenio T4
Bases de Datos MySQL
Propiedades de las entidades.
DPOM - Bases de datos MySQL. Prof. Eugenio T5
Bases de Datos MySQL
La entidad “alumnos” se convierte en la tabla:
Entidad Tabla
Propiedad Columna
Cada fila representa un Registro.
La clave puede estar formada por una o mas columnas
DPOM - Bases de datos MySQL. Prof. Eugenio T6
Bases de Datos MySQL
Para crear la base de datos
“escuela” utilizaremos el Sistema
de Gestión de Bases de Datos
MySQL
DPOM - Bases de datos MySQL. Prof. Eugenio T7
Bases de Datos MySQL
Ventajas de MySQL:
* Robusto
* Código abierto
* Forma parte de LAMP
DPOM - Bases de datos MySQL. Prof. Eugenio T8
Bases de Datos MySQL
Existe una herramienta, llamada
phpMyAdmin, que permite
administrar las bases de datos
MySQL mediante una interfaz
sencilla creada en PHP...
DPOM - Bases de datos MySQL. Prof. Eugenio T9
Bases de Datos MySQL
Ejercicio:
En una base de datos nueva, crear la
tabla “alumnos”, con los campos
clave_alumno, nombre, edad y
curso_actual utilizando phpMyAdmin.
DPOM - Bases de datos MySQL. Prof. Eugenio T10
Bases de Datos MySQL
Creación de una tabla:
Indicar, para cada campo de la tabla los siguientes datos:
Field : Nombre del atributo.
Type : Tipo de dato del atributo.
Length/Values : Indica la longitud máxima del tipo de dato (especialmente para VARCHAR).
Attributes : UNSIGNED : Sólo toma valores positivos (para INTEGER, SMALLINT, ...).
Null : El atributo puede tomar valores nulos?
(la clave o identificador de la tabla nunca puede tener valores nulos!!!).
Default : Valor por defecto del atributo al añadir una nueva fila.
Extra : AUTO_INCREMENT (normalmente se usa para generar, automáticamente,
valores de la clave).
Primary : Se debe marcar si el atributo es Clave Primaria (el identificador) de la tabla.
Index : Crea un índice dentro de la tabla.
Unique: Se debe marcar si el valor del atributo es único para toda la tabla.
DPOM - Bases de datos MySQL. Prof. Eugenio T11
Bases de Datos MySQL
Tipos de Datos en MySQL:
Los tipos de datos que puede haber en un campo
o atributo de una tabla forman tres grandes
grupos:
1. Tipos Numéricos
2. Tipos de Fecha
3. Tipos de Cadena de Caracteres
DPOM - Bases de datos MySQL. Prof. Eugenio T12
Bases de Datos MySQL
1) Tipos numéricos:
Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que incluyen valores decimales (coma flotante) y
los que no.
TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de
valores es de 0 a 255
Bit ó Bool: un número entero que puede ser 0 ó 1
SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de
0 a 65535.
MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va
desde 0 a 16777215.
Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango
va desde 0 a 429.4967.295
BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615.
Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38,
0 y desde 1.175494351E-38 a 3.402823466E+38.
Real, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a
-2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308
Decimal, Dec, Numeric: Número en coma flotante. El número se almacena como una cadena
DPOM - Bases de datos MySQL. Prof. Eugenio T13
Bases de Datos MySQL
2) Tipo Fecha:
Al almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una
fecha es válida o no. Simplemente comprueba que el mes está entre 0 y 12 y que el día está entre 0 y
31.
Date: Almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre
de 9999. El formato de almacenamiento es de: año-mes-dia
DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0
horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos.
El formato de almacenamiento es de año-mes-dia horas:minutos:segundos
TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037.
Time: Almacena la hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59
minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'
Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo
puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro
dígitos.
DPOM - Bases de datos MySQL. Prof. Eugenio T14
Bases de Datos MySQL
3) Tipos de Cadena de Caracteres:
Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres.
VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres.
Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los de tipo Text y los de tipo BLOB
(Binary large Object). La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar
ordenamientos y comparaciones. Mientras que el tipo Text se ordena sin tener en cuenta las Mayúsculas y las
minúsculas, el tipo BLOB se ordena teniéndolas en cuenta.
Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros.
TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres.
Blob y Text: un texto con un máximo de 65535 caracteres.
MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres.
LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido
a los protocolos de comunicación en Internet, los paquetes pueden tener un máximo de 16 Mb.
Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535
valores distintos
Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de
64 valores.
DPOM - Bases de datos MySQL. Prof. Eugenio T15
Bases de Datos MySQL
Ejercicio:
Insertar registros en la nueva tabla “alumnos”. Insertar al
menos 4 registros de este tipo:
DPOM - Bases de datos MySQL. Prof. Eugenio T16
Bases de Datos MySQL
El lenguaje standard para los
sistemas de bases de datos
relacionales se llama SQL.
DPOM - Bases de datos MySQL. Prof. Eugenio T17
Bases de Datos MySQL
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, ...
DPOM - Bases de datos MySQL. Prof. Eugenio T18
Bases de Datos MySQL
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 registros en la BD (filas de una tabla)
* Update
Permite modificar registros en la BD (filas de una tabla)
* Delete
Permite borrar registros en la BD (filas de una tabla)
DPOM - Bases de datos MySQL. Prof. Eugenio T19
Bases de Datos MySQL
Consulta de datos: SELECT
Notación:
SELECT <nombre_cols>
FROM <nombre_tablas>;
Ejemplo sobre la tabla alumnos:
empleados (clave_alumno, nombre, edad, curso_actual)
SELECT nombre, edad
FROM alumnos;
DPOM - Bases de datos MySQL. Prof. Eugenio T20
Bases de Datos MySQL
Para mostrar todos los campos (columnas) de la tabla alumnos:
SELECT *
FROM empleados;
Para evitar mostrar filas duplicadas:
SELECT DISTINCT nombre
FROM alumnos;
DPOM - Bases de datos MySQL. Prof. Eugenio T21
Bases de Datos MySQL
Filtros (WHERE). Sirven para aplicar condiciones (o restricciones) en la
selección de datos.
Notación:
SELECT <nombre_cols>
FROM <nombre_tablas>
WHERE <condiciones_booleanas>;
• Ejemplo:
SELECT nombre, curso_actual
FROM alumnos
WHERE edad = 10;
DPOM - Bases de datos MySQL. Prof. Eugenio T22
Bases de Datos MySQL
Operadores de comparación aplicables en la cláusula WHERE:
=
>
<
>=
<=
<>
Operadores lógicos aplicables en la cláusula WHERE:
AND / OR / NOT
Otros predicados aplicables en la cláusula WHERE:
<atributo> BETWEEN <limit_1>AND <limit_2> {Rango de valores}
<atributo> LIKE <expr> {cadena de caracteres } Comodines: ‘%’, ‘_’
<atributo> IS [NOT] NULL {consultar si el atributo tiene valor o no}
DPOM - Bases de datos MySQL. Prof. Eugenio T23
Bases de Datos MySQL
Ejemplos:
AND:
SELECT nombre
FROM alumnos
WHERE curso_actual = 3 AND edad >= 10;
BETWEEN:
SELECT *
FROM alumnos
WHERE edad BETWEEN 8 AND 12;
LIKE:
SELECT *
FROM alumnos
WHERE nombre LIKE "M%" AND curso_actual = 3;
DPOM - Bases de datos MySQL. Prof. Eugenio T24
Bases de Datos MySQL
Ejercicios:
1. Obtener el nombre de todos los alumnos
que actualmente estén cursando cuarto año.
2. Obtener todos los datos de los alumnos
cuya edad sea menor o igual que diez años,
o que estén en un curso anterior al tercero.
DPOM - Bases de datos MySQL. Prof. Eugenio T25
Bases de Datos MySQL
Ordenación de los datos presentados (ORDER BY)
Notación:
SELECT <nombre_cols>
FROM <nombre_tablas>
[ WHERE <condiciones_booleanas> ]
ORDER BY <atributo_1>, ..., <atributo_N>;
Ejemplo:
SELECT nombre, edad
FROM alumnos
ORDER BY edad DESC; {por defecto es ASC}
DPOM - Bases de datos MySQL. Prof. Eugenio T26
Bases de Datos MySQL
Funciones de agregación
COUNT(<fila>) {devuelve el total de filas seleccionadas}
SUM(<columna>) {suma los valores de una columna}
MIN(<columna>) {devuelve valor mínimo columna}
MAX(<columna>) {devuelve valor máximo columna}
AVG(<columna>) {devuelve la mediana de la columna}
...
• Ejemplos:
SELECT COUNT(*) SELECT AVG(edad)
FROM alumnos; FROM alumnos
WHERE curso_actual = 3;
DPOM - Bases de datos MySQL. Prof. Eugenio T27
Bases de Datos MySQL
Ejercicios:
3. Obtener la edad del mayor de los
alumnos.
4. Obtener el número de alumnos cuya edad
sea 11 años.
DPOM - Bases de datos MySQL. Prof. Eugenio T28
Bases de Datos MySQL
Ejercicios:
5. Crear el resto de tablas:
profesores, listas, aulas, asignaturas, horarios.
OJO: la tabla “listas” tiene los siguientes campos:
clave_alumno, clave_profesor. Ambos campos
forman la clave de la tabla.
DPOM - Bases de datos MySQL. Prof. Eugenio T29
Bases de Datos MySQL
DPOM - Bases de datos MySQL. Prof. Eugenio T30
Bases de Datos MySQL
Ejercicios extra:
1. Crear y ejecutar el comando SELECT para obtener los
nombres (ordenados alfabéticamente) de los alumnos que
tengan 10 años y estén en el tercer curso.
2. Crear y ejecutar el comando SELECT para obtener el
nombre y curso actual de los alumnos cuya edad esté entre
11 y 12.
3. Obtener el número de alumnos cuya edad sean 10 años.
DPOM - Bases de datos MySQL. Prof. Eugenio T31
Bases de Datos MySQL
Relaciones entre tablas:
Recordemos que un aula puede tener varias
asignaturas, según nuestro modelo…
Por lo tanto, la relación entre las tablas está dada
por la relación entre sus campos…
DPOM - Bases de datos MySQL. Prof. Eugenio T32
Bases de Datos MySQL
Aulas (clave_aula, nombre … )
Asignaturas (clave_asignatura, clave_aula …)
En la tabla “Asignaturas”, clave_aula hace referencia a la
clave del mismo nombre en la tabla “Aulas”.
DPOM - Bases de datos MySQL. Prof. Eugenio T33
Bases de Datos MySQL
Alumnos (clave_alumno, nombre … )
Listas (clave_alumno, clave_profesor)
Profesores (clave_profesor, nombre … )
DPOM - Bases de datos MySQL. Prof. Eugenio T34
Bases de Datos MySQL
Consultas en más de una tabla
Notación:
SELECT <nom_cols>
FROM <nom_tabla>, <nom_tabla>, ... , <nom_tabla>
[ WHERE <condiciones_booleanas> ]
Ejemplo:
SELECT asignaturas.nombre, aulas.nombre
FROM asignaturas, aulas
WHERE aulas.clave_aula = asignaturas.clave_aula;
DPOM - Bases de datos MySQL. Prof. Eugenio T35
Bases de Datos MySQL
Ejemplo 1.
Nombres de las aulas donde se hace la asignatura de
Historia:
SELECT aulas.nombre
FROM aulas, asignaturas
WHERE asignaturas.nombre = 'Historia' AND
aulas.clave_aula = asignaturas.clave_aula
DPOM - Bases de datos MySQL. Prof. Eugenio T36
Bases de Datos MySQL
Ejemplo 2.
Horarios y dias en los que se imparte la asignatura de Historia:
SELECT horarios.hora_inicio, horarios.hora_fin, horarios.dia
FROM horarios, asignaturas
WHERE asignaturas.nombre = 'Historia' AND
horarios.clave_asignatura = asignaturas.clave_asignatura
ORDER BY horarios.dia, horarios.hora_inicio
DPOM - Bases de datos MySQL. Prof. Eugenio T37
Bases de Datos MySQL
Ejemplo 3.
Asignaturas que comienzan entre 8:00 y 10:00:
SELECT asignaturas.nombre, horarios.hora_inicio,
horarios.hora_fin, horarios.dia
FROM asignaturas, horarios
WHERE asignaturas.clave_asignatura = horarios.clave_asignatura
AND horarios.hora_inicio BETWEEN '08:00:00' AND '10:00:00'
ORDER BY horarios.dia, horarios.hora_inicio, asignaturas.nombre
DPOM - Bases de datos MySQL. Prof. Eugenio T38
Bases de Datos MySQL
Ejemplo 4.
Asignaturas que comienzan entre 8 y 10 el dia lunes:
SELECT asignaturas.nombre, horarios.hora_inicio,
horarios.hora_fin, horarios.dia
FROM asignaturas, horarios
WHERE asignaturas.clave_asignatura = horarios.clave_asignatura
AND horarios.hora_inicio BETWEEN '08:00:00' AND '10:00:00'
AND horarios.dia = 'lunes'
ORDER BY horarios.dia, horarios.hora_inicio, asignaturas.nombre
DPOM - Bases de datos MySQL. Prof. Eugenio T39
Bases de Datos MySQL
Ejemplo 5.
Alumnos cuyo profesor es 'Roberto Juarez':
SELECT DISTINCT alumnos.nombre
FROM alumnos, profesores, listas
WHERE profesores.nombre = 'Roberto Juarez' AND
listas.clave_profesor = profesores.clave_profesor AND
alumnos.clave_alumno = listas.clave_alumno
ORDER BY alumnos.nombre

Weitere ähnliche Inhalte

Was ist angesagt? (15)

Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008
 
Tablas y tipos de datos
Tablas y tipos de datosTablas y tipos de datos
Tablas y tipos de datos
 
Desarrollo desoftware
Desarrollo desoftwareDesarrollo desoftware
Desarrollo desoftware
 
Arrays
ArraysArrays
Arrays
 
Sql
SqlSql
Sql
 
LENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQLLENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQL
 
Introduccion base de datos
Introduccion base de datosIntroduccion base de datos
Introduccion base de datos
 
Programacion no numerica2
Programacion no numerica2Programacion no numerica2
Programacion no numerica2
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Archivossin
ArchivossinArchivossin
Archivossin
 
formas de codificación de la información
formas de codificación de la informaciónformas de codificación de la información
formas de codificación de la información
 
Tipos de dato de postgreSQL
Tipos de dato de postgreSQLTipos de dato de postgreSQL
Tipos de dato de postgreSQL
 
Representación de la información (1)
Representación de la información (1)Representación de la información (1)
Representación de la información (1)
 
Tema 3 lenguaje sql t-sql 2008
Tema 3   lenguaje sql t-sql 2008Tema 3   lenguaje sql t-sql 2008
Tema 3 lenguaje sql t-sql 2008
 

Ähnlich wie MySQL Bases de Datos - Tablas, Consultas y Funciones

Bases de datos my sql
Bases de datos my sqlBases de datos my sql
Bases de datos my sqlevavivez
 
Modulo sql unidad 1
Modulo sql  unidad 1Modulo sql  unidad 1
Modulo sql unidad 1firemas
 
Educación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar deEducación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar dedanie12angie
 
informacion sobre blog datos y sql
informacion sobre blog datos y sqlinformacion sobre blog datos y sql
informacion sobre blog datos y sqldanie12angie
 
Clase06 25-06-12
Clase06 25-06-12Clase06 25-06-12
Clase06 25-06-12Free TIC
 
Sql server 2005 (bda)henrry
Sql server 2005 (bda)henrrySql server 2005 (bda)henrry
Sql server 2005 (bda)henrryHENRRYDAVIDS1
 
Downloads%2 ftutorial sql%2fmanual-tutorial-sql
Downloads%2 ftutorial sql%2fmanual-tutorial-sqlDownloads%2 ftutorial sql%2fmanual-tutorial-sql
Downloads%2 ftutorial sql%2fmanual-tutorial-sqlJoMa Navarro Torres
 
Pasos para crear tabla en microsoff acces
Pasos para crear tabla en microsoff accesPasos para crear tabla en microsoff acces
Pasos para crear tabla en microsoff accesmateoyguepe
 
Base de datos avanzado i
Base de datos avanzado iBase de datos avanzado i
Base de datos avanzado iGermán Naranjo
 
Propiedades del campo
Propiedades del campoPropiedades del campo
Propiedades del campoDubraska1
 

Ähnlich wie MySQL Bases de Datos - Tablas, Consultas y Funciones (20)

Bases de datos my sql
Bases de datos my sqlBases de datos my sql
Bases de datos my sql
 
Modulo sql unidad 1
Modulo sql  unidad 1Modulo sql  unidad 1
Modulo sql unidad 1
 
Educación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar deEducación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar de
 
informacion sobre blog datos y sql
informacion sobre blog datos y sqlinformacion sobre blog datos y sql
informacion sobre blog datos y sql
 
Clase07
Clase07Clase07
Clase07
 
BD cap 5 SQL.pdf
BD cap 5  SQL.pdfBD cap 5  SQL.pdf
BD cap 5 SQL.pdf
 
Clase06 25-06-12
Clase06 25-06-12Clase06 25-06-12
Clase06 25-06-12
 
Unidad4 sql
Unidad4 sqlUnidad4 sql
Unidad4 sql
 
TODO SOBRE SQL
TODO SOBRE SQLTODO SOBRE SQL
TODO SOBRE SQL
 
Tema3
Tema3Tema3
Tema3
 
Taba y tipos de datos
Taba y tipos de datosTaba y tipos de datos
Taba y tipos de datos
 
Sql server 2005 (bda)henrry
Sql server 2005 (bda)henrrySql server 2005 (bda)henrry
Sql server 2005 (bda)henrry
 
Visualfoxpro
VisualfoxproVisualfoxpro
Visualfoxpro
 
Manual tutorial-sql
Manual tutorial-sqlManual tutorial-sql
Manual tutorial-sql
 
Downloads%2 ftutorial sql%2fmanual-tutorial-sql
Downloads%2 ftutorial sql%2fmanual-tutorial-sqlDownloads%2 ftutorial sql%2fmanual-tutorial-sql
Downloads%2 ftutorial sql%2fmanual-tutorial-sql
 
Pasos para crear tabla en microsoff acces
Pasos para crear tabla en microsoff accesPasos para crear tabla en microsoff acces
Pasos para crear tabla en microsoff acces
 
Base de datos avanzado i
Base de datos avanzado iBase de datos avanzado i
Base de datos avanzado i
 
Base de datos avanzado i
Base de datos avanzado iBase de datos avanzado i
Base de datos avanzado i
 
Base de datos avanzado i
Base de datos avanzado iBase de datos avanzado i
Base de datos avanzado i
 
Propiedades del campo
Propiedades del campoPropiedades del campo
Propiedades del campo
 

MySQL Bases de Datos - Tablas, Consultas y Funciones

  • 1. DPOM - Bases de datos MySQL. Prof. Eugenio T1 Bases de Datos MySQL Tablas y consultas.
  • 2. DPOM - Bases de datos MySQL. Prof. Eugenio T2 Bases de Datos MySQL Recordemos el modelo Entidad – Relación de una escuela...
  • 3. DPOM - Bases de datos MySQL. Prof. Eugenio T3 Bases de Datos MySQL
  • 4. DPOM - Bases de datos MySQL. Prof. Eugenio T4 Bases de Datos MySQL Propiedades de las entidades.
  • 5. DPOM - Bases de datos MySQL. Prof. Eugenio T5 Bases de Datos MySQL La entidad “alumnos” se convierte en la tabla: Entidad Tabla Propiedad Columna Cada fila representa un Registro. La clave puede estar formada por una o mas columnas
  • 6. DPOM - Bases de datos MySQL. Prof. Eugenio T6 Bases de Datos MySQL Para crear la base de datos “escuela” utilizaremos el Sistema de Gestión de Bases de Datos MySQL
  • 7. DPOM - Bases de datos MySQL. Prof. Eugenio T7 Bases de Datos MySQL Ventajas de MySQL: * Robusto * Código abierto * Forma parte de LAMP
  • 8. DPOM - Bases de datos MySQL. Prof. Eugenio T8 Bases de Datos MySQL Existe una herramienta, llamada phpMyAdmin, que permite administrar las bases de datos MySQL mediante una interfaz sencilla creada en PHP...
  • 9. DPOM - Bases de datos MySQL. Prof. Eugenio T9 Bases de Datos MySQL Ejercicio: En una base de datos nueva, crear la tabla “alumnos”, con los campos clave_alumno, nombre, edad y curso_actual utilizando phpMyAdmin.
  • 10. DPOM - Bases de datos MySQL. Prof. Eugenio T10 Bases de Datos MySQL Creación de una tabla: Indicar, para cada campo de la tabla los siguientes datos: Field : Nombre del atributo. Type : Tipo de dato del atributo. Length/Values : Indica la longitud máxima del tipo de dato (especialmente para VARCHAR). Attributes : UNSIGNED : Sólo toma valores positivos (para INTEGER, SMALLINT, ...). Null : El atributo puede tomar valores nulos? (la clave o identificador de la tabla nunca puede tener valores nulos!!!). Default : Valor por defecto del atributo al añadir una nueva fila. Extra : AUTO_INCREMENT (normalmente se usa para generar, automáticamente, valores de la clave). Primary : Se debe marcar si el atributo es Clave Primaria (el identificador) de la tabla. Index : Crea un índice dentro de la tabla. Unique: Se debe marcar si el valor del atributo es único para toda la tabla.
  • 11. DPOM - Bases de datos MySQL. Prof. Eugenio T11 Bases de Datos MySQL Tipos de Datos en MySQL: Los tipos de datos que puede haber en un campo o atributo de una tabla forman tres grandes grupos: 1. Tipos Numéricos 2. Tipos de Fecha 3. Tipos de Cadena de Caracteres
  • 12. DPOM - Bases de datos MySQL. Prof. Eugenio T12 Bases de Datos MySQL 1) Tipos numéricos: Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que incluyen valores decimales (coma flotante) y los que no. TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255 Bit ó Bool: un número entero que puede ser 0 ó 1 SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a 16777215. Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295 BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615. Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38. Real, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308 Decimal, Dec, Numeric: Número en coma flotante. El número se almacena como una cadena
  • 13. DPOM - Bases de datos MySQL. Prof. Eugenio T13 Bases de Datos MySQL 2) Tipo Fecha: Al almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes está entre 0 y 12 y que el día está entre 0 y 31. Date: Almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de: año-mes-dia DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. Time: Almacena la hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS' Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.
  • 14. DPOM - Bases de datos MySQL. Prof. Eugenio T14 Bases de Datos MySQL 3) Tipos de Cadena de Caracteres: Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres. VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres. Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los de tipo Text y los de tipo BLOB (Binary large Object). La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo Text se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta. Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros. TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres. Blob y Text: un texto con un máximo de 65535 caracteres. MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres. LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación en Internet, los paquetes pueden tener un máximo de 16 Mb. Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.
  • 15. DPOM - Bases de datos MySQL. Prof. Eugenio T15 Bases de Datos MySQL Ejercicio: Insertar registros en la nueva tabla “alumnos”. Insertar al menos 4 registros de este tipo:
  • 16. DPOM - Bases de datos MySQL. Prof. Eugenio T16 Bases de Datos MySQL El lenguaje standard para los sistemas de bases de datos relacionales se llama SQL.
  • 17. DPOM - Bases de datos MySQL. Prof. Eugenio T17 Bases de Datos MySQL 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, ...
  • 18. DPOM - Bases de datos MySQL. Prof. Eugenio T18 Bases de Datos MySQL 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 registros en la BD (filas de una tabla) * Update Permite modificar registros en la BD (filas de una tabla) * Delete Permite borrar registros en la BD (filas de una tabla)
  • 19. DPOM - Bases de datos MySQL. Prof. Eugenio T19 Bases de Datos MySQL Consulta de datos: SELECT Notación: SELECT <nombre_cols> FROM <nombre_tablas>; Ejemplo sobre la tabla alumnos: empleados (clave_alumno, nombre, edad, curso_actual) SELECT nombre, edad FROM alumnos;
  • 20. DPOM - Bases de datos MySQL. Prof. Eugenio T20 Bases de Datos MySQL Para mostrar todos los campos (columnas) de la tabla alumnos: SELECT * FROM empleados; Para evitar mostrar filas duplicadas: SELECT DISTINCT nombre FROM alumnos;
  • 21. DPOM - Bases de datos MySQL. Prof. Eugenio T21 Bases de Datos MySQL Filtros (WHERE). Sirven para aplicar condiciones (o restricciones) en la selección de datos. Notación: SELECT <nombre_cols> FROM <nombre_tablas> WHERE <condiciones_booleanas>; • Ejemplo: SELECT nombre, curso_actual FROM alumnos WHERE edad = 10;
  • 22. DPOM - Bases de datos MySQL. Prof. Eugenio T22 Bases de Datos MySQL Operadores de comparación aplicables en la cláusula WHERE: = > < >= <= <> Operadores lógicos aplicables en la cláusula WHERE: AND / OR / NOT Otros predicados aplicables en la cláusula WHERE: <atributo> BETWEEN <limit_1>AND <limit_2> {Rango de valores} <atributo> LIKE <expr> {cadena de caracteres } Comodines: ‘%’, ‘_’ <atributo> IS [NOT] NULL {consultar si el atributo tiene valor o no}
  • 23. DPOM - Bases de datos MySQL. Prof. Eugenio T23 Bases de Datos MySQL Ejemplos: AND: SELECT nombre FROM alumnos WHERE curso_actual = 3 AND edad >= 10; BETWEEN: SELECT * FROM alumnos WHERE edad BETWEEN 8 AND 12; LIKE: SELECT * FROM alumnos WHERE nombre LIKE "M%" AND curso_actual = 3;
  • 24. DPOM - Bases de datos MySQL. Prof. Eugenio T24 Bases de Datos MySQL Ejercicios: 1. Obtener el nombre de todos los alumnos que actualmente estén cursando cuarto año. 2. Obtener todos los datos de los alumnos cuya edad sea menor o igual que diez años, o que estén en un curso anterior al tercero.
  • 25. DPOM - Bases de datos MySQL. Prof. Eugenio T25 Bases de Datos MySQL Ordenación de los datos presentados (ORDER BY) Notación: SELECT <nombre_cols> FROM <nombre_tablas> [ WHERE <condiciones_booleanas> ] ORDER BY <atributo_1>, ..., <atributo_N>; Ejemplo: SELECT nombre, edad FROM alumnos ORDER BY edad DESC; {por defecto es ASC}
  • 26. DPOM - Bases de datos MySQL. Prof. Eugenio T26 Bases de Datos MySQL Funciones de agregación COUNT(<fila>) {devuelve el total de filas seleccionadas} SUM(<columna>) {suma los valores de una columna} MIN(<columna>) {devuelve valor mínimo columna} MAX(<columna>) {devuelve valor máximo columna} AVG(<columna>) {devuelve la mediana de la columna} ... • Ejemplos: SELECT COUNT(*) SELECT AVG(edad) FROM alumnos; FROM alumnos WHERE curso_actual = 3;
  • 27. DPOM - Bases de datos MySQL. Prof. Eugenio T27 Bases de Datos MySQL Ejercicios: 3. Obtener la edad del mayor de los alumnos. 4. Obtener el número de alumnos cuya edad sea 11 años.
  • 28. DPOM - Bases de datos MySQL. Prof. Eugenio T28 Bases de Datos MySQL Ejercicios: 5. Crear el resto de tablas: profesores, listas, aulas, asignaturas, horarios. OJO: la tabla “listas” tiene los siguientes campos: clave_alumno, clave_profesor. Ambos campos forman la clave de la tabla.
  • 29. DPOM - Bases de datos MySQL. Prof. Eugenio T29 Bases de Datos MySQL
  • 30. DPOM - Bases de datos MySQL. Prof. Eugenio T30 Bases de Datos MySQL Ejercicios extra: 1. Crear y ejecutar el comando SELECT para obtener los nombres (ordenados alfabéticamente) de los alumnos que tengan 10 años y estén en el tercer curso. 2. Crear y ejecutar el comando SELECT para obtener el nombre y curso actual de los alumnos cuya edad esté entre 11 y 12. 3. Obtener el número de alumnos cuya edad sean 10 años.
  • 31. DPOM - Bases de datos MySQL. Prof. Eugenio T31 Bases de Datos MySQL Relaciones entre tablas: Recordemos que un aula puede tener varias asignaturas, según nuestro modelo… Por lo tanto, la relación entre las tablas está dada por la relación entre sus campos…
  • 32. DPOM - Bases de datos MySQL. Prof. Eugenio T32 Bases de Datos MySQL Aulas (clave_aula, nombre … ) Asignaturas (clave_asignatura, clave_aula …) En la tabla “Asignaturas”, clave_aula hace referencia a la clave del mismo nombre en la tabla “Aulas”.
  • 33. DPOM - Bases de datos MySQL. Prof. Eugenio T33 Bases de Datos MySQL Alumnos (clave_alumno, nombre … ) Listas (clave_alumno, clave_profesor) Profesores (clave_profesor, nombre … )
  • 34. DPOM - Bases de datos MySQL. Prof. Eugenio T34 Bases de Datos MySQL Consultas en más de una tabla Notación: SELECT <nom_cols> FROM <nom_tabla>, <nom_tabla>, ... , <nom_tabla> [ WHERE <condiciones_booleanas> ] Ejemplo: SELECT asignaturas.nombre, aulas.nombre FROM asignaturas, aulas WHERE aulas.clave_aula = asignaturas.clave_aula;
  • 35. DPOM - Bases de datos MySQL. Prof. Eugenio T35 Bases de Datos MySQL Ejemplo 1. Nombres de las aulas donde se hace la asignatura de Historia: SELECT aulas.nombre FROM aulas, asignaturas WHERE asignaturas.nombre = 'Historia' AND aulas.clave_aula = asignaturas.clave_aula
  • 36. DPOM - Bases de datos MySQL. Prof. Eugenio T36 Bases de Datos MySQL Ejemplo 2. Horarios y dias en los que se imparte la asignatura de Historia: SELECT horarios.hora_inicio, horarios.hora_fin, horarios.dia FROM horarios, asignaturas WHERE asignaturas.nombre = 'Historia' AND horarios.clave_asignatura = asignaturas.clave_asignatura ORDER BY horarios.dia, horarios.hora_inicio
  • 37. DPOM - Bases de datos MySQL. Prof. Eugenio T37 Bases de Datos MySQL Ejemplo 3. Asignaturas que comienzan entre 8:00 y 10:00: SELECT asignaturas.nombre, horarios.hora_inicio, horarios.hora_fin, horarios.dia FROM asignaturas, horarios WHERE asignaturas.clave_asignatura = horarios.clave_asignatura AND horarios.hora_inicio BETWEEN '08:00:00' AND '10:00:00' ORDER BY horarios.dia, horarios.hora_inicio, asignaturas.nombre
  • 38. DPOM - Bases de datos MySQL. Prof. Eugenio T38 Bases de Datos MySQL Ejemplo 4. Asignaturas que comienzan entre 8 y 10 el dia lunes: SELECT asignaturas.nombre, horarios.hora_inicio, horarios.hora_fin, horarios.dia FROM asignaturas, horarios WHERE asignaturas.clave_asignatura = horarios.clave_asignatura AND horarios.hora_inicio BETWEEN '08:00:00' AND '10:00:00' AND horarios.dia = 'lunes' ORDER BY horarios.dia, horarios.hora_inicio, asignaturas.nombre
  • 39. DPOM - Bases de datos MySQL. Prof. Eugenio T39 Bases de Datos MySQL Ejemplo 5. Alumnos cuyo profesor es 'Roberto Juarez': SELECT DISTINCT alumnos.nombre FROM alumnos, profesores, listas WHERE profesores.nombre = 'Roberto Juarez' AND listas.clave_profesor = profesores.clave_profesor AND alumnos.clave_alumno = listas.clave_alumno ORDER BY alumnos.nombre