Este documento proporciona una introducción a MySQL para principiantes. Explica cómo conectarse a una base de datos MySQL, crear y modificar bases de datos y tablas, insertar y consultar datos, y realizar operaciones comunes como ordenar, agrupar y realizar cálculos. También cubre temas como tipos de datos, restricciones, manejo de fechas y consultas con múltiples tablas. El objetivo es enseñar los conocimientos básicos necesarios para crear y utilizar una base de datos sencilla en MySQL.
MySQL para principiantes: guía completa desde cero hasta triggers
1. Para principiantes:
desde cero hasta triggers
Nancy Michelle Torres Villanueva
MySQL para principiantes
por Michelle Torres
2. Índice
1. Introducción
2. Obtener ayuda en MySQL
3. Conectarse con el servidor
4. Mostrar bases de datos
5. Acceder a una base de datos
6. Crear una base de datos
7. Borrar una base de datos
8. Mostrar tablas
2 MySQL para principiantes
por Michelle Torres
3. … Índice
9. Crear una tabla
10.Valores nulos
11.Valores por defecto
12.Borrar una tabla
13.Estructura de una tabla
14.Modificar tablas
15.Cargar datos
16.Modificar datos
3 MySQL para principiantes
por Michelle Torres
4. … Índice
17.Eliminar datos
18.Consultas
• Ordenar
• Renombrar
• Agrupar
• Cálculos
19.Manejo de Fechas
20.Patrones
21.Expresiones regulares
4 MySQL para principiantes
por Michelle Torres
5. … Índice
22.Consultas con varias tablas
23.Imágenes
24.Triggers
5 MySQL para principiantes
por Michelle Torres
6. Introducción
● En este taller obtendrás los conocimientos primordiales
para el manejo de bases de datos MySQL.
● El objetivo es mostrarte el uso de MySQL, para crear y
usar una sencilla base de datos, y con un poquito más,
inclusive utilizar triggers para hacer esta base de datos
mas completa.
6 MySQL para principiantes
por Michelle Torres
7. MySQL
● MySQL es un gestor de base de datos que
permite conectarnos a un servidor, ejecutar
algunas consultas, y ver los resultados.
● MySQL puede ser usado también en modo
batch: es decir, se pueden colocar toda una
serie de consultas en un archivo, y
posteriormente decirle a MySQL que ejecute
dichas consultas.
7 MySQL para principiantes
por Michelle Torres
8. Obtener ayuda en MySQL
mysql --help
8 MySQL para principiantes
por Michelle Torres
9. Conectarse al servidor
Para acceder a la cuenta de MySQL se ingresa con los
siguientes datos.
● Username: bdxxxxxxx
● Password: xxxxxxx
Una vez dentro, tendremos a nuestra disposición todas las
sentencias de MySQL para el trabajo con la base de datos
y el lenguaje SQL.
9 MySQL para principiantes
por Michelle Torres
10. Conectarse al servidor
mysql-h computadora -u usuario -p
10 MySQL para principiantes
por Michelle Torres
11. Mostrar bases de datos
Mediante la sentencia SHOW se encuentran las bases de datos
que existen actualmente en el servidor
SHOW DATABASES;
11 MySQL para principiantes
por Michelle Torres
12. Acceder a una base de datos
USE nombre_bd;
12 MySQL para principiantes
por Michelle Torres
13. Crear una base de datos
CREATE DATABASE Nombre_BD;
13 MySQL para principiantes
por Michelle Torres
14. Conectarse a MySQL ya con una
base de datos especificada
Debemos seleccionar la base de datos cada vez que iniciamos una
sesión con mysql, así que es recomendable indicar la base de datos
sobre la que vamos a trabajar al momento de invocar al monitor de
MySQL.
mysql -h computadora -u usuario -p nombre_BD
14 MySQL para principiantes
por Michelle Torres
15. Borrar una base de datos
DROP DATABASE Nombre_BD;
15 MySQL para principiantes
por Michelle Torres
16. Mostrar tablas existentes
La sentencia SHOW TABLES mostrará las tablas
existentes dentro de la base de datos.
SHOW TABLES;
16 MySQL para principiantes
por Michelle Torres
17. Crear una tabla
La sentencia CREATE TABLE es utilizada para indicar
como estarán conformados los registros de nuestra base
de datos.
CREATE TABLE nombre_tabla(
nombre_atributo tipo_dato,
…
…
);
17 MySQL para principiantes
por Michelle Torres
18. Tipos de datos
Para guardar los datos, se utilizan tipos donde
las clasificaciones básicas son:
● Numéricos
● Fecha
● Texto
18 MySQL para principiantes
por Michelle Torres
19. Numéricos
Tipo Rango
TinyInt -128 a 127
0 a 255
Bit o Bool 0ó1
SmallInt -32768 a 32767
0 a 65,535
MediumInt -8388608 a 8388607
0 a16777215
19 MySQL para principiantes
por Michelle Torres
20. Numéricos
Tipo Rango
Integer -2147483648 a 2147483647
, Int 0 a 4294967295
BigInt -9223372036854775808 a
9223372036854775807
0 a 18446744073709551615
Float -3.402823466E+38 a
-1.175494351E-38
xReal, -1.7976931348623157E+308
Double a -2.2250738585072014E-308
20 MySQL para principiantes
por Michelle Torres
21. Fecha
Date:
año-mes-dia
DateTime:
año-mes-dia horas:minutos:segundos
Time:
Hh:mm:ss
Year
21 MySQL para principiantes
por Michelle Torres
22. Fecha
TimeStamp: El formato de almacenamiento
depende del tamaño del campo
Tamañ Formato
o AñoMesDiaHoraMinutoSegundo
14
aaaammddhhmmss
12 AñoMesDiaHoraMinutoSegundo
aammddhhmmss
8 ñoMesDia aaaammdd
6 AñoMesDia aammdd
4 AñoMes aamm
2 Año aa
22 MySQL para principiantes
por Michelle Torres
23. Texto
Char(n): Cadena fija, máximo 255 caracteres
VarChar(n): Cadena variable, , máximo 255
caracteres
Blob y Text: Máximo 65535 caracteres
LongBlob y LongText: Máximo 4294967295
caracteres.
23 MySQL para principiantes
por Michelle Torres
24. Enum
● Permite declarar campos cuyo contenido
puede ser una de entre varias opciones.
Sexo ENUM(‘M’, ‘H’)
24 MySQL para principiantes
por Michelle Torres
25. Restricciones
● Llaves primarias
Especificarlo a un lado del atributo
nombre_atributo tipo_dato PRIMARY KEY
Agregando la restricción formalmente
constraint nombre_restriccion
primary key (atributo)
25 MySQL para principiantes
por Michelle Torres
26. … Restricciones
● Llaves foráneas
FOREIGN KEY (atributo) REFERENCES
nombre_tabla (nombre_atributo)
26 MySQL para principiantes
por Michelle Torres
27. … Restricciones
● Campos autoincrementables
Esta restricción permite que un campo númerico
lleve un incremento automático en base a cada
tupla insertada.
Solo se debe agregar la palabra
AUTO_INCREMENT
27 MySQL para principiantes
por Michelle Torres
28. Valores nulos
● Al definir cada columna podemos decidir si podrá o no
contener valores nulos.
● La opción por defecto es que se permitan valores nulos,
NULL, y para que no se permitan, se usa NOT NULL.
28 MySQL para principiantes
por Michelle Torres
29. Valor por defecto
● Para cada columna también se puede definir,
opcionalmente, un valor por defecto. El valor por defecto
se asignará de forma automática a una columna cuando
no se especifique un valor determinado al añadir filas.
● Para asignarlo se agrega DEFAULT y el valor deseado.
29 MySQL para principiantes
por Michelle Torres
30. Estructura de una tabla
Para revisar la estructura de la tabla, se utiliza el comando
DESCRIBE
DESCRIBE nombre_tabla;
30 MySQL para principiantes
por Michelle Torres
31. Borrar una tabla
DROP TABLE nombre_tabla;
31 MySQL para principiantes
por Michelle Torres
32. Borrar los datos de la tabla
TRUNCATE TABLE nombre_tabla;
32 MySQL para principiantes
por Michelle Torres
33. Modificar una tabla
ALTER TABLE nombre_tabla
● ADD nombre_atributo tipo_atributo
● CHANGE nombre_anterior_atributo
nombre_nuevo_atributo tipo_atributo
● MODIFY nombre_atributo
nuevo_tipo_atributo
● DROP nombre_atributo
33 MySQL para principiantes
por Michelle Torres
34. Cambiar nombre a la tabla
ALTER TABLE nombre_tabla
RENAME TO nuevo_nombre_tabla;
34 MySQL para principiantes
por Michelle Torres
35. Insertar datos
INSERT INTO nombre_tabla
VALUES ('Diana','f','2000-03-30');
● En esta sentencia se tienen que poner los valores en el
orden en que se encuentran en la estructura de la tabla.
● Si se desea poner en otro orden o no todos los datos se
utiliza de la siguiente manera
INSERT INTO nombre_tabla (atributos)
VALUES (valores);
35 MySQL para principiantes
por Michelle Torres
36. Insertar con auto_increment
● Cuando existe un campo auto_increment, el
insert se hace de la siguiente manera:
INSERT INTO nombre_tabla
VALUES (null,'Diana','f','2000-03-30');
36 MySQL para principiantes
por Michelle Torres
37. Insertar datos desde un archivo
LOAD DATA LOCAL INFILE 'nombre_del_archivo'
INTO TABLE nombre_tabla;
● Separador de campos por default es tabulador
● Para indicar otro tipo de separador se agrega a la
sentencia
FIELDS TERMINATED BY 'separador'
37 MySQL para principiantes
por Michelle Torres
38. Modificar datos
UPDATE nombre_tabla
SET atributo1=valor1
WHERE condicion;
38 MySQL para principiantes
por Michelle Torres
39. Eliminar datos
DELETE FROM nombre_tabla
WHERE condicion;
39 MySQL para principiantes
por Michelle Torres
40. Consultas
● Esto nos permitirá obtener los datos
guardados dento de nuestra BD.
SELECT atributos
FROM nombre_tabla;
40 MySQL para principiantes
por Michelle Torres
41. Caracter comodin
SELECT *
FROM nombre_tabla;
41 MySQL para principiantes
por Michelle Torres
42. Varios atributos como uno solo
SELECT CONCAT(atributo1, ' ', atributo2)
FROM nombre_tabla;
42 MySQL para principiantes
por Michelle Torres
43. Ordenar
SELECT *
FROM nombre_tabla
ORDER BY nombre_atributo DESC;
43 MySQL para principiantes
por Michelle Torres
44. Solo una cantidad de tuplas
SELECT *
FROM nombre_tabla
ORDER BY nombre_atributo DESC
LIMIT n;
44 MySQL para principiantes
por Michelle Torres
45. Cálculos
SELECT nombre_atributo + nombre_atributo
FROM nombre_tabla;
45 MySQL para principiantes
por Michelle Torres
46. Otros cálculos
● MAX
● MIN
● AVG
● SUM
46 MySQL para principiantes
por Michelle Torres
47. Renombrar atributo
SELECT nombre_atributo AS nuevo_nombre
FROM nombre_tabla;
47 MySQL para principiantes
por Michelle Torres
48. Contar filas
SELECT COUNT(*)
FROM nombre_tabla;
48 MySQL para principiantes
por Michelle Torres
49. Agrupar
SELECT COUNT(*)
FROM nombre_tabla
GROUP BY nombre_atributo;
49 MySQL para principiantes
por Michelle Torres
50. No mostrar tuplas repetidas
SELECT DISTINCT nombre_atributo
FROM nombre_tabla;
50 MySQL para principiantes
por Michelle Torres
51. 15 MINUTOS PARA
EXPERIMENTAR
¿Dudas? Háganmelas saber
51 MySQL para principiantes
por Michelle Torres
52. Solo algunas tuplas
SELECT atributos
FROM nombre_tabla
WHERE condición;
52 MySQL para principiantes
por Michelle Torres
53. Manejo de fechas
● MySQL permite realizar distintas operaciones
con fechas lo cual facilita el trabajo con estas.
53 MySQL para principiantes
por Michelle Torres
54. Fecha y hora actual
● CURDATE() :
Esta función devuelve la fecha actual en formato 'YYYY-MM-DD' o
'YYYYMMDD' (Año-Mes-Día)
mysql> select curdate();
--> 2007-01-03
● CURTIME() :
Devuelve la hora actual en formato 'HH:MM:SS' o 'HHMMSS'.
mysql> select curtime();
--> 17:33:07
54 MySQL para principiantes
por Michelle Torres
55. Fecha y hora actual
● NOW() :
Esta función de fecha devuelve la fecha y hora actual en formato 'YYYY-MM-
DD HH:MM:SS' o YYYYMMDDHHMMSS (Año-Mes-Día
Hora:Minuto:Segundo)
mysql> select now();
--> 2007-01-04 14:56:15
55 MySQL para principiantes
por Michelle Torres
56. Rangos de fechas
● DATEDIFF(fecha1,fecha2) :
Esta función devuelve fecha1 – fecha2 expresados como un valor en
días de una fecha a la otra. Aquí sólo las partes de fecha serán
consideradas para el cálculo.
mysql> select datediff('2007-2-6 17:33:25','2007-1-1');
--> 36
56 MySQL para principiantes
por Michelle Torres
57. Rangos de fechas
● DATE_ADD(fecha, INTERVAL rango expresión) :
Esta función agrega el rango indicado.
mysql> select date_add('2007-1-14', interval 15 day);
--> 2007-01-29
57 MySQL para principiantes
por Michelle Torres
58. Día y mes
● DAYNAME(fecha) :
Devuelve el nombre del día para una fecha especificada.
mysql> select dayname('2007-01-04');
--> Thursday
● MONTHNAME(fecha) :
Devuelve el nombre del mes para la fecha especificada.
mysql> select monthname('2007-07-09');
--> July
58 MySQL para principiantes
por Michelle Torres
59. Semana
● DAYOFWEEK(fecha) :
Devuelve el día de la semana en formato numérico como 1 para
Domingo hasta 7 para Sábado.
mysql> select dayofweek('2007-01-04');
--> 5
59 MySQL para principiantes
por Michelle Torres
60. Secciones
● HOUR(hora) :
Devuelve la hora del tiempo especificado en formato numérico de 0 a 23.
● MINUTE(hora) :
Devuelve el minuto del tiempo especificado en formato numérico de 0 a 59.
● MONTH(fecha) :
Devuelve el mes para la fecha dada en formato numérico en rango de 0 a 12
● DAY(fecha) :
Devuelve la fecha para el día del mes en el rango de 1 a 31
60 MySQL para principiantes
por Michelle Torres
61. Patrones
● Los patrones en SQL permiten emplear el caracter '_' para
representar coincidencia con un carácter individual y '%' para
representar una serie de caracteres.
● En MySQL, por defecto, los patrones SQL no son case-
sensitive.
● No se emplean los operadores = o <> para trabajar con
patrones SQL, en lugar de eso se usan los operadores de
comparación LIKE o NOT LIKE.
61 MySQL para principiantes
por Michelle Torres
62. ● Para encontrar nombres que comiencen con 'b':
SELECT *
FROM nombre_tabla
WHERE nombre_atributo LIKE 'b%';
62 MySQL para principiantes
por Michelle Torres
63. Expresiones regulares
● Una expresión regular describe un conjunto de cadenas.
● MySQL permite hacer una evaluación de coincidencia con
una expresión regular por medio de la palabra REGEXP, en
caso de no coincidir, devolverá 0.
● Los siguientes caracteres especiales son utilizados para
construir expresiones regulares.
63 MySQL para principiantes
por Michelle Torres
64. ● ^
Coincidencia del principio de una cadena.
mysql> SELECT 'fonfo' REGEXP '^fo$'; -> 0
mysql> SELECT 'fofo' REGEXP '^fo'; -> 1
● $
Coincidencia del final de una cadena.
mysql> SELECT 'fono' REGEXP '^fono$'; -> 1
mysql> SELECT 'fono' REGEXP '^fo$'; -> 0
64 MySQL para principiantes
por Michelle Torres
65. ● .
Coincidencia de cualquier carácter (incluyendo los de avance o el retorno de línea).
mysql> SELECT 'fofo' REGEXP '^f.*$'; -> 1
mysql> SELECT 'fornfo' REGEXP '^f.*$'; -> 1
● a*
Coincidencia de cualquier secuencia de cero o más caracteres.
mysql> SELECT 'Ban' REGEXP '^Ba*n'; -> 1
mysql> SELECT 'Baaan' REGEXP '^Ba*n'; -> 1
mysql> SELECT 'Bn' REGEXP '^Ba*n'; -> 1
● a+
Coincidencia de cualquier secuencia de uno o más caracteres.
mysql> SELECT 'Ban' REGEXP '^Ba+n'; -> 1
mysql> SELECT 'Bn' REGEXP '^Ba+n'; -> 0
65 MySQL para principiantes
por Michelle Torres
66. 15 MINUTOS PARA
EXPERIMENTAR
¿Dudas? Háganmelas saber
66 MySQL para principiantes
por Michelle Torres
67. Consultas con mas de una tabla
SELECT *
FROM tabla1
INNER JOIN tabla2
ON tabla1.id = tabla2.id
67 MySQL para principiantes
por Michelle Torres
68. Motor InnoDB
● Las tablas innoDB permiten transacciones,
operaciones concurrentes y control estricto
de referencias (lo que se conoce como
integridad referencial) entre otros detalles.
CREATE TABLE nombre_tabla(
nombre_atributo tipo_dato,
…
…
) engine=innodb;
68 MySQL para principiantes
por Michelle Torres
69. Convertir una tabla a InnoDB
ALTER TABLE nombre_tabla type=innoDB;
69 MySQL para principiantes
por Michelle Torres
70. 15 MINUTOS PARA
EXPERIMENTAR
¿Dudas? Háganmelas saber
70 MySQL para principiantes
por Michelle Torres
71. Respaldar la base de datos
● La respaldo
mysqldump nombre_bd >
nombre_archivo.sql;
● La recupero
mysql nombre_bd < nombre_archivo.sql;
71 MySQL para principiantes
por Michelle Torres
72. Imágenes en MySQL
● No existe un campo como tal para guardar imágenes, lo
que se hace es que por medio de aplicaciones tales
como PHP se realiza la conversión a binario de la
imágen y esta se guarda dentro de un campo tipo
BLOB.
● Mi recomendación es guardar solamente la ruta donde
se encuentra guardada la imágen.
72 MySQL para principiantes
por Michelle Torres
73. Triggers
● Un disparador se asocia con una tabla y se define para que
se active al ocurrir una sentencia INSERT, DELETE, o
UPDATE sobre dicha tabla.
● Puede también establecerse que se active antes o despues
de la sentencia en cuestión. Por ejemplo, se puede tener un
disparador que se active antes de que un registro sea
borrado, o después de que sea actualizado.
● Para crear o eliminar un disparador, se emplean las
sentencias CREATE TRIGGER y DROP TRIGGER.
73 MySQL para principiantes
por Michelle Torres
74. CREATE TABLE account (
acct_num INT,
amount DECIMAL(10,2)
);
CREATE TRIGGER ins_sum BEFORE INSERT ON
account
FOR EACH ROW SET @sum = @sum + NEW.amount;
74 MySQL para principiantes
por Michelle Torres
75. 15 MINUTOS PARA
EXPERIMENTAR
¿Dudas? Háganmelas saber
75 MySQL para principiantes
por Michelle Torres