Está en la página 1de 77

Para principiantes: desde cero hasta triggers

Nancy Michelle Torres Villanueva


MySQL para principiantes por Michelle Torres

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
2 MySQL para principiantes por Michelle Torres

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

ndice
17.Eliminar datos 18.Consultas

Ordenar Renombrar Agrupar Clculos

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


4 MySQL para principiantes por Michelle Torres

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

MySQL para principiantes por Michelle Torres

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.

MySQL para principiantes por Michelle Torres

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.
MySQL para principiantes por Michelle Torres

Obtener ayuda en MySQL mysql --help

MySQL para principiantes por Michelle Torres

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.

MySQL para principiantes por Michelle Torres

Conectarse al servidor
mysql-h computadora -u usuario -p

10

MySQL para principiantes por Michelle Torres

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

Acceder a una base de datos

USE nombre_bd;

12

MySQL para principiantes por Michelle Torres

Crear una base de datos


CREATE DATABASE Nombre_BD;

13

MySQL para principiantes por Michelle Torres

Conectarse a MySQL ya con una base de datos especificada


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

14

MySQL para principiantes por Michelle Torres

Borrar una base de datos


DROP DATABASE Nombre_BD;

15

MySQL para principiantes por Michelle Torres

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

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

17

MySQL para principiantes por Michelle Torres

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

Numricos Fecha Texto

18

MySQL para principiantes por Michelle Torres

Numricos
Tipo TinyInt Bit o Bool SmallInt MediumInt Rango -128 a 127 0 a 255 01 -32768 a 32767 0 a 65,535 -8388608 a 8388607 0 a16777215

19

MySQL para principiantes por Michelle Torres

Numricos
Tipo Integer , Int BigInt Rango -2147483648 a 2147483647 0 a 4294967295 -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

Fecha
Date:
ao-mes-dia DateTime: ao-mes-dia horas:minutos:segundos Time: Hh:mm:ss Year
21 MySQL para principiantes por Michelle Torres

Fecha
TimeStamp: El formato de almacenamiento
depende del tamao del campo
Tama o 14 12 8 6 4 2 Formato AoMesDiaHoraMinutoSegundo aaaammddhhmmss AoMesDiaHoraMinutoSegundo aammddhhmmss oMesDia aaaammdd AoMesDia aammdd AoMes aamm Ao aa

22

MySQL para principiantes por Michelle Torres

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.

23

MySQL para principiantes por Michelle Torres

Enum

Permite declarar campos cuyo contenido puede ser una de entre varias opciones. Sexo ENUM(M, H)

24

MySQL para principiantes por Michelle Torres

Restricciones

Llaves primarias nombre_atributo tipo_dato PRIMARY KEY

Especificarlo a un lado del atributo Agregando la restriccin formalmente

constraint nombre_restriccion primary key (atributo)


25 MySQL para principiantes por Michelle Torres

Restricciones

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

26

MySQL para principiantes por Michelle Torres

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
27 MySQL para principiantes por Michelle Torres

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.

28

MySQL para principiantes por Michelle Torres

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.

29

MySQL para principiantes por Michelle Torres

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

Borrar una tabla


DROP TABLE nombre_tabla;

31

MySQL para principiantes por Michelle Torres

Borrar los datos de la tabla


TRUNCATE TABLE nombre_tabla;

32

MySQL para principiantes por Michelle Torres

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
MySQL para principiantes por Michelle Torres

33

Cambiar nombre a la tabla


ALTER TABLE nombre_tabla RENAME TO nuevo_nombre_tabla;

34

MySQL para principiantes por Michelle Torres

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

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

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

Modificar datos
UPDATE nombre_tabla SET atributo1=valor1 WHERE condicion;

38

MySQL para principiantes por Michelle Torres

Eliminar datos
DELETE FROM nombre_tabla WHERE condicion;

39

MySQL para principiantes por Michelle Torres

Consultas

Esto nos permitir obtener los datos guardados dento de nuestra BD. SELECT atributos FROM nombre_tabla;

40

MySQL para principiantes por Michelle Torres

Caracter comodin
SELECT * FROM nombre_tabla;

41

MySQL para principiantes por Michelle Torres

Varios atributos como uno solo


SELECT CONCAT(atributo1, ' ', atributo2) FROM nombre_tabla;

42

MySQL para principiantes por Michelle Torres

Ordenar
SELECT * FROM nombre_tabla ORDER BY nombre_atributo DESC;

43

MySQL para principiantes por Michelle Torres

Solo una cantidad de tuplas


SELECT * FROM nombre_tabla ORDER BY nombre_atributo DESC LIMIT n;

44

MySQL para principiantes por Michelle Torres

Clculos
SELECT nombre_atributo + nombre_atributo FROM nombre_tabla;

45

MySQL para principiantes por Michelle Torres

Otros clculos

MAX MIN AVG SUM

46

MySQL para principiantes por Michelle Torres

Renombrar atributo
SELECT nombre_atributo AS nuevo_nombre FROM nombre_tabla;

47

MySQL para principiantes por Michelle Torres

Contar filas
SELECT COUNT(*) FROM nombre_tabla;

48

MySQL para principiantes por Michelle Torres

Agrupar
SELECT COUNT(*) FROM nombre_tabla GROUP BY nombre_atributo;

49

MySQL para principiantes por Michelle Torres

No mostrar tuplas repetidas


SELECT DISTINCT nombre_atributo FROM nombre_tabla;

50

MySQL para principiantes por Michelle Torres

15 MINUTOS PARA EXPERIMENTAR Dudas? Hganmelas saber

51

MySQL para principiantes por Michelle Torres

Solo algunas tuplas


SELECT atributos FROM nombre_tabla WHERE condicin;

52

MySQL para principiantes por Michelle Torres

Manejo de fechas

MySQL permite realizar distintas operaciones con fechas lo cual facilita el trabajo con estas.

53

MySQL para principiantes por Michelle Torres

Fecha y hora actual

CURDATE() :

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

CURTIME() :
mysql> select curtime(); --> 17:33:07

Devuelve la hora actual en formato 'HH:MM:SS' o 'HHMMSS'.

54

MySQL para principiantes por Michelle Torres

Fecha y hora actual

NOW() :

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

55

MySQL para principiantes por Michelle Torres

Rangos de fechas

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

56

MySQL para principiantes por Michelle Torres

Rangos de fechas

DATE_ADD(fecha, INTERVAL rango expresin) :


mysql> select date_add('2007-1-14', interval 15 day); --> 2007-01-29

Esta funcin agrega el rango indicado.

57

MySQL para principiantes por Michelle Torres

Da y mes

DAYNAME(fecha) :
mysql> select dayname('2007-01-04'); --> Thursday MONTHNAME(fecha) :
mysql> select monthname('2007-07-09'); --> July

Devuelve el nombre del da para una fecha especificada.

Devuelve el nombre del mes para la fecha especificada.

58

MySQL para principiantes por Michelle Torres

Semana

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

59

MySQL para principiantes por Michelle Torres

Secciones

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

60

MySQL para principiantes por Michelle Torres

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 casesensitive. 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.

61

MySQL para principiantes por Michelle Torres

Para encontrar nombres que comiencen con 'b':

SELECT * FROM nombre_tabla WHERE nombre_atributo LIKE 'b%';

62

MySQL para principiantes por Michelle Torres

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.

63

MySQL para principiantes por Michelle Torres

^ Coincidencia del principio de una cadena. mysql> SELECT 'fonfo' REGEXP '^fo$'; mysql> SELECT 'fofo' REGEXP '^fo'; -> 0 -> 1

$ Coincidencia del final de una cadena. mysql> SELECT 'fono' REGEXP '^fono$'; mysql> SELECT 'fono' REGEXP '^fo$'; -> 1 -> 0

64

MySQL para principiantes por Michelle Torres

. 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'; mysql> SELECT 'Baaan' REGEXP '^Ba*n'; mysql> SELECT 'Bn' REGEXP '^Ba*n'; -> 1 -> 1 -> 1

a+ Coincidencia de cualquier secuencia de uno o ms caracteres. mysql> SELECT 'Ban' REGEXP '^Ba+n'; mysql> SELECT 'Bn' REGEXP '^Ba+n'; -> 1 -> 0
MySQL para principiantes por Michelle Torres

65

15 MINUTOS PARA EXPERIMENTAR Dudas? Hganmelas saber

66

MySQL para principiantes por Michelle Torres

Consultas con mas de una tabla


SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.id = tabla2.id

67

MySQL para principiantes por Michelle Torres

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

Convertir una tabla a InnoDB

ALTER TABLE nombre_tabla type=innoDB;

69

MySQL para principiantes por Michelle Torres

15 MINUTOS PARA EXPERIMENTAR Dudas? Hganmelas saber

70

MySQL para principiantes por Michelle Torres

Respaldar la base de datos

La respaldo

mysqldump nombre_bd > nombre_archivo.sql;

La recupero

mysql nombre_bd < nombre_archivo.sql;


MySQL para principiantes por Michelle Torres

71

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.

72

MySQL para principiantes por Michelle Torres

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.

73

MySQL para principiantes por 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;
74 MySQL para principiantes por Michelle Torres

15 MINUTOS PARA EXPERIMENTAR Dudas? Hganmelas saber

75

MySQL para principiantes por Michelle Torres

RETROALIMENTACIN

76

MySQL para principiantes por Michelle Torres

Muchas gracias!

77

MySQL para principiantes por Michelle Torres

También podría gustarte