Está en la página 1de 8

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 of day TUE
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 number 9999.99 Number: 27.6
Output: 27.60
0 Forces a zero in display 0000.00 Number: 278.6
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 thousand $99,999.99 Number: 12400.8
separator Output: $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