0% encontró este documento útil (0 votos)
2 vistas55 páginas

Transact SQL

El documento proporciona una introducción a Transact SQL, el lenguaje de consulta utilizado para gestionar bases de datos relacionales. Se describen las sentencias SQL, incluyendo DDL, DML y DCL, así como la sintaxis para consultas, inserciones, actualizaciones y eliminaciones de datos. También se abordan combinaciones de consultas, funciones agregadas y el uso de subconsultas y cursores en SQL.

Cargado por

curso.ciber.02
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 PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas55 páginas

Transact SQL

El documento proporciona una introducción a Transact SQL, el lenguaje de consulta utilizado para gestionar bases de datos relacionales. Se describen las sentencias SQL, incluyendo DDL, DML y DCL, así como la sintaxis para consultas, inserciones, actualizaciones y eliminaciones de datos. También se abordan combinaciones de consultas, funciones agregadas y el uso de subconsultas y cursores en SQL.

Cargado por

curso.ciber.02
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 PPTX, PDF, TXT o lee en línea desde Scribd

BASE DE DATOS II

TRANSACT SQL
SQL
 SQL es el lenguaje de consulta universal
para bases de datos relacionales.
 SQL proporciona métodos para definir la
base datos, para manipular la
información y para gestionar los
permisos de acceso a dicha información.
 Para que un gestor de bases de datos
sea considerado como relacional, debe
soportar SQL.
GRUPO DE SENTENCIAS SQL
 DDL(Data Definition Language) es el encargado
de la definición de Bases de Datos, tablas,
vistas e índices entre otros.
 DML(Data Manipulation Language) cuya misión
es la manipulación de datos. A través de él
podemos seleccionar, insertar, eliminar y
actualizar datos.
 DCL (Data Control Laguage) encargado de la
seguridad de la base de datos, en todo lo
referente al control de accesos y privilegios
entre los usuarios.
Consulta de datos

SELECT
SELECT - SINTAXIS
SELECT [ALL | DISTINCT ]
<nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista>
[{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicion> [{ AND|OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion>[{ AND|OR <condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC |
DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]
CLAUSULAS
 SELECT: Palabra clave que indica que la sentencia de SQL que queremos ejecutar es
de selección.
 ALL: Indica que queremos seleccionar todos los valores. Es el valor por defecto y no
suele especificarse casi nunca.
 DISTINCT: Indica que queremos seleccionar sólo los valores distintos.
 FROM: Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el
caso de que exista más de una tabla se denomina a la consulta "consulta
combinada" o "join".
 WHERE: Especifica una condición que debe cumplirse para que los datos sean
devueltos por la consulta. Admiten los operadores lógicos AND y OR.
 GROUP BY: Especifica la agrupación que se da a los datos. Se usa siempre en
combinación con funciones agregadas.
 HAVING: Especifica una condición que debe cumplirse para que los datos sean
devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al
conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a
GROUP BY y la condición debe estar referida a los campos contenidos en ella.
 ORDER BY: Presenta el resultado ordenado por las columnas indicadas. El orden
puede expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor
predeterminado es ASC.
EJEMPLO 1

select
[Link],
[Link],
[Link],
[Link]
from Products p
order by [Link]
EJEMPLO 2

select
[Link],
[Link],
[Link],
[Link]
from Products p
where [Link] like 'a%'
order by [Link]
EJEMPLO 3

select distinct [Link] from Employees


e
Inserción de Filas

INSERT
INSERT
 El proceso de inserción de filas consiste
en añadir a una tabla una o más filas y
en cada fila todos o parte de sus
campos.
 Podemos distinguir dos formas de
insertar filas:
 Inserción individual de filas.
 Inserción múltiple de filas.
INSERT – SINTAXIS 1

INSERT INTO <nombre_tabla>


[(<campo1>[,<campo2>,...])]
values
(<valor1>,<valor2>,...);
INSERT – SINTAXIS 2

INSERT INTO <nombre_tabla>


[(<campo1>[,<campo2>,...])]
SELECT
[(<campo1>[,<campo2>,...])]
FROM
<nombre_tabla_origen>;
EJEMPLO:
insert into Categories
(
CategoryName,
Description,
Picture
)
values
(
'Categoria 1',
'Categoria 1',
null
)
Borrado de datos

DELETE
DELETE - SINTAXIS

DELETE FROM <nombre_tabla>


[ WHERE <condicion>];
EJEMPLO:

delete from Categories where CategoryID


= '9'
Actualización de Datos

UPDATE
UPDATE - SINTAXIS

UPDATE <nombre_tabla>
SET <campo1> = <valor1>
{[,<campo2> = <valor2>,...,<campoN>
= <valorN>]}
[ WHERE <condicion>];
EJEMPLO

update Customers
set
[Address] = 'Obere Str. 57',
City = 'Berlin',
Phone = '030-0074321'
where CustomerID = 'ALFKI'
Consultas Combinadas

JOINS
JOINS
 Las consultas combinadas pueden ser
de tres tipos:
 • Combinación interna
 • Combinación externa
 • Uniones
COMBINACION INTERNA – INNER
JOIN
 La combinación interna nos permite
mostrar los datos de dos o más tablas a
través de una condición WHERE.
 La combinación interna es excluyente.
Esto quiere decir que si un registro no
cumple la condición de combinación no
se incluye en los resultados
FORMA 1 FORMA 2

select select
[Link], [Link],
[Link], [Link],
[Link], [Link],
[Link], [Link],
[Link],
[Link],
[Link]
[Link]
from Orders o, [Order Details]
from Orders o od
inner join [Order Details] od where
on [Link] = [Link] [Link] = [Link]

EJEMPLO – INNER JOIN


COMBINACION EXTERNA
 La combinación externa puede ser
diestra o siniestra, LEFT OUTER JOIN o
RIGHT OUTER
JOIN. Con LEFT OUTER JOIN obtenemos
todos los registros de en la tabla que
situemos a la izquierda de la clausula
JOIN, mientras que con RIGHT OUTER
JOIN obtenemos el efecto contrario
EJEMPLO
select
[Link],
[Link],
[Link],
[Link],
[Link]
from Categories c
left outer join Products p
on [Link] = [Link]
UNIONES
 La cláusula UNION permite unir dos o
más conjuntos de resultados en uno
detrás del otro como si se tratase de
una única tabla
 Las consultas a unir deben tener el
mismo número campos, y además los
campos deben ser del mismo tipo.
 Sólo puede haber una única clausula
ORDER BY al final de la sentencia
SELECT.
EJEMPLO
SELECT [Link],
[Link],
[Link],
[Link],
tCoches.numero_kilometros,
FROM tCoches
INNER JOIN tMarcas ON [Link] = [Link]
UNION
SELECT [Link],
[Link],
[Link],
[Link],
tMotos.numero_kilometros,
FROM tMotos
INNER JOIN tMarcas ON [Link] = [Link];
Consultas Agregadas

GROUP BY Y HAVING
GROUP BY
 La clausula GROUP BY combina los registros con
valores idénticos en un único registro. Para cada
registro se puede crear un valor agregado si se
incluye una función SQL agregada en la instrucción
SELECT.
 GROUP BY es opcional. Si se utiliza GROUP BY pero no
existe una función SQL agregada en la instrucción
SELECT se obtiene el mismo resultado que con una
consulta SELECT DISTINCT.
 Todos los campos de la lista de campos de SELECT
deben incluirse en la cláusula GROUP BY o como
argumentos de una función SQL agregada.
EJEMPLO

select
[Link], COUNT([Link]) as
[countOrders] from Orders o
group by [Link]
HAVING
 HAVING muestra cualquier registro
agrupado por la cláusula GROUP BY
que satisfaga las condiciones de la
cláusula. Se utiliza la cláusula WHERE
para excluir aquellas filas que no desea
agrupar, y la cláusula HAVING para
filtrar los registros una vez agrupados.
EJEMPLO

select
[Link], COUNT([Link]) as
[countOrders] from Orders o
where
year([Link]) = 1996
group by [Link]
having COUNT([Link]) >=10
FUNCIONES AGREGADAS

AVG
Calcula la media aritmética de un conjunto de valores contenidos en un campo especificado de una
consulta. Su sintaxis es la siguiente

AVG(<expr>)

Count
Calcula el número de registros devueltos por una consulta. Su sintaxis es la siguiente:
COUNT(<expr>)

Max, Min
Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una
consulta. Su sintaxis es:
MIN(<expr>)
MAX(<expr>)

Sum
Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su
sintaxis es:
SUM(<expr>)
SUBCONSULTAS
SUBCONSULTAS
 Una subconsulta es una sentencia
SELECT que aparece dentro de otra
sentencia SELECT. Normalmente se
utilizan para filtrar una clausula WHERE
o HAVING con el conjunto de resultados
de la subconsulta, aunque también
pueden utilizarse en la lista de
selección.
EJEMPLO

select * from Employees


where year(BirthDate) = (select

max(year(OrderDate))
from Orders)
REFERENCIA EXTERNA
 Una referencia externa es un campo
que aparece en la subconsulta pero se
refiere a la una de las tablas
designadas en la consulta principal.
 Cuando se ejecuta una consulta que
contiene una subconsulta con
referencias externas, la subconsulta se
ejecuta por cada fila de la consulta
principal.
EJEMPLO

select
[Link],
[Link],
[Link],
[Link],
(select COUNT(*) from Orders o where
[Link] = [Link] ) as
[countOrderCustomers]
from Customers c
EJEMPLO
SELECT CO_EMPLEADO,
EMPLEADOS
FROM EMPLEADOS
WHERE CO_EMPLEADO IN ( SELECT CO_EMPLEADO
FROM NOMINAS
WHERE ESTADO IN ( SELECT ESTADO
FROM ESTADOS_NOMINAS
WHERE EMITIDO = 'S'
AND PAGADO = 'N‘
)
)
UTILIZACIÓN DE SUBCONSULTAS CON UPDATE

UPDATE EMPLEADOS
SET SALARIO_BRUTO = ( SELECT

SUM(SALIRO_BRUTO)
FROM NOMINAS
WHERE NOMINAS.CO_EMPLEADO =
EMPLEADOS.CO_EMPLEADO
)
WHERE SALARIO_BRUTO IS NULL
TIPOS DE SUBCONSULTAS
 · Subconsultas de resultado único
 · Subconsultas de lista de valores
(IN – ALL - ANY)
 · Subconsultas en pruebas de
existencia (EXISTS)
SUBCONSULTAS DE RESULTADO ÚNICO

Deben obligatoriamente devolver un


único valor

<expresion> {=|<>|!=|>|>=|!>|<|<=|!
<} <expresion>
EJEMPLO

SELECT CO_CLIENTE, NOMBRE, MARCA,


MODDELO
FROM ALQUILERES
WHERE CO_CLIENTE = 1
AND FECHA_ALQUILER = ( SELECT
MAX(FECHA_ALQUILER)
FROM ALQUILERES
WHERE CO_CLIENTE = 1
)
SUBCONSULTAS DE LISTA DE
VALORES
 Operador IN: examina si el valor de la
expresion es uno de los valores
incluidos en la lista de valores
generados por la subconsulta.

 <expresion> IN subconsulta
EJEMPLO

select * from Customers c


where [Link] in (select
[Link] from Orders o where
year([Link]) = 1998 )
TEST ANY
 ANY significa que, para que una fila de
la consulta externa satisfaga la
condición especificada, la comparación
se debe cumplir para al menos un valor
de los devueltos por la subconsulta

 <expresion> {=|<>|!=|>|>=|!>|<|
<=|!<} {ANY|SOME} subconsulta
TEST ALL
 Con el modificador ALL, para que se
cumpla la condición, la comparación se
debe cumplir con cada uno de los
valores devueltos por la subconsulta.
 <expresion> {=|<>|!=|>|>=|!>|<|
<=|!<} ALL subconsulta
EJEMPLO

select * from Products p


where [Link] > all (select
max([Link]) from Products p2
where [Link] = 2)
EXISTS
 No realiza ninguna comparación con los
valores devueltos por la subconsulta,
simplemente se evalúa si la
subconsulta devuelve alguna fila, en
este caso EXISTS será True y si la
subconsulta no devuelve ninguna fila,
EXISTS será False.
EJEMPLO

SELECT *
FROM empleados
WHERE EXISTS (SELECT *
FROM pedidos
WHERE numemp = rep and fab ='ACI');
CURSORES
CURSORES
 Un cursor es una variable que nos
permite recorrer con un conjunto de
resultados obtenido a través de una
sentencia SELECT fila a fila.
-- Declaración del cursor
DECLARE <nombre_cursor> CURSOR
FOR
<sentencia_sql>

-- apertura del cursor


OPEN <nombre_cursor>

-- Lectura de la primera fila del cursor


FETCH <nombre_cursor> INTO <lista_variables>

WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Lectura de la siguiente fila de un cursor
FETCH <nombre_cursor> INTO <lista_variables>
...
END -- Fin del bucle WHILE

-- Cierra el cursor
CLOSE <nombre_cursor>
-- Libera los recursos del cursor
DEALLOCATE <nombre_cursor>
TIPOS DE CURSORES
LOCAL
Especifica que el ámbito del cursor es local para el proceso por lotes, procedimiento almacenado o
desencadenador en que se creó el cursor

GLOBAL
Especifica que el ámbito del cursor es global para la conexión. Puede hacerse referencia al nombre del
cursor en cualquier procedimiento almacenado o proceso por lotes que se ejecute en la conexión.

FORWARD_ONLY
Especifica que el cursor sólo se puede desplazar de la primera a la última fila. FETCH NEXT es la única
opción de recuperación admitida.

SCROLL
Especifica que están disponibles todas las opciones de recuperación (FIRST, LAST, PRIOR, NEXT, RELATIVE,
ABSOLUTE). Si no se especifica SCROLL en una instrucción DECLARE CURSOR la única opción de
recuperación que se admite es NEXT. No es posible especificar SCROLL si se incluye también
FAST_FORWARD.
Si se incluye la opción SCROLL, la forma en la realizamos la lectura del cursor varia, debiendo utilizar la
siguiente sintaxis: FETCH [ NEXT | PRIOR | FIRST | LAST | RELATIVE | ABSOLUTE ] FROM < INTO
STATIC
Define un cursor que hace una copia temporal de los datos que va a utilizar. Todas las solicitudes que se
realizan al cursor se responden desde esta tabla temporal de tempdb; por tanto, las modificaciones
realizadas en las tablas base no se reflejan en los datos devueltos por las operaciones de recuperación
realizadas en el cursor y además este cursor no admite modificaciones.

También podría gustarte