Você está na página 1de 77

IS1I1t1C StItLICL 1t t1tCACIC It11ICC CtICtI

Prof. Lucio IBARRA CAQUI


TALLER DE PROGRAMACIN WEB
CURSO DE MySql DESDE CERO
2
ndice
ndice
1. Introduccin
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


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


ndice
ndice
17.Eliminar datos
18.Consultas

Ordenar

Renombrar

Agrupar

Clculos
19.Manejo de Fechas
20.Patrones
21.Expresiones regulares
5


ndice
ndice
22.Consultas con varias tablas
23.Imgenes
24.Triggers
6
Introduccin
Introduccin

En este taller obtendrs 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 ms,
inclusive utilizar triggers para hacer esta base de datos
mas completa.
7
MySQL
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 tambin 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
Obtener ayuda en MySQL
Obtener ayuda en MySQL
mysql --help
9
Conectarse al servidor
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 disposicin todas las
sentencias de MySQL para el trabajo con la base de datos
y el lenguaje SQL.
10
Conectarse al servidor
Conectarse al servidor
mysql-h computadora -u usuario -p
11
Mostrar bases de datos
Mostrar bases de datos
Mediante la sentencia SHOW se encuentran las bases de datos
que existen actualmente en el servidor
SHOW DATABASES;
12
Acceder a una base de datos
Acceder a una base de datos
USE nombre_bd;
13
Crear una base de datos
Crear una base de datos
CREATE DATABASE Nombre_BD;
14
Debemos seleccionar la base de datos cada vez que iniciamos una
sesin 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 especificada
base de datos especificada
15
Borrar una base de datos
Borrar una base de datos
DROP DATABASE Nombre_BD;
16
La sentencia SHOW TABLES mostrar las tablas
existentes dentro de la base de datos.
SHOW TABLES;
Mostrar tablas existentes
Mostrar tablas existentes
17
Crear una tabla
Crear una tabla
La sentencia CREATE TABLE es utilizada para indicar
como estarn conformados los registros de nuestra base
de datos.
CREATE TABLE nombre_tabla(
nombre_atributo tipo_dato,

);
18
Tipos de datos
Tipos de datos
Para guardar los datos, se utilizan tipos donde
las clasificaciones bsicas son:

Numricos

Fecha

Texto
19
Numricos
Numricos
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
20
Numricos
Numricos
Tipo Rango
Integer
, Int
-2147483648 a 2147483647
0 a 4294967295
BigInt -9223372036854775808 a
9223372036854775807
0 a 18446744073709551615
Float -3.402823466E+38 a
-1.175494351E-38
xReal,
Double
-1.7976931348623157E+308
a -2.2250738585072014E-308
21
Fecha
Fecha
Date:
ao-mes-dia
DateTime:
ao-mes-dia horas:minutos:segundos
Time:
Hh:mm:ss
Year
22
Fecha
Fecha
TimeStamp: El formato de almacenamiento
depende del tamao del campo
Tama
o
Formato
14
AoMesDiaHoraMinutoSegundo
aaaammddhhmmss
12
AoMesDiaHoraMinutoSegundo
aammddhhmmss
8 oMesDia aaaammdd
6 AoMesDia aammdd
4 AoMes aamm
2 Ao aa
23
Texto
Texto
Char(n): Cadena fija, mximo 255 caracteres
VarChar(n): Cadena variable, , mximo 255
caracteres
Blob y Text: Mximo 65535 caracteres
LongBlob y LongText: Mximo 4294967295
caracteres.
24
Enum
Enum

Permite declarar campos cuyo contenido


puede ser una de entre varias opciones.
Sexo ENUM(M, H)
25
Restricciones
Restricciones

Llaves primarias
Especificarlo a un lado del atributo
nombre_atributo tipo_dato PRIMARY KEY
Agregando la restriccin formalmente
constraint nombre_restriccion
primary key (atributo)
26


Restricciones
Restricciones

Llaves forneas
FOREIGN KEY (atributo) REFERENCES
nombre_tabla (nombre_atributo)
27


Restricciones
Restricciones

Campos autoincrementables
Esta restriccin permite que un campo nmerico
lleve un incremento automtico en base a cada
tupla insertada.
Solo se debe agregar la palabra
AUTO_INCREMENT
28
Valores nulos
Valores nulos

Al definir cada columna podemos decidir si podr o no


contener valores nulos.

La opcin por defecto es que se permitan valores nulos,


NULL, y para que no se permitan, se usa NOT NULL.
29
Valor por defecto
Valor por defecto

Para cada columna tambin se puede definir,


opcionalmente, un valor por defecto. El valor por defecto
se asignar de forma automtica a una columna cuando
no se especifique un valor determinado al aadir filas.

Para asignarlo se agrega DEFAULT y el valor deseado.


30
Para revisar la estructura de la tabla, se utiliza el comando
DESCRIBE
DESCRIBE nombre_tabla;
Estructura de una tabla
Estructura de una tabla
31
Borrar una tabla
Borrar una tabla
DROP TABLE nombre_tabla;
32
Borrar los datos de la tabla
Borrar los datos de la tabla
TRUNCATE TABLE nombre_tabla;
33
Modificar una tabla
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
34
Cambiar nombre a la tabla
Cambiar nombre a la tabla
ALTER TABLE nombre_tabla
RENAME TO nuevo_nombre_tabla;
35
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);
Insertar datos
Insertar datos
36
Insertar con auto_increment
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');
37
Insertar datos desde un archivo
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'
38
Modificar datos
Modificar datos
UPDATE nombre_tabla
SET atributo1=valor1
WHERE condicion;
39
Eliminar datos
Eliminar datos
DELETE FROM nombre_tabla
WHERE condicion;
40
Consultas
Consultas

Esto nos permitir obtener los datos


guardados dento de nuestra BD.
SELECT atributos
FROM nombre_tabla;
41
Caracter comodin
Caracter comodin
SELECT *
FROM nombre_tabla;
42
Varios atributos como uno solo
Varios atributos como uno solo
SELECT CONCAT(atributo1, ' ', atributo2)
FROM nombre_tabla;
43
Ordenar
Ordenar
SELECT *
FROM nombre_tabla
ORDER BY nombre_atributo DESC;
44
Solo una cantidad de tuplas
Solo una cantidad de tuplas
SELECT *
FROM nombre_tabla
ORDER BY nombre_atributo DESC
LIMIT n;
45
Clculos
Clculos
SELECT nombre_atributo + nombre_atributo
FROM nombre_tabla;
46
Otros clculos
Otros clculos

MAX

MIN

AVG

SUM
47
Renombrar atributo
Renombrar atributo
SELECT nombre_atributo AS nuevo_nombre
FROM nombre_tabla;
48
Contar filas
Contar filas
SELECT COUNT(*)
FROM nombre_tabla;
49
Agrupar
Agrupar
SELECT COUNT(*)
FROM nombre_tabla
GROUP BY nombre_atributo;
50
No mostrar tuplas repetidas
No mostrar tuplas repetidas
SELECT DISTINCT nombre_atributo
FROM nombre_tabla;
51
15 MINUTOS PARA
15 MINUTOS PARA
EXPERIMENTAR
EXPERIMENTAR
Dudas? Hganmelas saber
52
Solo algunas tuplas
Solo algunas tuplas
SELECT atributos
FROM nombre_tabla
WHERE condicin;
53
Manejo de fechas
Manejo de fechas

MySQL permite realizar distintas operaciones


con fechas lo cual facilita el trabajo con estas.
54

CURDATE() :
Esta funcin devuelve la fecha actual en formato 'YYYY-MM-DD' o
'YYYYMMDD' (Ao-Mes-Da)
mysql> select curdate();

CURTIME() :
Devuelve la hora actual en formato 'HH:MM:SS' o 'HHMMSS'.
mysql> select curtime();
--> 17:33:07
Fecha y hora actual
Fecha y hora actual
--> 2007-01-03
55
Fecha y hora actual
Fecha y hora actual

NOW() :
Esta funcin de fecha devuelve la fecha y hora actual en formato 'YYYY-MM-
DD HH:MM:SS' o YYYYMMDDHHMMSS (Ao-Mes-Da
Hora:Minuto:Segundo)
mysql> select now();
--> 2007-01-04 14:56:15
56

DATEDIFF(fecha1,fecha2) :
Esta funcin devuelve fecha1 fecha2 expresados como un valor en
das de una fecha a la otra. Aqu slo las partes de fecha sern
consideradas para el clculo.
mysql> select datediff('2007-2-6 17:33:25','2007-1-1');
--> 36
Rangos de fechas
Rangos de fechas
57
Rangos de fechas
Rangos de fechas

DATE_ADD(fecha, INTERVAL rango expresin) :


Esta funcin agrega el rango indicado.
mysql> select date_add('2007-1-14', interval 15 day);
--> 2007-01-29
58

DAYNAME(fecha) :
Devuelve el nombre del da 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
Da y mes
Da y mes
59

DAYOFWEEK(fecha) :
Devuelve el da de la semana en formato numrico como 1 para
Domingo hasta 7 para Sbado.
mysql> select dayofweek('2007-01-04');
--> 5
Semana
Semana
60

HOUR(hora) :
Devuelve la hora del tiempo especificado en formato numrico de 0 a 23.

MINUTE(hora) :
Devuelve el minuto del tiempo especificado en formato numrico de 0 a 59.

MONTH(fecha) :
Devuelve el mes para la fecha dada en formato numrico en rango de 0 a 12

DAY(fecha) :
Devuelve la fecha para el da del mes en el rango de 1 a 31
Secciones
Secciones
61
Patrones
Patrones

Los patrones en SQL permiten emplear el caracter '_' para


representar coincidencia con un carcter 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
comparacin LIKE o NOT LIKE.
62

Para encontrar nombres que comiencen con 'b':


SELECT *
FROM nombre_tabla
WHERE nombre_atributo LIKE 'b%';
63
Expresiones regulares
Expresiones regulares

Una expresin regular describe un conjunto de cadenas.

MySQL permite hacer una evaluacin de coincidencia con


una expresin 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

^
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

.
Coincidencia de cualquier carcter (incluyendo los de avance o el retorno de lnea).
mysql> SELECT 'fofo' REGEXP '^f.*$'; -> 1
mysql> SELECT 'fornfo' REGEXP '^f.*$'; -> 1

a*
Coincidencia de cualquier secuencia de cero o ms 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 ms caracteres.
mysql> SELECT 'Ban' REGEXP '^Ba+n'; -> 1
mysql> SELECT 'Bn' REGEXP '^Ba+n'; -> 0
66
15 MINUTOS PARA
15 MINUTOS PARA
EXPERIMENTAR
EXPERIMENTAR
HACER UNA RETROALIMENTACIN
67
Consultas con mas de una tabla
Consultas con mas de una tabla
SELECT *
FROM tabla1
INNER JOIN tabla2
ON tabla1.id = tabla2.id
68
Motor InnoDB
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;
69
Convertir una tabla a InnoDB
Convertir una tabla a InnoDB
ALTER TABLE nombre_tabla type=innoDB;
70
15 MINUTOS PARA
15 MINUTOS PARA
EXPERIMENTAR
EXPERIMENTAR
HACER UNA RETROALIMENTACIN
71
Respaldar la base de datos
Respaldar la base de datos

La respaldo
mysqldump nombre_bd >
nombre_archivo.sql;

La recupero
mysql nombre_bd < nombre_archivo.sql;
72
Imgenes en MySQL
Imgenes en MySQL

No existe un campo como tal para guardar imgenes, lo


que se hace es que por medio de aplicaciones tales
como PHP se realiza la conversin a binario de la
imgen y esta se guarda dentro de un campo tipo
BLOB.

Mi recomendacin es guardar solamente la ruta donde


se encuentra guardada la imgen.
73
Triggers
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 tambin establecerse que se active antes o despues


de la sentencia en cuestin. Por ejemplo, se puede tener un
disparador que se active antes de que un registro sea
borrado, o despus de que sea actualizado.

Para crear o eliminar un disparador, se emplean las


sentencias CREATE TRIGGER y DROP TRIGGER.
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;
75
15 MINUTOS PARA
15 MINUTOS PARA
EXPERIMENTAR
EXPERIMENTAR
HACER UNA RETROALIMENTACIN
76
RETROALIMENTACIN
RETROALIMENTACIN
77
Muchas gracias!
Muchas gracias!

Você também pode gostar