Está en la página 1de 81

MySQL

Creacion de Bases de Datos

1
Codigo SQL : Creacion de bases de datos

Query para crear el Esquema de la Base.

2
Codigo SQL : Creacion de bases de datos

Query para crear la Tabla “Categoria” en la Base.

3
Codigo SQL : Creacion de bases de datos

Query para crear la Tabla “Peliculas” en la Base.

4
Codigo SQL : Creacion de bases de datos

Query para crear la Tabla “Miembros” en la Base.

5
6
MySQL Workbench

PK − Primary Key

NN − NOT NULL

UQ − Unique

BIN − Binary

UN − Unsigned

ZF − Zero Filled

AI − Auto Increment

G − Generate Column

7
8
MySQL

PK − Primary Key
Representa la clave principal.

NN − NOT NULL
Opcion para hacer que la columna no inserte un valor NULO.

UQ − Unique
Opcion para hacer que la columna inserte solo un valor único para una columna
específica.

AI − Auto Increment
En ocasiones puede ser necesario crear un campo autoincremental, por
ejemplo, usar como identificador en una tabla.

9
MySQL
Tipos de Datos

10
MySQL: TIPOS DE DATOS

Los tipos de datos definen la naturaleza de los datos que se pueden almacenar
en una columna particular de una tabla.

MySQL tiene 3 categorías principales de tipos de datos:

Numeric
Text
Date/time

11
MySQL: TIPOS DE DATOS: Numericos

NUMÉRICOS ENTEROS
Se utilizan para almacenar datos que sean númericos enteros (edades,
cantidades, magnitudes sin decimales).

12
MySQL: TIPOS DE DATOS: Numericos

NUMÉRICOS DECIMALES
Estos tipos de datos son necesarios para almacenar precios, salarios, importes de
cuentas bancarias, etc. que no son enteros.

Se tienen tres tipos de datos: FLOAT, DOUBLE y DECIMAL.

FLOAT; Permite almacenar como minimo el valor -999.99 y como máximo 999.99

DOUBLE; Al ser de doble precisión, sólo permite que la cantidad de decimales se defina
entre 25 y 53.

DECIMAL; Es ideal para almacenar valores monetarios, donde se requiera menor


longitud, pero la "máxima exactitud" (sin redondeos). El máximo de dígitos totales para
este tipo de dato es de 64, de los cuales 30 es el número de decimales máximo
permitido.

13
MySQL: TIPOS DE DATOS: Alfanumericos

Para almacenar datos alfanuméricos (cadenas de caracteres) en MySQL se


poseen los siguientes tipos de datos:

14
MySQL: TIPOS DE DATOS: Alfanumericos

CHAR
El tipo de dato alfanumérico mas simple: CHAR (character, o caracter). Permite
almacenar textos breves, de hasta 255 caracteres de longitud.

Por ejemplo, un campo "nombre" de 14 caracteres como CHAR, reservará (y


consumirá en disco) este espacio.

15
MySQL: TIPOS DE DATOS: Alfanumericos

BLOB
Guarda información en formato binario y se utiliza cuando se almacena en la
base de datos el contenido de un archivo binario (una imagen o un archivo
comprimido ZIP) leyéndolo byte a byte.

Se requiere almacenar todo su contenido para luego reconstruir el archivo, sin


necesidad de almacenar la imagen o el ZIP en un disco, sino que sus bytes
quedan guardados en un campo de una tabla de la base de datos.

El campo BLOB es para almacenar directamente "la imagen" (o un archivo


comprimido, o cualquier otro archivo binario), no su ruta.

16
MySQL: TIPOS DE DATOS: Fecha

DATE
El tipo de dato DATE permite almacenar fechas en el formato: AAAA-MM-DD
(los cuatro primeros dígitos para el año, los dos siguientes para el mes, y los
ultimos dos para el dia).

El rango de fechas que permite manejar desde el 1000-01-01 hasta el 9999-12-


31.

17
MySQL: TIPOS DE DATOS: Fecha

18
MySQL: TIPOS DE DATOS: Fecha

19
MySQL
Querys

20
MySQL Querys: SELECT

El query SELECT se utiliza para obtener los datos de la base de datos.

Las bases de datos almacenan datos para su posterior recuperación.

El propósito de Select es regresar de las tablas de la base de datos, una o más


filas que coincidan con un criterio dado.

Sintaxis de consulta SELECT

SELECT [DISTINCT|ALL ] { * | [fieldExpression [AS newName]}


FROM tableName [alias]
[WHERE condition][GROUP BY fieldName(s)]
[HAVING condition] ORDER BY fieldName(s)

21
MySQL Querys: SELECT

• SELECT es la palabra clave que le permite a la base de datos saber que desea
recuperar datos.

• [DISTINCT | ALL] son ​palabras clave opcionales que se pueden usar para ajustar los
resultados devueltos por la instrucción SQL SELECT.

• {* | [fieldExpression [AS newName]} se debe especificar al menos una parte, "*"


seleccionó todos los campos del nombre de tabla especificado, fieldExpression realiza
algunos cálculos en los campos especificados, como sumar números o juntar dos
campos de cadena en uno.

22
MySQL Querys: SELECT

• FROM tableName es obligatorio y debe contener al menos una tabla, varias


tablas deben separarse con comas o unirse con la palabra clave JOIN.

• WHERE es opcional, se puede usar para especificar criterios en el conjunto


de resultados devuelto por la consulta.

23
MySQL Querys: SELECT

• GROUP BY se utiliza para juntar registros que tienen los mismos valores de
campo.

• HAVING se usa para especificar criterios cuando se trabaja con la palabra


clave GROUP BY.

• ORDER BY se utiliza para especificar el orden de clasificación del conjunto de


resultados.

24
MySQL Querys: SELECT

El símbolo de estrella (*) se utiliza para seleccionar todas las columnas de la


tabla.

Un ejemplo de una instrucción SELECT simple:

SELECT * FROM mydb.Miembros;

25
MySQL Querys: SELECT

Si solo se esta interesado en obtener solo los campos Nombre_Completo,


Genero, Fecha_Nacimiento.

SELECT Nombre_Completo, Genero, Fecha_Nacimiento FROM mydb.Miembros;

26
MySQL Querys: SELECT

Si se requiere tener el título de la película y el nombre del director de la película


en un campo. El nombre del director de la película debe estar entre paréntesis.

También queremos saber el año en que se estrenó la película.

SELECT Concat(Titulo, ' (', director, ')') ,dia_estreno FROM mydb.Peliculas;

27
MySQL Querys: SELECT

SELECT Concat(Titulo, ' (', director, ')') ,dia_estreno FROM mydb.Peliculas;

28
MySQL Querys: SELECT

SELECT Concat(Titulo, ' (', director, ')') ,dia_estreno FROM mydb.Peliculas;

• La función Concat() se utiliza para unir los valores de las columnas.

• La línea "Concat(Titulo, ' (', director, ')') “ obtiene el título, agrega un


corchete de apertura seguido del nombre del director y luego agrega el
corchete de cierre.

29
MySQL Querys: SELECT

Nombres de campo de ALIAS


En el ejemplo anterior devolvió el código de concatenación como nombre de
campo para nuestros resultados.

En el escenario donde se requiera usar un nombre de campo más descriptivo en


el conjunto de resultados. Se usara el nombre de alias de la columna para
lograrlo

SELECT Concat(Titulo, ' (', director, ')') as Concatenacion,dia_estreno FROM


mydb.Peliculas;

30
MySQL Querys: SELECT

SELECT Concat(Titulo, ' (', director, ')') AS Concatenacion,dia_estreno FROM


mydb.Peliculas;

31
MySQL Querys: SELECT

SELECT Concat(Titulo, ' (', director, ')') AS Concatenacion,dia_estreno FROM


mydb.Peliculas;

• SELECT Concat(Titulo, ' (', director, ')’) Es la declaración SELECT regular que
puede ser un nombre de columna, valor o expresión.

• "[AS]" es la palabra clave opcional antes del nombre de alias que indica la
expresión, el valor o el nombre del campo se devolverá como.

• "Concatenacion” es el nombre de alias que queremos devolver en nuestro


conjunto de resultados como nombre de campo.

32
MySQL Querys: SELECT

Si se requiere obtener una lista de todos los miembros que muestre el número
de membresía, los nombres completos y el año de nacimiento.

Se puede usar la función LEFT para extraer el año de nacimiento del campo de
fecha de nacimiento.

SELECT Numero_Socio, Nombre_Completo,LEFT(Fecha_Nacimiento,4) AS `YEAR


Nacimiento` FROM mydb.Miembros;

33
MySQL Querys: SELECT

SELECT Numero_Socio, Nombre_Completo, LEFT(Fecha_Nacimiento,4) AS `YEAR


Nacimiento` FROM mydb.Miembros;

34
MySQL Querys: SELECT

SELECT Numero_Socio, Nombre_Completo, LEFT(Fecha_Nacimiento,4) AS `YEAR


Nacimiento` FROM mydb.Miembros;

• LEFT(Fecha_Nacimiento,4) - La función LEFT acepta la fecha de nacimiento


como parámetro y solo devuelve 4 caracteres de la izquierda.

• "AS` YEAR Nacimiento` ” es el nombre de alias de la columna que se


devolverá en nuestros resultados. La palabra clave AS es opcional, puede
omitirla y la consulta seguirá funcionando.

35
MySQL Querys: WHERE

Se utiliza en los escenarios donde se requiera restringir los resultados de la


consulta a una condición específica.

Sintaxis básica de la cláusula WHER:

SELECT * FROM Nombre_Tabla WHERE condición;

• "SELECT * FROM Nombre_Tabla" es la instrucción SELECT estándar.

• ”WHERE" es la palabra clave que restringe nuestro conjunto de resultados


de consulta de selección y "condición" es el filtro que se aplicará a los
resultados. El filtro puede ser un rango, un valor único o una subconsulta.

36
MySQL Querys: WHERE

En el escenario que se requiera obtener los datos personales de un miembro de


la tabla de miembros dado el número de membresía 1.

SELECT * FROM mydb.Miembros WHERE Numero_Socio = 1;

37
MySQL Querys: WHERE Combinado

WHERE clause combined with - AND LOGICAL Operator

WHERE clause combined with - OR LOGICAL Operator

WHERE clause combined with - IN Keyword

WHERE clause combined with - NOT IN Keyword

38
MySQL Querys: WHERE Combinado

WHERE con Operador Logico AND.


Incluye filas donde ambas condiciones son verdaderas.
• WHERE category_id = 2 AND year_released = 2008

WHERE con Operador Logico OR.


Incluye filas donde cualquiera de las condiciones es verdadera
• WHERE category_id = 2 OR year_released = 2008

WHERE con Palabla clave IN.


Permite especificar varios valores en una cláusula WHERE.
• WHERE year_released IN (2008,2009,2010)

39
MySQL Querys: WHERE Combinado

WHERE con Palabla clave NOT IN.


Incluye filas donde una condición no es verdadera
• WHERE year_released NOT IN (2008,2009,2010)

WHERE con Operadores de Comparacion(=,>,<,<>)


• WHERE year_released = 2009
• WHERE year_released > 2009
• WHERE year_released < 2009
• WHERE year_released <> 2009

40
MySQL Querys: INSERT

Se utiliza para almacenar datos en las tablas. El comando INSERT crea una
nueva fila en la tabla para almacenar datos.

INSERT INTO table_name (column_1,column_2,...) VALUES (value_1,value_2,...);

insert into mydb.Miembros


(Numero_Socio, Nombre_Completo, Genero, Fecha_Nacimiento,
Direccion_Fisica, Direccion_Postal)
Values
(1, 'Rosaline Blasio', 'Female', '2019-10-09', 'University of Sussex', '15172');

41
MySQL Querys: DELETE

Se utiliza para eliminar filas que ya no son necesarias de las tablas de la base de
datos. Elimina toda la fila de la tabla y devuelve el recuento de filas eliminadas.

DELETE FROM table_name


[WHERE condition];

DELETE FROM mydb.Miembros


[WHERE condition];

42
MySQL Querys: UPDATE

Se utiliza para modificar filas en una tabla. El comando de actualización se


puede utilizar para actualizar un solo campo o varios campos al mismo tiempo.

UPDATE table_name
SET column_name = `new_value'
[WHERE condition];

UPDATE mydb.Miembros
SET Nombre_Completo = `Carmen Lopez'
[WHERE condition];

43
MySQL Querys: ORDER BY

Ordenar es simplemente reorganizar los resultados de nuestra consulta de una


manera específica.

La clasificación se puede realizar en una sola columna o en más de una


columna.

Se puede realizar en números, cadenas y tipos de datos de fecha.

44
MySQL Querys: ORDER BY

SELECT {fieldName(s) | *}
FROM tableName(s)
[WHERE condition]
ORDER BY fieldname(s) ASC/DESC

SELECT *
FROM mydb.Miembros
ORDER BY genero ASC;

SELECT *
FROM mydb.Miembros
ORDER BY genero DESC;

45
MySQL Querys: Funciones

• SELECT AVG (nombreColumna) FROM nombreTabla;


• SELECT COUNT(*) FROM nombreTabla;
• SELECT UCASE (nombreColumna) FROM nombreTabla;
• SELECT LCASE (nombreColumna) FROM nombreTabla;
• SELECT LEN (nombreColumna) FROM nombreTabla;
• SELECT MAX (nombreColumna) FROM nombreTabla;
• SELECT MIN (nombreColumna) FROM nombreTabla;
• SELECT ROUND (nombreColumna, integer) FROM nombreTabla;
• SELECT RAND () AS `resultado_aleatorio`;
• SELECT SUM (nombre_columna) FROM nombre_tabla;

46
MySQL Querys: Funciones

Las funciones son simplemente fragmentos de código que realizan algunas


operaciones y luego devuelven un resultado.

La función AVG() devuelve la media de valores de una columna numérica.


• SELECT AVG (nombreColumna) FROM nombreTabla;

La función COUNT() devuelve el número de filas que cumplen con un


determinado criterio:
• SELECT COUNT(*) FROM nombreTabla;

47
MySQL Querys: Funciones

La función UCASE() convierte el valor de un campo a mayúsculas.


• SELECT UCASE (nombreColumna) FROM nombreTabla;

La función LCASE() convierte el valor de un campo en minúsculas:


• SELECT LCASE (nombreColumna) FROM nombreTabla;

La función LEN() devuelve la longitud de un campo de texto.


• SELECT LEN (nombreColumna) FROM nombreTabla;

48
MySQL Querys: Funciones

La función MAX() toma el nombre de una columna como argumento y devuelve


el valor más grande en esa columna.
• SELECT MAX (nombreColumna) FROM nombreTabla;

La función MIN() toma el nombre de una columna como argumento y devuelve


el valor más pequeño en esa columna.
• SELECT MIN (nombreColumna) FROM nombreTabla;

La función ROUND () toma un nombre de columna y un número entero como


argumentos. Redondea los valores de la columna al número de posiciones
decimales especificado por el entero
• SELECT ROUND (nombreColumna, integer) FROM nombreTabla;

49
MySQL Querys: Funciones

La función RAND() se utiliza para generar un número aleatorio, su valor cambia


cada vez que se llama a la función.
• SELECT RAND () AS `resultado_aleatorio`;

La función SUM () es una función que toma el nombre de una columna como
argumento y devuelve la suma de todos los valores de esa columna.
• SELECT SUM (nombre_columna) FROM nombre_tabla;

50
MySQL Querys: Palabras clave

AND ANY AS

BETWEEN DISTINCT IN

IS NULL LIKE LIMIT

NOT NULL OR ROWNUM

SELECT INTO UNION VALUES

51
MySQL Querys: Palabras clave

AND - Incluye filas donde ambas condiciones son verdaderas

ANY - Devuelve verdadero si alguno de los valores de la subconsulta cumple la


condición

AS - Cambia el nombre de una columna o tabla con un alias

BETWEEN - Selecciona valores dentro de un rango dado

DISTINCT - Selecciona solo valores distintos (diferentes)

IN - Permite especificar varios valores en una cláusula WHERE

52
MySQL Querys: Palabras clave

IS NULL - Prueba para valores vacíos

LIKE - Busca un patrón específico en una columna

LIMIT - Especifica el número de registros que se devolverán en el conjunto de


resultados

NOT NULL - Una restricción que obliga a una columna a no aceptar valores NULL

OR - Incluye filas donde cualquiera de las condiciones es verdadera

53
MySQL Querys: Palabras clave

ROWNUM - Especifica el número de registros que se devolverán en el conjunto


de resultados.

SELECT INTO - Copia datos de una tabla a una nueva tabla

UNION - Combina el conjunto de resultados de dos o más sentencias

VALUES - Especifica los valores de una instrucción INSERT INTO

54
MySQL Querys: Sub Querys

SELECT Nombre_Categoria
FROM mydb.Categoria
WHERE idcategoria = (SELECT MIN(idcategoria) from mydb.Peliculas )

55
MySQL Querys: JOINS

Los Joins(uniones) ayudan a recuperar datos de dos o más tablas de bases de


datos.

Tipos de Joins
INNER JOIN
LEFT JOIN
RIGHT JOIN
OUTER JOIN

56
MySQL Querys: JOINS

INNER JOIN
Solo muestra registros comunes a ambas tablas.

57
MySQL Querys: JOINS

LEFT JOIN
Selecciona registros de la primera tabla (la izquierda) con registros de la tabla
derecha coincidentes.

58
MySQL Querys: JOINS

RIGHT JOIN
Selecciona registros de la segunda tabla (a la derecha) que coincidan con los
registros de la tabla izquierda.

59
MySQL Querys: JOINS

OUTER JOIN
Todo el contenido de ambas tablas se fusiona, ya sea que coincidan o no.

60
MySQL Querys: JOINS

Oracle SQL vs Ansi SQL

61
MySQL Querys: JOINS

Oracle SQL vs Ansi SQL

62
MySQL Querys: JOINS

Oracle SQL vs Ansi SQL

63
MySQL Querys: JOINS

Oracle SQL vs Ansi SQL

64
MySQL Querys: UNION

Una union combina los resultados de varias consultas SELECT en un conjunto de


resultados consolidado.

Los únicos requisitos para que esto funcione es que el número de columnas
debe ser el mismo de todas las consultas SELECT que deben combinarse.

65
MySQL Querys: UNION

SELECT column1, column2 FROM `table1`


UNION DISTINCT
SELECT column1,column2 FROM `table2`;

No se muestran las filas duplicadas.

66
MySQL Querys: UNION

SELECT column1, column2 FROM `table1`


UNION ALL
SELECT column1,column2 FROM `table2`;

Se muestran las filas duplicadas.

67
MySQL Querys: UNION

SELECT `membership_number`,`full_names` FROM `members`


UNION
SELECT `movie_id`,`title` FROM `movies`;

68
MySQL Querys: VIEWS

Las VISTAS son tablas virtuales que no almacenan ningún dato propio pero
muestran datos almacenados en otras tablas.

Una vista de MySQL puede mostrar datos de una o varias tablas.

• CREATE VIEW `nombre_vista` AS SELECT statement;

El comando DROP se utiliza para eliminar una vista de la base de datos que ya
no es necesaria.

• DROP VIEW `nombre_vista`;

69
MySQL Querys: VIEWS

CREATE VIEW mydb.cuentas_v_miembros AS


SELECT Numero_Socio, Nombre_Completo, Genero
FROM mydb.Miembros;

70
MySQL Querys: VIEWS

SELECT * FROM mydb.cuentas_v_miembros;

71
MySQL
Querys Ejemplo

72
SELECT
e.employee_id AS "Employee #"
, e.first_name || ' ' || e.last_name AS "Name"
, e.email AS "Email"
, e.phone_number AS "Phone"
, TO_CHAR(e.hire_date, 'MM/DD/YYYY') AS "Hire Date"
, TO_CHAR(e.salary, 'L99G999D99', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_CURRENCY = ''$''') AS "Salary"
, e.commission_pct AS "Comission %"
, 'works as ' || j.job_title || ' in ' || d.department_name || ' department (manager: '
|| dm.first_name || ' ' || dm.last_name || ') and immediate supervisor: ' || m.first_name || ' ' || m.last_name AS "Current Job"
, TO_CHAR(j.min_salary, 'L99G999D99', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_CURRENCY = ''$''') || ' - ' ||
TO_CHAR(j.max_salary, 'L99G999D99', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_CURRENCY = ''$''') AS "Current Salary"
, l.street_address || ', ' || l.postal_code || ', ' || l.city || ', ' || l.state_province || ', '
|| c.country_name || ' (' || r.region_name || ')' AS "Location"
, jh.job_id AS "History Job ID"
, 'worked from ' || TO_CHAR(jh.start_date, 'MM/DD/YYYY') || ' to ' || TO_CHAR(jh.end_date, 'MM/DD/YYYY') ||
' as ' || jj.job_title || ' in ' || dd.department_name || ' department' AS "History Job Title"
FROM employees e
JOIN jobs j ON e.job_id = j.job_id
LEFT JOIN employees m ON e.manager_id = m.employee_id
LEFT JOIN departments d ON d.department_id = e.department_id
LEFT JOIN employees dm ON d.manager_id = dm.employee_id
LEFT JOIN locations l ON d.location_id = l.location_id
LEFT JOIN countries c ON l.country_id = c.country_id
LEFT JOIN regions r ON c.region_id = r.region_id
LEFT JOIN job_history jh ON e.employee_id = jh.employee_id
LEFT JOIN jobs jj ON jj.job_id = jh.job_id
LEFT JOIN departments dd ON dd.department_id = jh.department_id
ORDER BY e.employee_id;

73
MySQL Querys

74
75
Query a Segmentar:
SELECT ens.company, ens.state, ens.zip_code, ens.complaint_count
FROM (select company, state, zip_code, count(complaint_id) AS complaint_count
FROM credit_card_complaints
WHERE state IS NOT NULL
GROUP BY company, state, zip_code) ens
INNER JOIN
(SELECT ppx.company, max(ppx.complaint_count) AS complaint_count
FROM (SELECT ppt.company, ppt.state, max(ppt.complaint_count) AS complaint_count
FROM (SELECT company, state, zip_code, count(complaint_id) AS complaint_count
FROM credit_card_complaints
WHERE company = 'Citibank'
AND state IS NOT NULL
GROUP BY company, state, zip_code
ORDER BY 4 DESC) ppt
GROUP BY ppt.company, ppt.state
ORDER BY 3 DESC) ppx
GROUP BY ppx.company) apx
ON apx.company = ens.company
AND apx.complaint_count = ens.complaint_count
ORDER BY 4 DESC;

76
Query Segmentado:

77
Resultado de Ejecucion:

78
MySQL
Bases Ejemplos

79
Structure

80
Structure

81

También podría gustarte