SlideShare una empresa de Scribd logo
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Modelo Relacional, Entidad, Relaciones, atributos, cardinalidad. Tablas, Campos, laves primarias,
claves foráneas, restricciones, clausulas sql
Unidad II: El Lenguaje de Base de Datos SQL
Objetivo de la Unidad:
Al finalizar esta unidad de aprendizaje los alumnos comprenden e interpreta el lenguaje SQL
Desarrollo
El lenguaje usado para comunicarse con una base de datos se llama Lenguaje de Consulta
Estructurado (Structured Query Language – SQL), el cual se ha consolidado como el lenguaje
estándar de las bases de datos relacionales. Es un lenguaje muy fácil de usar y parece tan simple como
el inglés.
SQL es un lenguaje estandarizado que sirve para definir y manipular los datos de una base de datos
relacional. De acuerdo con el modelo relacional de datos, la base de datos se crea como un conjunto de
tablas y las relaciones se representan mediante valores en las tablas.
Cada RDBMS viene con una herramienta de uso interactivo que permite al usuario ingresar sentencias
SQL y pasarlas a la base de datos para su ejecución. Estas sentencias, técnicamente llamadas consultas
(queries), ayudan a crear, acceder y dar mantenimiento a los distintos objetos de la base de datos.
Introducción
El lenguaje SQL sirve para el acceso a la información almacenada en las bases de datos. Es un
lenguaje sencillo de consulta, que permite realizar operaciones de selección, inserción, actualización y
borrado de datos, así como operaciones administrativas sobre las bases de datos.
SQL es un estándar mantenido por ANSI, por lo que las bases del lenguaje son las mismas en la
mayoría de los motores de bases de datos relacionales. Una persona que conozca las bases del
lenguaje, con el acceso a una referencia básica del motor particular con el que esté trabajando será
capaz de escribir consultas para cualquier base de datos. La estructura de las consultas es
prácticamente igual, aunque existen pequeñas diferencias a la hora de organizar los bloques de las
sentencias y especificar operaciones o funciones de administración. También dependiendo del motor
de base de datos puede tener soporte a algunas operaciones extra cómo procedimientos o
transacciones, así como un juego de funciones específico.
Objetivo de la guía
En esta unidad se abordará el lenguaje universal de las base de datos. El objetivo que nos planteamos
es que, al finalizar el alumno sea capaz de realizar el Modelo físico de datos de un sistema de
información y realizar las diferentes consultas a la base de datos
Requerimientos.
Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre
( Canaima/Ubuntu), SGBD MYSQL (phpmyadmin)
Componentes.
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Componentes del SQL
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos
elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.
El SQL tiene las siguientes partes:
Lenguaje de Definición de Datos (Data Definition Language - DDL): El DDL del SQL proporciona
comandos para definir los objetos de la base de datos. Una tabla, por ejemplo, es un objeto de la base
de datos. Otros objetos de la base de datos incluyen vistas, índices y procedimientos almacenados.
El Comando CREATE
El comando CREATE se usa para crear objetos de la base de datos. Tablas, vistas e índices son
algunos ejemplos de objetos de la base de datos. La sentencia CREATE se usa para describir la
estructura de un objeto de la base de datos.
Sintaxis para crear una Tabla:
CREATE TABLE nombre_de_la_tabla (
nombre_de_la_columna1 tipo_de_dato,
nombre_de_la_columna2 tipo_de_dato,
...
nombre_de_la_columnan tipo_de_dato
);
Clave Primaria
La clave primaria es una columna de una tabla, la cual se usa para identificar un registro en la tabla. Para que un
campo sea una clave primaria, su valor debe ser NOT NULL y debe ser único. El campo debe tener un valor
válido, el cual debe ser completamente diferente de los otros valores.
Una tabla puede tener sólo una clave primaria, ésta también puede ser una clave compuesta, donde más de una
columna se combinan para actuar como la clave primaria. Las columnas individuales de la clave primaria
compuesta deben tener valores válidos. La combinación de las columnas de la clave compuesta debe ser única.
Por ejemplo, considere la tabla juguetes de la base de datos que se crea como sigue:
CREATE TABLE juguetes (
id_comprador INTEGER NOT NULL PRIMARY KEY,
producto VARCHAR(40) NOT NULL,
precio DOUBLE
);
La sentencia anterior, cuando es ejecutada en una herramienta de SQL, crea una tabla con el nombre
juguetes. La sentencia también incluye algunos nombres de columnas, sus respectivos tipos de datos y
las restricciones de tipo NOT NULL de las columnas. La palabra Primary key indica que ese campo es
la clave primaria de la tabla
Hay una palabra clave NOT NULL en la sentencia CREATE anterior. La palabra NOT NULL
significa que la columna debe tener un valor en cada fila. NULL indica ningún valor o un valor no
aplicable y es un concepto importante en cualquier RDBMS.
Clave Foránea
La clave foránea es una columna en una tabla cuyos valores son dependientes de los valores existentes en otras
tablas.
Una columna se denomina una clave foránea sólo si se refiere a una columna de la clave primaria de otra tabla.
Una restricción definida entre una clave foránea y una clave primaria se llama restricción de integridad
referencial.
La tabla que contiene la clave primaria a la cual hace referencia la clave foránea, se denomina tabla padre. La
tabla que contiene la clave foránea se denomina tabla hija.
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Los valores permitidos en una columna de clave foránea son valores de las columnas a las que referencian o son
valores nulos.
La clave primaria desempeña un papel importante al hacer cumplir las restricciones de integridad referencial.
FOREIGN KEY (key_id) REFERENCES tabla (clave primaria) ON DELETE CASCADE.
Tabla padres
CREATE TABLE cliente (
id_cliente INT NOT NULL,
nombre VARCHAR(30) NOT NULL,
PRIMARY KEY(id_cliente),
Tabla hija
CREATE TABLE factura (
id_factura INT NOT NULL,
id_cliente INT NOT NULL,
monto DOUBLE,
fecha DATE,
PRIMARY KEY(id_factura),
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente) ON DELETE CASCADE
);
Clave primaria compuestas
PRIMARY KEY(id_campo1,id_campo2).
CREATE TABLE articulo(
id_articulo INT NOT NULL,
nombre VARCHAR(30) NOT NULL,
costo DOUBLE,
precio DOUBLE,
PRIMARY KEY(id_articulo),
);
CREATE TABLE detalle_factura(
id_factura int INT NOT NULL,
id_articulo INT NOT NULL,
cantidad INT NOT NULL,
PRIMARY KEY(id_factura,id_articulo)
FOREIGN KEY (id_art) REFERENCES articulo(id_articulo) ON UPDATE CASCADE
ON DELETE CASCADE,
FOREIGN KEY (id_fact) REFERENCES factura(id_factura) ON UPDATE CASCADE ON
DELETE CASCADE)
ENGINE=INNODB;
El Comando ALTER
El comando ALTER se usa para modificar la estructura de objetos de la base de datos. Este comando se usa
por ejemplo para agregar una nueva columna a una Tabla. El siguiente ejemplo muestra cómo las columnas
pueden ser agregadas a una tabla.
ALTER TABLE juguetes
ADD COLUMN id_vendedor integer;
Cuando la sentencia SQL anterior es ejecutada, una nueva columna llamada id_vendedor de tipo de dato
numérico se agrega a la tabla juguetes.
El Comando DROP
El comando DROP se usa para eliminar objetos de la base de datos. Por ejemplo:
DROP TABLE juguetes;
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
DROP VIEW vista_juguetes;
DROP INDEX indice_juguetes;
Los comandos SQL anteriores eliminan los siguientes objetos de la base de datos: la tabla juguetes, la
vista vista_juguetes y el índice indice_juguetes.
Lenguaje de Manipulación de Datos (Data Manipulation Language - DML): El DML del SQL
proporciona comandos para insertar, eliminar y modificar registros en la(s) tabla(s).
El DML se usa para la manipulación de los datos: agregar, eliminar y actualizar losvalores.
Algunos de los comandos SQL en esta categoría se listan a continuación:
• INSERT: Se usa para agregar valores en la tabla. Formato:
INSERT into nombre_de_la_tabla (columna1,columna2 )
VALUES (valor1, valor2);
El siguiente comando inserta una fila en una tabla: INSERT INTO juguetes (id_comprador, producto,
precio, id_vendedor) VALUES (21, 'Barbie', 200.00, 01); La tabla juguetes contiene cuatro columnas:
id_comprador, producto, precio y id_vendedor. La sentencia anterior contiene una lista de columnas
ordenadas y una lista de valores ordenados para las columnas.
A continuación se muestra otra forma de escribir la sentencia INSERT:
INSERT INTO juguetes VALUES (21, 'Barbie', 200.00, 01);
Esta sentencia no incluye los nombres de las columnas. Si los nombres de las columnas no se listan en
una sentencia INSERT, entonces la cláusula VALUES debe contener los valores para todas las
columnas en el mismo orden en el que están listadas las columnas en la tabla.
El orden en el cual las columnas son creadas en una tabla es dependiente del orden en que fueron
colocadas las columnas en la sentencia CREATE, cuando la tabla fue creada.
La siguiente es otra variación de la sentencia INSERT:
INSERT INTO juguetes (id_comprador, producto, id_vendedor) VALUES (02, 'Barbie',22);
La sentencia anterior no incluye todas las columnas de la tabla. La columna precio no está presente así que la
tabla tendrá un valor NULL en la columna precio. El orden de las columnas en la sentencia INSERT anterior ha
sido cambiado. Sin embargo, el orden de las columnas no importa si los nombres de las columnas se mencionan
explícitamente y se enumeran los valores de las columnas correspondientes.
• DELETE: Se usa para eliminar valores de la tabla.
DELETE FROM nombre_de_la_tabla WHERE Condición;
En el comando DELETE, la condición WHERE es opcional. Si la condición no es especificada, todas las filas
son eliminadas. De otra forma, sólo las filas que satisfacen la condición serán eliminadas. Considere la siguiente
sentencia:
DELETE FROM juguetes WHERE producto = 'Barbie';
En este caso, no solo la última fila que se había agregado será eliminada sino también todas las filas que
contienen el valor 'Barbie' en producto. Para eliminar solo la última fila agregada, se usará la siguiente
instrucción:
DELETE FROM juguetes WHERE producto = 'Barbie' AND id_comprador = 02 AND
id_vendedor = 22;
• UPDATE: Se usa para actualizar o cambiar los valores presentes en la tabla.
A continuación, se actualiza el precio a los productos “Silla” de la tabla juguetes.
La sintaxis del comando UPDATE es:
UPDATE nombre_de_la_tabla SET Col1=valor1, Col2=valor2
WHERE Condición;
Se puede hacer esto con la siguiente instrucción:
UPDATE juguetes SET precio = 500.00 WHERE producto = 'Silla';
Esto coloca el precio de todas las sillas a 500.00.
Lenguaje de Consulta de Datos (Data Query Language - DQL): El DQL del SQL proporciona
comandos para recuperar datos desde tablas. La sentencia SELECT es un comando DQL.
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
La sentencia SELECT se usa para recuperar datos de las tablas. La sentencia SELECT puede ser: Un simple
SELECT o uno condicional. En una sentencia SELECT condicional, los datos recuperados se basan en una
condición dada.
Seleccionar Datos de todas las Columnas de la Tabla
La sintaxis básica de la sentencia SELECT es como sigue:
SELECT * FROM nombre_de_la_tabla;
La sentencia anterior se usa para obtener todas las columnas de la tabla. El * denota todas las columnas.
• Seleccionar Datos de Ciertas Columnas de la Tabla
Lo siguiente es la sintaxis para obtener ciertas columnas específicas de la tabla:
SELECT nombrecol1, nombrecol2, …, nombrecoln FROM
nombre_de_la_tabla;
Para obtener las columnas Nombre, Ciudad y Estado listadas en la Tabla 1.4, se puede ejecutar la siguiente
sentencia SQL:
SELECT nombre, ciudad, estado FROM direcciondeempleado;
Se muestra la capacidad de SQL para escoger los valores de ciertas columnas que son requeridas por el usuario.
Selección Condicional
La sentencia SELECT proporciona todos los registros de la tabla. Si se requiere sólo aquellos registros en la
tabla que satisfacen una condición específica, entonces se usa la sentencia SELECT condicional con la cláusula
WHERE.
La Cláusula WHERE
Lo siguiente es la sintaxis de la cláusula WHERE:
SELECT * FROM nombre_de_la_tabla WHERE NOMBRE_COL = VALOR;
La cláusula WHERE se usa para especificar que sólo ciertas filas de la tabla deben mostrarse. Ésta se usa junto
a los operadores relacionales tales como mayor que, menor que o igual a.
Operadores Relacionales Útiles
Hay seis operadores relacionales en SQL, como se muestra :
= Igual
<> o != Diferente
< Menor que
> Mayor que
<= Menor o igual a
>= Mayor o igual a
Considere un ejemplo sobre el uso de operadores relacionales y la cláusula WHERE.
Observe la Tabla 1.6, la cual contiene el detalle de los salarios y las posiciones de los empleados de una
organización.
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Para ver los idnoempleado de aquellos empleados que tienen un salario de $50,000 o más, se puede ejecutar la
siguiente sentencia SQL:
SELECT idnoempleado FROM estadisticasdeempleados WHERE salario >= 50000;
Note que se usa el signo >= (mayor o igual a). Esto es porque se quiere ver la lista de aquellos empleados cuyos
salarios son mayores o iguales a $50,000, listados todos juntos. El resultado del comando anterior será:
IDNOEMPLEADO
------------
010
105
152
215
244
La descripción WHERE salario >= 50000, se conoce como una condición, es decir, una operación la cual al
evaluarse da verdadero o falso. Las condiciones se pueden usar también para columnas de texto. Observe la
siguiente sentencia:
SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion = 'Gerente';
Esta sentencia muestra los idnoempleado de todos los registros que cumplen con posicion= 'Gerente'. Cualquier
texto que aparezca en la sentencia debe estar encerrado entre comillas simples ('). Note que el valor Gerente en
la cláusula WHERE es sensible a las mayúsculas y minúsculas (case sensitive) y por lo tanto, debe ser
comparado en la forma como está almacenado en la tabla.
Funciones Agregadas
Las funciones agregadas, también conocidas como funciones de grupo, se usan en sentencias SQL para trabajar
sobre conjuntos o grupos específicos de filas.
A continuación se presentan las cinco funciones agregadas más importantes:
La Función SUM
SELECT SUM(salario) FROM estadisticasdeempleados;
La consulta anterior retorna el salario total de todos los empleados de la tabla. El resultado de la consulta es:
1___
455000
La Función AVG
SELECT AVG(salario) FROM estadisticasdeempleados;
La consulta retorna el salario promedio de los empleados listados en la tabla. El
resultado es: 1___50555
La Función MIN
SELECT MIN(beneficios) FROM estadisticasdeempleados WHERE posicion = 'Gerente'
La función MIN toma el nombre de la columna e identifica el valor mínimo disponible en esa columna para las
filas que satisfacen una condición, si es dada. En la consulta anterior, la cláusula WHERE limita las filas a los
empleados que son 'Gerente'. La función MIN identifica el mínimo beneficio ganado por un „Gerente‟. La
consulta anterior retorna el siguiente resultado:
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
1__
12500
La Función COUNT
SELECT COUNT(*) FROM estadisticasdeempleados WHERE posicion = 'Personal';
La consulta cuenta el número de empleados que pertenecen a la posición 'Personal'. En el ejemplo anterior, la
función COUNT toma * como el nombre de una columna. El * denota todas las columnas en la tabla. En este
caso, se refiere a las filas en la tabla que satisfacen la condición dada.
El * se puede usar sólo con la función COUNT y no con otras funciones agregadas.
Otras funciones agregadas toman los nombres de las columnas o expresiones como entrada.
La consulta anterior retorna el siguiente resultado:
1
3
La función count sólo contabiliza los registros donde la columna seleccionada tenga valores distintos a null.
La Función MAX
La función MAX() retorna el máximo valor para una columna dada, entre el conjunto de filas seleccionadas.
Observe la siguiente sentencia.
SELECT MAX(SALARIO) FROM estadisticasdeempleados;
Esta consulta retorna el salario máximo ganado por un empleado listado en la tabla:
1__
75000
Condiciones Compuestas y Operadores Lógicos
El Operador AND
El operador AND une dos o más condiciones y muestra todas las filas que satisfacen todas las condiciones en la
cláusula WHERE. Por ejemplo, para mostrar todos los empleados cuya posición sea „Personal‟ y cuyo salario es
mayor a $40,000, se puede escribir la siguiente consulta:
SELECT idnoempleado FROM estadisticasdeempleados
WHERE salario > 40000 AND posicion = 'Personal';
El Operador OR
El operador OR une dos o más condiciones. Muestra todas las filas que satisfacen al menos una condición en la
cláusula WHERE. Para mostrar todos los empleados que ganan un salario menor que $40,000 ó que obtienen
beneficios menores que $10,000, se puede escribir la siguiente consulta:
SELECT idnoempleado FROM estadisticasdeempleados
WHERE salario < 40000 OR beneficios < 10000;
Combinar los Operadores AND y OR
Es posible combinar los operadores AND y OR en una sola sentencia. Por ejemplo, para listar todos los
„Gerente‟ que ganan un salario mayor que $60,000 o que obtienen beneficios mayores que $12,000, se puede
escribir la siguiente consulta:
SELECT idnoempleado FROM estadisticasdeempleados
WHERE posicion = 'Gerente' AND salario > 60000 OR beneficios > 12000;
La sentencia SQL anterior usa los operadores AND y OR. El orden de precedencia es importante en este caso.
En este caso, el operador AND precede al operador OR por lo que las condiciones con el operador AND se
evalúan primero y luego se evalúan las condiciones con el operador OR.
El orden en el cual la sentencia SQL anterior se ejecuta es el siguiente:
posicion = 'Gerente' AND salario > 60000 = X
X OR beneficios > 12000
Paso 1: Limita las filas a las personas que son gerente y ganan un salario mayor que $60,000.
Paso 2: Limita las filas a las personas del Paso 1 o las personas que tienen beneficios mayor que $12,000.
La sentencia SQL anterior puede ser también escrita de la siguiente forma:
SELECT idnoempleado FROM estadisticasdeempleados
WHERE (posicion = 'Gerente' AND salario > 60000) OR beneficios > 12000;
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Las condiciones que están entre paréntesis se evalúan primero. Estos sobre escriben cualquier orden de
precedencia.
Ahora observe la siguiente consulta y descubra lo que hace:
SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion = 'Gerente' AND (salario > 60000
OR beneficios > 12000);
Como se mencionó anteriormente, las condiciones entre paréntesis se evalúan primero, y luego las otras
condiciones. Los pasos involucrados en la evaluación de la consulta anterior son los siguientes: salario > 60000
OR beneficios > 12000 = X WHERE posicion = 'Gerente' AND X
Paso 1: Identifique las filas de las personas que ganan un salario mayor que $60,000 o beneficios mayores que
$12,000.
Paso 2: Identifique las personas que son gerente y que satisfacen el Paso 1.
El Operador IN
El operador IN se usa para realizar comparaciones con una lista de valores. Por ejemplo, observe la siguiente
consulta:
SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion='Gerente' OR posicion= 'Personal';
La consulta lista todos los empleados que son gerente o del personal. La consulta se puede escribir usando un
operador IN.
SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion IN ('Gerente', 'Personal');
En la consulta anterior, mencionan las posiciones de los empleados en los que se está interesado como un
conjunto de valores que tienen que ser comparados. Los valores están separados por comas y encerrados entre
paréntesis después del operador IN.
El operador IN verifica si la condición satisface alguno de los valores que están entre paréntesis.
El Operador BETWEEN
El operador BETWEEN se usa para comprobar si cierto valor está dentro de un rango dado.
Por ejemplo, asuma que se está interesado en encontrar a todos los empleados que ganan salarios dentro un
rango de [$30,000 a $50,000]. ¿Cómo se escribe esta consulta?
Rango del salario [30000 a 50000]
SELECT idnoempleado FROM estadisticasdeempleados WHERE salario >= 30000 AND salario <= 50000;
La consulta anterior se puede escribir también usando el operador BETWEEN.
SELECT idnoempleado FROM estadisticasdeempleados WHERE salario BETWEEN 30000 AND 50000;
El operador BETWEEN incluye los valores de $30000 y $50000.
El Operador NOT
En el ejemplo anterior, si se está interesado en listar todos los empleados que no ganan un salario de $30,000 a
$50,000, se puede escribir la siguiente consulta:
SELECT idnoempleado FROM estadisticasdeempleados WHERE salario NOT BETWEEN 30000 AND 50000;
La siguiente consulta lista todos los empleados que no son gerente.
SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion NOT IN ('Gerente');
El operador NOT es un operador unario (evalúa una condición, invirtiendo su valor), mientras que los
operadores AND y OR evalúan dos condiciones.
Orden de Precedencia para los Operadores Lógicos
El orden de precedencia para los operadores lógicos se muestra a continuación. El operador NOT tiene mayor
precedencia que los operadores AND y OR.
• NOT
• AND
• OR
El Operador LIKE
El operador LIKE se usa para verificar patrones dentro de cadenas de caracteres, compararlos y mostrar los
resultados.
Por ejemplo, suponga que se quieren listar todos los empleados cuyos apellidos comienzan con „S‟. Se puede
escribir la siguiente consulta:
SELECT nombre, apellido FROM direcciondeempleado WHERE apellido LIKE 'S%';
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
El signo de porcentaje (%) se usa para representar cero o más caracteres. En el ejemplo anterior, „S%„
especifica cualquier nombre que comience con „S‟, seguido de cero o más caracteres. Para listar aquellas
personas cuyos apellidos terminen en „S‟, se usa „%S„, que especifica cualquier nombre que termine con „S‟,
precedido de cero o más caracteres.
Para encontrar personas cuyos apellidos contengan „S‟, se escribe „%S%„. Esto especifica cualquier nombre que
contenga „S‟ precedido o seguido de cero o más caracteres.
Asuma que alguien está interesado en listar los empleados que tienen una „S‟ como la tercera letra en sus
apellidos. En ese caso, se usa „__S%„. El „_‟ indica un carácter no conocido.
En el ejemplo anterior, los dos caracteres no conocidos están seguidos por una „S‟, y luego están seguidos de
cero o más caracteres (%).
El Operador de Concatenación
El operador de concatenación se usa para combinar dos cadenas de caracteres o dos campos (del tipo cadena de
caracteres). El operador se denota por „CONCAT()‟. Si se quiere saber el nombre completo de un empleado, se
debe concatenar el nombre y el apellido del empleado.
Se puede usar la siguiente consulta para esto:
SELECT CONCAT (nombre,„.‟,apellido) FROM direcciondeempleado;
1
-------------------------------
Mike.Dennis
Susan.Ikelar
Rob.Heimann
Sarah.Connors
En la consulta anterior, entre los valores de las columnas, se ha concatenado un signo punto que separa el
nombre y el apellido.
Alias de los Nombres de Columnas
A los nombres de las columnas se les puede asignar un alias. Por ejemplo, en la consulta de concatenación
anterior, el nombre de la columna es extraño. Si la consulta se escribe de la siguiente manera, el nombre de la
columna se visualizará mucho mejor.
SELECT CONCAT (nombre,„.‟,apellido) AS “Nombre Completo” FROM direcciondeempleado;
Resultado de la sentencia anterior:
Nombre Completo
-------------------------------
Mike.Dennis
Susan.Ikelar
Rob.Heimann
Sarah.Connors
La Cláusula ORDER BY
La cláusula ORDER BY se usa para dar formato a la salida basándose en un campo y en un cierto orden, el cual
puede ser descendente o ascendente. Por defecto, la cláusula ORDER BY lista los datos de la columna en orden
ascendente.
SELECT * FROM estadisticasdeempleados ORDER BY salario;
La consulta anterior lista los empleados en el orden ascendente de los valores de la columna salario, ya que no
se utilizó la palabra ASC ni la palabra DESC.
SELECT * FROM estadisticasdeempleados ORDER BY salario ASC;
La consulta anterior lista los empleados en el orden ascendente de los valores de la columna salario. El
empleado que tenga el salario más bajo ocupará el primer registro en el resultado.
SELECT * FROM estadisticasdeempleados ORDER BY salario DESC;
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
La consulta anterior lista los empleados en el orden descendente de los valores de la columna salario. El
empleado que tenga el salario más alto ocupará el primer registro en el resultado.
La cláusula ORDER BY se puede usar para múltiples columnas, tal como se muestra a continuación:
SELECT * FROM estadisticasdeempleados ORDER BY posicion ASC, salario DESC;
La consulta anterior lista los empleados en orden ascendente de la posición de trabajo.
Dentro de una posición, los empleados se listan en orden descendente de la columna salario.
Manejo de Valores NULOS (Null)
• Null se usa básicamente cuando el campo escogido no tiene un valor conocido válido.
• Null evalúa a sí mismo en cualquier expresión 4 + NULL * 2 = NULL,
• Cuando en una definición se indica que un campo es NOT NULL, implica que el campo debe tener un valor
válido.
• El valor NULL no puede ser chequeado usando una ecuación aritmética con el signo =. Sólo puede ser
chequeado usando el operador IS.
Observe la siguiente consulta.
SELECT * FROM estadisticasdeempleados WHERE beneficios IS NULL;
La consulta muestra todos los empleados que no tienen monto alguno por beneficios.
Estos registros de los empleados no tienen ningún valor en la columna beneficios.
SELECT * FROM estadisticasdeempleados WHERE beneficios IS NOT NULL;
La consulta anterior muestra todos los empleados a quienes se le ha asignado un monto por beneficios.
La Cláusula DISTINCT
Si se necesita encontrar una lista única de posiciones disponibles en la tabla estadisticasdeempleados, se puede
ejecutar la siguiente consulta:
SELECT DISTINCT posicion FROM estadisticasdeempleados;
Resultado de la sentencia anterior:
posicion
----------
Gerente
Personal
Principiante
Esta consulta no muestra los valores más de una vez, independientemente de que estén duplicados en la tabla.
La cláusula distinct lista filas únicas.
SQL Avanzados
La Condición para el JOIN
Los datos están distribuidos en diferentes tablas debido a la normalización. La normalización se realiza para
evitar la redundancia y para integrar los datos almacenados en distintas tablas. Cuando el usuario quiere obtener
información completa consultando más de una tabla, debe JOIN (UNIR) los datos de las distintas tablas.
Las sentencias SELECT de SQL que obtienen y combinan datos de múltiples tablas son llamadas JOINS.
Un JOIN ayuda a vincular dos o más tablas a través de un valor de un atributo en común en estas tablas. Existen
muchos tipos de JOINS los cuales se lista a continuación:
• Cartesian
• Natural/Equi (INNER)
• Right Outer
• Left Outer
• Full Outer
• Self
Extender una Consulta Simple a un JOIN
Asuma que hay una casa de campo que proporciona cuartos a sus clientes. Un cliente puede reservar un cuarto
con anticipación. Dos tablas, la tabla Reservaciones y la tabla Cuartos, han sido diseñadas para el sistema.
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
La tabla Reservaciones contiene información sobre cuándo el cuarto está reservado, quién lo reservó y cuándo
podrá estar disponible para rentarlo otra vez, etc. La tabla Cuartos contiene el nombre del cuarto, la ubicación
del cuarto y otros detalles específicos del cuarto.
La siguiente consulta mostrará los detalles de la reservación para el id_usuario 37.
SELECT id_cuarto, hora_inicio, hora_fin FROM reservaciones WHERE id_usuario = 37;
La tabla Reservaciones contiene solo el id_cuarto. No tiene el nombre del cuarto ni la ubicación del cuarto. El
nombre del cuarto y la ubicación están en la tabla Cuartos. Esta información también debe ser obtenida. Este
proceso involucra obtener datos de las dos tablas. Se deben seguir los siguientes pasos para escribir una
operación JOIN y obtener la información requerida.
Paso 1: Agregar la nueva tabla a la cláusula FROM.
SELECT id_cuarto, hora_inicio, hora_fin FROM reservaciones, cuartos WHERE id_usuario = 37;
Cada fila en la tabla Cuartos se unirá con cada fila de la tabla Reservaciones, donde el id_usuario concuerda con
el usuario registrado. Esto dará como resultado un producto Cartesiano parcial, porque aunque la cláusula
WHERE estuviera incluida, no existe la operación JOIN de las dos tablas en dicha cláusula.
Paso 2: Agregar otra condición a la cláusula WHERE.
SELECT id_cuarto, hora_inicio, hora_fin FROM reservaciones, cuartos WHERE id_usuario = 37 AND
reservaciones.id_cuarto = cuartos.id_cuarto;
La consulta anterior produce un error de ejecución SQL. El ejecutor SQL no sabrá qué id_cuarto está buscando
el usuario, ya que el nombre de la columna no está identificada por un nombre de tabla en la cláusula select.
Paso 3: Buscar en columnas definidas ambiguamente.
Las tablas Reservaciones y Cuartos contienen ambas una columna llamada id_cuarto. Por lo que la columna
id_cuarto en la lista del SELECT tiene que ser prefijada con reservaciones.
Nota: Las columnas hora_inicio y hora_fin no necesitan ser prefijadas o identificadas ya que están presentes
solamente en la tabla Reservaciones.
SELECT reservaciones.id_cuarto, hora_inicio, hora_fin FROM reservaciones, cuartos WHERE id_usuario = 37
AND reservaciones.id_cuarto = cuartos.id_cuarto;
Paso 4: Probar la consulta.
La consulta debe ser probada. Cuando se prueba, la consulta anterior funciona bien.
Puesto que el ejercicio era obtener los nombres de los cuartos junto con la ubicación, el nombre del cuarto y la
ubicación no fueron incluidos en la cláusula SELECT.
Paso 5: Agregar nuevas columnas a la lista SELECT.
Finalmente, en esta etapa, las columnas nombre_cuarto y ubicación se agregan a la lista de columnas que se está
consultando.
SELECT reservaciones.id_cuarto, hora_inicio, hora_fin, cuartos.nombre_cuarto, cuartos.ubicación FROM
reservaciones, cuartos WHERE id_usuario = 37 AND reservaciones.id_cuarto = cuartos.id_cuarto;
Escribir Subconsultas
Una subconsulta (subquery) es una consulta dentro de una consulta. Es una sentencia SELECT anidada dentro
de otra sentencia SELECT. En el ejemplo anterior si se tuviera que encontrar los productos comprados por
„Bob‟, se puede escribir la siguiente consulta:
SELECT articulo FROM relacionventas WHERE idcomprador=(SELECT idpropietario FROM
propietarioarticulos WHERE nombre=‟Bob‟);
La tabla Relacionventas no contiene el nombre del comprador. Contiene sólo el idcomprador. El nombre del
comprador se encuentra en la tabla Propietarioarticulos. En la consulta anterior, la consulta más interna es
ejecutada primero, la cual retorna el valor de idcomprador. Luego, este valor es comparado en la cláusula
WHERE de la consulta externa para obtener el resultado deseado.
El operador „=‟ se puede usar en comparaciones con un solo valor. Si la consulta interna del ejemplo anterior
retorna más de un idpropietario, lo cual es muy probable debido a que puede haber más de una persona cuyo
nombre sea „Bob‟, entonces la consulta anterior dará como resultado un error SQL de ejecución.
En esos casos, se usa el operador IN.
SELECT articulo FROM relacionventas WHERE idcomprador IN (SELECT idpropietario FROM
propietarioarticulos WHERE nombre=‟Bob‟);
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
La consulta anterior obtendrá todos los objetos comprados por personas cuyo nombre sea „Bob‟.
Las subconsultas pueden ser anidadas a niveles bastantes profundos. Se pueden escribir dentro de otras
subconsultas. El orden de ejecución siempre será desde la subconsulta más interna a la consulta padre más
externa.
Las subconsultas también se pueden escribir en sentencias UPDATE y DELETE. Por ejemplo, cuando el estado
de un pedido efectuado por „Bob‟ tiene que ser actualizado a despachado, se tiene:
UPDATE pedidos SET estado=‟Distribuido‟ WHERE idpropietario =(SELECT idpropietario FROM
propietarioarticulos WHERE nombre=‟Bob‟);
Si todos los pedidos hechos por Bob van a ser eliminados, entonces se escribe la siguiente consulta:
DELETE FROM pedidos WHERE idpropietario =(SELECT idpropietario FROM propietarioarticulos
WHERE nombre=‟Bob‟);
Hay dos tipos de subconsultas: correlacionada y no correlacionada.
Todos los ejemplos de subconsultas anteriores son subconsultas no correlacionadas.
Subconsulta Correlacionada
Se explica con un ejemplo la subconsulta correlacionada. Observe la siguiente sentencia SQL:
SELECT articulos.precio_articulo FROM artículos WHERE EXISTS (SELECT nombre_articulo FROM
relacionventas WHERE relacionventas.nombre_articulo = articulos.nombre_articulo);
La consulta lista los precios de los articulos asociados a las ventas. La consulta anterior contiene dos partes: la
consulta padre y la consulta hijo. Las subconsultas correlacionadas son consultas en las cuales la consulta hijo
se refiere a la columna de la consulta padre.
La consulta padre es:
SELECT articulos.precio_articulo FROM artículos WHERE EXISTS;
La consulta hijo es:
SELECT nombre_articulo FROM relacionventas WHERE relacionventas.nombre_articulo =
articulos.nombre_articulo;
EXISTS es un operador que evalúa una sentencia SQL. Si la sentencia SQL retorna filas, entonces la sentencia
es evaluada como verdadera. Si la sentencia SQL no retorna filas, entonces la sentencia es evaluada como falsa.
En el ejemplo anterior, la consulta hija es evaluada por el operador EXISTS. Por cada fila retornada por la
consulta padre, la consulta hijo es evaluada. Si la evaluación da como resultado verdadero, entonces se muestra
la fila de la consulta padre.
Para cada artículo en la tabla articulos, si la tabla relacionventas contiene este artículo, entonces el artículo tiene
ventas asociadas con él y se muestra el precio del artículo.
En el ejemplo anterior, articulos.nombre_articulo es la columna de la consulta padre que está siendo utilizada
por la consulta hijo.
Las subconsultas no correlacionadas son ejecutadas una vez por toda la sentencia, mientras que las subconsultas
correlacionadas son ejecutadas una vez por cada fila en la consulta padre.
Operación de Unión
Una operación Unión es una operación de conjunto (SET) que combina los resultados de dos o más consultas,
elimina los registros duplicados y presenta el resultado.
Consideremos el ejemplo:
SELECT noemp,nombreempleado FROM departamentoventas
UNION
SELECT noemp,nombreempleado FROM departamentomarketing;
La consulta anterior busca información de todos los empleados que trabajan para los departamentos de ventas o
de marketing. Si un empleado trabaja para ambos departamentos, su nombre se lista sólo una vez. Se eliminan
los duplicados. Mientras se usa el operador UNION, las consultas pueden tener solamente columnas que tengan
el mismo tipo de datos, y estén mencionadas en el mismo orden.
Referencias Bibliográficas
IBM Capacitación (2008) Base de Datos I

Más contenido relacionado

La actualidad más candente

Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datosFrancis Xavier
 
Presentacion Sql
Presentacion SqlPresentacion Sql
Presentacion Sqlguest5f0fa0
 
Sql comandos
Sql comandosSql comandos
Sql comandos
Jose
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Sergio Sanchez
 
Bases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlBases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sql
FreddyRomana
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dmlGerardo
 
Curso oracle por temas
Curso oracle por temasCurso oracle por temas
Curso oracle por temas
Fabian Isidoro Quino
 
Base de datos en sql
Base de datos en sql  Base de datos en sql
Base de datos en sql
K-rlos Pac
 
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez HGuía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
José Ricardo Tillero Giménez
 
SQL: DDL, DML y SQL
SQL: DDL, DML y SQLSQL: DDL, DML y SQL
SQL: DDL, DML y SQL
Carmen Soler
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosjosecuartas
 
Microsoft sql server
Microsoft sql serverMicrosoft sql server
Microsoft sql server
DeisyVilchez
 
Lenguaje sql
Lenguaje sqlLenguaje sql
Lenguaje sql
Miguel Alejo Alejo
 
SQL-DDL
SQL-DDLSQL-DDL
SQL-DDL
bdatos
 
Comandos dll en sql server
Comandos dll en sql serverComandos dll en sql server
Comandos dll en sql server
Vicente Alberca
 

La actualidad más candente (20)

SQL
SQLSQL
SQL
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datos
 
Presentacion Sql
Presentacion SqlPresentacion Sql
Presentacion Sql
 
Sql comandos
Sql comandosSql comandos
Sql comandos
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
 
Bases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlBases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sql
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dml
 
Restricciones bd
Restricciones bdRestricciones bd
Restricciones bd
 
Curso oracle por temas
Curso oracle por temasCurso oracle por temas
Curso oracle por temas
 
Base de datos en sql
Base de datos en sql  Base de datos en sql
Base de datos en sql
 
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez HGuía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
 
SQL: DDL, DML y SQL
SQL: DDL, DML y SQLSQL: DDL, DML y SQL
SQL: DDL, DML y SQL
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
Ejemplo ddl dml
Ejemplo ddl dmlEjemplo ddl dml
Ejemplo ddl dml
 
Microsoft sql server
Microsoft sql serverMicrosoft sql server
Microsoft sql server
 
Lenguaje sql
Lenguaje sqlLenguaje sql
Lenguaje sql
 
SQL-DDL
SQL-DDLSQL-DDL
SQL-DDL
 
Unidad 6 Lenguaje Sql
Unidad 6 Lenguaje SqlUnidad 6 Lenguaje Sql
Unidad 6 Lenguaje Sql
 
Comandos dll en sql server
Comandos dll en sql serverComandos dll en sql server
Comandos dll en sql server
 

Similar a Unidad IV SQL

ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdf
Jenny29068
 
Tablas y tipos de datos
Tablas y tipos de datosTablas y tipos de datos
Tablas y tipos de datos
SuarezJhon
 
Sql manipulacion de tabla
Sql manipulacion de tablaSql manipulacion de tabla
Sql manipulacion de tabladmonges
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
Ana Aguirre
 
Manual practico-sql
Manual practico-sqlManual practico-sql
Manual practico-sql
Liz Castelan Hernandez
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas
Crhis
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
Freddy Poma Inga
 
Diapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datosDiapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datos
TAPIA SILVA EVELINA
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
fer951
 
DDL
DDLDDL
Clave primaria
Clave primariaClave primaria
Clave primaria
miranda271999
 
Base de datos relacionales
Base de datos relacionalesBase de datos relacionales
Base de datos relacionales
Iris Yadira Moreno Aguirre
 
Portafolio 1 sql
Portafolio 1 sqlPortafolio 1 sql
Portafolio 1 sql
JuanKMillos
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)felpe33
 
Trabajando con sql (parte 1)
Trabajando con sql (parte 1)Trabajando con sql (parte 1)
Trabajando con sql (parte 1)Juan Vade
 
Base de datos (.net)
Base de datos (.net)Base de datos (.net)
Base de datos (.net)7891089671
 
Investigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencialInvestigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencial500y
 
04-SQL.pdf
04-SQL.pdf04-SQL.pdf
04-SQL.pdf
ssuser948499
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf
ssuser78e8eb
 

Similar a Unidad IV SQL (20)

ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdf
 
Tablas y tipos de datos
Tablas y tipos de datosTablas y tipos de datos
Tablas y tipos de datos
 
Sql manipulacion de tabla
Sql manipulacion de tablaSql manipulacion de tabla
Sql manipulacion de tabla
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Manual practico-sql
Manual practico-sqlManual practico-sql
Manual practico-sql
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Diapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datosDiapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datos
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
DDL
DDLDDL
DDL
 
Clave primaria
Clave primariaClave primaria
Clave primaria
 
Base de datos relacionales
Base de datos relacionalesBase de datos relacionales
Base de datos relacionales
 
Portafolio 1 sql
Portafolio 1 sqlPortafolio 1 sql
Portafolio 1 sql
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
 
Trabajando con sql (parte 1)
Trabajando con sql (parte 1)Trabajando con sql (parte 1)
Trabajando con sql (parte 1)
 
Base de datos (.net)
Base de datos (.net)Base de datos (.net)
Base de datos (.net)
 
Investigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencialInvestigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencial
 
04-SQL.pdf
04-SQL.pdf04-SQL.pdf
04-SQL.pdf
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf
 

Más de lissette_torrealba

Guia reportes
Guia reportesGuia reportes
Guia reportes
lissette_torrealba
 
Guiajquery
GuiajqueryGuiajquery
Guiajquery
lissette_torrealba
 
Plan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoríaPlan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoría
lissette_torrealba
 
Plan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodologíaPlan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodología
lissette_torrealba
 
Plan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 prácticaPlan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 práctica
lissette_torrealba
 
Guiajsvalidacion
GuiajsvalidacionGuiajsvalidacion
Guiajsvalidacion
lissette_torrealba
 
Guiajs2
Guiajs2Guiajs2
Rubrica 2021 electiva 2
Rubrica 2021 electiva 2Rubrica 2021 electiva 2
Rubrica 2021 electiva 2
lissette_torrealba
 
Mapa Tecnopedagogia
Mapa TecnopedagogiaMapa Tecnopedagogia
Mapa Tecnopedagogia
lissette_torrealba
 
Matriz DOFA lissette
Matriz DOFA lissetteMatriz DOFA lissette
Matriz DOFA lissette
lissette_torrealba
 
Planevaluacionproyectoivpractica
PlanevaluacionproyectoivpracticaPlanevaluacionproyectoivpractica
Planevaluacionproyectoivpractica
lissette_torrealba
 
Rubrica bd 2021
Rubrica  bd  2021Rubrica  bd  2021
Rubrica bd 2021
lissette_torrealba
 
Proyecto formativo iv metodologia
Proyecto formativo iv metodologiaProyecto formativo iv metodologia
Proyecto formativo iv metodologia
lissette_torrealba
 
Plan evaluacion teoria
Plan evaluacion teoriaPlan evaluacion teoria
Plan evaluacion teoria
lissette_torrealba
 
Plan de Evaluacion
Plan de EvaluacionPlan de Evaluacion
Plan de Evaluacion
lissette_torrealba
 
Ejemplos de interfaz grafica
Ejemplos de  interfaz grafica Ejemplos de  interfaz grafica
Ejemplos de interfaz grafica
lissette_torrealba
 
Rubrica bd 2021
Rubrica bd 2021 Rubrica bd 2021
Rubrica bd 2021
lissette_torrealba
 
Rubrica Programación II 2021
Rubrica Programación II 2021 Rubrica Programación II 2021
Rubrica Programación II 2021
lissette_torrealba
 
Rup
RupRup
Documentosistema
DocumentosistemaDocumentosistema
Documentosistema
lissette_torrealba
 

Más de lissette_torrealba (20)

Guia reportes
Guia reportesGuia reportes
Guia reportes
 
Guiajquery
GuiajqueryGuiajquery
Guiajquery
 
Plan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoríaPlan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoría
 
Plan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodologíaPlan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodología
 
Plan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 prácticaPlan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 práctica
 
Guiajsvalidacion
GuiajsvalidacionGuiajsvalidacion
Guiajsvalidacion
 
Guiajs2
Guiajs2Guiajs2
Guiajs2
 
Rubrica 2021 electiva 2
Rubrica 2021 electiva 2Rubrica 2021 electiva 2
Rubrica 2021 electiva 2
 
Mapa Tecnopedagogia
Mapa TecnopedagogiaMapa Tecnopedagogia
Mapa Tecnopedagogia
 
Matriz DOFA lissette
Matriz DOFA lissetteMatriz DOFA lissette
Matriz DOFA lissette
 
Planevaluacionproyectoivpractica
PlanevaluacionproyectoivpracticaPlanevaluacionproyectoivpractica
Planevaluacionproyectoivpractica
 
Rubrica bd 2021
Rubrica  bd  2021Rubrica  bd  2021
Rubrica bd 2021
 
Proyecto formativo iv metodologia
Proyecto formativo iv metodologiaProyecto formativo iv metodologia
Proyecto formativo iv metodologia
 
Plan evaluacion teoria
Plan evaluacion teoriaPlan evaluacion teoria
Plan evaluacion teoria
 
Plan de Evaluacion
Plan de EvaluacionPlan de Evaluacion
Plan de Evaluacion
 
Ejemplos de interfaz grafica
Ejemplos de  interfaz grafica Ejemplos de  interfaz grafica
Ejemplos de interfaz grafica
 
Rubrica bd 2021
Rubrica bd 2021 Rubrica bd 2021
Rubrica bd 2021
 
Rubrica Programación II 2021
Rubrica Programación II 2021 Rubrica Programación II 2021
Rubrica Programación II 2021
 
Rup
RupRup
Rup
 
Documentosistema
DocumentosistemaDocumentosistema
Documentosistema
 

Último

Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1
MauricioSnchez83
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
BetzabePecheSalcedo1
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
auxsoporte
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
YasneidyGonzalez
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
20minutos
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
https://gramadal.wordpress.com/
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
YolandaRodriguezChin
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
Alejandrogarciapanta
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
GallardoJahse
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
LorenaCovarrubias12
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Demetrio Ccesa Rayme
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
pablomarin116
 
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docxENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
SandraPiza2
 
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
UNIDAD DE APRENDIZAJE DEL MES  Junio 2024UNIDAD DE APRENDIZAJE DEL MES  Junio 2024
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
EdwardYumbato1
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
Alejandrino Halire Ccahuana
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
20minutos
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
YasneidyGonzalez
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
20minutos
 

Último (20)

Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
 
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docxENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
 
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
UNIDAD DE APRENDIZAJE DEL MES  Junio 2024UNIDAD DE APRENDIZAJE DEL MES  Junio 2024
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 

Unidad IV SQL

  • 1. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Modelo Relacional, Entidad, Relaciones, atributos, cardinalidad. Tablas, Campos, laves primarias, claves foráneas, restricciones, clausulas sql Unidad II: El Lenguaje de Base de Datos SQL Objetivo de la Unidad: Al finalizar esta unidad de aprendizaje los alumnos comprenden e interpreta el lenguaje SQL Desarrollo El lenguaje usado para comunicarse con una base de datos se llama Lenguaje de Consulta Estructurado (Structured Query Language – SQL), el cual se ha consolidado como el lenguaje estándar de las bases de datos relacionales. Es un lenguaje muy fácil de usar y parece tan simple como el inglés. SQL es un lenguaje estandarizado que sirve para definir y manipular los datos de una base de datos relacional. De acuerdo con el modelo relacional de datos, la base de datos se crea como un conjunto de tablas y las relaciones se representan mediante valores en las tablas. Cada RDBMS viene con una herramienta de uso interactivo que permite al usuario ingresar sentencias SQL y pasarlas a la base de datos para su ejecución. Estas sentencias, técnicamente llamadas consultas (queries), ayudan a crear, acceder y dar mantenimiento a los distintos objetos de la base de datos. Introducción El lenguaje SQL sirve para el acceso a la información almacenada en las bases de datos. Es un lenguaje sencillo de consulta, que permite realizar operaciones de selección, inserción, actualización y borrado de datos, así como operaciones administrativas sobre las bases de datos. SQL es un estándar mantenido por ANSI, por lo que las bases del lenguaje son las mismas en la mayoría de los motores de bases de datos relacionales. Una persona que conozca las bases del lenguaje, con el acceso a una referencia básica del motor particular con el que esté trabajando será capaz de escribir consultas para cualquier base de datos. La estructura de las consultas es prácticamente igual, aunque existen pequeñas diferencias a la hora de organizar los bloques de las sentencias y especificar operaciones o funciones de administración. También dependiendo del motor de base de datos puede tener soporte a algunas operaciones extra cómo procedimientos o transacciones, así como un juego de funciones específico. Objetivo de la guía En esta unidad se abordará el lenguaje universal de las base de datos. El objetivo que nos planteamos es que, al finalizar el alumno sea capaz de realizar el Modelo físico de datos de un sistema de información y realizar las diferentes consultas a la base de datos Requerimientos. Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre ( Canaima/Ubuntu), SGBD MYSQL (phpmyadmin) Componentes.
  • 2. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Componentes del SQL El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. El SQL tiene las siguientes partes: Lenguaje de Definición de Datos (Data Definition Language - DDL): El DDL del SQL proporciona comandos para definir los objetos de la base de datos. Una tabla, por ejemplo, es un objeto de la base de datos. Otros objetos de la base de datos incluyen vistas, índices y procedimientos almacenados. El Comando CREATE El comando CREATE se usa para crear objetos de la base de datos. Tablas, vistas e índices son algunos ejemplos de objetos de la base de datos. La sentencia CREATE se usa para describir la estructura de un objeto de la base de datos. Sintaxis para crear una Tabla: CREATE TABLE nombre_de_la_tabla ( nombre_de_la_columna1 tipo_de_dato, nombre_de_la_columna2 tipo_de_dato, ... nombre_de_la_columnan tipo_de_dato ); Clave Primaria La clave primaria es una columna de una tabla, la cual se usa para identificar un registro en la tabla. Para que un campo sea una clave primaria, su valor debe ser NOT NULL y debe ser único. El campo debe tener un valor válido, el cual debe ser completamente diferente de los otros valores. Una tabla puede tener sólo una clave primaria, ésta también puede ser una clave compuesta, donde más de una columna se combinan para actuar como la clave primaria. Las columnas individuales de la clave primaria compuesta deben tener valores válidos. La combinación de las columnas de la clave compuesta debe ser única. Por ejemplo, considere la tabla juguetes de la base de datos que se crea como sigue: CREATE TABLE juguetes ( id_comprador INTEGER NOT NULL PRIMARY KEY, producto VARCHAR(40) NOT NULL, precio DOUBLE ); La sentencia anterior, cuando es ejecutada en una herramienta de SQL, crea una tabla con el nombre juguetes. La sentencia también incluye algunos nombres de columnas, sus respectivos tipos de datos y las restricciones de tipo NOT NULL de las columnas. La palabra Primary key indica que ese campo es la clave primaria de la tabla Hay una palabra clave NOT NULL en la sentencia CREATE anterior. La palabra NOT NULL significa que la columna debe tener un valor en cada fila. NULL indica ningún valor o un valor no aplicable y es un concepto importante en cualquier RDBMS. Clave Foránea La clave foránea es una columna en una tabla cuyos valores son dependientes de los valores existentes en otras tablas. Una columna se denomina una clave foránea sólo si se refiere a una columna de la clave primaria de otra tabla. Una restricción definida entre una clave foránea y una clave primaria se llama restricción de integridad referencial. La tabla que contiene la clave primaria a la cual hace referencia la clave foránea, se denomina tabla padre. La tabla que contiene la clave foránea se denomina tabla hija.
  • 3. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Los valores permitidos en una columna de clave foránea son valores de las columnas a las que referencian o son valores nulos. La clave primaria desempeña un papel importante al hacer cumplir las restricciones de integridad referencial. FOREIGN KEY (key_id) REFERENCES tabla (clave primaria) ON DELETE CASCADE. Tabla padres CREATE TABLE cliente ( id_cliente INT NOT NULL, nombre VARCHAR(30) NOT NULL, PRIMARY KEY(id_cliente), Tabla hija CREATE TABLE factura ( id_factura INT NOT NULL, id_cliente INT NOT NULL, monto DOUBLE, fecha DATE, PRIMARY KEY(id_factura), FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente) ON DELETE CASCADE ); Clave primaria compuestas PRIMARY KEY(id_campo1,id_campo2). CREATE TABLE articulo( id_articulo INT NOT NULL, nombre VARCHAR(30) NOT NULL, costo DOUBLE, precio DOUBLE, PRIMARY KEY(id_articulo), ); CREATE TABLE detalle_factura( id_factura int INT NOT NULL, id_articulo INT NOT NULL, cantidad INT NOT NULL, PRIMARY KEY(id_factura,id_articulo) FOREIGN KEY (id_art) REFERENCES articulo(id_articulo) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (id_fact) REFERENCES factura(id_factura) ON UPDATE CASCADE ON DELETE CASCADE) ENGINE=INNODB; El Comando ALTER El comando ALTER se usa para modificar la estructura de objetos de la base de datos. Este comando se usa por ejemplo para agregar una nueva columna a una Tabla. El siguiente ejemplo muestra cómo las columnas pueden ser agregadas a una tabla. ALTER TABLE juguetes ADD COLUMN id_vendedor integer; Cuando la sentencia SQL anterior es ejecutada, una nueva columna llamada id_vendedor de tipo de dato numérico se agrega a la tabla juguetes. El Comando DROP El comando DROP se usa para eliminar objetos de la base de datos. Por ejemplo: DROP TABLE juguetes;
  • 4. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba DROP VIEW vista_juguetes; DROP INDEX indice_juguetes; Los comandos SQL anteriores eliminan los siguientes objetos de la base de datos: la tabla juguetes, la vista vista_juguetes y el índice indice_juguetes. Lenguaje de Manipulación de Datos (Data Manipulation Language - DML): El DML del SQL proporciona comandos para insertar, eliminar y modificar registros en la(s) tabla(s). El DML se usa para la manipulación de los datos: agregar, eliminar y actualizar losvalores. Algunos de los comandos SQL en esta categoría se listan a continuación: • INSERT: Se usa para agregar valores en la tabla. Formato: INSERT into nombre_de_la_tabla (columna1,columna2 ) VALUES (valor1, valor2); El siguiente comando inserta una fila en una tabla: INSERT INTO juguetes (id_comprador, producto, precio, id_vendedor) VALUES (21, 'Barbie', 200.00, 01); La tabla juguetes contiene cuatro columnas: id_comprador, producto, precio y id_vendedor. La sentencia anterior contiene una lista de columnas ordenadas y una lista de valores ordenados para las columnas. A continuación se muestra otra forma de escribir la sentencia INSERT: INSERT INTO juguetes VALUES (21, 'Barbie', 200.00, 01); Esta sentencia no incluye los nombres de las columnas. Si los nombres de las columnas no se listan en una sentencia INSERT, entonces la cláusula VALUES debe contener los valores para todas las columnas en el mismo orden en el que están listadas las columnas en la tabla. El orden en el cual las columnas son creadas en una tabla es dependiente del orden en que fueron colocadas las columnas en la sentencia CREATE, cuando la tabla fue creada. La siguiente es otra variación de la sentencia INSERT: INSERT INTO juguetes (id_comprador, producto, id_vendedor) VALUES (02, 'Barbie',22); La sentencia anterior no incluye todas las columnas de la tabla. La columna precio no está presente así que la tabla tendrá un valor NULL en la columna precio. El orden de las columnas en la sentencia INSERT anterior ha sido cambiado. Sin embargo, el orden de las columnas no importa si los nombres de las columnas se mencionan explícitamente y se enumeran los valores de las columnas correspondientes. • DELETE: Se usa para eliminar valores de la tabla. DELETE FROM nombre_de_la_tabla WHERE Condición; En el comando DELETE, la condición WHERE es opcional. Si la condición no es especificada, todas las filas son eliminadas. De otra forma, sólo las filas que satisfacen la condición serán eliminadas. Considere la siguiente sentencia: DELETE FROM juguetes WHERE producto = 'Barbie'; En este caso, no solo la última fila que se había agregado será eliminada sino también todas las filas que contienen el valor 'Barbie' en producto. Para eliminar solo la última fila agregada, se usará la siguiente instrucción: DELETE FROM juguetes WHERE producto = 'Barbie' AND id_comprador = 02 AND id_vendedor = 22; • UPDATE: Se usa para actualizar o cambiar los valores presentes en la tabla. A continuación, se actualiza el precio a los productos “Silla” de la tabla juguetes. La sintaxis del comando UPDATE es: UPDATE nombre_de_la_tabla SET Col1=valor1, Col2=valor2 WHERE Condición; Se puede hacer esto con la siguiente instrucción: UPDATE juguetes SET precio = 500.00 WHERE producto = 'Silla'; Esto coloca el precio de todas las sillas a 500.00. Lenguaje de Consulta de Datos (Data Query Language - DQL): El DQL del SQL proporciona comandos para recuperar datos desde tablas. La sentencia SELECT es un comando DQL.
  • 5. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba La sentencia SELECT se usa para recuperar datos de las tablas. La sentencia SELECT puede ser: Un simple SELECT o uno condicional. En una sentencia SELECT condicional, los datos recuperados se basan en una condición dada. Seleccionar Datos de todas las Columnas de la Tabla La sintaxis básica de la sentencia SELECT es como sigue: SELECT * FROM nombre_de_la_tabla; La sentencia anterior se usa para obtener todas las columnas de la tabla. El * denota todas las columnas. • Seleccionar Datos de Ciertas Columnas de la Tabla Lo siguiente es la sintaxis para obtener ciertas columnas específicas de la tabla: SELECT nombrecol1, nombrecol2, …, nombrecoln FROM nombre_de_la_tabla; Para obtener las columnas Nombre, Ciudad y Estado listadas en la Tabla 1.4, se puede ejecutar la siguiente sentencia SQL: SELECT nombre, ciudad, estado FROM direcciondeempleado; Se muestra la capacidad de SQL para escoger los valores de ciertas columnas que son requeridas por el usuario. Selección Condicional La sentencia SELECT proporciona todos los registros de la tabla. Si se requiere sólo aquellos registros en la tabla que satisfacen una condición específica, entonces se usa la sentencia SELECT condicional con la cláusula WHERE. La Cláusula WHERE Lo siguiente es la sintaxis de la cláusula WHERE: SELECT * FROM nombre_de_la_tabla WHERE NOMBRE_COL = VALOR; La cláusula WHERE se usa para especificar que sólo ciertas filas de la tabla deben mostrarse. Ésta se usa junto a los operadores relacionales tales como mayor que, menor que o igual a. Operadores Relacionales Útiles Hay seis operadores relacionales en SQL, como se muestra : = Igual <> o != Diferente < Menor que > Mayor que <= Menor o igual a >= Mayor o igual a Considere un ejemplo sobre el uso de operadores relacionales y la cláusula WHERE. Observe la Tabla 1.6, la cual contiene el detalle de los salarios y las posiciones de los empleados de una organización.
  • 6. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Para ver los idnoempleado de aquellos empleados que tienen un salario de $50,000 o más, se puede ejecutar la siguiente sentencia SQL: SELECT idnoempleado FROM estadisticasdeempleados WHERE salario >= 50000; Note que se usa el signo >= (mayor o igual a). Esto es porque se quiere ver la lista de aquellos empleados cuyos salarios son mayores o iguales a $50,000, listados todos juntos. El resultado del comando anterior será: IDNOEMPLEADO ------------ 010 105 152 215 244 La descripción WHERE salario >= 50000, se conoce como una condición, es decir, una operación la cual al evaluarse da verdadero o falso. Las condiciones se pueden usar también para columnas de texto. Observe la siguiente sentencia: SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion = 'Gerente'; Esta sentencia muestra los idnoempleado de todos los registros que cumplen con posicion= 'Gerente'. Cualquier texto que aparezca en la sentencia debe estar encerrado entre comillas simples ('). Note que el valor Gerente en la cláusula WHERE es sensible a las mayúsculas y minúsculas (case sensitive) y por lo tanto, debe ser comparado en la forma como está almacenado en la tabla. Funciones Agregadas Las funciones agregadas, también conocidas como funciones de grupo, se usan en sentencias SQL para trabajar sobre conjuntos o grupos específicos de filas. A continuación se presentan las cinco funciones agregadas más importantes: La Función SUM SELECT SUM(salario) FROM estadisticasdeempleados; La consulta anterior retorna el salario total de todos los empleados de la tabla. El resultado de la consulta es: 1___ 455000 La Función AVG SELECT AVG(salario) FROM estadisticasdeempleados; La consulta retorna el salario promedio de los empleados listados en la tabla. El resultado es: 1___50555 La Función MIN SELECT MIN(beneficios) FROM estadisticasdeempleados WHERE posicion = 'Gerente' La función MIN toma el nombre de la columna e identifica el valor mínimo disponible en esa columna para las filas que satisfacen una condición, si es dada. En la consulta anterior, la cláusula WHERE limita las filas a los empleados que son 'Gerente'. La función MIN identifica el mínimo beneficio ganado por un „Gerente‟. La consulta anterior retorna el siguiente resultado:
  • 7. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba 1__ 12500 La Función COUNT SELECT COUNT(*) FROM estadisticasdeempleados WHERE posicion = 'Personal'; La consulta cuenta el número de empleados que pertenecen a la posición 'Personal'. En el ejemplo anterior, la función COUNT toma * como el nombre de una columna. El * denota todas las columnas en la tabla. En este caso, se refiere a las filas en la tabla que satisfacen la condición dada. El * se puede usar sólo con la función COUNT y no con otras funciones agregadas. Otras funciones agregadas toman los nombres de las columnas o expresiones como entrada. La consulta anterior retorna el siguiente resultado: 1 3 La función count sólo contabiliza los registros donde la columna seleccionada tenga valores distintos a null. La Función MAX La función MAX() retorna el máximo valor para una columna dada, entre el conjunto de filas seleccionadas. Observe la siguiente sentencia. SELECT MAX(SALARIO) FROM estadisticasdeempleados; Esta consulta retorna el salario máximo ganado por un empleado listado en la tabla: 1__ 75000 Condiciones Compuestas y Operadores Lógicos El Operador AND El operador AND une dos o más condiciones y muestra todas las filas que satisfacen todas las condiciones en la cláusula WHERE. Por ejemplo, para mostrar todos los empleados cuya posición sea „Personal‟ y cuyo salario es mayor a $40,000, se puede escribir la siguiente consulta: SELECT idnoempleado FROM estadisticasdeempleados WHERE salario > 40000 AND posicion = 'Personal'; El Operador OR El operador OR une dos o más condiciones. Muestra todas las filas que satisfacen al menos una condición en la cláusula WHERE. Para mostrar todos los empleados que ganan un salario menor que $40,000 ó que obtienen beneficios menores que $10,000, se puede escribir la siguiente consulta: SELECT idnoempleado FROM estadisticasdeempleados WHERE salario < 40000 OR beneficios < 10000; Combinar los Operadores AND y OR Es posible combinar los operadores AND y OR en una sola sentencia. Por ejemplo, para listar todos los „Gerente‟ que ganan un salario mayor que $60,000 o que obtienen beneficios mayores que $12,000, se puede escribir la siguiente consulta: SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion = 'Gerente' AND salario > 60000 OR beneficios > 12000; La sentencia SQL anterior usa los operadores AND y OR. El orden de precedencia es importante en este caso. En este caso, el operador AND precede al operador OR por lo que las condiciones con el operador AND se evalúan primero y luego se evalúan las condiciones con el operador OR. El orden en el cual la sentencia SQL anterior se ejecuta es el siguiente: posicion = 'Gerente' AND salario > 60000 = X X OR beneficios > 12000 Paso 1: Limita las filas a las personas que son gerente y ganan un salario mayor que $60,000. Paso 2: Limita las filas a las personas del Paso 1 o las personas que tienen beneficios mayor que $12,000. La sentencia SQL anterior puede ser también escrita de la siguiente forma: SELECT idnoempleado FROM estadisticasdeempleados WHERE (posicion = 'Gerente' AND salario > 60000) OR beneficios > 12000;
  • 8. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Las condiciones que están entre paréntesis se evalúan primero. Estos sobre escriben cualquier orden de precedencia. Ahora observe la siguiente consulta y descubra lo que hace: SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion = 'Gerente' AND (salario > 60000 OR beneficios > 12000); Como se mencionó anteriormente, las condiciones entre paréntesis se evalúan primero, y luego las otras condiciones. Los pasos involucrados en la evaluación de la consulta anterior son los siguientes: salario > 60000 OR beneficios > 12000 = X WHERE posicion = 'Gerente' AND X Paso 1: Identifique las filas de las personas que ganan un salario mayor que $60,000 o beneficios mayores que $12,000. Paso 2: Identifique las personas que son gerente y que satisfacen el Paso 1. El Operador IN El operador IN se usa para realizar comparaciones con una lista de valores. Por ejemplo, observe la siguiente consulta: SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion='Gerente' OR posicion= 'Personal'; La consulta lista todos los empleados que son gerente o del personal. La consulta se puede escribir usando un operador IN. SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion IN ('Gerente', 'Personal'); En la consulta anterior, mencionan las posiciones de los empleados en los que se está interesado como un conjunto de valores que tienen que ser comparados. Los valores están separados por comas y encerrados entre paréntesis después del operador IN. El operador IN verifica si la condición satisface alguno de los valores que están entre paréntesis. El Operador BETWEEN El operador BETWEEN se usa para comprobar si cierto valor está dentro de un rango dado. Por ejemplo, asuma que se está interesado en encontrar a todos los empleados que ganan salarios dentro un rango de [$30,000 a $50,000]. ¿Cómo se escribe esta consulta? Rango del salario [30000 a 50000] SELECT idnoempleado FROM estadisticasdeempleados WHERE salario >= 30000 AND salario <= 50000; La consulta anterior se puede escribir también usando el operador BETWEEN. SELECT idnoempleado FROM estadisticasdeempleados WHERE salario BETWEEN 30000 AND 50000; El operador BETWEEN incluye los valores de $30000 y $50000. El Operador NOT En el ejemplo anterior, si se está interesado en listar todos los empleados que no ganan un salario de $30,000 a $50,000, se puede escribir la siguiente consulta: SELECT idnoempleado FROM estadisticasdeempleados WHERE salario NOT BETWEEN 30000 AND 50000; La siguiente consulta lista todos los empleados que no son gerente. SELECT idnoempleado FROM estadisticasdeempleados WHERE posicion NOT IN ('Gerente'); El operador NOT es un operador unario (evalúa una condición, invirtiendo su valor), mientras que los operadores AND y OR evalúan dos condiciones. Orden de Precedencia para los Operadores Lógicos El orden de precedencia para los operadores lógicos se muestra a continuación. El operador NOT tiene mayor precedencia que los operadores AND y OR. • NOT • AND • OR El Operador LIKE El operador LIKE se usa para verificar patrones dentro de cadenas de caracteres, compararlos y mostrar los resultados. Por ejemplo, suponga que se quieren listar todos los empleados cuyos apellidos comienzan con „S‟. Se puede escribir la siguiente consulta: SELECT nombre, apellido FROM direcciondeempleado WHERE apellido LIKE 'S%';
  • 9. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba El signo de porcentaje (%) se usa para representar cero o más caracteres. En el ejemplo anterior, „S%„ especifica cualquier nombre que comience con „S‟, seguido de cero o más caracteres. Para listar aquellas personas cuyos apellidos terminen en „S‟, se usa „%S„, que especifica cualquier nombre que termine con „S‟, precedido de cero o más caracteres. Para encontrar personas cuyos apellidos contengan „S‟, se escribe „%S%„. Esto especifica cualquier nombre que contenga „S‟ precedido o seguido de cero o más caracteres. Asuma que alguien está interesado en listar los empleados que tienen una „S‟ como la tercera letra en sus apellidos. En ese caso, se usa „__S%„. El „_‟ indica un carácter no conocido. En el ejemplo anterior, los dos caracteres no conocidos están seguidos por una „S‟, y luego están seguidos de cero o más caracteres (%). El Operador de Concatenación El operador de concatenación se usa para combinar dos cadenas de caracteres o dos campos (del tipo cadena de caracteres). El operador se denota por „CONCAT()‟. Si se quiere saber el nombre completo de un empleado, se debe concatenar el nombre y el apellido del empleado. Se puede usar la siguiente consulta para esto: SELECT CONCAT (nombre,„.‟,apellido) FROM direcciondeempleado; 1 ------------------------------- Mike.Dennis Susan.Ikelar Rob.Heimann Sarah.Connors En la consulta anterior, entre los valores de las columnas, se ha concatenado un signo punto que separa el nombre y el apellido. Alias de los Nombres de Columnas A los nombres de las columnas se les puede asignar un alias. Por ejemplo, en la consulta de concatenación anterior, el nombre de la columna es extraño. Si la consulta se escribe de la siguiente manera, el nombre de la columna se visualizará mucho mejor. SELECT CONCAT (nombre,„.‟,apellido) AS “Nombre Completo” FROM direcciondeempleado; Resultado de la sentencia anterior: Nombre Completo ------------------------------- Mike.Dennis Susan.Ikelar Rob.Heimann Sarah.Connors La Cláusula ORDER BY La cláusula ORDER BY se usa para dar formato a la salida basándose en un campo y en un cierto orden, el cual puede ser descendente o ascendente. Por defecto, la cláusula ORDER BY lista los datos de la columna en orden ascendente. SELECT * FROM estadisticasdeempleados ORDER BY salario; La consulta anterior lista los empleados en el orden ascendente de los valores de la columna salario, ya que no se utilizó la palabra ASC ni la palabra DESC. SELECT * FROM estadisticasdeempleados ORDER BY salario ASC; La consulta anterior lista los empleados en el orden ascendente de los valores de la columna salario. El empleado que tenga el salario más bajo ocupará el primer registro en el resultado. SELECT * FROM estadisticasdeempleados ORDER BY salario DESC;
  • 10. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba La consulta anterior lista los empleados en el orden descendente de los valores de la columna salario. El empleado que tenga el salario más alto ocupará el primer registro en el resultado. La cláusula ORDER BY se puede usar para múltiples columnas, tal como se muestra a continuación: SELECT * FROM estadisticasdeempleados ORDER BY posicion ASC, salario DESC; La consulta anterior lista los empleados en orden ascendente de la posición de trabajo. Dentro de una posición, los empleados se listan en orden descendente de la columna salario. Manejo de Valores NULOS (Null) • Null se usa básicamente cuando el campo escogido no tiene un valor conocido válido. • Null evalúa a sí mismo en cualquier expresión 4 + NULL * 2 = NULL, • Cuando en una definición se indica que un campo es NOT NULL, implica que el campo debe tener un valor válido. • El valor NULL no puede ser chequeado usando una ecuación aritmética con el signo =. Sólo puede ser chequeado usando el operador IS. Observe la siguiente consulta. SELECT * FROM estadisticasdeempleados WHERE beneficios IS NULL; La consulta muestra todos los empleados que no tienen monto alguno por beneficios. Estos registros de los empleados no tienen ningún valor en la columna beneficios. SELECT * FROM estadisticasdeempleados WHERE beneficios IS NOT NULL; La consulta anterior muestra todos los empleados a quienes se le ha asignado un monto por beneficios. La Cláusula DISTINCT Si se necesita encontrar una lista única de posiciones disponibles en la tabla estadisticasdeempleados, se puede ejecutar la siguiente consulta: SELECT DISTINCT posicion FROM estadisticasdeempleados; Resultado de la sentencia anterior: posicion ---------- Gerente Personal Principiante Esta consulta no muestra los valores más de una vez, independientemente de que estén duplicados en la tabla. La cláusula distinct lista filas únicas. SQL Avanzados La Condición para el JOIN Los datos están distribuidos en diferentes tablas debido a la normalización. La normalización se realiza para evitar la redundancia y para integrar los datos almacenados en distintas tablas. Cuando el usuario quiere obtener información completa consultando más de una tabla, debe JOIN (UNIR) los datos de las distintas tablas. Las sentencias SELECT de SQL que obtienen y combinan datos de múltiples tablas son llamadas JOINS. Un JOIN ayuda a vincular dos o más tablas a través de un valor de un atributo en común en estas tablas. Existen muchos tipos de JOINS los cuales se lista a continuación: • Cartesian • Natural/Equi (INNER) • Right Outer • Left Outer • Full Outer • Self Extender una Consulta Simple a un JOIN Asuma que hay una casa de campo que proporciona cuartos a sus clientes. Un cliente puede reservar un cuarto con anticipación. Dos tablas, la tabla Reservaciones y la tabla Cuartos, han sido diseñadas para el sistema.
  • 11. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba La tabla Reservaciones contiene información sobre cuándo el cuarto está reservado, quién lo reservó y cuándo podrá estar disponible para rentarlo otra vez, etc. La tabla Cuartos contiene el nombre del cuarto, la ubicación del cuarto y otros detalles específicos del cuarto. La siguiente consulta mostrará los detalles de la reservación para el id_usuario 37. SELECT id_cuarto, hora_inicio, hora_fin FROM reservaciones WHERE id_usuario = 37; La tabla Reservaciones contiene solo el id_cuarto. No tiene el nombre del cuarto ni la ubicación del cuarto. El nombre del cuarto y la ubicación están en la tabla Cuartos. Esta información también debe ser obtenida. Este proceso involucra obtener datos de las dos tablas. Se deben seguir los siguientes pasos para escribir una operación JOIN y obtener la información requerida. Paso 1: Agregar la nueva tabla a la cláusula FROM. SELECT id_cuarto, hora_inicio, hora_fin FROM reservaciones, cuartos WHERE id_usuario = 37; Cada fila en la tabla Cuartos se unirá con cada fila de la tabla Reservaciones, donde el id_usuario concuerda con el usuario registrado. Esto dará como resultado un producto Cartesiano parcial, porque aunque la cláusula WHERE estuviera incluida, no existe la operación JOIN de las dos tablas en dicha cláusula. Paso 2: Agregar otra condición a la cláusula WHERE. SELECT id_cuarto, hora_inicio, hora_fin FROM reservaciones, cuartos WHERE id_usuario = 37 AND reservaciones.id_cuarto = cuartos.id_cuarto; La consulta anterior produce un error de ejecución SQL. El ejecutor SQL no sabrá qué id_cuarto está buscando el usuario, ya que el nombre de la columna no está identificada por un nombre de tabla en la cláusula select. Paso 3: Buscar en columnas definidas ambiguamente. Las tablas Reservaciones y Cuartos contienen ambas una columna llamada id_cuarto. Por lo que la columna id_cuarto en la lista del SELECT tiene que ser prefijada con reservaciones. Nota: Las columnas hora_inicio y hora_fin no necesitan ser prefijadas o identificadas ya que están presentes solamente en la tabla Reservaciones. SELECT reservaciones.id_cuarto, hora_inicio, hora_fin FROM reservaciones, cuartos WHERE id_usuario = 37 AND reservaciones.id_cuarto = cuartos.id_cuarto; Paso 4: Probar la consulta. La consulta debe ser probada. Cuando se prueba, la consulta anterior funciona bien. Puesto que el ejercicio era obtener los nombres de los cuartos junto con la ubicación, el nombre del cuarto y la ubicación no fueron incluidos en la cláusula SELECT. Paso 5: Agregar nuevas columnas a la lista SELECT. Finalmente, en esta etapa, las columnas nombre_cuarto y ubicación se agregan a la lista de columnas que se está consultando. SELECT reservaciones.id_cuarto, hora_inicio, hora_fin, cuartos.nombre_cuarto, cuartos.ubicación FROM reservaciones, cuartos WHERE id_usuario = 37 AND reservaciones.id_cuarto = cuartos.id_cuarto; Escribir Subconsultas Una subconsulta (subquery) es una consulta dentro de una consulta. Es una sentencia SELECT anidada dentro de otra sentencia SELECT. En el ejemplo anterior si se tuviera que encontrar los productos comprados por „Bob‟, se puede escribir la siguiente consulta: SELECT articulo FROM relacionventas WHERE idcomprador=(SELECT idpropietario FROM propietarioarticulos WHERE nombre=‟Bob‟); La tabla Relacionventas no contiene el nombre del comprador. Contiene sólo el idcomprador. El nombre del comprador se encuentra en la tabla Propietarioarticulos. En la consulta anterior, la consulta más interna es ejecutada primero, la cual retorna el valor de idcomprador. Luego, este valor es comparado en la cláusula WHERE de la consulta externa para obtener el resultado deseado. El operador „=‟ se puede usar en comparaciones con un solo valor. Si la consulta interna del ejemplo anterior retorna más de un idpropietario, lo cual es muy probable debido a que puede haber más de una persona cuyo nombre sea „Bob‟, entonces la consulta anterior dará como resultado un error SQL de ejecución. En esos casos, se usa el operador IN. SELECT articulo FROM relacionventas WHERE idcomprador IN (SELECT idpropietario FROM propietarioarticulos WHERE nombre=‟Bob‟);
  • 12. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba La consulta anterior obtendrá todos los objetos comprados por personas cuyo nombre sea „Bob‟. Las subconsultas pueden ser anidadas a niveles bastantes profundos. Se pueden escribir dentro de otras subconsultas. El orden de ejecución siempre será desde la subconsulta más interna a la consulta padre más externa. Las subconsultas también se pueden escribir en sentencias UPDATE y DELETE. Por ejemplo, cuando el estado de un pedido efectuado por „Bob‟ tiene que ser actualizado a despachado, se tiene: UPDATE pedidos SET estado=‟Distribuido‟ WHERE idpropietario =(SELECT idpropietario FROM propietarioarticulos WHERE nombre=‟Bob‟); Si todos los pedidos hechos por Bob van a ser eliminados, entonces se escribe la siguiente consulta: DELETE FROM pedidos WHERE idpropietario =(SELECT idpropietario FROM propietarioarticulos WHERE nombre=‟Bob‟); Hay dos tipos de subconsultas: correlacionada y no correlacionada. Todos los ejemplos de subconsultas anteriores son subconsultas no correlacionadas. Subconsulta Correlacionada Se explica con un ejemplo la subconsulta correlacionada. Observe la siguiente sentencia SQL: SELECT articulos.precio_articulo FROM artículos WHERE EXISTS (SELECT nombre_articulo FROM relacionventas WHERE relacionventas.nombre_articulo = articulos.nombre_articulo); La consulta lista los precios de los articulos asociados a las ventas. La consulta anterior contiene dos partes: la consulta padre y la consulta hijo. Las subconsultas correlacionadas son consultas en las cuales la consulta hijo se refiere a la columna de la consulta padre. La consulta padre es: SELECT articulos.precio_articulo FROM artículos WHERE EXISTS; La consulta hijo es: SELECT nombre_articulo FROM relacionventas WHERE relacionventas.nombre_articulo = articulos.nombre_articulo; EXISTS es un operador que evalúa una sentencia SQL. Si la sentencia SQL retorna filas, entonces la sentencia es evaluada como verdadera. Si la sentencia SQL no retorna filas, entonces la sentencia es evaluada como falsa. En el ejemplo anterior, la consulta hija es evaluada por el operador EXISTS. Por cada fila retornada por la consulta padre, la consulta hijo es evaluada. Si la evaluación da como resultado verdadero, entonces se muestra la fila de la consulta padre. Para cada artículo en la tabla articulos, si la tabla relacionventas contiene este artículo, entonces el artículo tiene ventas asociadas con él y se muestra el precio del artículo. En el ejemplo anterior, articulos.nombre_articulo es la columna de la consulta padre que está siendo utilizada por la consulta hijo. Las subconsultas no correlacionadas son ejecutadas una vez por toda la sentencia, mientras que las subconsultas correlacionadas son ejecutadas una vez por cada fila en la consulta padre. Operación de Unión Una operación Unión es una operación de conjunto (SET) que combina los resultados de dos o más consultas, elimina los registros duplicados y presenta el resultado. Consideremos el ejemplo: SELECT noemp,nombreempleado FROM departamentoventas UNION SELECT noemp,nombreempleado FROM departamentomarketing; La consulta anterior busca información de todos los empleados que trabajan para los departamentos de ventas o de marketing. Si un empleado trabaja para ambos departamentos, su nombre se lista sólo una vez. Se eliminan los duplicados. Mientras se usa el operador UNION, las consultas pueden tener solamente columnas que tengan el mismo tipo de datos, y estén mencionadas en el mismo orden. Referencias Bibliográficas IBM Capacitación (2008) Base de Datos I