0% encontró este documento útil (0 votos)
29 vistas

Apuntes SQL 2021

El documento explica los principales comandos SQL para realizar consultas y seleccionar datos de una base de datos. Describe comandos como SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING y operadores lógicos para filtrar y ordenar los resultados de las consultas. También explica cómo formatear y transformar los datos devueltos mediante funciones como TO_CHAR, ROUND, CONCAT y más.
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)
29 vistas

Apuntes SQL 2021

El documento explica los principales comandos SQL para realizar consultas y seleccionar datos de una base de datos. Describe comandos como SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING y operadores lógicos para filtrar y ordenar los resultados de las consultas. También explica cómo formatear y transformar los datos devueltos mediante funciones como TO_CHAR, ROUND, CONCAT y más.
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/ 9

Queries:

SELECT Seleccionar, siempre que queramos que la tabla nos devuelva algo,
debemos escribir “select”.
Si queremos que nos muestre la tabla con un título distinto, tenemos que escribir el
nombre de la tabla seguido del nombre que queremos que se muestre. Si es una
sola palabra, se escribe sin comillas. Si queremos usar más palabras, tenemos que
meterlas entre “comillas dobles”.
Ej: SELECT sal “Salario mensual” FROM emp; SELECT sal salario FROM emp;

FROM Indica con qué tabla vamos a trabajar. Ej: SELECT * FROM *emp (emp es la
tabla). En lugar de la estrella podemos elegir la columna que queramos (tenemos
que saber el nombre). Si escribimos * nos devolverá todas las columnas.

WHERE columna = ‘loquesea’ Va después de un SELECT x FROM y y se usa para


poner parámetros.
AND columna = ‘loquesea2’ Cuando escribimos parámetros no podemos usar
WHERE constantemente. Si queremos especificar 2 o más parámetros, el primero
siempre será con un WHERE y los siguientes con AND. Ej: SELECT * FROM emp
WHERE puesto = ‘jefe’ AND sal = ‘1200’ Lo que va entre comillas simples es
sensible a mayúsculas y minúsculas, así que cuidado con eso.
Modificadores para el WHERE y el AND. En el ejemplo hemos usado el símbolo =,
con lo que solo nos muestra los resultados que son iguales a lo que hemos escrito.
También podemos usar > para mayor que, o < para menor que. También se
pueden combinar para decir que sea mayor o igual (>=) o menor o igual (<=) Ej:
SELECT * FROM emp WHERE sal >= ‘1500’ AND id < ‘50000’. Esto nos seleccionará
todas las columnas de la tabla empleados, pero solo nos mostrará los empleados
cuyo salario sea mayor o igual a 1500 y su ID de empleado sea menor a 50000.
= igual
< menor que
> Mayor que
<= menor o igual que
>= mayor o igual que
!= no sea igual que

OR Es lo contrario al AND. Ej. SELECT * FROM emp WHERE sal > ‘1200’ OR sal <
‘300’
IN Si queremos obtener resultados con parámetros que están en la misma columna
(gente que se apellide García, Perez y Martinez, por ejemplo) en vez de usar un OR
para cada nombre, podemos meterlos todos dentro de un IN. Si lo que buscamos es
texto, tiene que ir entre comillas.
Ej: SELECT * FROM emp WHERE nombre IN (‘García’, ‘Perez’, ‘Martinez’)
NOT IN Lo contrario a IN. Nos muestra todo menos lo que haya escrito entre
paréntesis.
Ej: SELECT * FROM emp WHERE nombre NOT IN (‘García’, ‘Perez’, ‘Martinez’)

BETWEEN Nos sirve para encontrar filas con valores entre los que establecemos.
Ej: SELECT * FROM emp WHERE sal BETWEEN ‘1000’ AND ‘2000’
NOT BETWEEN Lo contrario que BETWEEN. Nos lo muestra todo menos lo que está
en los rangos que hemos establecido.
Ej: SELECT * FROM emp WHERE sal NOT BETWEEN ‘1000’ AND ‘2000’
IS NULL Nos muestra las filas que no tienen valor asignado en esa columna. No es lo
mismo no tener valor que tener valor 0.
Ej: SELECT * FROM emp WHERE sal IS NULL
IS NOT NULL Lo contrario que IS NULL. Nos muestra solo las filas que tienen valor
asignado en esa columna.
LIKE Es parecido al igual, pero en vez de buscar un resultado exacto busca
resultados parecidos. Para ello usamos el símbolo %. Ese símbolo quiere decir que
en su lugar puede haber cualquier cosa. Por ejemplo, para buscar a PEPITO
podemos buscar P%, PE%, %TO, %O %PI% etc…
Ej: SELECT * FROM emp WHERE nombre LIKE ‘%PE’
AS Si queremos que nos muestre la tabla con un título distinto, tenemos que
escribir el nombre de la tabla seguido de AS y luego el nombre que queremos que
se muestre. Si es una sola palabra, se escribe sin comillas. Si queremos usar más
palabras, tenemos que meterlas entre “comillas dobles”.
Ej: SELECT sal AS “Salario mensual” FROM emp; SELECT sal AS salario FROM emp;
|| Esto se llaman “tuberías”. Se usan para encadenar texto con resultados de las
tablas. El texto que queremos que se muestre debe ir con ‘comillas simples’.
Ej: SELECT 'BUENOS DÍAS ' || nombre AS "buenos días, empleados" FROM emp; Nos
mostrará algo parecido a esto:

buenos días, empleados


BUENOS DÍAS KING
BUENOS DÍAS BLAKE
BUENOS DÍAS CLARK

ORDER BY Esto sirve para mostrar las columnas por orden, ya sea alfabético o
numérico. Si queremos que lo ordene de forma descendente, después del nombre
de la columna escribimos DESC
Ej: SELECT nombre, sal FROM emp ORDER BY sal DESC; Esto nos mostrará el
nombre y salario de los empleados y los ordenará por salario, del que más cobra al
que menos. Se pueden elegir varios parámetros de ordenación. Por ejemplo,
podemos decir que elija por número de departamento (muchos empleados lo
comparten) y luego por salario: SELECT nombre, sal, numdep FROM emp ORDER BY
numdep, sal DESC. Esto primero agrupará a la gente con el mismo número de
departamento, y luego a los de cada grupo los ordenará de forma descendiente por
salario.

CONCAT Es como el uso de || pero en paréntesis y separándolo con comas.


Ej: SELECT CONCAT(‘buenos días ‘, nombre) FROM emp;
UPPER, LOWER e INITCAP Básicamente hace que lo que esté entre paréntesis se
muestre en mayúsculas o minúsculas. Si se usa en una búsqueda de texto buscará
solo el texto que esté en mayúsculas o minúsculas. INITCAP hace que la primera
letra de cada palabra sea mayúscula y el resto minúsculas.
SELECT UPPER(nombre) FROM emp; Nos muestra los nombres de los empleados en
mayúsculas.
SELECT nombre FROM emp WHERE nombre = LOWER(‘MANUEL’); Nos mostrará los
empleados cuyo nombre sea Manuel y haya sido escrito todo en minúsculas. Nos
mostrará a alguien que tenga como nombre manuel pero no a alguien que tenga
MANUEL o Manuel.
SUBSTR Nos muestra solo parte de lo que le pidamos SUBSTR(nombre, 2, 3). En
este ejemplo nos mostrará solo parte de la columna “nombre”. Empezará por el 2º
carácter, y nos mostrará 3 caracteres (en este caso, si la persona se llamase
Manuel, nos mostraría “anu”)
SELECT SUBSTR(nombre, 2, 5) FROM emp; Nos mostrará 5 caracteres a partir del 2º
de los nombres de todos los empleados.
LPAD y RPAD Es parecido al SUBSTR, pero en vez de partir el texto, lo que hace es
añadir caracteres hasta completar el número que le decimos con el carácter
seleccionado.
Ej: SELECT RPAD(nombre, 50, ‘%’) FROM emp; Nos mostrará los nombres de los
empleados y añadirá el símbolo % tantas veces como sea necesario hasta rellenar
los 50 caracteres.
ROUND y TRUNC ROUND redondea un número hasta los decimales que le digamos
(si no decimos nada nos da un número entero), y TRUNC elimina los decimales a
partir de lo que le digamos (si no decimos nada, nos da un número entero).
Imaginemos que los empleados cobran 1200.884658.
Ej: SELECT ROUND(sal, 1) FROM emp; Nos dará 1200.9 (solo 1 decimal, y como el 2º
decimal es 8 redondea hacia arriba).
Ej: SELECT TRUNC(sal) FROM emp; Nos dará 1200, porque no le hemos dicho que
nos dé ningún decimal.

TO_CHAR Se utiliza para tratar valores numéricos como si fuesen texto y darles el
formato que queramos (fecha, sueldo, moneda etc…)
FECHAS

Format element How it Works Value returned


Year Year spelled out TWO THOUSAND NINE
MM Two digit value of month 04
MONTH Full name of month MARCH
MON Three letter abbreviation MAR
DAY Full name of day TUESDAY
DY Three letter Abbreviation TUE
of day
DD Numeric day of month 25
YYYY Four digit year 2007

Ej: SELECT TO_CHAR (sysdate, 'day, ddth "of" month, yyyy') FROM dual;
MONEDA

Format Element Description Format Usage Example


9 Represents a 9999.99 Number: 27.6
number Output: 27.60
0 Forces a zero in 0000.00 Number: 278.6
display Output: 0278.60
$ Puts a dollar sign $999.99 Number: 12.7
Output: $12.70
. Decimal point $99.9 Number: 48.99
Output: $48.99
, Comma for $99,999.99 Number: 12400.8
thousand Output:
separator $12,400.80
Ej: SELECT TO_CHAR (salario, $99,999.99) FROM emp;

NVL Convierte las casillas con valor NULL a lo que le digamos.


Ej: SELECT NVL(salario, 0) FROM emp; La gente que no tenga valor asignado en la
columna “salario” saldrá un 0 en vez de un guión.
NULLIF Si una casilla tiene un valor determinado, pasa a ser NULL
Ej: SELECT NULLIF(salario, 1500) FROM emp; La gente que tenga asignado un
salario de 1500 pasará a tener NULL en esa casilla.

MAX Nos da el valor máximo de una columna.


MIN Nos da el valor mínimo de una columna.
AVG Nos da el valor medio de una columna.
SUM Nos da la suma de los valores de una columna.
COUNT Nos cuenta las filas de una columna.
Ej: SELECT MAX(salario) FROM emp; SELECT COUNT(salario) FROM emp;
GROUP BY Nos agrupa todas las filas del valor especificado. Si por ejemplo tenemos
4 trabajos distintos, nos agrupa a los empleados en 4 trabajos, y podemos operar
con esos grupos por separado.
Ej: SELECT AVG(salario), puesto FROM emp GROUP BY puesto; Esto nos dirá la
media de sueldo de cada puesto de trabajo distinto (si hay 4 puestos distintos, nos
dará 4 números).
HAVING Es como el WHERE pero se usa después de un GROUP BY
Ej: SELECT AVG(salario), puesto FROM emp GROUP BY puesto HAVING puesto LIKE
‘jefe’; Aquí nos dirá la media de sueldo para todos los puestos distintos que incluyan
la palabra ‘jefe’. Por ejemplo, nos dirá el de ‘jefe de ventas’ y ‘jefe de personal’ pero
no el de ‘operario’.

Nested queries.
Si queremos hacer una búsqueda dentro de una búsqueda (para buscar algo en una
tabla distinta, por ejemplo), simplemente debemos poner una condición (where, in
etc…) seguido de apertura de paréntesis y la siguiente búsqueda que quedamos
hacer.
Ej: SELECT * FROM emp WHERE deptno = ( SELECT deptno FROM dept WHERE loc =
‘MADRID’ )
Primero hará la búsqueda que hay entre paréntesis. Esa búsqueda nos devolverá el
número de departamento que tenga como localización Madrid. Después, lo que hay
fuera de paréntesis nos devolverá todos los resultados de la tabla empleados cuyo
número de departamento se corresponda con el de Madrid. Tener en cuenta que si
lo que hay entre paréntesis nos devuelve más filas que las que nos tiene que
mostrar la búsqueda que hay fuera de los paréntesis, nos dará un error.

SET OPERATORS
UNION, UNION ALL, INTERSECT, MINUS
UNION . Combina los resultados de dos sentencias y elimina los duplicados (A y no B
ó B y no A).
Ej: SELECT First_name, Last_name FROM emp WHERE deptno = ‘Madrid’
UNION
SELECT First_name, Last_name FROM clientes WHERE ciudad = ‘Madrid’
Nos mostrará el nombre y apellido tanto de clientes como de empleados de Madrid,
eliminando los duplicados (una misma persona puede ser cliente y empleado a la
vez).
Tiene que haber el mismo número de columnas solicitadas para ambas tablas y
deben ser del mismo tipo (texto, fecha etc…). Para ordenarlo, se usa ORDER BY y el
número de columna (ORDER BY 1, 3)
Para que no elimine los duplicados, el proceso es exactamente le mismo pero en
vez de UNION usamos UNION ALL (A ó B).
INTERSECT: Igual que UNION, pero solo nos muestra la intersección de sucesos, en
el ejemplo anterior, solo nos mostraría las entradas que estén tanto en clientes
como en empleados (A y B).
MINUS: Nos muestra los elementos que solicita en la primera sentencia excluyendo
los elementos de la segunda sentencia (A y no B)

JOINS
INNER JOIN, LEFT/RIGHT OUTER JOIN, NATURAL JOIN, CARTESIAN JOIN, SELF JOIN
Nos permiten mostrar información de dos o más tablas a la vez usando un valor
común. Son como los SET OPERATORS pero combinando tablas en vez de
sentencias.
INNER JOIN: El join más común, simplemente une dos tablas usando una columna
común de cada tabla y nos da las coincidencias. Ej: SELECT first_name, last_name,
department_name FROM employee JOIN department ON employee.department_id =
department.department_id;
Esto nos da la información de nombre y apellido de la tabla “employee” y el nombre
del departamento de la tabla “department”, haciendo la unión en la columna
común, en este caso la ID del departamento.
LEFT OUTER JOIN: Como el INNER JOIN, une dos tablas en una columna común, pero
en vez de enseñar sólo las coincidencias, nos muestra toda la tabla izquierda (la
primera después de FROM) y las coincidencias de la tabla derecha. Si una fila de la
tabla izquierda no tiene coincidencia en la tabla derecha (tenemos un artículo con
id=5 en la tabla de artículos pero en la tabla de ventas nadie ha comprado ese
artículo) nos muestra el valor NULL.
Ej: SELECT c.customer_id, c.first_name, c.last_name, co.order_date FROM customer
c LEFT JOIN customer_order co ON c.customer_id = co.customer_id;
RIGHT OUTER JOIN: Igual que el LEFT OUTER JOIN pero usa toda la información de la
columna derecha, y donde no haya coincidencias pone el valor NULL.
FULL OUTER JOIN: Combinación del LEFT y RIGHT JOIN. Nos da la información total
de ambas tablas, rellenando con NULL donde no haya coincidencias.
NATURAL JOIN: En esencia es un INNER JOIN pero no hay que especificar las
columnas que unen las tablas, las selecciona automáticamente SI TIENEN EL MISMO
NOMBRE.

CREAR Y ALTERAR TABLAS


CREATE TABLE nombre ( columnas ) Sirve para crear una tabla. Se le tiene que dar
un nombre y entre paréntesis se escribirán las columnas de la tabla. A cada
columna le asignaremos un tipo de datos (texto, número etc…) y otras variables.
Ej: CREATE TABLE tiendas (id_tienda NUMBER NOT NULL, ciudad VARCHAR(50));
DESCRIBE Nos dice los atributos de las columnas de una table.
Ej: DESCRIBE tiendas
INSERT INTO Inserta información en la tabla.
Ej: INSERT INTO tiendas(id_tienda, ciudad) VALUES (00001, ‘Madrid’)
INSERT ALL Sirve para insertar varias filas en una tabla de golpe.
Ej: INSERT ALL INTO tiendas(id_tienda, ciudad) VALUES (00001, ‘Madrid’)
INTO tiendas(id_tienda, ciudad) VALUES (00002, ‘Barcelona’)
INTO tiendas(id_tienda, ciudad) VALUES (00003, ‘Sevilla’)
SELECT * FROM dual; Esto nos añadirá 3 tiendas de golpe. Al final hay que añadir
una función SELECT para que funcione. No hay razón lógica, simplemente es así.
Este comando es específico de Oracle SQL, puede que no funcione en otros
lenguajes.
ALTER TABLE tabla MODIFY columna Sirve para modificar los atributos de una tabla
(por ejemplo, pasar del tipo NUMBER al tipo VARCHAR)
Ej: ALTER TABLE tiendas MODIFY id_tienda VARCHAR2(20) NOT NULL. Esto cambia
el tipo de dato de la columna “id_tienda”. Pasa de ser numérico a ser de caracteres
con un límite de 20 caracters.
ALTER TABLE tabla RENAME columna TO Renombrar columnas.
Ej: ALTER TABLE tiendas RENAME ciudad TO localidad;
ALTER TABLE tabla ADD columnas Sirve para añadir columnas a una tabla ya
existente.
Ej: ALTER TABLE empleados ADD dni direccion
CREATE TABLE nombre AS SELECT columnas tabla objetivo FROM tabla objetivo
Crea una tabla usando columnas de otra tabla ya existente.
Ej: CREATE TABLE empleados AS SELECT nombre, salario, dni FROM emp;
UPDATE tabla SET columna_objetivo = atributo WHERE columna =
información_existente Sirve para cambiar la información en una tabla existente.
Tenemos que decir qué columna queremos cambiar y si queremos que sea una
casilla específica, tenemos limitarlo a información que coincida (decir qué clave
primaria tiene, por ejemplo).
Ej: UPDATE empleados SET salario = 3000 WHERE dni = 0543215B Al empleado
que tenga el DNI 0543215B se le pondrá 3000 en la casilla ‘salario’
DELETE FROM empleados WHERE dni IS NULL
TIPOS DE DATOS
CHAR: String de tamaño fijo.
VARCHAR2: string de tamaño variable
NUMBER: número con decimales
DATE: fecha y hora
TIMESTAMP: tiempo, hora y milisegundos
CLOB: wall of text.
Se puede convertir el tipo de dato con TO_CHAR, TO_DATE, TO_NUMBER
FUNCIONES
Básicamente son como los “if” en programación.
SELECT name, Price, CASE WHEN Price <10 THEN ‘Menos 10’ WHEN Price BETWEEN
10 AND 50 THEN ‘entre 10 y 50’ ELSE ‘más de 50’ FROM productos

También podría gustarte