Top Banner
MySQL para principiantes por Michelle Torres Para principiantes: desde cero hasta triggers Nancy Michelle Torres Villanueva
77

MySQL Para Principiantes

Aug 31, 2014

Download

Documents

Una introducción a MySQL
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MySQL Para Principiantes

MySQL para principiantespor Michelle Torres

Para principiantes:desde cero hasta triggers

Nancy Michelle Torres Villanueva

Page 2: MySQL Para Principiantes

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

Page 3: MySQL Para Principiantes

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

Page 4: MySQL Para Principiantes

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

Page 5: MySQL Para Principiantes

5 MySQL para principiantespor Michelle Torres

… … ÍndiceÍndice

22.Consultas con varias tablas

23.Imágenes

24.Triggers

Page 6: MySQL Para Principiantes

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.

Page 7: MySQL Para Principiantes

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.

Page 8: MySQL Para Principiantes

8 MySQL para principiantespor Michelle Torres

Obtener ayuda en MySQLObtener ayuda en MySQL

mysql --help

Page 9: MySQL Para Principiantes

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.

Page 10: MySQL Para Principiantes

10 MySQL para principiantespor Michelle Torres

Conectarse al servidorConectarse al servidor

mysql-h computadora -u usuario -p

Page 11: MySQL Para Principiantes

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;

Page 12: MySQL Para Principiantes

12 MySQL para principiantespor Michelle Torres

Acceder a una base de datosAcceder a una base de datos

USE nombre_bd;

Page 13: MySQL Para Principiantes

13 MySQL para principiantespor Michelle Torres

Crear una base de datosCrear una base de datos

CREATE DATABASE Nombre_BD;

Page 14: MySQL Para Principiantes

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

Page 15: MySQL Para Principiantes

15 MySQL para principiantespor Michelle Torres

Borrar una base de datosBorrar una base de datos

DROP DATABASE Nombre_BD;

Page 16: MySQL Para Principiantes

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

Page 17: MySQL Para Principiantes

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,……);

Page 18: MySQL Para Principiantes

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

Page 19: MySQL Para Principiantes

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

Page 20: MySQL Para Principiantes

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

Page 21: MySQL Para Principiantes

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

Page 22: MySQL Para Principiantes

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

Page 23: MySQL Para Principiantes

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.

Page 24: MySQL Para Principiantes

24 MySQL para principiantespor Michelle Torres

EnumEnum

● Permite declarar campos cuyo contenido puede ser una de entre varias opciones.

Sexo ENUM(‘M’, ‘H’)

Page 25: MySQL Para Principiantes

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)

Page 26: MySQL Para Principiantes

26 MySQL para principiantespor Michelle Torres

… … RestriccionesRestricciones

● Llaves foráneas

FOREIGN KEY (atributo) REFERENCES nombre_tabla (nombre_atributo)

Page 27: MySQL Para Principiantes

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

Page 28: MySQL Para Principiantes

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.

Page 29: MySQL Para Principiantes

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.

Page 30: MySQL Para Principiantes

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

Page 31: MySQL Para Principiantes

31 MySQL para principiantespor Michelle Torres

Borrar una tablaBorrar una tabla

DROP TABLE nombre_tabla;

Page 32: MySQL Para Principiantes

32 MySQL para principiantespor Michelle Torres

Borrar los datos de la tablaBorrar los datos de la tabla

TRUNCATE TABLE nombre_tabla;

Page 33: MySQL Para Principiantes

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

Page 34: MySQL Para Principiantes

34 MySQL para principiantespor Michelle Torres

Cambiar nombre a la tablaCambiar nombre a la tabla

ALTER TABLE nombre_tabla RENAME TO nuevo_nombre_tabla;

Page 35: MySQL Para Principiantes

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

Page 36: MySQL Para Principiantes

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');

Page 37: MySQL Para Principiantes

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'

Page 38: MySQL Para Principiantes

38 MySQL para principiantespor Michelle Torres

Modificar datosModificar datos

UPDATE nombre_tabla

SET atributo1=valor1

WHERE condicion;

Page 39: MySQL Para Principiantes

39 MySQL para principiantespor Michelle Torres

Eliminar datosEliminar datos

DELETE FROM nombre_tabla

WHERE condicion;

Page 40: MySQL Para Principiantes

40 MySQL para principiantespor Michelle Torres

ConsultasConsultas

● Esto nos permitirá obtener los datos guardados dento de nuestra BD.

SELECT atributos

FROM nombre_tabla;

Page 41: MySQL Para Principiantes

41 MySQL para principiantespor Michelle Torres

Caracter comodinCaracter comodin

SELECT *

FROM nombre_tabla;

Page 42: MySQL Para Principiantes

42 MySQL para principiantespor Michelle Torres

Varios atributos como uno soloVarios atributos como uno solo

SELECT CONCAT(atributo1, ' ', atributo2)

FROM nombre_tabla;

Page 43: MySQL Para Principiantes

43 MySQL para principiantespor Michelle Torres

OrdenarOrdenar

SELECT *

FROM nombre_tabla

ORDER BY nombre_atributo DESC;

Page 44: MySQL Para Principiantes

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;

Page 45: MySQL Para Principiantes

45 MySQL para principiantespor Michelle Torres

CálculosCálculos

SELECT nombre_atributo + nombre_atributo

FROM nombre_tabla;

Page 46: MySQL Para Principiantes

46 MySQL para principiantespor Michelle Torres

Otros cálculosOtros cálculos

● MAX● MIN● AVG● SUM

Page 47: MySQL Para Principiantes

47 MySQL para principiantespor Michelle Torres

Renombrar atributoRenombrar atributo

SELECT nombre_atributo AS nuevo_nombre

FROM nombre_tabla;

Page 48: MySQL Para Principiantes

48 MySQL para principiantespor Michelle Torres

Contar filasContar filas

SELECT COUNT(*)

FROM nombre_tabla;

Page 49: MySQL Para Principiantes

49 MySQL para principiantespor Michelle Torres

AgruparAgrupar

SELECT COUNT(*)

FROM nombre_tabla

GROUP BY nombre_atributo;

Page 50: MySQL Para Principiantes

50 MySQL para principiantespor Michelle Torres

No mostrar tuplas repetidasNo mostrar tuplas repetidas

SELECT DISTINCT nombre_atributo

FROM nombre_tabla;

Page 51: MySQL Para Principiantes

51 MySQL para principiantespor Michelle Torres

15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR

¿Dudas? Háganmelas saber

Page 52: MySQL Para Principiantes

52 MySQL para principiantespor Michelle Torres

Solo algunas tuplasSolo algunas tuplas

SELECT atributos

FROM nombre_tabla

WHERE condición;

Page 53: MySQL Para Principiantes

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.

Page 54: MySQL Para Principiantes

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

Page 55: MySQL Para Principiantes

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

Page 56: MySQL Para Principiantes

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

Page 57: MySQL Para Principiantes

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

Page 58: MySQL Para Principiantes

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

Page 59: MySQL Para Principiantes

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

Page 60: MySQL Para Principiantes

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

Page 61: MySQL Para Principiantes

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.

Page 62: MySQL Para Principiantes

62 MySQL para principiantespor Michelle Torres

● Para encontrar nombres que comiencen con 'b':

SELECT *

FROM nombre_tabla

WHERE nombre_atributo LIKE 'b%';

Page 63: MySQL Para Principiantes

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.

Page 64: MySQL Para Principiantes

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

Page 65: MySQL Para Principiantes

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

Page 66: MySQL Para Principiantes

66 MySQL para principiantespor Michelle Torres

15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR

¿Dudas? Háganmelas saber

Page 67: MySQL Para Principiantes

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

Page 68: MySQL Para Principiantes

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;

Page 69: MySQL Para Principiantes

69 MySQL para principiantespor Michelle Torres

Convertir una tabla a InnoDBConvertir una tabla a InnoDB

ALTER TABLE nombre_tabla type=innoDB;

Page 70: MySQL Para Principiantes

70 MySQL para principiantespor Michelle Torres

15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR

¿Dudas? Háganmelas saber

Page 71: MySQL Para Principiantes

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;

Page 72: MySQL Para Principiantes

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.

Page 73: MySQL Para Principiantes

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.

Page 74: MySQL Para Principiantes

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;

Page 75: MySQL Para Principiantes

75 MySQL para principiantespor Michelle Torres

15 MINUTOS PARA15 MINUTOS PARAEXPERIMENTAR EXPERIMENTAR

¿Dudas? Háganmelas saber

Page 76: MySQL Para Principiantes

76 MySQL para principiantespor Michelle Torres

RETROALIMENTACIÓNRETROALIMENTACIÓN

Page 77: MySQL Para Principiantes

77 MySQL para principiantespor Michelle Torres

¡Muchas gracias!¡Muchas gracias!