Está en la página 1de 7

explica el uso de las sentencias SQL más habituales (SELECT, INSET, UPDATE, ...

) con ejemplos de SQL de


Oracle.

MINIMANUAL SQL

SENTENCIA DESCRIPCIÓN EJEMPLO

INSERT INTO nombretabla (campo1, INSERT INTO recibidos


Inserta un registro en
campo2, ...) VALUES (campo1, (id, descripcion) VALUES
una tabla
campo2, ...) ('1', 'Registro de prueba)

Elimina los registros de


la tabla que cumplan la
condición especificada
DELETE FROM nombretabla WHERE DELETE FROM recibidos
(si no se especifica
condición WHERE id='1'
condición se eliminarán
todos los registros de la
tabla)

Actualiza los registros


que cumplan la
condición especificada UPDATE recibidos SET id
UPDATE nombretabla SET campo1 =
con los nuevos valores = '2', descripcion =
valor1, campo2 = valor2, ...WHERE
(si no se especifica 'Descripción actualizada'
condición
condición se WHERE id='1'
actualizarán todos los
registros de la tabla)

Update más avanzado,


actualiza el campo
UPDATE nombre_tabla UPDATE supplier
campo1 de todos los
SET campo1 = SET supplier_name =
registros de la
(SELECT nt2.campo1 (SELECT customer.name
nombre_tabla, con el
FROM nombre_tabla2 nt2 FROM customers
valor del campo1 de la
WHERE WHERE
tabla nombre_tabla2
nombre_tabla2.codigonombretabla customers.customer_id =
que cumplen la
= nombre_tabla.codigo) supplier.supplier_id)
condición especificada
en el WHERE

Consulta que muestra


los campos
especificados de los
SELECT descripcion FROM
registros que cumplan
SELECT campo1, campo2, ... FROM recibidos WHERE
la condición
nombretabla WHERE condición UPPER(descripcion) LIKE
especificada (si no se
'%ACTUALI%'
especifica condición
mostrará todos los
registros)
CREATE TABLE recibidos (

CREATE TABLE nombretabla (


id VARCHAR(2) NOT
NULL,
campo1 tipodatos1, Crea una tabla con los
campo2 tipodatos2, campos especificados
descripcion
...
VARCHAR(100)
)

ALTER TABLE
tabla_prueba
ALTER TABLE tabla_prueba
ADD
ADD
Añade campos (
(
(columnas) nuevos a campo_nuevo
campo_nuevo TIPO_DATOS,
una tabla existente varchar2(9),
campo_nuevo2 TIPO_DATOS
campo_nuevo2
)
varchar2(200)
)

Sólo para Oracle

SENTENCIA DESCRIPCIÓN EJEMPLO

CREATE USER
"usuarioprueba"
CREATE USER
PROFILE
"NOMBRE_USUARIO" PROFILE
Sentencia SQL para crear un "DEFAULT"
"DEFAULT"
usuario en Oracle, creará el usuario IDENTIFIED BY
IDENTIFIED BY
"nombre_usuario", con la "contraseña"
"CONTRASEÑA_USUARIO"
contraseña "contraseña_usuario", le DEFAULT
DEFAULT TABLESPACE
asignará el tablespace TABLESPACE
"TABLESPACE_DEFECTO"
"tablespace_defecto", le asignará el "USERS"
ACCOUNT UNLOCK;
permiso "connect" ACCOUNT
GRANT "CONNECT" TO
UNLOCK;
"NOMBRE_USUARIO"
GRANT "CONNECT"
TO "usuarioprueba"

Según el motor de base de datos utilizado los símbolos separadores de cadenas, fechas, ... pueden variar.

Para las condiciones que se colocan en el WHERE existen los siguientes operadores:

OPERADOR DESCRIPCIÓN
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Distinto
= Igual
And y
Or o
Not no
Selecciona los registros cuyo valor de campo se asemeje, no teniendo en
Like
cuenta mayúsculas y minúsculas.
De un conjunto de valores para un campo para los cuales la condición de
In
selección es válida
De un conjunto de valores para un campo para los cuales la condición de
Not in
selección es no válida
Is null Selecciona los registros que tengan el campo especificado a nulo
Is not null Selecciona los registros que tengan el campo especificado distinto de nulo
Between Selecciona los registros comprendidos en el intervalo especificado
|| Concatenar cadenas de caracteres (válido para Oracle)

COMODÍN DESCRIPCIÓN
* Sustituye a todos los campos
% Sustituye a cualquier cosa o nada dentro de una cadena
_ Sustituye un solo carácter dentro de una cadena

Ejemplos de consultas SQL (utilizando como motor de base de datos Oracle):

SENTENCIA SQL DESCRIPCIÓN


SELECT last_name, job_id, salary Muestra todos los registros de la tabla "employees",
AS Salario mostrará los campos especificados y el campo
FROM employees "salary" lo renombra (con un alias) a "Salario "
SELECT * Muestra todos los registros y todos los campos de la
FROM employees tabla "employees"
SELECT last_name, salary * 12 AS Muestra el campo "last_name" y el campo "Salario
"Salario Anual" Anual" (que es el resultado de multiplicar el campo
FROM employees "salary" por 12) de la tabla employees
SELECT first_name || ', ' || Concatena los campos "first_name" y "last_name" y
last_name "Nombre empleado" los muestra en un solo campo llamado "Nombre
FROM employees empleado", también añade una "," entre los campos
SELECT last_name
Muestra el campo "last_name" de la tabla
FROM employees
"employees" cuyo "employee_id" es mayor que 176
WHERE employee_id > 176
SELECT last_name, salary
Muestra los campos "last_name" y "salary" de
FROM employees
aquellos empleados cuyo salario no esté entre 5000
WHERE salary NOT BETWEEN 5000
y 12000
AND 12000
SELECT last_name
FROM employees Muestra el campo "last_name" de aquellos registros
WHERE department_id IN (20, de la tabla "employees" cuyo "department_id" sea
50) 20 ó 50
ORDER BY last_name
SELECT employee_id
FROM employees
Muestra los empleados cuyo salario sea superior a la
WHERE salary > (
media
SELECT AVG (salary)
FROM employees)
SELECT last_name, job_id
FROM employees
WHERE department_id IN ( Muestra los empleados que pertenezcan a un
SELECT department_id departamento que contenga la letra "K" en el
FROM departments nombre
WHERE UPPER(department_name)
LIKE '%K%')
Tema 2. Las consultas Búsqueda

simples (I)

Objetivo

Empezaremos por estudiar la sentencia SELECT, que permite recuperar datos de una o
varias tablas. La sentencia SELECT es con mucho la más compleja y potente de las sentencias
SQL. Empezaremos por ver las consultas más simples, basadas en una sola tabla.

Esta sentencia forma parte del DML (lenguaje de manipulación de datos), en este tema veremos
cómo seleccionar columnas de una tabla, cómo seleccionar filas y cómo obtener las filas
ordenadas por el criterio que queramos.

El resultado de la consulta es una tabla lógica, porque no se guarda en el disco sino que está en
memoria y cada vez que ejecutamos la consulta se vuelve a calcular.

Cuando ejecutamos la consulta se visualiza el resultado en forma de tabla con columnas y filas,
pues en la SELECT tenemos que indicar qué columnas queremos que tenga el resultado y qué filas
queremos seleccionar de la tabla origen.

Si no conoces todavía las tablas que utilizaremos para los ejemplos y ejercicios clic aquí

Sintaxis de la sentencia SELECT (consultas


simples)

La tabla origen - FROM -

Con la cláusula FROM indicamos en qué tabla tiene que buscar la información. En este
capítulo de consultas simples el resultado se obtiene de una única tabla. La sintaxis de la cláusula
es:

FROM especificación de tabla


Una especificación de tabla puede ser el nombre de una consulta guardada (las que aparecen en
la ventana de base de datos), o el nombre de una tabla que a su vez puede tener el siguiente
formato:

Aliastabla es un nombre de alias, es como un segundo nombre que asignamos a la tabla, si


en una consulta definimos un alias para la tabla, esta se deberá nombrar utilizando ese nombre y no
su nombre real, además ese nombre sólo es válido en la consulta donde se define. El alias se
suele emplear en consultas basadas en más de una tabla que veremos en el tema siguiente. La
palabra AS que se puede poner delante del nombre de alias es opcional y es el valor por defecto por
lo que no tienen ningún efecto.

Ejemplo: SELECT ......FROM oficinas ofi ; equivalente a SELECT ......FROM oficinas AS


ofi esta sentencia me indica que se van a buscar los datos en la tabla oficinas que queda
renombrada en esta consulta con ofi.

En una SELECT podemos utilizar tablas que no están definidas en la base de datos (siempre
que tengamos los permisos adecuados claro), si la tabla no está en la base de datos activa, debemos
indicar en qué base de datos se encuentra con la cláusula IN.

En la cláusula IN el nombre de la base de datos debe incluir el camino completo,


la extensión (.mdb), y estar entre comillas simples.

Supongamos que la tabla empleados estuviese en otra base de datos llamada otra en la
carpeta c:\mis documentos\, habría que indicarlo así:

SELECT *
FROM empleados IN 'c:\mis documentos\otra.mdb'

Generalmente tenemos las tablas en la misma base de datos y no hay que utilizar la cláusula IN.

Selección de columnas

La lista de columnas que queremos que aparezcan en el resultado es lo que llamamos lista de
selección y se especifica delante de la cláusula FROM.

Utilización del *

Se utiliza el asterisco * en la lista de selección para indicar 'todas las columnas de la tabla'.
Tiene dos ventajas:

Evitar nombrar las columnas una a una (es más corto).

Si añadimos una columna nueva en la tabla, esta nueva columna saldrá sin tener que modificar la
consulta.
Se puede combinar el * con el nombre de una tabla (ej. oficinas.*), pero esto se utiliza más cuando
el origen de la consulta son dos tablas.

SELECT * FROM oficinas


o bien Lista todos los datos de las oficinas
SELECT oficinas.* FROM oficinas

columnas de la tabla origen


Las columnas se pueden especificar mediante su nombre simple (nbcol) o su nombre
cualificado (nbtabla.nbcol, el nombre de la columna precedido del nombre de la tabla que contiene
la columna y separados por un punto).
El nombre cualificado se puede emplear siempre que queramos y es obligatorio en algunos casos
que veremos más adelante.

Cuando el nombre de la columna o de la tabla contiene espacios en blanco, hay que poner el
nombre entre corchetes [ ] y además el número de espacios en blanco debe coincidir. Por ejemplo
[codigo de cliente] no es lo mismo que [ codigo de cliente] (el segundo lleva un espacio en blanco
delante de código)

Ejemplos :

SELECT nombre, oficina, contrato Lista el nombre, oficina, y fecha de contrato de


FROM ofiventas todos los empleados.

SELECT idfab, idproducto,


descripcion, precio Lista una tarifa de productos
FROM productos

Alias de columna.
Cuando se visualiza el resultado de la consulta, normalmente las columnas toman el nombre que
tiene la columna en la tabla, si queremos cambiar ese nombre lo podemos hacer definiendo un alias
de columna mediante la cláusula AS será el nombre que aparecerá como título de la columna.

Ejemplo:

SELECT idfab AS fabricante,


Como título de la primera columna aparecerá
idproducto, descripcion
fabricante en vez de idfab
FROM productos

Columnas calculadas.
Además de las columnas que provienen directamente de la tabla origen, una consulta SQL puede
incluir columnas calculadas cuyos valores se calculan a partir de los valores de los datos
almacenados.

Para solicitar una columna calculada, se especifica en la lista de selección una expresión en vez de
un nombre de columna. La expresión puede contener sumas, restas, multiplicaciones y divisiones,
concatenación & , paréntesis y también funciones predefinidas).
Para ver con más detalle cómo formar una expresión pincha aquí

Ejemplos:

SELECT ciudad, región, (ventas-


Lista la ciudad, región y el superavit de cada
objetivo) AS superavit
oficina.
FROM oficinas
SELECT idfab, idproducto, descripcion, De cada producto obtiene su fabricante,
(existencias * precio) AS valoracion idproducto, su descripción y el valor del
FROM productos inventario

Lista el nombre, mes y año del contrato de


cada vendedor.
SELECT nombre, MONTH(contrato),
La función MONTH() devuelve el mes de
YEAR(contrato)
una fecha
FROM repventas
La función YEAR() devuelve el año de una
fecha

SELECT oficina, 'tiene


Listar las ventas en cada oficina con el formato: 22 tiene
ventas de ', ventas
ventas de 186,042.00 ptas
FROM oficinas

También podría gustarte