Download - Bases De Datos My Sql
![Page 1: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/1.jpg)
Bases de Datos MySQLBases de Datos MySQL
Tablas y consultas.
1
![Page 2: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/2.jpg)
Bases de Datos MySQLBases de Datos MySQL
Recordemos el modelo Entidad – Relación
Ejemplo Base De Datos Escuela
2
![Page 3: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/3.jpg)
Bases de Datos MySQLBases de Datos MySQL
3
![Page 4: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/4.jpg)
Bases de Datos MySQLBases de Datos MySQL
4
Propiedades de las entidades.
![Page 5: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/5.jpg)
Bases de Datos MySQLBases de Datos MySQLLa entidad “alumnos” se convierte en la tabla:
Entidad TablaPropiedad Columna
Cada fila representa un Registro.La clave puede estar formada por una o mas columnas
5
![Page 6: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/6.jpg)
Bases de Datos MySQLBases de Datos MySQL
Para crear la base de datos “escuela” utilizaremos el Sistema
de Gestión de Bases de Datos MySQL
6
![Page 7: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/7.jpg)
Bases de Datos MySQLBases de Datos MySQL
Ventajas de MySQL:
* Robusto
* Código abierto
* Forma parte de LAMP
7
![Page 8: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/8.jpg)
Bases de Datos MySQLBases de Datos MySQLExiste una herramienta, llamada phpMyAdmin, que permite administrar las bases de datos MySQL mediante una interfaz sencilla creada en PHP...
8
![Page 9: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/9.jpg)
Bases de Datos MySQLBases de Datos MySQLEjercicio:
En una base de datos nueva, crear la tabla “alumnos”, con los campos clave_alumno, nombre, edad y curso_actual utilizando phpMyAdmin.
9
![Page 10: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/10.jpg)
Bases de Datos MySQLBases de Datos MySQLCreació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.
10
![Page 11: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/11.jpg)
Bases de Datos MySQLBases de Datos MySQLTipos 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éricos2. Tipos de Fecha3. Tipos de Cadena de Caracteres
11
![Page 12: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/12.jpg)
Bases de Datos MySQLBases de Datos MySQL1) 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 255Bit ó Bool: un número entero que puede ser 0 ó 1SmallInt: 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.295BigInt: 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+308Decimal, Dec, Numeric: Número en coma flotante. El número se almacena como una cadena
12
![Page 13: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/13.jpg)
Bases de Datos MySQLBases de Datos MySQL2) 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-diaDateTime: 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:segundosTimeStamp: 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.
13
![Page 14: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/14.jpg)
Bases de Datos MySQLBases de Datos MySQL3) 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 distintosSet: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.
14
![Page 15: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/15.jpg)
Bases de Datos MySQLBases de Datos MySQLEjercicio:Insertar registros en la nueva tabla “alumnos”. Insertar al menos 4 registros de este tipo:
15
![Page 16: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/16.jpg)
Bases de Datos MySQLBases de Datos MySQL
El lenguaje standard para los sistemas de bases de datos relacionales se llama SQL.
16
![Page 17: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/17.jpg)
Bases de Datos MySQLBases de Datos MySQLComponentes del lenguaje SQL:* DML (Data Manipulation Language)
Manipulación de los datosSeleccionar / Añadir / Modificar /
Borrar* DDL (Data Definition Language)
Creación de objetos de la BD Creación de tablas, ...
17
![Page 18: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/18.jpg)
Bases de Datos MySQLBases de Datos MySQLDML = 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)
18
![Page 19: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/19.jpg)
Bases de Datos MySQLBases de Datos MySQLConsulta de datos: SELECTNotación:
SELECT <nombre_cols>FROM <nombre_tablas>;
Ejemplo sobre la tabla alumnos:empleados (clave_alumno, nombre, edad, curso_actual)
SELECT nombre, edadFROM alumnos;
19
![Page 20: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/20.jpg)
Bases de Datos MySQLBases de Datos MySQLPara mostrar todos los campos (columnas) de la tabla alumnos:
SELECT *FROM empleados;
Para evitar mostrar filas duplicadas:
SELECT DISTINCT nombreFROM alumnos;
20
![Page 21: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/21.jpg)
Bases de Datos MySQLBases de Datos MySQLFiltros (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_actualFROM alumnosWHERE edad = 10;
21
![Page 22: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/22.jpg)
Bases de Datos MySQLBases de Datos MySQLOperadores de comparación aplicables en la cláusula WHERE:=><>=<=<>Operadores lógicos aplicables en la cláusula WHERE:AND / OR / NOTOtros 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}
22
![Page 23: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/23.jpg)
Bases de Datos MySQLBases de Datos MySQLEjemplos:AND:SELECT nombreFROM alumnosWHERE curso_actual = 3 AND edad >= 10;BETWEEN:SELECT *FROM alumnosWHERE edad BETWEEN 8 AND 12;LIKE:SELECT *FROM alumnosWHERE nombre LIKE "M%" AND curso_actual = 3;
23
![Page 24: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/24.jpg)
Bases de Datos MySQLBases de Datos MySQLEjercicios:
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.
24
![Page 25: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/25.jpg)
Bases de Datos MySQLBases de Datos MySQLOrdenació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, edadFROM alumnosORDER BY edad DESC; {por defecto es ASC}
25
![Page 26: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/26.jpg)
Bases de Datos MySQLBases de Datos MySQLFunciones de agregaciónCOUNT(<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;
26
![Page 27: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/27.jpg)
Bases de Datos MySQLBases de Datos MySQLEjercicios:
3. Obtener la edad del mayor de los alumnos.4. Obtener el número de alumnos cuya edad sea 11 años.
27
![Page 28: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/28.jpg)
Bases de Datos MySQLBases de Datos MySQLEjercicios:
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.
28
![Page 29: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/29.jpg)
Bases de Datos MySQLBases de Datos MySQL
29
![Page 30: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/30.jpg)
Bases de Datos MySQLBases de Datos MySQL
30
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.
![Page 31: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/31.jpg)
Bases de Datos MySQLBases de Datos MySQLRelaciones 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…
31
![Page 32: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/32.jpg)
Bases de Datos MySQLBases 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”.
32
![Page 33: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/33.jpg)
Bases de Datos MySQLBases de Datos MySQL
Alumnos (clave_alumno, nombre … )Listas (clave_alumno, clave_profesor)Profesores (clave_profesor, nombre … )
33
![Page 34: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/34.jpg)
Bases de Datos MySQLBases de Datos MySQLConsultas en más de una tablaNotación:SELECT <nom_cols>FROM <nom_tabla>, <nom_tabla>, ... , <nom_tabla>[ WHERE <condiciones_booleanas> ]Ejemplo:
SELECT asignaturas.nombre, aulas.nombreFROM asignaturas, aulasWHERE aulas.clave_aula = asignaturas.clave_aula;
34
![Page 35: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/35.jpg)
Bases de Datos MySQLBases de Datos MySQLEjemplo 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
35
![Page 36: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/36.jpg)
Bases de Datos MySQLBases de Datos MySQLEjemplo 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
36
![Page 37: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/37.jpg)
Bases de Datos MySQLBases de Datos MySQLEjemplo 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
37
![Page 38: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/38.jpg)
Bases de Datos MySQLBases de Datos MySQLEjemplo 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
38
![Page 39: Bases De Datos My Sql](https://reader035.vdocuments.pub/reader035/viewer/2022081502/5585811fd8b42ab2148b499b/html5/thumbnails/39.jpg)
Bases de Datos MySQLBases de Datos MySQLEjemplo 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
39