0% encontró este documento útil (0 votos)
1K vistas40 páginas

Unidad Iii Consultas Avanzadas en Base de Datos

- Sub-Consultas que producen valores escalares - Condiciones que involucran relaciones - Condiciones que involucran TUPLAS - Sub-Consultas en cláusula FROM - Eliminación de duplicados - Agrupación y agregación en SQL - Tipos de datos - Eliminación de tablas - Modificación de relaciones en el esquema - Indices - Selección de Indices - Declaración de claves primarias - UNIQUE - Restricciones sobre claves - Inserción, eliminación y actualización - Declaración, consultas y modificación de vistas.

Cargado por

ESCUELA PRIMARIA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1K vistas40 páginas

Unidad Iii Consultas Avanzadas en Base de Datos

- Sub-Consultas que producen valores escalares - Condiciones que involucran relaciones - Condiciones que involucran TUPLAS - Sub-Consultas en cláusula FROM - Eliminación de duplicados - Agrupación y agregación en SQL - Tipos de datos - Eliminación de tablas - Modificación de relaciones en el esquema - Indices - Selección de Indices - Declaración de claves primarias - UNIQUE - Restricciones sobre claves - Inserción, eliminación y actualización - Declaración, consultas y modificación de vistas.

Cargado por

ESCUELA PRIMARIA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA


UNIVERSIDAD POLITÉCNICA TERRITORIAL DEL ALTO APURE PEDRO CAMEJO
EXTENSIÓN GUASDUALITO
GUASDUALITO, ESTADO APURE

CONSULTAS AVANZADAS EN
BASE DE DATOS

AUTOR:
BERRIOS WUILMER

PROFESORA:
ARAGOZA ROSSANA

UNIDAD CURRICULAR:
MODELADO DE BASE DE DATOS

GUASDUALITO, ABRIL DE 2023


INTRODUCCIÓN

El lenguaje de consultas estructuradas o SQL (Structured Query Language) es un


lenguaje de programación estandarizado que se utiliza para administrar bases de datos
relacionales y realizar diversas operaciones con los datos que contienen. Creado
inicialmente en la década de 1970, SQL es utilizado habitualmente no solo por los
administradores de bases de datos, sino también por los desarrolladores que escriben
scripts de integración de datos y por los analistas de datos que desean configurar y
ejecutar consultas analíticas.
El propósito de la siguiente producción escrita, es desarrollar más a fondo aspectos
que tienen como objetivo primordial conocer sobre las consultas avanzadas en base de
datos, integrando sub consultas que producen valores, condiciones que involucran
relaciones, condiciones que involucran tuplas, sub consultas en clausula FROM,
eliminación de duplicados, agrupación y agregación en SQL, tipos de datos, eliminación
de tablas, modificación de relaciones en el esquema, índices, selección de índices,
declaración de claves primarias, UNIQUE, restricciones sobre claves, inserción,
eliminación y actualización, declaración, consultas y modificación de vistas que son de
gran interés para complementar la información necesaria para aprender.
DESARROLLO

1. CONSULTAS AVANZADAS
La unión de tablas
Esta operación se utiliza cuando tenemos dos tablas con las mismas columnas y
queremos obtener una nueva tabla con las filas de la primera y las filas de la segunda. En
este caso la tabla resultante tiene las mismas columnas que la primera tabla (que son las
mismas que las de la segunda tabla).
Por ejemplo tenemos una tabla de libros nuevos y una tabla de libros antiguos y
queremos una lista con todos los libros que tenemos. En este caso las dos tablas tienen
las mismas columnas, lo único que varía son las filas, además queremos obtener una lista
de libros (las columnas de una de las tablas) con las filas que están tanto en libros nuevos
como las que están en libros antiguos, en este caso utilizaremos este tipo de operación.
Cuando hablamos de tablas pueden ser tablas reales almacenadas en la base de datos o
tablas lógicas (resultados de una consulta), esto nos permite utilizar la operación con más
frecuencia ya que pocas veces tenemos en una base de datos tablas idénticas en cuanto
a columnas. El resultado es siempre una tabla lógica.
Por ejemplo queremos en un sólo listado los productos cuyas existencias sean iguales
a cero y también los productos que aparecen en pedidos del año 90. En este caso
tenemos unos productos en la tabla de productos y los otros en la tabla de pedidos, las
tablas no tienen las mismas columnas no se puede hacer una unión de ellas pero lo que
interesa realmente es el identificador del producto (idfab, idproducto), luego por una parte
sacamos los códigos de los productos con existencias cero (con una consulta), por otra
parte los códigos de los productos que aparecen en pedidos del año 90 (con otra
consulta), y luego unimos estas dos tablas lógicas.
El operador que permite realizar esta operación es el operador UNION.
2. SUB-CONSULTAS ESCALARES
Una subconsulta escalar es una consulta SELECT regular entre paréntesis que
devuelve exactamente un valor: una fila con una columna. La consulta se ejecuta y el
valor devuelto se utiliza en la consulta externa. Si la subconsulta devuelve cero filas, el
valor de la expresión de subconsulta es nulo. Si devuelve más de una fila, Amazon
Redshift devuelve un error. La subconsulta puede referirse a variables de la consulta
principal, que actuarán como constantes durante una invocación de la subconsulta.
Puede usar las subconsultas escalares en la mayoría de instrucciones que requiere
una expresión. Las subconsultas escalares no son expresiones válidas en los siguientes
casos:
 Como valores predeterminados para expresiones
 En cláusulas GROUP BY y HAVING
Ejemplo
La siguiente subconsulta calcula el precio promedio pagado por venta en todo el 2008,
luego la consulta externa utiliza ese valor en el resultado para compararlo con el precio
promedio por venta por trimestre:
select qtr, avg(pricepaid) as avg_saleprice_per_qtr,
(select avg(pricepaid)
from sales join date on sales.dateid=date.dateid
where year = 2008) as avg_saleprice_yearly
from sales join date on sales.dateid=date.dateid
where year = 2008
group by qtr
order by qtr;
qtr | avg_saleprice_per_qtr | avg_saleprice_yearly
-------+-----------------------+----------------------
1 | 647.64 | 642.28
2 | 646.86 | 642.28
3 | 636.79 | 642.28
4 | 638.26 | 642.28
(4 rows)

Las consultas son objetos que vamos a utilizar para visualizar parte de la información
contenida en nuestras bases de datos desde una perspectiva más detallada y más
adaptada a las necesidades concretas a una situación puntual, en contraposición al
contenido total de las tablas de nuestra base de datos.
Se pueden realizar sobre una o varias tablas relacionadas y el resultado que devuelven se
muestran también en forma de tabla.
 SUB-CONSULTAS
Una subconsulta, o una consulta dentro de una consulta, pueden ponerse dentro de la
cláusula WHERE de una consulta. Esto produce una expansión de las capacidades de
una cláusula WHERE.
La consulta que incluye a esta subconsulta se llama consulta externa (outer query) o
consulta principal. La subconsulta puede ejecutarse lógicamente antes de que alguna fila
sea examinada por la consulta principal. En cierto sentido, la subconsulta es
independiente de la consulta principal. Esta podría ejecutarse como una consulta
propiamente dicha. Se dice que esta clase de subconsulta no está correlacionada con la
consulta principal. Las subconsultas pudieran también estar correlacionadas.
Cómo utilizar sub-consultas
Cuando decida utilizar sub-consultas, tenga en cuenta los siguientes hechos e
instrucciones:
• Las sub-consultas se deben incluir entre paréntesis.
• Se pueden utilizar sub-consultas en lugar de una expresión siempre y cuando-se
devuelva un solo valor o una lista de valores.
• Se pueden utilizar sub-consultas que devuelvan un conjunto de registros de varias
columnas en-lugar de una tabla o para realizar la misma función que una combinación.
• No se pueden utilizar subconsultas que recuperen columnas con tipos de datos Text e
image.
• Puede tener subconsultas dentro de subconsultas, con una anidación de hasta 32
niveles. El límite varía según la cantidad de memoria disponible y la complejidad de las
otras expresiones de la consulta. Las consultas individuales pueden no admitir una
anidación de hasta 32 niveles.
3. Sub-Consultas que producen valores escalares:
Un valor escalar puede ser entendido como un valor numérico, aunque también se
consideran escalares los caracteres o las cadenas de caracteres (considerando éstas
como un tipo de datos elemental, no como un vector de caracteres).
Una sub consulta que obtiene exactamente un valor de una columna de una fila es
también llamada sub consulta escalar. El valor de una expresión en una sub consulta
escalar es el valor del elemento de la lista seleccionado de la sub consulta.
Ejemplo: Empleados que ganan más que el promedio de salarios pagados en el
departamento 20.
Subconsultas que producen un valor escalar en la parte más interna.
SELECT nombre, salario
FROM empleado
WHERE salario > (select AVG (salario)
FROM empleado
WHERE dpto. = 20);
Puedo utilizar operadores para comparar escalares.
Ejemplo: =, > , < , etc.

4. Condiciones que involucran relaciones:


ANY. Chequean si alguna fila de la lista resultado de una subconsulta se encuentra el
valor especificado en la condición. Compara un valor escalar con los valores de un campo
y devuelven "true" si la comparación con cada valor de la lista de la subconsulta es
verdadera, sino "false". El tipo de datos que se comparan deben ser compatibles.
ALL: También compara un valor escalar con una serie de valores. Chequea si TODOS
los valores de la lista de la consulta externa se encuentran en la lista de valores devuelta
por la consulta interna.
EXITS: Cuando anidamos sentencias SELECT, todos los operadores lógicos son
válidos. En suma, se puede usar el operador EXISTS. Este operador es frecuentemente
usado en sub consultas relacionales para verificar cuando un valor recuperado por la
consulta externa existe en el conjunto de resultados obtenidos por la consulta interna. Si
la sub consulta obtiene al menos una fila, el operador obtiene el valor TRUE. Si el valor no
existe, se obtiene el valor FALSE. Consecuentemente, NOT EXISTS verifica cuando un
valor recuperado por la consulta externa no es parte del conjunto de resultados obtenidos
por la consulta interna.
Ejemplo: Empleados con salario superior a todos los salarios del departamento 10.
5. Condiciones que involucran tuplas:
En informática, o concretamente en el contexto de una base de datos relacional, un
registro (también llamado fila o tupla) representa un objeto único de datos implícitamente
estructurados en una tabla. En términos simples, una tabla de una base de datos puede
imaginarse formada de filas y columnas o campos. Cada fila de una tabla representa un
conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma
estructura. Las tuplas son estructuras de datos que constan de varios campos que
pueden contener datos de tipos distintos. El acceso al contenido de los campos en las
tuplas se hace utilizando el nombre de los campos en lugar de su posición.
6. Sub-consultas en cláusula FROM

Las subconsultas son legales en la cláusula FROM de un comando SELECT. La


sintaxis que vería es:
SELECT ... FROM (subquery) [AS] name ...
La cláusula [AS] name es obligatoria, ya que cada tabla en la cláusula FROM debe
tener un nombre. Cualquier columna en la lista selecta de la subquery debe tener nombre
único. Puede encontrar esta sintaxis descrita en este manual, dónde se usa el término
“tablas derivadas.”
Asuma que tiene la tabla:

CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);


Aquí se muestra cómo usar una subconsulta en la cláusula FROM usando la tabla de
ejemplo:
INSERT INTO t1 VALUES (1,'1',1.0);
INSERT INTO t1 VALUES (2,'2',2.0);
SELECT sb1,sb2,sb3
FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb
WHERE sb1 > 1;
Resultado: 2, '2', 4.0.
Aquí hay otro ejemplo: suponga que quiere conocer la media de un conjunto de sumas
para una tabla agrupada. Esto no funcionaría:

SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1;


Sin embargo, esta consulta proporciona la información deseada:

SELECT AVG(sum_column1)
FROM (SELECT SUM(column1) AS sum_column1
FROM t1 GROUP BY column1) AS t1;
Tenga en cuenta que el nombre de columna usado dentro de la
subconsultas (sum_column1) se reconoce en la consulta exterior.
Las subconsultas en la cláusula FROM pueden retornar un escalar, columna, registro o
tabla. De momento, las subconsultas en la cláusula FROM no pueden ser subconsultas
corraladas.
Las subconsultas en la cláusula FROM se ejecutan incluso para el
comando EXPLAIN (esto es, se construyen las tablas temporales derivadas). Esto ocurre
porque las consultas de niveles superiores necesitan información acerca de todas las
tablas durante la fase de optimización.
7. Eliminación de duplicados, agrupación y agregación en SQL
Hay dos métodos frecuentes que puede usar para eliminar registros duplicados de una
tabla de SQL Server. Para la demostración, empiece por crear una tabla y datos de
ejemplo:
create table original_table (key_value int )
insert into original_table values (1)
insert into original_table values (1)
insert into original_table values (1)

insert into original_table values (2)


insert into original_table values (2)
insert into original_table values (2)
insert into original_table values (2)
A continuación, pruebe los métodos siguientes para quitar las filas duplicadas de la
tabla.
Método 1
Ejecute el siguiente script:
SELECT DISTINCT *
INTO duplicate_table
FROM original_table
GROUP BY key_value
HAVING COUNT(key_value) > 1

DELETE original_table
WHERE key_value
IN (SELECT key_value
FROM duplicate_table)

INSERT original_table
SELECT *
FROM duplicate_table

DROP TABLE duplicate_table


El script lleva a cabo las siguientes acciones en el orden que se especifica:
 Mueve una instancia de cualquier fila duplicada de la tabla original a una tabla
duplicada.
 Elimina todas las filas de la tabla original que también se encuentran en la tabla
duplicada.
 Mueve las filas de la tabla duplicada a la tabla original.
 Elimina la tabla duplicada.
Este método es sencillo. Sin embargo, requiere que tenga suficiente espacio disponible
en la base de datos para crear temporalmente la tabla duplicada. Este método también
genera sobrecarga porque se mueven los datos.
Además, si la tabla tiene una columna IDENTITY, tendría que usar SET
IDENTITY_INSERT ON al restaurar los datos en la tabla original.
Método 2
La función ROW_NUMBER que se introdujo en Microsoft SQL Server 2005 hace que
esta operación sea mucho más sencilla:
DELETE T
FROM
(
SELECT *
, DupRank = ROW_NUMBER() OVER (
PARTITION BY key_value
ORDER BY (SELECT NULL)
)
FROM original_table
) AS T
WHERE DupRank > 1
El script lleva a cabo las siguientes acciones en el orden que se especifica:
 Usa la función ROW_NUMBER para particionar los datos en función
del key_value, que puede ser una o varias columnas separadas por comas.
 Elimina todos los registros que recibieron un valor DupRank mayor que 1. Este
valor especifica que los registros son duplicados.
Debido a la expresión (SELECT NULL), el script no ordena los datos con particiones en
función de ninguna condición. Si la lógica para eliminar duplicados requiere elegir qué
registros eliminar y qué mantener en función del orden de otras columnas, puede usar la
expresión ORDER BY para hacerlo.
 Funciones de agregación:
Las funciones de agregación en SQL nos permiten efectuar operaciones sobre un
conjunto de resultados, pero devolviendo un único valor agregado para todos ellos. Es
decir, nos permiten obtener medias, máximos, etc... sobre un conjunto de valores.
Las funciones de agregación básicas que soportan todos los gestores de datos son las
siguientes:

o COUNT: devuelve el número total de filas seleccionadas por la consulta.


o MIN: devuelve el valor mínimo del campo que especifiquemos.
o MAX: devuelve el valor máximo del campo que especifiquemos.
o SUM: suma los valores del campo que especifiquemos. Sólo se puede
utilizar en columnas numéricas.
o AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se
puede utilizar en columnas numéricas.
 Todas estas funciones se aplican a una sola columna, que especificaremos entre
paréntesis, excepto la función COUNT, que se puede aplicar a una columna o
indicar un “*”. La diferencia entre poner el nombre de una columna o un “*”, es que
en el primer caso no cuenta los valores nulos para dicha columna, y en el segundo
si.
 Así, por ejemplo, si queremos obtener algunos datos agregados de la tabla de
pedidos de la base de datos de ejemplo Northwind, podemos escribir una consulta
simple como la siguiente:

 SELECT COUNT(*) AS TotalFilas, COUNT(ShipRegion) AS FilasNoNulas,

 MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax,

 SUM(Freight) AS PesoTotal, AVG(Freight) PesoPromedio


 FROM Orders

 y obtendríamos el siguiente resultado en el entorno de pruebas:

De esta manera sabremos que existen en total 830 pedidos en la base de datos, 323
registros que tienen asignada una zona de entrega, la fecha del pedido más antiguo (el 10
de julio de 1996), la fecha del pedido más reciente (el 6 de mayo de 1998 ¡los datos de
ejemplo son muy antiguos!), el total de peso enviado entre todos los pedidos (64.942,69
Kg o sea, más de 64 toneladas) y el peso promedio de los envíos (78,2442Kg). No está
mal para una consulta tan simple.
Como podemos observar del resultado de la consulta anterior, las funciones de
agregación devuelven una sola fila, salvo que vayan unidas a la cláusula GROUP BY, que
veremos a continuación.
 Funciones de agrupación
o La cláusula GROUP BY unida a un SELECT permite agrupar filas según
las columnas que se indiquen como parámetros, y se suele utilizar en
conjunto con las funciones de agrupación, para obtener datos resumidos
y agrupados por las columnas que se necesiten.
o Hemos visto en el ejemplo anterior que obteníamos sólo una fila con los
datos indicados correspondientes a toda la tabla. Ahora vamos a ver con
otro ejemplo cómo obtener datos correspondientes a diversos grupos de
filas, concretamente agrupados por cada empleado:
 SELECT EmployeeID, COUNT(*) AS TotalPedidos, COUNT(ShipRegion) AS
FilasNoNulas,
 MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax,
 SUM(Freight) PesoTotal, AVG(Freight) PesoPromedio
 FROM Orders
 GROUP BY EmployeeID

En este caso obtenemos los mismos datos pero agrupándolos por empleado, de modo
que para cada empleado de la base de datos sabemos cuántos pedidos ha realizado,
cuándo fue el primero y el último, etc...

De hecho nos resultaría muy fácil cruzarla con la tabla de empleados, usando lo
aprendido sobre consultas multi-tabla, y que se devolvieran los mismos resultados con el
nombre y los apellidos de cada empleado:
En este caso fíjate en cómo hemos usado la expresión Employees.FirstName + ' '
+Employees.LastName como parámetro en GROUP BY para que nos agrupe por un
campo compuesto (en SQL Server no podemos usar alias de campos para las
agrupaciones). De esta forma tenemos casi un informe preparado con una simple
consulta de agregación.
La cláusula GROUP BY se puede utilizar con más de un campo al mismo tiempo. Si
indicamos más de un campo como parámetro nos devolverá la información agrupada por
los registros que tengan el mismo valor en los campos indicados.
Por ejemplo, si queremos conocer la cantidad de pedidos que cada empleado ha
enviado a través de cada transportista, podemos escribir una consulta como la siguiente:

SELECT Employees.FirstName + ' ' + Employees.LastName AS Empleado,

Shippers.CompanyName AS Transportista,

COUNT(Orders.OrderID)AS NumPedidos

FROM Orders INNER JOIN Shippers ON Orders.ShipVia = Shippers.ShipperID

INNER JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID


GROUP BY Employees.FirstName + ' ' + Employees.LastName,
Shippers.CompanyName

Con el siguiente resultado:

Así, sabremos que Andrew Fuller envió 25 pedidos con Federal Shipping, y 35 con
Federal Express.
El utilizar la cláusula GROUP BY no garantiza que los datos se devuelvan
ordenados. Suele ser una práctica recomendable incluir una cláusula ORDER BY por
las mismas columnas que utilicemos en GROUP BY, especificando el orden que nos
interese. Por ejemplo, en el caso anterior
Existe una cláusula especial, parecida a la WHERE que ya conocemos que nos
permite especificar las condiciones de filtro para los diferentes grupos de filas que
devuelven estas consultas agregadas. Esta cláusula es HAVING.
Por ejemplo, si queremos repetir la consulta de pedidos por empleado de hace
un rato, pero obteniendo solamente aquellos que hayan enviado más de 5.000 Kg
de producto, y ordenados por el nombre del empleado, la consulta sería muy
sencilla usando HAVING y ORDER BY:
 SELECT Employees.FirstName + ' ' + Employees.LastName AS Empleado,
COUNT(*) AS TotalPedidos,
 COUNT(ShipRegion) AS FilasNoNulas,
 MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax,
 SUM(Freight) PesoTotal, AVG(Freight) PesoPromedio
 FROM Orders INNER JOIN Employees ON Orders.EmployeeID =
Employees.EmployeeID
 GROUP BY Employees.FirstName + ' ' + Employees.LastName
 HAVING SUM(Freight) > 5000
 ORDER BY Employees.FirstName + ' ' + Employees.LastName ASC
Ahora obtenemos los resultados agrupados por empleado también, pero solo aquellos
que cumplan la condición indicada (o condiciones indicadas, pues se pueden combinar).
Antes nos salían 9 empleados, y ahora solo 6 pues hay 3 cuyos envíos totales son muy
pequeños:
8. Tipos de datos. Eliminación de tablas, modificación de relaciones en el esquema
 Tipos de datos
Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores
puede tomar), qué operaciones se le pueden aplicar y cómo es representado
internamente por el computador.
Todos los valores que aparecen en un programa tienen un tipo.
A continuación revisaremos los tipos de datos elementales de Python. Además de
éstos, existen muchos otros, y más adelante aprenderemos a crear nuestros propios tipos
de datos.
 Números enteros
El tipo int (del inglés integer, que significa «entero») permite representar números
enteros.
Los valores que puede tomar un int son todos los números enteros: ... -3, -2, -
1, 0, 1, 2, 3, ...
Los números enteros literales se escriben con un signo opcional seguido por una
secuencia de dígitos:

1570
+4591
-12
- Números reales

El tipo float permite representar números reales.


El nombre float viene del término punto flotante, que es la manera en que el
computador representa internamente los números reales.
Hay que tener mucho cuidado, porque los números reales no se pueden representar de
manera exacta en un computador. Por ejemplo, el número decimal 0.7 es representado
internamente por el computador mediante la aproximación 0.69999999999999996. Todas
las operaciones entre valores float son aproximaciones. Esto puede conducir a resultados
algo sorpresivos:

>>> 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7


0.9999999999999998
Los números reales literales se escriben separando la parte entera de la decimal con
un punto. Las partes entera y decimal pueden ser omitidas si alguna de ellas es cero:

>>> 881.9843000
881.9843
>>> -3.14159
-3.14159
>>> 1024.
1024.0
>>> .22
0.22

Otra representación es la notación científica, en la que se escribe un factor y una


potencia de diez separados por una letra e. Por ejemplo:

>>> -2.45E4
-24500.0
>>> 7e-2
0.07
>>> 6.02e23
6.02e+23
>>> 9.1094E-31
9.1094e-31

Los dos últimos valores del ejemplo son iguales, respectivamente, a \(6.02\times
10^{23}\) (la constante de Avogadro) y \(9.1094\times 10^{-31}\) (la masa del electrón).
 Números complejos
El tipo complex permite representar números complejos.
Los números complejos tienen una parte real y una imaginaria. La parte imaginaria es
denotada agregando una j inmediatamente después de su valor:

3 + 9j
-1.4 + 2.7j
- Valores lógicos
Los valores lógicos True y False (verdadero y falso) son de tipo bool, que representa
valores lógicos.
El nombre bool viene del matemático George Boole, quien creó un sistema algebraico
para la lógica binaria. Por lo mismo, a True y False también se les llama valores
booleanos. El nombre no es muy intuitivo, pero es el que se usa en informática, así que
hay que conocerlo.
 Texto
A los valores que representan texto se les llama strings, y tienen el tipo str.
Los strings literales pueden ser representados con texto entre comillas simples o
comillas dobles:

"ejemplo 1"
'ejemplo 2'

La ventaja de tener dos tipos de comillas es que se puede usar uno de ellos cuando el
otro aparece como parte del texto:

"Let's go!"
'Ella dijo "hola"'

Es importante entender que los strings no son lo mismo que los valores que en él
pueden estar representados:

>>> 5 == '5'
False
>>> True == 'True'
False

Los strings que difieren en mayúsculas y minúsculas, o en espacios también son


distintos:

>>> 'mesa' == 'Mesa'


False
>>> ' mesa' == 'mesa '
False

 Nulo
Existe un valor llamado None (en inglés, «ninguno») que es utilizado para representar
casos en que ningún valor es válido, o para indicar que una variable todavía no tiene un
valor que tenga sentido.
El valor None tiene su propio tipo, llamado NoneType, que es diferente al de todos los
demás valores.
 Eliminación de tablas

Importante: Cuando se quita una relación, también se quita la integridad referencial


para esa relación si está habilitada. Por consiguiente, Access ya no impide
automáticamente la creación de registros huérfanos en el lado "varios" de una relación.

Para quitar una relación de tabla, es preciso eliminar la línea de relación en la ventana
Relaciones. Coloque el cursor de modo que apunte a la línea de relación y, a
continuación, haga clic en la línea. La línea de relación aparece con mayor grosor cuando
está seleccionada. Con la línea de relación seleccionada, presione SUPRIMIR.

1. En la pestaña Herramientas de base de datos, en el grupo Relaciones, haga clic


en Relaciones.
2. En la pestaña Diseño, en el grupo Relaciones, haga clic en Todas las relaciones.

Se muestran todas las tablas con relaciones y las líneas de relación. Observe que no
se muestran las tablas ocultas (tablas con la casilla de verificación Oculto activada en
el cuadro de diálogo Propiedades de la tabla) ni sus relaciones, a menos que esté
seleccionada la opción Mostrar objetos ocultos en el cuadro de diálogo Opciones de
exploración.
3. Haga clic en la línea de relación correspondiente a la relación que desee eliminar. La
línea de relación aparece con mayor grosor cuando está seleccionada.
4. Presione la tecla SUPR.
5. Puede que Access muestre el mensaje ¿Confirma que desea eliminar de forma
permanente la relación seleccionada de la base de datos?. Si aparece este mensaje
de confirmación, haga clic en Sí.

Nota: Si alguna de las tablas empleadas en la relación de tabla están en uso, quizás
por parte de otra persona u otro proceso, o bien, en un objeto de base de datos abierto
como puede ser un formulario, no se podrá eliminar la relación. Es preciso cerrar todos los
objetos abiertos que usen estas tablas para poder quitar la relación.

 Modificación de relaciones en el esquema

Al modificar un esquema debe completar varias tareas para garantizar que los cambios
se validen, se guarden y se apliquen a la base de datos de usuario.
Procedimiento
Para modificar un esquema y activar las modificaciones, o bien para crear un nuevo
esquema:
1. Iniciar el Diseñador.
2. Cree una base de datos de prueba (o varias bases de datos de prueba) en el
esquema que desea personalizar.
3. Extraiga el esquema que desea personalizar o cree un nuevo esquema.
4. Modifique el esquema, bien utilizando el Diseñador para cambiar elementos del
esquema, bien aplicando paquetes.
5. Valide el esquema personalizado por medio del mandato de validación de
esquemas del Diseñador.
6. Cree una configuración de prueba que especifique la base de datos de prueba (o
las varias bases de datos) para el esquema.
7. Ejecute la configuración de prueba y vuelva a probar el esquema frente a las
bases de datos especificadas.
8. Guarde el trabajo en curso.
9. Incorpore el esquema personalizado.
10. Actualice la base de datos de usuario con el esquema modificado.

9. Índices, selección de índices

Cuando está transformando elementos de matriz en Editor de correlaciones de datos


gráficas, puede utilizar la página Cardinalidad de la vista de propiedades para
seleccionar los índices de los elementos de entrada que desea que la transformación
opere.
Cuando se restringen los índices de una matriz de entrada, se reduce el número de
índices que procesa la transformación. Así se mejora el rendimiento. Para especificar los
índices, especifique un valor en el campo Índices de matriz de entrada de la página de
propiedades Cardinalidad para la transformación. En la tabla siguiente se muestran
algunos ejemplos de los valores que puede especificar:

Los índices se basan en 1, lo que significa que se hace referencia al primer elemento
de la matriz como 1, al segundo elemento como 2, etc. Si la cardinalidad se deja en
blanco para una matriz especificada, se toman todos los índices. Si tiene varios niveles de
elementos de matriz anidados, los campos de cardinalidad en blanco implican que se
toman todos los índices. Por lo tanto, si el elemento de entrada a una transformación
esA/B[]/C[], dondeByCson matrices sin índices especificados, se toman todos los índices.
Esto significa que se obtienen todas las C parte de B[1], todas las C parte de B[2], todas
las C parte de B[3], etc.
10. Declaración de claves primarias. UNIQUE. Restricciones sobre claves
Una clave primaria es la columna o colección de columnas que identifican de forma
única a una fila determinada en una tabla. La clave primaria proporciona una forma
importante de distinguir una fila de otra. Subrayar las columnas o la colección de
columnas que componen la clave primaria usualmente es la mejor forma de representar la
clave primaria de cada tabla de la base de datos.
Existen tres tipos de claves primarias; una clave natural es una clave primaria
compuesta de una columna que identifica de forma única a una entidad, por ejemplo el
número de seguridad social de una persona o el número de identificación vehicular (VIN,
Vehicle Identification Number en inglés) de un vehículo. Una clave artificial es una
columna creada para una entidad con el propósito de servir únicamente como clave
primaria y es visible para los usuarios. Además, una clave subrogada es una clave
primaria generada por el sistema, usualmente un tipo de datos numerado
automáticamente que suele estar escondido del usuario.
 Reglas de integridad: Es necesario el cumplimiento de dos reglas muy importantes
en un sistema de administración de bases de datos relacionales, que son la
integridad de entidad y la integridad referencial. La integridad de identidad indica
que ningún campo elegido para ser parte de la clave primaria puede aceptar una
valor nulo. Una valor nulo es un campo que contiene un valor "desconocido" o
"inaplicable". La integridad referencial es un concepto de las bases de datos que
asegura que la relación entre las tablas de las mismas permanezcan consistentes
y que los datos introducidos sean verdaderamente válidos y que estén intactos. La
unión de la clave primaria y la foránea evita que se introduzcan datos
inconsistentes en el sistema de administración de bases de datos relaciones y por
lo tanto que pueda aplicarse la integridad referencial.
 Claves foráneas: Una clave foránea es un campo o colección de campos de una
tabla cuyos valores deben coincidir con los valores de la clava primaria de una
segunda tabla.
 Clave candidata: Similar a una clave primaria, una clave candidata es la columna o
colección de columnas en la que todas las columnas de la tabla son
funcionalmente dependientes. Es típico hacer referencia a una clave candidata
como clave alterna cuando no se ha elegido como primaria.
 Lenguaje de diseño de base de datos: El lenguaje de diseño de bases de datos
(DBDL, del inglés Database Design Language) es un método para mostrar tablas y
claves. Sigue la ilustración mostrada al definir las tablas y las claves. Toma en
cuenta que la clave primaria está subrayada, la clave alterna está etiquetada como
AK, la clave secundaria está etiquetada como SK y la clave foránea como FK.
Employees (EmployeeNum, LastName, FirstName, Street, City, State, Zip,
SocSecNumber, DepartmentNum) AK SocSecNumber SK LastName FK DepartmentNum
> Department
UNIQUE
La restricción UNIQUE en SQL se utiliza para garantizar que no se inserten valores
duplicados en una columna específica o combinación de columnas que participen en la
restricción UNIQUE y no formen parte de la CLAVE PRIMARIA. En otras palabras, el
índice que se crea automáticamente cuando define una restricción ÚNICA garantizará que
no haya dos filas en esa tabla que puedan tener el mismo valor para las columnas que
participan en ese índice, con la capacidad de insertar solo un valor NULL único en estos
columnas, esto si la columna permite NULL.
Creemos una pequeña tabla con dos columnas, ID y Nombre. La columna de ID no
puede contener valores duplicados debido a la restricción ÚNICA especificada con la
definición de columna. No hay restricciones definidas en la columna Nombre, como en la
siguiente instrucción CREATE TABLE T-SQL:
USE SQLShackDemo
GO
CREATE TABLE ConstraintDemo2
(
ID INT UNIQUE,
Name VARCHAR(50) NULL
)
Si intentamos ejecutar las cuatro instrucciones INSERT a continuación:
INSERT INTO ConstraintDemo2 ([ID],[NAME]) VALUES (1,'Ali')
GO
INSERT INTO ConstraintDemo2 ([ID],[NAME]) VALUES (2,'Ali')
GO
INSERT INTO ConstraintDemo2 ([ID],[NAME]) VALUES (NULL,'Adel')
GO
INSERT INTO ConstraintDemo2 ([ID],[NAME]) VALUES (1,'Faris')
GO
Los dos primeros registros se insertarán correctamente, sin las restricciones que
impidan los valores duplicados de la columna Nombre. El tercer registro también se
insertará correctamente, ya que la única columna de ID solo permite un valor NULL. La
última instrucción INSERT fallará, ya que la columna ID no permite valores duplicados y el
valor ID proporcionado ya está insertado en esa columna, como se muestra en el mensaje
de error a continuación:

Las tres filas insertadas serán las que se muestran a continuación:

El objeto del sistema INFORMATION_SCHEMA.TABLE_CONSTRAINTS puede ser


usado fácilmente para recuperar información sobre todas las restricciones definidas en
una tabla específica utilizando el script T-SQL a continuación:
SELECT CONSTRAINT_NAME,
TABLE_SCHEMA ,
TABLE_NAME,
CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='ConstraintDemo2'
El resultado de la consulta anterior nos mostrará la restricción UNIQUE definida en
SQL en la tabla proporcionada, que será como:

Usando el nombre de restricción recuperado del objeto del sistema


INFORMATION_SCHEMA.TABLE_CONSTRAINTS, podemos eliminar la restricción
ÚNICA usando ALTER TABLE… DROP CONSTRAINT en el comando SQL T-SQL a
continuación:
ALTER TABLE ConstraintDemo2 DROP CONSTRAINT
[UQ__Constrai__3214EC26B928E528]
Si usted previamente intenta ejecutar la instrucción INSERT fallida anteriormente, el
registro con el valor de ID duplicado se insertará correctamente:

Intentando agregar la restricción ÚNICA en SQL nuevamente usando ALTER TABLE…


ADD CONSTRAINT Comando T-SQL a continuación:
ALTER TABLE ConstraintDemo2 ADD CONSTRAINT UQ__Constrai UNIQUE (ID)
GO
La restricción en la creación de SQL fallará debido a que tiene valores duplicados de esa
columna en la tabla, tal como se muestra en el mensaje de error a continuación:

Verificando los datos insertados, vemos que los valores duplicados serán claros como se
muestra a continuación:
Para añadir la restricción ÚNICA, se tiene la opción de eliminar o modificar los valores
duplicados. En nuestro caso, actualizaremos el segundo valor de ID duplicado usando la
siguiente instrucción de ACTUALIZAR:
UPDATE [SQLShackDemo].[dbo].[ConstraintDemo2] SET ID =3 WHERE
NAME='FARIS'
Ahora, la restricción UNIQUE en SQL se puede agregar sin error a la columna ID como
se ve líneas abajo:

La clave ÚNICA se puede ver utilizando SQL Server Management Studio, expandiendo
el nodo de las Claves debajo de la tabla seleccionada. Usted también puede ver el índice
creado automáticamente que se utiliza para garantizar la unicidad de los valores de
columna. Tenga en cuenta que no podrá eliminar ese índice sin eliminar primero la
restricción ÚNICA:

Además de que previamente los comandos T-SQL mostrados anteriormente, la


restricción UNIQUE también se puede definir y modificar utilizando SQL Server
Management Studio. Haga clic en el botón derecho en la tabla necesaria y elija Diseño.
Desde la ventana Diseño, haga clic con el botón derecho en esa ventana y elija
Índices/Teclas, desde donde se puede marcar la restricción como ÚNICA, como se
muestra a continuación:
Restricciones sobre claves
La restricción PRIMARY KEY consta de una columna o varias columnas con valores
que identifican de forma única cada fila de la tabla.
La restricción PRIMARY KEY de SQL se combina entre las restricciones UNIQUE y
SQL NOT NULL, donde la columna o el conjunto de columnas que participan en
PRIMARY KEY no pueden aceptar el valor NULL. Si la CLAVE PRIMARIA se define en
varias columnas, entonces se puede insertar valores duplicados en cada columna
individualmente, pero es importante mencionar que los valores de combinación de todas
las columnas de CLAVE PRIMARIA deben ser únicos. Tenga en cuenta que solo puede
definir una CLAVE PRIMARIA por cada tabla, y se recomienda utilizar columnas
pequeñas o INT en la CLAVE PRIMARIA.
Además de proporcionar un acceso rápido a los datos de la tabla, el índice que se crea
automáticamente, al definir la CLAVE PRIMARIA de SQL, impondrá cualidad de la
unicidad de los datos. La CLAVE PRIMARIA se usa principalmente para imponer la
integridad de la entidad de la tabla. La integridad de la entidad garantiza que cada fila de
la tabla sea de forma única una entidad identificable.
Se puede advertir que La restricción PRIMARY KEY difiere de la restricción UNIQUE
en eso; usted puede crear múltiples restricciones ÚNICAS en una tabla, con la capacidad
de definir solo una CLAVE PRIMARIA SQL por cada tabla. Otra diferencia es que la
restricción UNIQUE permite un valor NULL, pero la PRIMARY KEY no permite valores
NULL.
Supongamos que tenemos la siguiente tabla simple con dos columnas; la identificación
y el nombre. La columna de ID se define como una CLAVE PRIMARIA para esa tabla, la
que se utiliza para identificar cada fila en esa tabla de tal forma asegurando que no se
inserten valores NULL o duplicados en esa columna de ID. La tabla se define usando el
script CREATE TABLE T-SQL a continuación:
USE SQLShackDemo
GO
CREATE TABLE ConstraintDemo3
(
ID INT PRIMARY KEY,
Name VARCHAR(50) NULL
)

Si intenta ejecutar las tres instrucciones INSERT a continuación:

2 INSERT INTO ConstraintDemo3 ([ID],[NAME]) VALUES (1,'John')

3 GO

4 INSERT INTO ConstraintDemo3 ([NAME]) VALUES ('Fadi')

5 GO

6 INSERT INTO ConstraintDemo3 ([ID],[NAME]) VALUES (1,'Saeed')

7 GO

Usted Verá que el primer registro se insertará exitosamente y correctamente ya que los
valores de ID y Nombre son válidos. La segunda operación de inserción fallará, ya que la
columna ID es obligatoria y no puede ser NULL, ya que la columna ID es la CLAVE
PRIMARIA SQL. La última instrucción INSERT también fallará ya que el valor de ID
proporcionado ya existe y los valores duplicados ya no están permitidos en la CLAVE
PRIMARIA, tal como se muestra en el siguiente mensaje de error:

Verificando los valores insertados, usted verá que solo el primer registro se inserta
correctamente como se muestra a continuación:

Si usted no proporciona la restricción CLAVE PRIMARIA de SQL con un nombre


durante la definición de la tabla, el motor de SQL Server será quien le proporcionará un
nombre único como puede ver al consultar el objeto del sistema
INFORMATION_SCHEMA.TABLE_CONSTRAINTS a continuación:

2 SELECT CONSTRAINT_NAME,

3 TABLE_SCHEMA ,

4 TABLE_NAME,

5 CONSTRAINT_TYPE

6 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS

7 WHERE TABLE_NAME='ConstraintDemo3'

8
Con el siguiente resultado en nuestro ejemplo:
ALTER TABLE ConstraintDemo3
DROP CONSTRAINT PK__Constrai__3214EC27E0BEB1C4;

Si usted intenta ejecutar las anteriormente fallidas instrucciones INSERT, verá que el
primer registro no se insertará ya que la columna ID no permite valores NULL. El segundo
registro se insertará con éxito, ya que esto no impide que los valores duplicados se
inserten después de cargar la CLAVE PRIMARIA de SQL, como se muestra a
continuación:

Intentando nuevamente añadir la restricción CLAVE PRIMARIA SQL usando la


consulta ALTER TABLE T-SQL a continuación se tiene que:

2 ALTER TABLE ConstraintDemo3

3 ADD PRIMARY KEY (ID);

La operación fallará, ya que al verificar primero los valores de ID existentes para


cualquier valor NULL o duplicado, SQL Server encuentra un valor de ID duplicado de 1
como se muestra en el siguiente mensaje de error:
Al verificar los datos de la tabla, también se mostrará el valor duplicado:

Para agregar la restricción PRIMARY KEY, lo primero que debemos hacer es borrar los
datos, eliminando o modificando el registro duplicado. Aquí cambiaremos el segundo valor
de ID de registro usando la instrucción siguiente de ACTUALIZAR:

2 UPDATE ConstraintDemo3 SET ID =2 WHERE NAME ='Saeed'

Luego, intente añadir la CLAVE PRIMARIA de SQL, que ahora se creará con éxito:
La restricción CLAVE PRIMARIA de SQL también se puede definir y modificar
mediante SQL Server Management Studio. Haga clic en el botón derecho en su tabla y
luego elija Diseño. Desde la ventana Diseño, haga clic con el botón derecho en la
columna o conjunto de columnas que participarán en la restricción PRIMARY KEY y en la
opción Establecer PRIMARY KEY, lo que desmarcará automáticamente la casilla de
verificación Permitir NULL, como se muestra a continuación:

11. Inserción, eliminación, actualización


El conjunto genérico de acciones necesarias para realizar una operación en SQL
Server mediante un cliente WCF implica un conjunto de tareas descritas en Información
general del modelo de servicio WCF con el adaptador de SQL. En esta sección se
describe cómo crear un cliente WCF para invocar operaciones básicas de inserción,
selección, actualización y eliminación en una tabla.
Para crear un cliente WCF para realizar operaciones en tablas

1. Cree un proyecto de Visual C# en Visual Studio. Para este tema, cree una
aplicación de consola.
2. Genere la clase de cliente WCF para la operación Insert, Select, Update y Delete en
la tabla Employee. Para obtener más información sobre cómo generar una clase de
cliente WCF, vea Generar un cliente WCF o un contrato de servicio WCF para SQL
Server Artifacts.
3. En la Explorador de soluciones, agregue una referencia
a Microsoft.Adapters.Sql y Microsoft.ServiceModel.Channels.
4. Abra el archivo Program.cs y cree un cliente como se describe en el fragmento de
código siguiente.

TableOp_dbo_EmployeeClient client = new


TableOp_dbo_EmployeeClient("SqlAdapterBinding_TableOp_dbo_Employee");
client.ClientCredentials.UserName.UserName = "<Enter user name here>";
client.ClientCredentials.UserName.Password = "<Enter password here>";
En este fragmento de código, TableOp_dbo_EmployeeClient es el cliente WCF definido
en SqlAdapterBindingClient.cs. Este archivo se genera mediante el complemento Agregar
referencia de servicio del adaptador. SqlAdapterBinding_TableOp_dbo_Employee es el
nombre de la configuración del punto de conexión de cliente y se define en el app.config.
Este archivo también lo genera el complemento Agregar referencia de servicio de
adaptador y contiene las propiedades de enlace y otras opciones de configuración.
5. Abra el cliente como se describe en el fragmento de código siguiente:
try
{
Console.WriteLine("Opening Client...");
client.Open();
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
throw;
}
6. Invoque la operación Insert en la tabla Employee.
long[] recordsInserted;

schemas.microsoft.com.Sql._2008._05.Types.Tables.dbo.Employee[] insertRecord =
new schemas.microsoft.com.Sql._2008._05.Types.Tables.dbo.Employee[1];
insertRecord[0] = new
schemas.microsoft.com.Sql._2008._05.Types.Tables.dbo.Employee();
insertRecord[0].Name = "John Smith";
insertRecord[0].Designation = "Manager";
insertRecord[0].Salary = 500000;
try
{
Console.WriteLine("Inserting new table entry...");
recordsInserted = client.Insert(insertRecord);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
throw;
}
Console.WriteLine("Record inserted");
Console.WriteLine("Press any key to continue ...");
Console.ReadLine();
También puede reemplazar el fragmento de código anterior para realizar las
operaciones Select, Update o Delete. También puede anexar los fragmentos de código
para realizar todas las operaciones en una sola aplicación. Para fragmentos de código
sobre cómo realizar estas operaciones.

7. Cierre el cliente como se describe en el fragmento de código siguiente:

client.Close();
Console.WriteLine("Press any key to exit...");
Console.ReadLine();

8. Compile el proyecto y, a continuación, ejecute el proyecto. La aplicación inserta un


registro en la tabla Employee.

Operación de actualización

El código siguiente muestra una operación update que tiene como destino la tabla
Employee.

int result;

schemas.microsoft.com.Sql._2008._05.TableOp.dbo.Employee.RowPair
updateRecordPair =
new schemas.microsoft.com.Sql._2008._05.TableOp.dbo.Employee.RowPair();

schemas.microsoft.com.Sql._2008._05.Types.Tables.dbo.Employee updateRecord =
new schemas.microsoft.com.Sql._2008._05.Types.Tables.dbo.Employee();
schemas.microsoft.com.Sql._2008._05.TableOp.dbo.Employee.RowPair[] updateArray
=
new schemas.microsoft.com.Sql._2008._05.TableOp.dbo.Employee.RowPair[1];

updateRecord = insertRecord[0];
updateRecord.Name = "Jeff Smith";

updateRecordPair.After = updateRecord;
updateRecordPair.Before = selectRecords[0];

updateArray[0] = updateRecordPair;

try
{
Console.WriteLine("Updating the database...");
result = client.Update(updateArray);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
throw;
}
Console.WriteLine("Updated Record for {0}", updateRecordPair.Before.Name);
Console.WriteLine("The new name for the employee is {0}",
updateRecordPair.After.Name);
Console.WriteLine("Press any key to continue ...");
Console.ReadLine();

Operación de eliminación

El código siguiente muestra una operación Delete que tiene como destino la tabla
Employee.

int deleteSuccess;
schemas.microsoft.com.Sql._2008._05.Types.Tables.dbo.Employee[] deleteRecords
=
new schemas.microsoft.com.Sql._2008._05.Types.Tables.dbo.Employee[1];
deleteRecords = client.Select("*", "where [Employee_ID] = (select
IDENT_CURRENT('Employee'))");
Console.WriteLine("Following employees will be deleted from the database:");
for (int i = 0; i < deleteRecords.Length; i++)
{
Console.WriteLine("Name: {0}", deleteRecords[i].Name);
}
Console.WriteLine("Press any key to begin deletion...");
Console.ReadLine();
try
{
Console.WriteLine("Deleting employee record...");
deleteSuccess = client.Delete(deleteRecords);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
throw;
}
12. Declaración, consultas y modificación de vistas
Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés)
es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a
los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados
por el modelo de datos adecuado. El lenguaje de manipulación de datos más popular hoy
día es SQL, usado para recuperar y manipular datos en una base de datos relacional.
Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.
1- INSERT

Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en
una base de datos relacional.
Ejemplo 1 (inserto valores alumno pepe en la materia spd2 a la tabla cursada):

INSERT INTO ''cursada'' (''alumno'', ''materia'') VALUES (''pepe'', ''spd2'')

2- UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto
de registros existentes en una tabla.
Ejemplo 1 (modifico la materia donde el alumno sea pepe):

UPDATE ''cursada'' SET ''materia''= ''spd3'' WHERE ''alumno''= ''pepe''

3- DELETE

Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.

Ejemplo 1 (borro todos los valores de las columnas alumno y materia donde la materia
sea spd2):

DELETE FROM ''cursada'' WHERE ''materia''= ''spd2''


CONCLUSIÓN

Después de haber realizado la práctica anterior sobre la implementación de consultas


avanzadas en SQL Server, para concluir, puedo decir primeramente que para realizar
consultas sobre las tablas de las bases de datos disponemos de la instrucción SELECT.
Con ella podemos consultar una o varias tablas. Es sin duda “el comando más usado
del lenguaje SQL”.
Como se investigó, existen muchas formas asociadas a la sentencia SELECT (GROUP
BY, ORDER, HAVING, UNION). También es una de las instrucciones en la que con más
frecuencia los motores de bases de datos incorporan.
En ésta práctica, como se pudo notar, se estuvo manejando consultas simples y
avanzadas, las cuales estaban basadas en una sola tabla, y en otras ocasiones en varias
tablas. Tuvimos el conocimiento de cómo obtener filas y columnas de una tabla en el
orden en que nos solicitaron.
El resultado de una consulta SELECT nos devuelve una tabla lógica. Es decir, los
resultados son una relación de datos, que tiene filas/registros, con una serie de
campos/columnas. Igual que cualquier tabla de la base de datos. Sin embargo esta tabla
está en memoria (temporal) mientras la utilicemos, y luego se descarta. Cada vez que
ejecutamos la consulta se vuelve a calcular el resultado.
Hablando un poco sobre los comandos que se aprendieron a manejar en la Base de
Datos son las siguientes (solo por mencionar algunos):
SELECT: Permite seleccionar las columnas que se van a mostrar y en el orden en que
lo van a hacer. Simplemente es la instrucción que la base de datos interpreta como que
vamos a solicitar información.
ALL / DISTINCT: ALL es el valor predeterminado, especifica que el conjunto de
resultados puede incluir filas duplicadas. DISTINCT especifica que el conjunto de
resultados sólo puede incluir filas únicas. Es decir, si al realizar una consulta hay registros
exactamente iguales que aparecen más de una vez, éstos se eliminan.
AS: Permite renombrar columnas si lo utilizamos en la cláusula SELECT, o renombrar
tablas si lo utilizamos en la cláusula FROM. “Es opcional”. Con ello podremos crear
diversos alias de columnas y tablas.
FROM: Esta cláusula permite indicar las tablas o vistas de las cuales vamos a obtener
la información.
WHERE: Especifica la condición de filtro de las filas devueltas. Se utiliza cuando no se
desea que se devuelvan todas las filas de una tabla, sino sólo las que cumplen ciertas
condiciones.
ORDER BY: Define el orden de las filas del conjunto de resultados. Se especifica el
campo o campos (separados por comas) por los cuales queremos ordenar los resultados.
ASC / DESC: ASC es el valor predeterminado, especifica que la columna indicada en
la cláusula ORDER BY se ordenará de forma ascendente, o sea, de menor a mayor. Si
por el contrario se especifica DESC se ordenará de forma descendente (de mayor a
menor).
Finalmente también se utilizaron algunas Condiciones, las cuales son expresiones
lógicas a comprobar para la condición de “filtro”, que tras su resolución devuelven para
cada fila TRUE o FALSE, en función de que se cumplan o no. Se puede utilizar cualquier
expresión lógica y en ella utilizar diversos operadores como: Mayor, Mayor o igual,
Menor, Menor o igual, Igual, Distinto, etc.
REFERENCIAS

 https://support.microsoft.com/es-es/office/crear-modificar-o-eliminar-una-
relaci%C3%B3n-dfa453a7-0b6d-4c34-a128-fdebc7e686af

 https://www.ibm.com/docs/es/rational-clearquest/9.0.2?topic=schemas-
modifying

 https://www.sqlshack.com/es/restricciones-en-sql-server-sql-not-null-
unique-y-sql-primary-
key/#:~:text=La%20restricci%C3%B3n%20UNIQUE%20en%20SQL,parte%
20de%20la%20CLAVE%20PRIMARIA.

 https://learn.microsoft.com/es-es/biztalk/adapters-and-accelerators/adapter-
sql/insert-update-delete-or-select-operations-in-sql-using-the-wcf-service-
model

 https://www.computerweekly.com/es/definicion/SQL-Structured-Query-
Language-o-Lenguaje-de-consultas-
estructuradas#:~:text=SQL%20(Structured%20Query%20Language%20o%
20Lenguaje%20de%20consultas%20estructuradas)&text=El%20lenguaje%
20de%20consultas%20estructuradas,con%20los%20datos%20que%20con
tienen.

REPÚBLICA BOLIVARIANA DE VENEZUELA 
MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA 
UNIVERSIDAD POLITÉCNICA TER
INTRODUCCIÓN 
 
 
El lenguaje de consultas estructuradas o SQL (Structured Query Language) es un 
lenguaje de programación es
DESARROLLO 
 
1. CONSULTAS AVANZADAS  
La unión de tablas 
Esta operación se utiliza cuando tenemos dos tablas con las mismas
2. SUB-CONSULTAS ESCALARES 
Una subconsulta escalar es una consulta SELECT regular entre paréntesis que 
devuelve exactamen
group by qtr 
 
order by qtr; 
 
qtr  | avg_saleprice_per_qtr | avg_saleprice_yearly 
 
-------+-----------------------+---
• Se pueden utilizar sub-consultas en lugar de una expresión siempre y cuando-se 
devuelva un solo valor o una lista de valor
y devuelven "true" si la comparación con cada valor de la lista de la subconsulta es 
verdadera, sino "false". El tipo de dat
Asuma que tiene la tabla: 
 
CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT); 
Aquí se muestra cómo usar una subconsulta en la
insert into original_table values (1) 
 
insert into original_table values (1) 
 
insert into original_table values (1)
 
Mueve una instancia de cualquier fila duplicada de la tabla original a una tabla 
duplicada. 
 
Elimina todas las filas d

También podría gustarte