0% encontró este documento útil (0 votos)
30 vistas15 páginas

Introducción A SQL y MySQL

El documento es una guía introductoria sobre SQL y MySQL, que cubre desde la creación de bases de datos y tablas hasta la manipulación de datos mediante consultas. Se explican conceptos clave como claves primarias, operaciones de eliminación y modificación, así como funciones de cadena y uniones de tablas. También se abordan técnicas para agrupar y filtrar datos, así como la creación de vistas para simplificar consultas.

Cargado por

info.idinova
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas15 páginas

Introducción A SQL y MySQL

El documento es una guía introductoria sobre SQL y MySQL, que cubre desde la creación de bases de datos y tablas hasta la manipulación de datos mediante consultas. Se explican conceptos clave como claves primarias, operaciones de eliminación y modificación, así como funciones de cadena y uniones de tablas. También se abordan técnicas para agrupar y filtrar datos, así como la creación de vistas para simplificar consultas.

Cargado por

info.idinova
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

Master Datascience

Profesor: Daniel Rubio Yagüe

Introducción a SQL y MySQL

1 Consultas básicas con una tabla

1.1 Creación de la base de datos


Para crear la base de datos, la estructura que contiene todo, usaremos
"create database", seguido del nombre que tendrá la base de datos

CREATE DATABASE ejemplo1;

Podemos tener varias bases de datos en nuestro SGBD (Sistema Gestor de


Bases de Datos, o servidor), así que cada vez que accedamos a MySQL
deberemos comenzar por indicar cual de ellas queremos usar, con la orden
"use"

USE ejemplo1;

1.2 Creación de una tabla

CREATE TABLE personas (


nombre varchar(20),
direccion varchar(40),
edad numeric(3)
);
Master Datascience
Profesor: Daniel Rubio Yagüe

1.3 Introducción de datos


Para introducir datos usaremos la orden "INSERT INTO", e indicaremos tras la
palabra "VALUES" los valores de los campos, en el mismo orden en el que se
habían definido los campos. Los valores de los campos de texto se deberán indicar
entre comillas, y los valores para campos numéricos ni necesitarán comillas, así:

INSERT INTO personas VALUES ('juan', 'su casa', 25);

Si no queremos indicar todos los datos, deberemos detallar qué campos vamos a
introducir y en qué orden, así:

INSERT INTO personas VALUES ('juan', 'su casa', 25);

1.4 Mostrar datos


Para ver los datos almacenados en una tabla usaremos el formato "SELECT
campos FROM tabla". Si queremos ver todos los campos, lo indicaremos con un
asterisco.

SELECT * FROM personas;

Si queremos ver sólo ciertos campos, deberemos detallar sus nombres, en el


orden deseado, separados por comas

SELECT nombre, direccion FROM personas;

1.5 Buscar por contenido


Normalmente no querremos ver todos los datos que hemos introducido, sino sólo
aquellos que cumplan cierta condición. Esta condición se indica añadiendo un
apartado WHERE a la orden "SELECT". Por ejemplo, se podrían ver los datos de
una persona a partir de su nombre de la siguiente forma.
Master Datascience
Profesor: Daniel Rubio Yagüe

SELECT nombre, direccion FROM personas WHERE nombre = 'juan';

En ocasiones no querremos comparar todo el campo con un texto exacto, sino ver
si contiene un cierto texto (por ejemplo, porque sólo sepamos un apellido o parte
de la calle). En ese caso, no compararíamos con el símbolo "igual" (=), sino que
usaríamos la palabra "LIKE", y para las partes que no conozcamos usaremos el
comodín "%".

SELECT nombre, direccion FROM personas WHERE direccion LIKE


'%calle%';

1.6 Mostrar datos ordenados


Cuando una consulta devuelva muchos resultados, resultará poco legible si éstos
se encuentran desordenados. Por eso, será frecuente añadir "ORDER BY" seguido
del nombre del campo que se quiere usar para ordenar.

Es posible indicar varios campos de ordenación, de modo que se mire más de un


criterio en caso de que un campo coincida (por ejemplo "ORDER BY apellidos,
nombre").

Para ordenar en sentido contrario basta con añadir DESC (Por defecto, si se omite,
se utilizará ASC).

SELECT nombre, direccion


FROM personas
WHERE direccion LIKE '%calle%'
ORDER BY nombre, direccion DESC;
Master Datascience
Profesor: Daniel Rubio Yagüe

2 Consultas básicas con varias tablas

2.1 Las claves primarias


Generalmente, y especialmente cuando se usan varias tablas enlazadas, será
necesario tener algún dato que nos permita distinguir de forma clara los datos
que tenemos almacenados. Estos datos que distinguen claramente unas filas de
otras los llamaremos "claves primarias"

Se puede crear una tabla indicando su calve primaria si se añade "PRIMARY KEY"
al final de la orden "CREATE TABLE"

CREATE TABLE ciudades (


codigo varchar(3),
nombre varchar(30),
PRIMARY KEY (codigo)
);

O tambien al final de la definición del campo correspondiente

CREATE TABLE ciudades (


codigo varchar(3) PRIMARY KEY,
nombre varchar(30)
);

2.2 Mostrando datos de dos tablas


Cuando queremos mostrar datos de varias tablas a la vez, deberemos hacer unos
pequeños cambios en las órdenes "select" que hemos visto:
● En primer lugar, indicaremos varios nombres después de "FROM" (los de
cada una de las tablas que necesitemos).
● Además, puede ocurrir que cada tengamos campos con el mismo nombre
en distintas tablas (por ejemplo, el nombre de una persona y el nombre de
una ciudad), y en ese caso deberemos escribir el nombre de la tabla antes
del nombre del campo.
Master Datascience
Profesor: Daniel Rubio Yagüe

SELECT personas.nombre, direccion, ciudades.nombre FROM personas,


ciudades;

Pero esto todavía tiene problemas: estamos combinando TODOS los datos de la
tabla de personas con TODOS los datos de la tabla de ciudades. Esos datos no son
reales: si "juan" vive en la ciudad de código "a", sólo debería mostrarse junto al
nombre "alicante". Nos falta indicar esa condición: "el código de ciudad que
aparece en la persona debe ser el mismo que el código que aparece en la ciudad".

SELECT personas.nombre, direccion, ciudades.nombre


FROM personas, ciudades
WHERE personas.codciudad = ciudades.codigo;

Cualquier otra consulta que implique las dos tablas deberá terminar
comprobando que los dos códigos coinciden. Por ejemplo, para ver qué personas
viven en la ciudad llamada "madrid"
Master Datascience
Profesor: Daniel Rubio Yagüe

SELECT personas.nombre, direccion, edad


FROM personas, ciudades
WHERE ciudades.nombre='madrid'
AND personas.codciudad = ciudades.codigo;

2.2 Omititr datos repetidos


Si en nuestra tabla puede haber algún dato que se repita, como la dirección,
podemos pedir un listado sin duplicados, usando la palabra "distinct"

SELECT DISTINCT direccion FROM personas;

3 Eliminado de información

3.1 Borrar toda la base de datos

DROP DATABASE ejemplo1;

3.1 Eliminar una tabla

DROP TABLE personas;


Master Datascience
Profesor: Daniel Rubio Yagüe

3.1 Borrar el contenido de una tabla


También podemos borrar los datos que cumplen una cierta condición. La orden
es "DELETE FROM", y con la cláusula "WHERE" indicamos las condiciones que se
deben cumplir

DELETE FROM personas WHERE nombre = 'juan';

Cuidado: si no se indica el bloque "WHERE", no se borrarían los datos que


cumplen una condición (porque NO HAY condición), sino TODOS los datos
existentes. Si es eso lo que se pretende, una forma más rápida de conseguirlo es
usar "TRUNCATE TABLE"

TRUNCATE TABLE personas;

4 Modificar información

4.1 Modificar datos


El formato habitual para modificar datos de una tabla es "UPDATE tabla SET
campo=nuevoValor WHERE condicion".
Por ejemplo, si hemos escrito "Alberto" en minúsculas ("alberto"):

UPDATE personas SET nombre = 'Alberto' WHERE nombre = 'alberto';

4.2 Modificar con operación matemática


Por ejemplo si queremos añadir un año a todos los usuarios

UPDATE personas SET edad = edad+1;


Master Datascience
Profesor: Daniel Rubio Yagüe

4.3 Modificar campos de una tabla


Para añadir un campo usaríamos "ADD"

ALTER TABLE ciudades ADD habitantes decimal(7);

Podemos modificar el tipo de datos de un campo con "MODIFY"

ALTER TABLE ciudades MODIFY habitantes varchar(12);

Si queremos cambiar el nombre de un campo, debemos usar "CHANGE"

ALTER TABLE ciudades CHANGE habitantes numhabitantes bigint;

Para borrar un campo “DROP COLUMN”

ALTER TABLE ciudades DROP COLUMN numhabitantes;

5 Operaciones matemáticas

5.1 Operadores matemáticos


Los operadores matemáticos que podemos emplear son los habituales en
cualquier lenguaje de programación, ligeramente ampliados: + (suma), - (resta y
negación), * (multiplicación), / (división) . La división calcula el resultado con
decimales; si queremos trabajar con números enteros, también tenemos los
operadores DIV (división entera) y MOD (resto de la división):

SELECT 5/2, 5 div 2, 5 mod 2;


Master Datascience
Profesor: Daniel Rubio Yagüe

Para que resulte más legible, se puede añadir un "alias" a cada "nuevo campo"
que se genera al plantear las operaciones matemáticas:

SELECT 5/2 divReal, 5 div 2 divEnt, 5 mod 2 resto;

5.2 Funciones de agregación

Las funciones de agregación más habituales son:


● min = mínimo valor
● max = máximo valor
● sum = suma de los valores
● avg = media de los valores
● count = cantidad de valores

SELECT min(edad) FROM personas;


SELECT count(*) FROM personas WHERE direccion LIKE 's%';
Master Datascience
Profesor: Daniel Rubio Yagüe

6 Agrupación de datos

6.1 Agrupación de resultados


La forma de obtener subtotales es creando grupos con la orden "GROUP BY", y
entonces pidiendo un valor agrupado (count, sum, avg, ...) para cada uno de esos
grupos. Como limitación, sólo se podrán pedir como resultados los valores
agrupados (como la cantidad o la media) y el criterio de agrupamiento.

SELECT count(*), edad FROM personas GROUP BY edad;

6.1 Filtrado de datos agrupados


Podemos no trabajar con todos los grupos posibles, sino sólo con los que
cumplen alguna condición. La condición que se aplica a los grupos no se indica
con "where", sino con "having"

SELECT count(*), edad FROM personas GROUP BY edad HAVING edad >
24;
Master Datascience
Profesor: Daniel Rubio Yagüe

7 Funciones de cadena

7.1 Conversión de mayúsculas/minúsculas


● LOWER o LCASE convierte una cadena a minúsculas: SELECT
LOWER('Hola'); ⇒ hola

● UPPER o UCASE convierte una cadena a mayúsculas: SELECT


UPPER('Hola'); ⇒ HOLA

7.2 Extracción de parte de la cadena (texto)


● LEFT(cadena, longitud) extrae varios caracteres del comienzo (la parte
izquierda) de la cadena: SELECT LEFT('Hola',2); ⇒ Ho

● RIGHT(cadena, longitud) extrae varios caracteres del final (la parte derecha)
de la cadena: SELECT RIGHT('Hola',2); ⇒ la

● MID(cadena, posición, longitud), SUBSTR(cadena, posición, longitud) o


SUBSTRING(cadena, posición, longitud) extrae varios caracteres de
cualquier posición de una cadena, tantos como se indique en "longitud":
SELECT SUBSTRING('Hola',2,3); ⇒ ola (Nota: a partir MySQL 5 se permite un
valor negativo en la posición, y entonces se comienza a contar desde la
derecha -el final de la cadena-)

● CONCAT une (concatena) varias cadenas para formar una nueva: SELECT
CONCAT('Ho', 'la'); ⇒ Hola

● CONCAT_WS une (concatena) varias cadenas para formar una nueva,


usando un separador que se indique (With Separator): SELECT
CONCAT_WS('-','Ho','la','Que','tal'); ⇒ Ho-la-Que-tal

● LTRIM devuelve la cadena sin los espacios en blanco que pudiera contener
al principio (en su parte izquierda): SELECT LTRIM(' Hola'); ⇒ Hola

● RTRIM devuelve la cadena sin los espacios en blanco que pudiera contener
al final (en su parte derecha): SELECT RTRIM('Hola '); ⇒ Hola

● TRIM devuelve la cadena sin los espacios en blanco que pudiera contener
al principio ni al final: SELECT TRIM(' Hola '); ⇒ Hola (Realmente TRIM puede
eliminar cualquier prefijo, no sólo espacios)
Master Datascience
Profesor: Daniel Rubio Yagüe

● INSERT(cadena,posición,longitud,nuevaCadena) inserta en la cadena otra


cadena: SELECT INSERT('Hola', 2, 2, 'ADIOS'); ⇒ HADIOSa
● REPLACE(cadena,de,a) devuelve la cadena pero cambiando ciertas
secuencias de caracteres por otras: SELECT REPLACE('Hola', 'l', 'LLL'); ⇒
HoLLLa
● REPEAT(cadena,numero) devuelve la cadena repetida varias veces:
SELECT REPEAT(' Hola',3); ⇒ HolaHolaHola
● REVERSE(cadena) devuelve la cadena "del revés": SELECT
REVERSE('Hola'); ⇒ aloH
● SPACE(longitud) devuelve una cadena formada por varios espacios en
blanco: SELECT SPACE(3); ⇒ " "

7.3 Información sobre la cadena


● CHAR_LENGTH o CHARACTER_LENGTH devuelve la longitud de la cadena
en caracteres

● LENGTH devuelve la longitud de la cadena en bytes

● BIT_LENGTH devuelve la longitud de la cadena en bits

● INSTR(cadena,subcadena) o LOCATE(subcadena,cadena,posInicial)
devuelve la posición de una subcadena dentro de la cadena: SELECT
INSTR('Hola','ol'); ⇒ 2

7.4 Conversiones numéricas


● BIN convierte un número decimal a binario: SELECT BIN(10); ⇒ 1010

● HEX convierte un número decimal a hexadecimal: SELECT HEX(10); ⇒ 'A'


(Nota: HEX también tiene un uso alternativo menos habitual: puede recibir
una cadena, y entonces mostrará el código ASCII en hexadecimal de sus
caracteres: SELECT HEX('Hola'); ⇒ '486F6C61')

● OCT convierte un número decimal a octal: SELECT OCT(10); ⇒ 12

● CONV(número,baseInicial,baseFinal) convierte de cualquier base a


cualquier base: SELECT CONV('F3',16,2); ⇒ 11110011

● UNHEX convierte una serie de números hexadecimales a una cadena ASCII,


al contrario de lo que hace HEX: SELECT UNHEX('486F6C61'); ⇒ 'Hola')
Master Datascience
Profesor: Daniel Rubio Yagüe

8 Uniones de tablas

8.1 Join cruzado


Si queremos ver todas las personas y todas las capacidades, aunque no estén
relacionadas, lo podríamos hacer con un "cross join" (unir de forma cruzada)

SELECT persona.nombre, capacidad.nombre


FROM persona CROSS JOIN capacidad;
Master Datascience
Profesor: Daniel Rubio Yagüe

8.2 Join interno


Si sólo queremos ver los datos que coinciden en ambas tablas, lo que antes
conseguíamos comparando los códigos con un "where", también podemos usar
un "inner join" (Es igual que utilizar simplemente "join")

SELECT persona.nombre, capacidad.nombre


FROM persona INNER JOIN capacidad
ON persona.codcapac = capacidad.codigo;

8.3 Join externo


Si queremos ver todas las personas y sus capacidades (si existen), mostrando
incluso aquellas personas para las cuales no tenemos constancia de ninguna
capacidad, usaríamos un "left join" (se van a incluir datos que están sólo en una de
las dos tablas, por lo general la que consideramos principal)

SELECT persona.nombre, capacidad.nombre


FROM persona LEFT JOIN capacidad
ON persona.codcapac = capacidad.codigo;

De igual modo, si queremos ver todas las capacidades, incluso aquellas para las
que no hay detalles sobre personas, podemos escribir el orden de las tablas al
Master Datascience
Profesor: Daniel Rubio Yagüe

revés en la consulta anterior, o bien usar "right join" (Veríamos los datos, tomando
como referencia la tabla que consideramos secundaria)

SELECT persona.nombre, capacidad.nombre


FROM persona RIGHT JOIN capacidad
ON persona.codcapac = capacidad.codigo;

El significado de "LEFT" y de "RIGHT" hay que buscarlo en la posición en la que se


enumeran las tablas en el bloque "FROM"

9 Vistas
Las vistas nos permiten “guardar” o “fijar” las consultas SQL que hemos hecho y
gestionarlas de forma más sencilla. De igual manera, seremos capaces de otorgar
permisos a usuarios para que accedan exclusivamente a esas vistas sin posibilidad
de que alteren el contenido o tengan acceso a la totalidad de la tabla desde la
que se traen los datos.

9.1 Creación de vistas


La vista, una vez creada, se puede utilizar igual que una tabla.

CREATE VIEW personasycapac AS


SELECT persona.nombre nompers, capacidad.nombre nomcapac
FROM persona LEFT OUTER JOIN capacidad
ON persona.codcapac = capacidad.codigo;

También podría gustarte