PDF de programación - Tema 7 Introducción a SQL

Imágen de pdf Tema 7 Introducción a SQL

Tema 7 Introducción a SQLgráfica de visualizaciones

Publicado el 7 de Septiembre del 2017
589 visualizaciones desde el 7 de Septiembre del 2017
423,4 KB
24 paginas
Creado hace 20a (13/06/2003)
1.264 Tema 7

Introducción a SQL

Lenguaje de consulta estructurado (SQL)

• Tema 7:

• Tema 8:

– SELECT, INSERT, DELETE y UPDATE.
– Relaciones.

– Subconsultas.
– Vistas (tablas virtuales).
– Indexados.
– Transacciones.
– Seguridad.
– Rendimiento.

SQL

• El lenguaje de consulta estructurado (SQL) se utiliza para:

– La definición de datos: tablas y vistas (tablas virtuales).
– La recuperación de datos: por parte del usuario (consultas por un

motivo concreto) o de un programa.

– La manipulación de datos: un usuario o programa puede añadir,

borrar o modificar los datos.

– El control de acceso.
– La compartición de datos: por usuarios concurrentes.
– Mantener la integridad de los datos: mediante la definición de

restricciones de integridad.

• No es un lenguaje completo como Java, Visual Basic o C++:

– SQL es un sublenguaje de unos 30 comandos.
– Por lo general, va insertado en otro lenguaje o herramienta para

el acceso a bases de datos.

– SQL presenta varias incoherencias; los valores NULL causan problemas.
– Es transportable entre distintos sistemas operativos y, en cierto modo,

también entre distribuidores.

Aspectos que varían entre las distintas

implementaciones de SQL

• Los códigos de errores.
• Los tipos de datos que soportan (fecha/hora, moneda,

variaciones de cadenas).

• Las tablas del sistema: sobre la estructura de la base

de datos en sí.

• El SQL interactivo.
• La interfaz de programación: ningún distribuidor

sigue el estándar.

• El SQL dinámico: utilizado por las herramientas de

consulta y de redacción de informes.

• Algunas variaciones con respecto al estándar definidas

por el fabricante.

• La inicialización, apertura y conexión de la base de datos.

Comandos básicos de SQL

• Tipos básicos:

– SELECT
– INSERT
– UPDATE
– DELETE

• SELECT es el más importante y complejo.

Se utiliza para:
– Por separado, para recuperar datos (de formularios,

informes, consultas y programas).

– Como parte de INSERT, para crear nuevas filas.
– Como parte de UPDATE, para actualizar filas.
– Como parte de DELETE, para eliminar filas.

La instrucción SELECT de SQL

• La instrucción SELECT está compuesta por

varios comandos. Se utiliza para obtener
columnas y/o filas de una o más tablas o
vistas. Los comandos deben seguir un orden:
– SELECT columnas.
– FROM tabla o vista.
– INTO nueva tabla.
– WHERE se crea una relación o filas específicas.
– GROUP BY condiciones de agrupación (columnas).
– HAVING propiedades del grupo (filas específicas).
– ORDER BY criterios de ordenación.

Pedidos

Clientes

RepVentas

Oficinas
NumOfi

NumPedido Clien Prod

Ejemplo de tablas
Cant
211 Excavadora
7
522 Remachadora 2
1
522 Grúa

1
2
3

Importe

31.000,00$
4.000,00$
500.000,00$

Dto

0,2
0,3
0,4

NumClien Empresa

211 Connor Co
522 AmaratungaEnterprise
890 Feni Fabricators

Rep Clien LimitCredit

89
89
53

50.000,00$
40.000,00$
1.000.000,00$

NumRep Nombre

OfiRep

53 Bill Smith
89 Jen Jones

Cupo
100.000,00$
50.000,00$

1
2

Ventas

0,00$
130.000,00$

Estado Region Objetivo
Ciudad
1 Denver
CO
2 New York NY
57 Dallas
TX

West
East
West

3.000.000,00$ 130.000,00$ 970.586.3341
200.000,00$ 300.000,00$ 212.942.5574
0,00$ 214.781.5342

0,00$

Ventas

Telf

Ejemplo de esquema

Pedidos

NumPedido
Prod
Cant
Importe
NumClien (FK) (IE)
Dto

Clientes

NumClien
Empresa
LimitCredit
NumRep (FK) (IE)

RepVentas

NumRep
Nombre
Cupo
Ventas
NumRep (FK) (IE)

Oficinas

NumRep
Ciudad
Region
Objetivo
Ventas
Estado
Telf

Consultas SQL: SELECT

• Obtener un listado de los representantes de ventas:

– SELECT Nombre, Ventas, Cupo FROM RepVentas;

• Calcular la cantidad en la que cada representante

supera o no llega al cupo:
– SELECT Nombre, Ventas, Cupo, (Ventas-Cupo) FROM

RepVentas;

• Averiguar cuáles son los que menos trabajan:

– SELECT Nombre, Ventas, Cupo, (Ventas-Cupo) FROM

RepVentas WHERE Ventas < Cupo;

NumRep Nombre

OfiRep

53 Bill Smith
89 Jen Jones

Cupo
100.000,00$
50.000,00$

1
2

Ventas

0,00$
130.000,00$

Consultas SQL: calcular, insertar,

eliminar y actualizar

• Calcular el promedio de ventas:

– SELECT AVG(Importe) FROM Pedidos;

• Calcular el promedio de ventas a un cliente:

– SELECT AVG(Importe) FROM Pedidos WHERE Clien = 211;

• Añadir una oficina:

SET LimitCredit = 75000 WHERE Empresa = ‘Amaratunga

Enterprises’;

– INSERT INTO Oficinas (NumOfi, Ciudad, Region, Objetivo,

Ventas) VALUES (‘55’, ‘Dallas’, ‘West’, 200000, 0);

• Eliminar un cliente:

– DELETE FROM Clientes WHERE Empresa = ‘Connor Co’;

• Aumentar un límite de crédito:

– UPDATE Clientes

SELECT: * y duplicados

• Seleccionar todas las columnas (campos):

– SELECT * FROM Oficinas;

• Filas duplicadas: la consulta mostrará dos

entradas con "West":
– SELECT Region FROM Oficinas;

• Eliminar duplicados:

– SELECT DISTINCT Region FROM Oficinas;
– (El asistente de MS Access utiliza el comando

no estándar DISTINCTROW, que es diferente de
DISTINCT cuando hay relaciones).

NULL

• Los valores NULL evalúan a FALSO (NOT TRUE)

en todos los casos:
– Insertar ‘NuevoRep’ con Cupo NULL (en blanco o vacío).
• Las dos consultas siguientes no mostrarán todos

los representantes de ventas:
– SELECT Nombre FROM RepVentas WHERE Ventas > Cupo;
– SELECT Nombre FROM RepVentas WHERE Ventas<= Cupo;
– Un nuevo representante con Cupo NULL no aparecerá

en ninguna de las dos listas.

• Comprobar los NULLS:

– SELECT Nombre FROM RepVentas WHERE Cupo IS NULL;

(Pedidos)
– WHERE Dto*Importe > 50000;
– WHERE Cupo BETWEEN 50000 AND 100000; (RepVentas)

• El rango es inclusivo (>=50000 y <=100000)

– WHERE Estado IN (‘CO’, ‘UT’, ‘TX’);
– WHERE NumRep IS NOT NULL;
– WHERE Telf NOT LIKE ‘21%’;

(Oficinas)
(RepVentas)

(Oficinas)

• El SQL estándar tiene sólo 2 comodines:

• %
• _

cualquier cadena de cero o más caracteres (* en Access).
cualquier caracter individual (? en Access).

• La mayoría de las bases de datos tienen diferentes

comodines adicionales. En MS Access:

Operadores SELECT

• SELECT * FROM <tabla>

• ? (cualquier caracter individual),
• * (cualquier número de caracteres),
• # (cualquier dígito individual),
• [list] cualquier caracter individual de la lista,
• [!list]

SELECT: COUNT y GROUP BY

PiezaID Distribuidor

Piezas

123 A
234 A
345 B
362 A
2345 C
3464 A
4533 C

• Número de piezas del distribuidor A:

– SELECT COUNT(*) FROM Piezas WHERE Distribuidor = ‘A’;
– Resultado: 4.

• Número de piezas de cada distribuidor:

– SELECT Distribuidor, COUNT(*) AS CuentaPiezas FROM Piezas

GROUP BY Distribuidor;

– Resultado:

Distribuidor CuentaPiezas
4
A
B
1
2
C

Ejercicios

• ¿Cuál es el límite medio de crédito de los
clientes con un límite de crédito inferior a
1.000.000$?

• ¿Cuántas oficinas de ventas hay en la región

West?

• Aumentar un 30% el precio de las excavadoras

en todos los pedidos.

• Eliminar cualquier representante de ventas

con cupo NULL.

Soluciones

• ¿Cuál es el límite medio de crédito de los clientes

con un límite de crédito inferior a 1.000.000$?
– SELECT AVG(LimitCredit) FROM Clientes WHERE

LimitCredit < 1000000;

• ¿Cuántas oficinas de ventas hay en la región West?
– SELECT Count(*) FROM Oficinas WHERE Region= 'West‘;
• Aumentar un 30% el precio de las excavadoras en

todos los pedidos:
– UPDATE Pedidos SET Importe= Importe*1.3 WHERE Prod=

'Excavadora';

• Eliminar cualquier representante de ventas con cupo

NULL:
– DELETE FROM RepVentas WHERE Cupo IS NULL;

Relaciones

• El modelo relacional permite obtener datos de diferentes
tablas para formar nuevas e imprevistas interrelaciones.

• Las interrelaciones se vuelven explícitas al manipular

los datos: cuando se consulta la base de datos, no
cuando se crea.
– Esto es muy importante; permite la extensibilidad de las bases
de datos. La FAA nunca pensó que sus datos se utilizarían en
el 1.264 junto con los del DOT, una tabla de códigos postales
y algunas tablas de nuevos pedidos. ¡Es reutilizar!

– Se puede relacionar cualquier columna de una tabla con

cualquiera de otra mientras coincidan los tipos de datos y la
operación tenga sentido. No es necesario que sean campos clave,
aunque suelen serlo.
• Buenas relaciones:

– La columna relacionada suele ser un campo clave: ya sea clave

primaria o secundaria.

– Las columnas relacionadas deben tener tipos de datos

compatibles.

– Las de valor Null nunca se relacionan.

Relaciones

• Obtener un listado de todos los pedidos, en el que figuren el número

de pedido y la cantidad y el nombre y límite de crédito del cliente:
– La tabla pedidos contiene el número de pedido y la cantidad, pero no

los nombres ni los límites de crédito de los clientes.

– La tabla clientes contiene los nombres de los clientes y su límite de

crédito, pero no la información de los pedidos.

• SELECT NumPedido, Importe, Empresa, LimitCredit FROM

Clientes, Pedidos WHERE Clien = NumClien;
(SQL estándar)

• SELECT NumPedido, Importe, Empresa, LimitCredit FROM Clientes

INNER JOIN Pedidos ON Clientes.Númclien = Pedidos.Clien;
(Access)
Dto

NumPedido Clien Prod

Cant

1
2
3

211 Bulldozer 7
522 Riveter
2
1
522 Crane

Importe
31.000,00$
4.000,00$
500.000,00$

0,2
0,3
0,4
LimitCredit

Relación

NumClien Empresa

211 Connor Co
522 Amaratunga Enterprises
890 Feni Fabricators

RepClien
89
89
53

50.000,00$
40.000,00$
1.000.000,00$

Relación entre 3 tablas

• Obtener un listado de los pedidos de más de 25.000
dólares, en el que figure el nombre del vendedor que
atendió el pedido y el del cliente que lo realizó:
– SELECT NumPedido, Importe, Empresa, Nombre FROM Pedidos,

Clientes, RepVentas WHERE Clien = NumClien AND RepClien
(SQL estándar)
= NumRep AND Importe >= 25000;
NumPedido Clien
Dto

Importe

Prod

Cant
211 Excavadora
7
522 Remachadora 2
1
522 Grúa

1
2
3
Empresa

31.000,00$
4.000,00$
500.000,00$

0,2
0,3
0,4

LimitCredit

50.000,00$
40.000,00$
1.000.000,00$
Ventas

0,00$
130.000,00$
Nombre
Jen Jones
Jen Jones

NumCl
  • Links de descarga
http://lwp-l.com/pdf6844

Comentarios de: Tema 7 Introducción a SQL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad