Вы находитесь на странице: 1из 61

El LMD es la parte del SQL que nos permite

manipular datos (Lenguaje de Manipulación de


Datos).

Tenemos tres acciones posibles para manipular:


Insertar datos (INSERT), Actualizar datos
(UPDATE), Borrar datos (DELETE) y seleccionar
datos (SELECT).
INSERT: sentencia para agregar una o mas tuplas a
una tabla. tuplas
Nombre
INSERT INTO ( columnas )
tabla
,

values ( valores )
,
,
INSERT INTO nombre_tabla (columnas) values
(valores), (mas valores);
INSERT:

INSERT INTO departamento VALUES


('RAS','RAAS');

INSERT INTO departamento(depto, nombre)


VALUES ('GRA','GRANADA');

INSERT INTO departamento (depto) VALUES


('LEO'), (‘CHI’);
UPDATE: sentencia para modificar una o mas
tuplas a una tabla.
Nombre
UPDATE set
tabla
where
columna = valor condición
,
and
/or

UPDATE nombre_tabla SET columna=valor


WHERE condición;
UPDATE:

UPDATE departamento SET nombre='REGIONA',


depto='RAAS' WHERE depto='RAS';

UPDATE departamento SET depto=‘GRN‘ WHERE


depto=‘GRA‘ AND nombre=‘GRANADA’ ;
DELETE: sentencia para borrar una o mas tuplas a
una tabla.
Nombre
DELETE condición
tabla
and
/or

DELETE FROM departamento WHERE


depto=‘LEO';
SELECT: sentencia recuperar una o varias tuplas de
una o varias tablas, pudiendo tener una o varias
condiciones. reunion
* condición
SELECT
and
Nombre
columna /or
tabla
,
,

agrupados ordenados
SELECT:
SELECT * FROM departamento;

SELECT depto FROM departamento;

SELECT depto, nombre FROM departamento


WHERE depto=‘GRN’;
agrupados
La agrupación es la función que se encarga de
formar grupos de las tuplas de una tabla. Estos
grupos los hace basándose en columnas que se
especifican.

group by Nombre
columna

,
Funciones con agrupación.
count: cuenta cada una de las filas del resultado
de una consulta. Puede ser sobre toda la fila (*), o
una columna(nombre_columna).
sum: Suma los valores de una columna, si algunos
de las columnas tienen el valor null el resultado será
null. Todos los valores deben de ser numéricos.
avg: Calcula la media de los valores de la
columnas. Si alguno de los valores tiene null el
resultado sera null. Todos los valores deben de ser
numéricos.
min: Regresa el valor mínimo de las columnas.
max: Regresa el valor máximo de las columnas.
ordenamiento
El ordenamiento es la función que se encarga de
ordenas las tuplas de una tabla o resultados de un
resultado de una consulta.

order by Nombre ASC/DESC


columna

,
La operación SELECT es la encargada de mostrar
aquellos valores que tenemos en la base de datos.
Se podría considerada la mas compleja y la esencia
de las bases de datos.

Veremos la relación de esta consulta con lo que es


el algebra relacional.
SELECT DISTINCT nombre FROM Cliente;

SELECT DISTINCT nombre, apellido FROM Cliente;

Estas dos sentencias SQL nos regresaran los


nombres (en el caso de la primera sentencia) y el
apellido (en el caso de la segunda), pero no
mostrara dos o mas clientes con el mismo nombre.

NOMBRE APELLIDO NOMBRE APELLIDO


Juan Fonseca Juan Fonseca
Rebeca Álvarez Rebeca Álvarez
Juan Meléndez
SELECT ALL nombre FROM Cliente;

SELECT ALL nombre, apellido FROM Cliente;

Estas dos sentencias SQL nos regresaran los


nombres (en el caso de la primera sentencia) y el
apellido (en el caso de la segunda), sin importar que
el nombre este repetido. Esta característica esta por
defecto aunque no utilicemos ALL.
NOMBRE APELLIDO NOMBRE APELLIDO
Juan Fonseca Juan Fonseca
Rebeca Álvarez Rebeca Álvarez
Juan Meléndez Juan Meléndez
Dentro del SELECT se puede poner operaciones
matemáticas, lógicas, de renombre, valores
estáticos, ETC.
SELECT nombre, saldo-100 FROM Cliente;
NOMBRE APELLIDO Saldo NOMBRE Saldo-100
Juan Fonseca 2500 Juan 2400
Rebeca Álvarez 500 Rebeca 400
Juan Meléndez 130 Juan 30

SELECT nombre, saldo-100 as valor FROM Cliente;


NOMBRE APELLIDO Saldo NOMBRE valor
Juan Fonseca 2500 Juan 2400
Rebeca Álvarez 500 Rebeca 400
Juan Meléndez 130 Juan 30
SELECT nombre, ‘son clientes’ FROM Cliente;
NOMBRE APELLIDO Saldo NOMBRE Son clientes
Juan Fonseca 2500 Juan Son clientes
Rebeca Álvarez 500 Rebeca Son clientes
Juan Meléndez 130 Juan Son clientes

SELECT nombre, saldo-100 as valor, 100 as quitado

NOMBRE APELLIDO Saldo NOMBRE valor Quitado


Juan Fonseca 2500 Juan 2400 100
Rebeca Álvarez 500 Rebeca 400 100
Juan Meléndez 130 Juan 30 100
Dentro de la sección SELECT podemos colocar un
condicional a los valores que mostraremos. Este
condicional es la sentencia IF.

IF(condicion, en caso verdadero, de lo contrario)

SELECT nombre, IF(salario<200,’Muy poco’, valor)


as valor FROM Cliente;

NOMBRE APELLIDO Saldo NOMBRE valor


Juan Fonseca 2500 Juan 2500
Rebeca Álvarez 500 Rebeca 500
Juan Meléndez 130 Juan Muy poco
En la sección FROM del SELECT es donde
pondremos los objetos de donde queremos mostrar
los valores. Si tenemos lo siguiente:
SELECT * FROM clientes;

Estaremos mostrando los valores del objeto, en este


caso tabla, clientes. También podemos mostrar
valores de mas de un objeto.

SELECT * FROM clientes, cuenta;

Esto produciría un producto cartesiano. En el caso


que no se desee el producto cartesiano se puede
incluir una clausula WHERE.
La sección WHERE del SELECT es la encargada de
restringir los valores que se muestran como
resultado de una consultan. Existen tres formas de
condicionar valores, una es teniendo el valor exacto
(x=0), otra es teniendo parte del valor (nombre=‘j%’)
y la ultima seria con un rango de valores.

SELECT * FROM Cliente WHERE saldo=130

NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo


Juan Fonseca 2500 Juan Meléndez 130
Rebeca Álvarez 500
Juan Meléndez 130
SELECT * FROM Cliente WHERE nombre LIKE
‘%a%’;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Juan Fonseca 2500
Rebeca Álvarez 500 Rebeca Álvarez 500
Juan Meléndez 130 Juan Meléndez 130

SELECT * FROM Cliente WHERE Saldo<300

NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo


Juan Fonseca 2500 Juan Fonseca 2500
Rebeca Álvarez 500 Rebeca Álvarez 500
Juan Meléndez 130
SELECT * FROM Cliente WHERE nombre in
(‘Juan’,’Maria’);
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Juan Fonseca 2500
Rebeca Álvarez 500 Juan Meléndez 130
Juan Meléndez 130

SELECT * FROM Cliente WHERE Saldo=2500


AND Saldo=130;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500
Rebeca Álvarez 500
Juan Meléndez 130
SELECT * FROM Cliente WHERE Saldo=2500 OR
Saldo=130;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Juan Fonseca 2500
Rebeca Álvarez 500 Juan Meléndez 130
Juan Meléndez 130

SELECT * FROM Cliente WHERE (Saldo=2500 OR


Saldo=130) AND nombre=‘Rebeca’;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500
Rebeca Álvarez 500
Juan Meléndez 130
SELECT * FROM Cliente WHERE nombre NOT IN
(‘Juan’,’Maria’);
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Rebeca Álvarez 500
Rebeca Álvarez 500
Juan Meléndez 130

SELECT * FROM Cliente WHERE NOT


Saldo=2500 AND Saldo=130;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Juan Meléndez 130
Rebeca Álvarez 500
Juan Meléndez 130
SELECT * FROM Cliente ORDER BY saldo;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Juan Meléndez 130
Rebeca Álvarez 500 Rebeca Álvarez 500
Juan Meléndez 130 Juan Fonseca 2500

SELECT * FROM Cliente ORDER BY saldo ASC;


NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Juan Meléndez 130
Rebeca Álvarez 500 Rebeca Álvarez 500
Juan Meléndez 130 Juan Fonseca 2500
SELECT * FROM Cliente ORDER BY saldo DESC;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Juan Fonseca 2500
Rebeca Álvarez 500 Rebeca Álvarez 500
Juan Meléndez 130 Juan Meléndez 130

SELECT * FROM Cliente ORDER BY saldo, Apellido


ASC;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Rebeca Álvarez 130
Rebeca Álvarez 130 Juan Meléndez 130
Juan Meléndez 130 Juan Fonseca 2500
SELECT * FROM Cliente WHERE apellido =‘Juan’
ORDER BY saldo;

NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo


Juan Fonseca 2500 Juan Meléndez 130
Rebeca Álvarez 500 Juan Fonseca 2500
Juan Meléndez 130

SELECT * FROM Cliente ORDER BY saldo, Apellido


ASC;
NOMBRE APELLIDO Saldo NOMBRE APELLIDO Saldo
Juan Fonseca 2500 Rebeca Álvarez 130
Rebeca Álvarez 130 Juan Meléndez 130
Juan Meléndez 130 Juan Fonseca 2500
SELECT * FROM Cliente GROUP BY sexo;
NOMBRE APELLIDO Sexo
NOMBRE APELLIDO Sexo
Juan Fonseca M
Juan Fonseca M
Juan Meléndez M
Juan Meléndez M
Rebeca Álvarez F NOMBRE APELLIDO Sexo
Rebeca Álvarez F

NOMBRE APELLIDO Sexo


Juan Fonseca M
Rebeca Álvarez F
SELECT count(*) FROM Cliente GROUP BY sexo;
NOMBRE APELLIDO Sexo
Juan Fonseca M
Juan Meléndez M
Rebeca Álvarez F

NOMBRE APELLIDO Sexo


Juan Fonseca M
COUNT(*)
Juan Meléndez M
2
NOMBRE APELLIDO Sexo 1
Rebeca Álvarez F
SELECT sexo, count(*) as cantidad FROM Cliente
GROUP BY sexo;
NOMBRE APELLIDO Sexo
Juan Fonseca M
Juan Meléndez M
Rebeca Álvarez F

NOMBRE APELLIDO Sexo


Juan Fonseca M
Sexo cantidad
Juan Meléndez M
M 2
NOMBRE APELLIDO Sexo F 1
Rebeca Álvarez F
SELECT * FROM Cliente GROUP BY Apellido,
sexo;
NOMBRE APELLIDO Sexo
NOMBRE APELLIDO Sexo
Juan Fonseca M
Juan Fonseca M
Juan Meléndez M
Rebeca Álvarez F NOMBRE APELLIDO Sexo
María Fonseca F María Fonseca F

NOMBRE APELLIDO Sexo NOMBRE APELLIDO Sexo


Juan Fonseca M Juan Meléndez M
María Fonseca F
NOMBRE APELLIDO Sexo
NOMBRE APELLIDO Sexo
Rebeca Álvarez F
Juan Meléndez M

NOMBRE APELLIDO Sexo


Rebeca Álvarez F
NOMBRE APELLIDO Sexo Cedula
Juan Fonseca M 09980
Juan Meléndez M 00998
Rebeca Álvarez F

Cuando hacemos el
conteo con count,
Consulta Resultado
sobre un atributo
Count(*) 3 que contiene
Count(nombre) 3 valores nulos, el
Count(Cedula) 2 count no los cuenta.
NOMBRE APELLIDO Salario edad
Juan Fonseca 100 30
Juan Meléndez 100 25
Rebeca Álvarez 200

Solo se puede
sumar (sum)
Consulta Resultado
valores numéricos.
sum(*) Produce error Si algún valor es
Sum(nombre) 0 null es ignorado.
Sum(salario) 400
Sum(edad) 55
NOMBRE APELLIDO Salario edad
Juan Fonseca 100 30
Juan Meléndez 100 25
Rebeca Álvarez 200

Solo se puede
calcular la media
Consulta Resultado
(AVG) de valores
AVG(*) Produce error numéricos. Si algún
AVG(nombre) 0 valor es null es
AVG(salario) 133.33 ignorado.
AVG(edad) 27.5
NOMBRE APELLIDO Salario edad
Juan Fonseca 100 30
Juan Meléndez 100 25
Rebeca Álvarez 200

Solo se puede
sacar el mínimo
Consulta Resultado
(min) de todo tipo
MIN(*) Produce error de valores. Si algún
MIN(nombre) Juan valor es null es
MIN(salario) 100 ignorado.
MIN(salario) 25
NOMBRE APELLIDO Salario edad
Juan Fonseca 100 30
Juan Meléndez 100 25
Rebeca Álvarez 200

Solo se puede
sacar el mínimo
Consulta Resultado
(min) de todo tipo
MAX(*) Produce error de valores. Si algún
MAX(nombre) Rebeca valor es null es
MAX(salario) 200 ignorado.
MAX(salario) 30
Limit sirve para colocar un rango de filas que
deseo que me muestre.
SELECT * FROM cliente LIMIT 2;
NOMBRE APELLIDO Sexo NOMBRE APELLIDO Sexo
Juan Fonseca M Juan Fonseca M
Juan Meléndez M Juan Meléndez M
Rebeca Álvarez F
María Fonseca F

SELECT * FROM cliente LIMIT 0,2;


NOMBRE APELLIDO Sexo NOMBRE APELLIDO Sexo
Juan Fonseca M Juan Fonseca M
Juan Meléndez M Juan Meléndez M
Rebeca Álvarez F
María Fonseca F
Limit sirve para colocar un rango de filas que
deseo que me muestre.

SELECT * FROM cliente LIMIT 1,2;


NOMBRE APELLIDO Sexo
Juan Fonseca M NOMBRE APELLIDO Sexo
Juan Meléndez M Juan Meléndez M
Rebeca Álvarez F Rebeca Álvarez F
María Fonseca F
SELECT apellido, count(*) FROM cliente group by
nombre order by apellido LIMIT 1,2;
NOMBRE APELLIDO Sexo
NOMBRE APELLIDO Sexo
Juan Fonseca M
Juan Fonseca M GROUP Juan Álvarez M
Juan Meléndez M BY
NOMBRE APELLIDO Sexo
Rebeca Álvarez F
María Fonseca F
María Fonseca F
NOMBRE APELLIDO Sexo
APELLIDO Count(*)
Rebeca Álvarez F
Fonseca 1
Fonseca 2 COUNT(*)

APELLIDO Count(*) ORDER APELLIDO Count(*)


Álvarez 1 BY Fonseca 2
LIMIT
Fonseca 1 Fonseca 1
Fonseca 2 Álvarez 1
La palabra reservada UNION nos sirve para unir
los resultados de dos consulta en un solo
resultado.
(SELECT nombre FROM cliente) UNION
(SELECT apellido FROM cliente);
NOMBRE
Juan
NOMBRE
Juan UNION
Juan
NOMBRE APELLIDO Sexo Rebeca
Rebeca
Juan Fonseca M María
María
Juan Meléndez M
APELLIDO Fonseca
Rebeca Álvarez F
Fonseca Meléndez
María Fonseca F
Meléndez Álvarez
Álvarez
Fonseca
Con la palabra UNION se puede utilizar ALL y
DISTINCT. DISTINCT es su comportamiento por
defecto.
(SELECT nombre FROM cliente) UNION ALL
(SELECT apellido FROM cliente);
NOMBRE NOMBRE
Juan Juan
Juan Juan
UNION
NOMBRE APELLIDO Sexo Rebeca ALL Rebeca
Juan Fonseca M María María
Juan Meléndez M Fonseca
Rebeca Álvarez F APELLIDO Meléndez
María Fonseca F Fonseca Álvarez
Meléndez Fonseca
Álvarez
Fonseca
Con la palabra UNION se puede utilizar ALL y
DISTINCT. DISTINCT es su comportamiento por
defecto.
(SELECT nombre FROM cliente ORDER BY
apellido) UNION ALL (SELECT apellido FROM
cliente) ORDER BY nombre;NOMBRE NOMBRE
Rebeca Álvarez
Juan Fonseca
NOMBRE APELLIDO Sexo
María Fonseca
Juan Fonseca M
Juan Juan
Rebeca Álvarez F
APELLIDO Juan
Juan Meléndez M
Fonseca María
María Fonseca F
Álvarez Meléndez
Meléndez Rebeca
Fonseca
Las sub-consultas son consultas que se incluyen
dentro de otra consultas. A pesar que no es
recomendable realizar, pero dentro de una sub-
consulta se puede anidar otra sub-consulta y así
sucesivamente.

Para unir la sub-consulta con la consulta se puede


hacer en la clausula WHERE a través de
operadores de comparación de valor =, <, >, <> o
de operadores de comparación de conjuntos ANY,
SOME, ALL, IN, EXISTS.
Los operadores de sub-consulta de valor son =, >,
< y <>. Se les denomina así porque si son usados
para tener una sub-consulta en el WHERE, la sub-
consulta deberá retornar solo un valor o provocara
error.
SELECT nombre FROM cliente WHERE apellido =
(SELECT apellido FROM cliente);
Sub-
NOMBRE APELLIDO Sexo
Consulta El resultado
Juan Fonseca M
APELLIDO de la Sub-
Rebeca Álvarez F
Fonseca Consulta
Juan Meléndez M
Álvarez tiene que ser
María Fonseca F
Meléndez 1 sola fila.
Fonseca
SELECT * FROM cliente WHERE edad > (SELECT
AVG(edad) FROM cliente);
Sub-
NOMBRE APELLIDO edad Consulta
Juan Fonseca 30
Rebeca Álvarez 15 AVG(edad)

Juan Meléndez 25

María Fonseca 30

NOMBRE APELLIDO edad


Juan Fonseca 30
María Fonseca 30
En los casos en que la consulta inevitablemente
regrese mas de una fila. Podemos utilizar los
operados anteriores, y en algunos casos
combinarlos con los operadores de valor.
IN: Sirve para encontrar al menos una coincidencia
en la sub-consulta.
ANY ó SOME: Ambas funcionan de la misma
forma. Deben de ser usadas siempre en
combinación con operadores de valor (=,<,>,<>,
LIKE). Y se encarga de encontrar al menos una
entrada valida.
ALL: Debe ser usada siempre con operadores de
valor. Y se encarga de que todas sean entradas
validas.
SELECT * FROM cliente WHERE apellido IN
(SELECT apellido FROM cliente WHERE
edad>25); Sub-
Consulta
NOMBRE APELLIDO edad
Juan Fonseca 30 APELLIDO
Rebeca Álvarez 20 Fonseca
Juan Meléndez 26 Meléndez
María Fonseca 24

NOMBRE APELLIDO edad


Juan Fonseca 30
María Fonseca 24
Juan Meléndez 25
SELECT * FROM cliente WHERE edad <ANY
(SELECT edad FROM cliente);
Sub-
Consulta
NOMBRE APELLIDO edad edad
Juan Fonseca 30 30
Rebeca Álvarez 20 20
Juan Meléndez 26 26
María Fonseca 24 24

NOMBRE APELLIDO edad


Rebeca Álvarez 20
Juan Meléndez 26
María Fonseca 24
SELECT * FROM cliente WHERE edad >SOME
(SELECT edad FROM cliente);
Sub-
Consulta
NOMBRE APELLIDO edad edad
Juan Fonseca 30 30
Rebeca Álvarez 20 20
Juan Meléndez 26 26
María Fonseca 24 24

NOMBRE APELLIDO edad


Juan Fonseca 30
Juan Meléndez 26
María Fonseca 24
SELECT * FROM cliente WHERE edad >=ALL
(SELECT edad FROM cliente);
Sub-
Consulta
NOMBRE APELLIDO edad edad
Juan Fonseca 30 30
Rebeca Álvarez 20 20
Juan Meléndez 26 26
María Fonseca 24 24

NOMBRE APELLIDO edad


Juan Fonseca 30
SELECT * FROM cliente WHERE EXISTS
(SELECT * FROM cliente WHERE edad=40);
Sub-
Consulta
NOMBRE APELLIDO edad
NOMBRE APELLIDO edad
Juan Fonseca 30
Rebeca Álvarez 20
Juan Meléndez 26
María Fonseca 24

NOMBRE APELLIDO edad


SELECT * FROM cliente WHERE NOT EXISTS
(SELECT * FROM cliente WHERE edad=40);
Sub-
Consulta
NOMBRE APELLIDO edad
NOMBRE APELLIDO edad
Juan Fonseca 30
Rebeca Álvarez 20
Juan Meléndez 26
María Fonseca 24

NOMBRE APELLIDO edad


Juan Fonseca 30
Rebeca Álvarez 20
Juan Meléndez 26
María Fonseca 24
SELECT * FROM cliente as cl WHERE apellido IN
(SELECT apellido FROM cliente WHERE
edad>cl.edad);

Sub-
NOMBRE APELLIDO edad Consulta
Juan Fonseca 30 APELLIDO
cl.edad=30
Rebeca Álvarez 20
Juan Meléndez 26
María Fonseca 24

NOMBRE APELLIDO edad

‘Fonseca’ IN (‘’)
SELECT * FROM cliente as cl WHERE apellido IN
(SELECT apellido FROM cliente WHERE
edad>cl.edad);

Sub-
NOMBRE APELLIDO edad Consulta
Juan Fonseca 30 APELLIDO
Fonseca
cl.edad=20
Rebeca Álvarez 20
Juan Meléndez 26 Meléndez

María Fonseca 24 Fonseca

NOMBRE APELLIDO edad

‘Álvarez’ IN (‘Fonseca’,’Meléndez’,’Fonseca’)
SELECT * FROM cliente as cl WHERE apellido IN
(SELECT apellido FROM cliente WHERE
edad>cl.edad);

Sub-
NOMBRE APELLIDO edad Consulta
Juan Fonseca 30 APELLIDO cl.edad=26
Rebeca Álvarez 20 Fonseca
Juan Meléndez 26
María Fonseca 24

NOMBRE APELLIDO edad

Meléndez IN (‘Fonseca’)
SELECT * FROM cliente as cl WHERE apellido IN
(SELECT apellido FROM cliente WHERE
edad>cl.edad);

Sub-
NOMBRE APELLIDO edad Consulta
Juan Fonseca 30 APELLIDO
cl.edad=24
Rebeca Álvarez 20 Fonseca
Juan Meléndez 26 Meléndez
María Fonseca 24

NOMBRE APELLIDO edad


María Fonseca 24
‘Fonseca’ IN (‘Fonseca’,’Meléndez’)
SELECT * FROM (SELECT apellido FROM cliente
WHERE edad>25) as mayores;

Sub-
NOMBRE APELLIDO edad
Consulta
Juan Fonseca 30
Rebeca Álvarez 20 APELLIDO
Juan Meléndez 26 Fonseca
María Fonseca 24 Meléndez

APELLIDO
Fonseca
Meléndez
SELECT * FROM (SELECT apellido FROM cliente
WHERE edad>25) as mayores order by apellido
desc;
Sub-
NOMBRE APELLIDO edad
Consulta
Juan Fonseca 30
Rebeca Álvarez 20 APELLIDO
Juan Meléndez 26 Fonseca
María Fonseca 24 Meléndez

APELLIDO
Meléndez
Fonseca
SELECT *, (SELECT max(edad) FROM Cliente) as
maxima FROM cliente;
Sub-
Consulta
NOMBRE APELLIDO edad
Max(edad)
Juan Fonseca 30
30
Rebeca Álvarez 20
Juan Meléndez 26
María Fonseca 24

NOMBRE APELLIDO edad maxima


Juan Fonseca 30 30
Rebeca Álvarez 20 30
Juan Meléndez 26 30
María Fonseca 24 30
SELECT * FROM Cliente WHERE (nombre,
apellido) = (SELECT nombre, apellido FROM
vendedor);
Sub-
Cliente Consulta
id NOMBRE APELLIDO
NOMBRE APELLIDO
1 Juan Fonseca
Rebeca Álvarez
2 Rebeca Álvarez
3 Juan Meléndez
4 María Fonseca

Vendedor
id NOMBRE APELLIDO id NOMBRE APELLIDO
1 Rebeca Álvarez 2 Rebeca Álvarez
SELECT * FROM Cliente WHERE (nombre,
apellido) = (SELECT nombre, apellido FROM
vendedor);
Sub-
Cliente Consulta
id NOMBRE APELLIDO
NOMBRE APELLIDO
1 Juan Fonseca
Rebeca Álvarez
2 Rebeca Álvarez
3 Juan Meléndez
4 María Fonseca

Vendedor
id NOMBRE APELLIDO id NOMBRE APELLIDO
1 Rebeca Álvarez 2 Rebeca Álvarez

Вам также может понравиться