View
194
Download
4
Category
Preview:
DESCRIPTION
Una introducción a MySQL
Citation preview
MySQL para principiantespor Michelle Torres
Para principiantes:desde cero hasta triggers
Nancy Michelle Torres Villanueva
2 MySQL para principiantespor Michelle Torres
ÍndiceÍ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
3 MySQL para principiantespor Michelle Torres
… … ÍndiceÍ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
4 MySQL para principiantespor Michelle Torres
… … ÍndiceÍndice
17.Eliminar datos
18.Consultas
• Ordenar• Renombrar• Agrupar• Cálculos
19.Manejo de Fechas
20.Patrones
21.Expresiones regulares
5 MySQL para principiantespor Michelle Torres
… … ÍndiceÍndice
22.Consultas con varias tablas
23.Imágenes
24.Triggers
6 MySQL para principiantespor Michelle Torres
IntroducciónIntroducció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.
7 MySQL para principiantespor Michelle Torres
MySQLMySQL
● 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.
8 MySQL para principiantespor Michelle Torres
Obtener ayuda en MySQLObtener ayuda en MySQL
mysql --help
9 MySQL para principiantespor Michelle Torres
Conectarse al servidorConectarse 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.
10 MySQL para principiantespor Michelle Torres
Conectarse al servidorConectarse al servidor
mysql-h computadora -u usuario -p
11 MySQL para principiantespor Michelle Torres
Mostrar bases de datosMostrar bases de datos
Mediante la sentencia SHOW se encuentran las bases de datos que existen actualmente en el servidor
SHOW DATABASES;
12 MySQL para principiantespor Michelle Torres
Acceder a una base de datosAcceder a una base de datos
USE nombre_bd;
13 MySQL para principiantespor Michelle Torres
Crear una base de datosCrear una base de datos
CREATE DATABASE Nombre_BD;
14 MySQL para principiantespor Michelle Torres
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
Conectarse a MySQL ya con una Conectarse a MySQL ya con una base de datos especificadabase de datos especificada
15 MySQL para principiantespor Michelle Torres
Borrar una base de datosBorrar una base de datos
DROP DATABASE Nombre_BD;
16 MySQL para principiantespor Michelle Torres
La sentencia SHOW TABLES mostrará las tablas existentes dentro de la base de datos.
SHOW TABLES;
Mostrar tablas existentesMostrar tablas existentes
17 MySQL para principiantespor Michelle Torres
Crear una tablaCrear una tablaLa 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,……);
18 MySQL para principiantespor Michelle Torres
Tipos de datosTipos de datos
Para guardar los datos, se utilizan tipos donde las clasificaciones básicas son:● Numéricos● Fecha● Texto
19 MySQL para principiantespor Michelle Torres
NuméricosNuméricosTipo RangoTinyInt -128 a 127
0 a 255Bit o Bool 0 ó 1SmallInt -32768 a 32767
0 a 65,535MediumInt -8388608 a 8388607
0 a16777215
20 MySQL para principiantespor Michelle Torres
NuméricosNuméricosTipo RangoInteger, Int
-2147483648 a 2147483647 0 a 4294967295
BigInt -9223372036854775808 a 92233720368547758070 a 18446744073709551615
Float -3.402823466E+38 a -1.175494351E-38
xReal, Double
-1.7976931348623157E+308 a -2.2250738585072014E-308
21 MySQL para principiantespor Michelle Torres
FechaFecha
Date:
año-mes-dia
DateTime:
año-mes-dia horas:minutos:segundos
Time:
Hh:mm:ss
Year
22 MySQL para principiantespor Michelle Torres
FechaFecha
TimeStamp: El formato de almacenamiento depende del tamaño del campo
Tamaño
Formato
14 AñoMesDiaHoraMinutoSegundo aaaammddhhmmss
12 AñoMesDiaHoraMinutoSegundo aammddhhmmss
8 ñoMesDia aaaammdd6 AñoMesDia aammdd4 AñoMes aamm2 Año aa
23 MySQL para principiantespor Michelle Torres
TextoTexto
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.
24 MySQL para principiantespor Michelle Torres
EnumEnum
● Permite declarar campos cuyo contenido puede ser una de entre varias opciones.
Sexo ENUM(‘M’, ‘H’)
25 MySQL para principiantespor Michelle Torres
RestriccionesRestricciones
● 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)
26 MySQL para principiantespor Michelle Torres
… … RestriccionesRestricciones
● Llaves foráneas
FOREIGN KEY (atributo) REFERENCES nombre_tabla (nombre_atributo)
27 MySQL para principiantespor Michelle Torres
… … RestriccionesRestricciones
● 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
28 MySQL para principiantespor Michelle Torres
Valores nulosValores 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.
29 MySQL para principiantespor Michelle Torres
Valor por defectoValor 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.
30 MySQL para principiantespor Michelle Torres
Para revisar la estructura de la tabla, se utiliza el comando DESCRIBE
DESCRIBE nombre_tabla;
Estructura de una tablaEstructura de una tabla
31 MySQL para principiantespor Michelle Torres
Borrar una tablaBorrar una tabla
DROP TABLE nombre_tabla;
32 MySQL para principiantespor Michelle Torres
Borrar los datos de la tablaBorrar los datos de la tabla
TRUNCATE TABLE nombre_tabla;
33 MySQL para principiantespor Michelle Torres
Modificar una tablaModificar 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
34 MySQL para principiantespor Michelle Torres
Cambiar nombre a la tablaCambiar nombre a la tabla
ALTER TABLE nombre_tabla RENAME TO nuevo_nombre_tabla;
35 MySQL para principiantespor Michelle Torres
INSERT INTO nombre_tablaVALUES ('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);
Insertar datosInsertar datos
36 MySQL para principiantespor Michelle Torres
Insertar con auto_incrementInsertar con auto_increment
● Cuando existe un campo auto_increment, el insert se hace de la siguiente manera:
INSERT INTO nombre_tablaVALUES (null,'Diana','f','2000-03-30');
37 MySQL para principiantespor Michelle Torres
Insertar datos desde un archivoInsertar 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'
38 MySQL para principiantespor Michelle Torres
Modificar datosModificar datos
UPDATE nombre_tabla
SET atributo1=valor1
WHERE condicion;
39 MySQL para principiantespor Michelle Torres
Eliminar datosEliminar datos
DELETE FROM nombre_tabla
WHERE condicion;
40 MySQL para principiantespor Michelle Torres
ConsultasConsultas
● Esto nos permitirá obtener los datos guardados dento de nuestra BD.
SELECT atributos
FROM nombre_tabla;
41 MySQL para principiantespor Michelle Torres
Caracter comodinCaracter comodin
SELECT *
FROM nombre_tabla;
42 MySQL para principiantespor Michelle Torres
Varios atributos como uno soloVarios atributos como uno solo
SELECT CONCAT(atributo1, ' ', atributo2)
FROM nombre_tabla;
43 MySQL para principiantespor Michelle Torres
OrdenarOrdenar
SELECT *
FROM nombre_tabla
ORDER BY nombre_atributo DESC;
44 MySQL para principiantespor Michelle Torres
Solo una cantidad de tuplasSolo una cantidad de tuplas
SELECT *
FROM nombre_tabla
ORDER BY nombre_atributo DESC
LIMIT n;
45 MySQL para principiantespor Michelle Torres
CálculosCálculos
SELECT nombre_atributo + nombre_atributo
FROM nombre_tabla;
46 MySQL para principiantespor Michelle Torres
Otros cálculosOtros cálculos
● MAX● MIN● AVG● SUM
47 MySQL para principiantespor Michelle Torres
Renombrar atributoRenombrar atributo
SELECT nombre_atributo AS nuevo_nombre
FROM nombre_tabla;
48 MySQL para principiantespor Michelle Torres
Contar filasContar filas
SELECT COUNT(*)
FROM nombre_tabla;
49 MySQL para principiantespor Michelle Torres
AgruparAgrupar
SELECT COUNT(*)
FROM nombre_tabla
GROUP BY nombre_atributo;
50 MySQL para principiantespor Michelle Torres
No mostrar tuplas repetidasNo mostrar tuplas repetidas
SELECT DISTINCT nombre_atributo
FROM nombre_tabla;
51 MySQL para principiantespor Michelle Torres
15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR
¿Dudas? Háganmelas saber
52 MySQL para principiantespor Michelle Torres
Solo algunas tuplasSolo algunas tuplas
SELECT atributos
FROM nombre_tabla
WHERE condición;
53 MySQL para principiantespor Michelle Torres
Manejo de fechasManejo de fechas
● MySQL permite realizar distintas operaciones con fechas lo cual facilita el trabajo con estas.
54 MySQL para principiantespor Michelle Torres
● 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
Fecha y hora actualFecha y hora actual
55 MySQL para principiantespor Michelle Torres
Fecha y hora actualFecha 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
56 MySQL para principiantespor Michelle Torres
● 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
Rangos de fechasRangos de fechas
57 MySQL para principiantespor Michelle Torres
Rangos de fechasRangos 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
58 MySQL para principiantespor Michelle Torres
● 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
Día y mesDía y mes
59 MySQL para principiantespor Michelle Torres
● 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
SemanaSemana
60 MySQL para principiantespor Michelle Torres
● 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
SeccionesSecciones
61 MySQL para principiantespor Michelle Torres
PatronesPatrones● 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.
62 MySQL para principiantespor Michelle Torres
● Para encontrar nombres que comiencen con 'b':
SELECT *
FROM nombre_tabla
WHERE nombre_atributo LIKE 'b%';
63 MySQL para principiantespor Michelle Torres
Expresiones regularesExpresiones 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.
64 MySQL para principiantespor Michelle Torres
● ^
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
65 MySQL para principiantespor Michelle Torres
● .
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
66 MySQL para principiantespor Michelle Torres
15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR
¿Dudas? Háganmelas saber
67 MySQL para principiantespor Michelle Torres
Consultas con mas de una tablaConsultas con mas de una tabla
SELECT *
FROM tabla1
INNER JOIN tabla2
ON tabla1.id = tabla2.id
68 MySQL para principiantespor Michelle Torres
Motor InnoDBMotor 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;
69 MySQL para principiantespor Michelle Torres
Convertir una tabla a InnoDBConvertir una tabla a InnoDB
ALTER TABLE nombre_tabla type=innoDB;
70 MySQL para principiantespor Michelle Torres
15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR
¿Dudas? Háganmelas saber
71 MySQL para principiantespor Michelle Torres
Respaldar la base de datosRespaldar la base de datos
● La respaldo
mysqldump nombre_bd > nombre_archivo.sql;
● La recupero
mysql nombre_bd < nombre_archivo.sql;
72 MySQL para principiantespor Michelle Torres
Imágenes en MySQLImá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.
73 MySQL para principiantespor Michelle Torres
TriggersTriggers● 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.
74 MySQL para principiantespor Michelle Torres
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;
75 MySQL para principiantespor Michelle Torres
15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR
¿Dudas? Háganmelas saber
76 MySQL para principiantespor Michelle Torres
RETROALIMENTACIÓNRETROALIMENTACIÓN
77 MySQL para principiantespor Michelle Torres
¡Muchas gracias!¡Muchas gracias!
Recommended