PDF de programación - Bases de Datos: Structured Query Language (SQL)

Imágen de pdf Bases de Datos: Structured Query Language (SQL)

Bases de Datos: Structured Query Language (SQL)gráfica de visualizaciones

Publicado el 18 de Agosto del 2018
624 visualizaciones desde el 18 de Agosto del 2018
79,4 KB
10 paginas
Creado hace 17a (09/03/2007)
Bases de Datos: Structured Query

Language (SQL)

Franco Guidi Polanco
Escuela de Ingeniería Industrial

Pontificia Universidad Católica de Valparaíso, Chile

[email protected]

Structured Query Language (SQL): Introducción

Originalmente era el lenguaje de interrogación del DBMS

relacional SystemR(IBM) en la segunda mitad de los años
’70.

Posteriormente adoptado por otros sistemas
Luego transformado en estándar:

1986 – Primera versión ANSI
1989 – Llamado SQL-89
1992 – Llamado alternativamente SQL-92 o SQL-2
1999 – Llamado alternativamente SQL-99 o SQL-3

SQL contiene la funcionalidad tanto de un DDL (Data

Definition Language), como de un DML (Data Manipulation
Language).

Revisión: 15 de Mayo de 2005

Franco Guidi Polanco

Dominios de datos más comúnmente utilizados en SQL

Instrucciones en SQL

Caracteres: tipo CHAR
CHAR(largo)

Tipos numéricos exactos:

SMALLINT
INTEGER
NUMERIC

NUMERIC [(Precisión [, escala ] ) ]

Números en punto flotante

FLOAT

Fecha: tipo DATE

SQL como DDL:

Crear tablas (CREATE TABLE)
Modificar estructura de tablas (ALTER TABLE)
Eliminar tablas (DROP TABLE)

SQL como DML:

Insertar nuevas tuplas (INSERT)
Actualizar contenidos de tuplas (UPDATE)
Eliminar tuplas (DELETE)
Seleccionar tuplas (SELECT)

Franco Guidi Polanco

3

Franco Guidi Polanco

2

4

CREATE TABLE

CREATE TABLE

Permite crear una nueva tabla
CREATE TABLE <nombre de tabla>
(<nombre de campo> <tipo> [(<tamaño>)] <restricción>,
...otros campos)
Los valores posibles para <tipo> dependen del

DBMS utilizado (ej.: integer, char, date).

El <tamaño> es usado solo en ciertos tipos de

datos (ej.: char).

Ej.:

CREATE TABLE PEDIDO
NRO_PED INTEGER NOT NULL,
RUT_PROV CHAR(10) NOT NULL)

PEDIDO
NRO_PED

RUT_PROV

Algunas restricciones son:
NULL o NOT NULL
UNIQUE. Indica que no pueden existir dos filas con el mismo

valor para este campo.

PRIMARY KEY. Indica que el campo es clave primaria. Solo se
usa si la clave se compone de 1 campo, si no, se usa PRIMARY
KEY (campo, campo, ...) después de las definiciones de campos.

DEFAULT. Inserta un valor por omisión cuando el registro se

crea sin un valor para el campo (ej.: COSTO INTEGER DEFAULT
= 1).

FOREIGN KEY. Indica que el campo es clave foránea.
Funciona igual que PRIMARY KEY, pero va seguido de:
REFERENCES <nombre de tabla> (<nombre de campo>), que
indica la tabla y campos referenciados.

Franco Guidi Polanco

5

Franco Guidi Polanco

ALTER TABLE

Permite modificar la estructura de un tabla.

ALTER TABLE <nombre de tabla> ADD|DROP|MODIFY
(especificación de campo(s)...)

DROP TABLE

Permite eliminar una tabla.
DROP TABLE <nombre de tabla>

La especificación de campos se hace igual que en

el caso de CREATE TABLE
Ej.: ALTER TABLE PEDIDO ADD
(FECHA DATE NOT NULL)

PEDIDO
NRO_PED

RUT_PROV

FECHA

PEDIDO
NRO_PED

RUT_PROV

FECHA

Ej.:
DROP TABLE PEDIDO

Franco Guidi Polanco

7

Franco Guidi Polanco

6

8

INSERT

UPDATE

Agrega nuevos registros a una tabla.

INSERT INTO <tabla>
[(<lista de campos>)]
VALUES (<lista de valores>|<expresión select>)

INSERT INTO PEDIDO
(NRO_PED, RUT_PROV)
VALUES (130, ’50.155.842-K’)

PEDIDO
NRO_PED

100

115

120

RUT_PROV

15.333.222-1

50.251.366-9

17.322.568-2

130

50.155.842-K

Modifica los valores de uno o más campos

de un conjunto de registros de una tabla.
UPDATE <tabla>
SET <lista de asignaciones>
[WHERE <condiciones lógicas>]
UPDATE PEDIDO
SET RUT_PROV=’60.155.842-K’
WHERE NRO_PED = 115

PEDIDO
NRO_PED

100

RUT_PROV

15.333.222-1

115

60.155.842-K

115

120

50.251.366-9

17.322.568-2

Franco Guidi Polanco

9

Franco Guidi Polanco

DELETE

SELECT

Elimina uno o más registros de una tabla.

DELETE FROM <tabla>
[WHERE <condiciones lógicas>]

UPDATE PEDIDO
WHERE NRO_PED = 115

PEDIDO
NRO_PED

100

115

120

RUT_PROV

15.333.222-1

60.155.842-K

17.322.568-2

Permite efectuar consultas sobre la BD

SELECT [DISTINCT] <lista de campos>
FROM <lista de tablas>
[WHERE <condiciones lógicas>]
[ORDER BY <lista de campos>]
[GROUP BY <lista de campos>]
Se pueden usar ciertas funciones “agregadas”:
SUM
AVG
MIN
MAX
COUNT

Franco Guidi Polanco

11

Franco Guidi Polanco

10

12

Ejemplo

Pedidos

Ped#

Fecha_
pedido

Prov#

1
2
3

10/03/1999 5645462-8
11/03/1999 6353134-4
11/03/1999 8545432-8

Detalles

Ped#

Art#

Cantidad

1
1
2
3
3

685431-4
878795-7
468624-8
556546-3
878795-7

50
48
500
10
12

Proveedores

Prov#

Nombre

Ciudad

5645462-8
6353134-4
8545432-8

YTF
ZYZ
MNO

Santiago

Arica

Santiago

Artículos

Art#

685431-4
878795-7
468624-8
556546-3
996589-0

Nombre_
articulo

Lápiz
Tijeras
Agenda
CD-ROM

Lápiz

Ejemplos SELECT (1): SELECT … FROM …

Obtener todos los datos de todos los

proveedores:

SELECT * FROM PROVEEDORES

Prov#

Nombre

Ciudad

5645462-8
6353134-4
8545432-8

ABC
XYZ
MNO

Santiago

Arica

Santiago

Franco Guidi Polanco

13

Franco Guidi Polanco

Ejemplos SELECT (2): proyección

Ejemplos SELECT (3)

Obtener Prov#y Nombrede todos los

proveedores:

Obtener los códigos de todos los artículos:

SELECT Prov#, Nombre
FROM PROVEEDORES

Prov#

Nombre

5645462-8
6353134-4
8545432-8

ABC
XYZ
MNO

SELECT ART#
FROM ARTICULO

Art#

685431-4
878795-7
468624-8
556546-3
996589-0

Franco Guidi Polanco

15

Franco Guidi Polanco

14

16

Ejemplos SELECT (4): cláusula DISTINCT

Ejemplos SELECT (5): selección de tuplas

Obtener los códigos de los artículos

solicitados:

SELECT ART#
FROM DETALLES

SELECT DISTINCT ART#
FROM DETALLES

Art#

685431-4
878795-7
468624-8
556546-3
878795-7

Art#

685431-4
878795-7
468624-8
556546-3

Obtener toda la información de los proveedores de

Santiago:

SELECT *
FROM PROVEEDORES
WHERE PROVEEDORES.CIUDAD =‘Santiago’

SELECT *
FROM PROVEEDORES
WHERE CIUDAD =‘Santiago’

Prov#

Nombre

Ciudad

5645462-8
8545432-8

ABC
MNO

Santiago
Santiago

Franco Guidi Polanco

17

Franco Guidi Polanco

18

Ejemplos SELECT (6)

Ejemplos SELECT (7): ordenamiento

Obtener los códigos de pedidos por cantidades

comprendidas entre 10 y 48:

Obtener los nombres de los proveedores en orden

alfabético:

SELECT DISTINCT PED#
FROM DETALLES
WHERE CANTIDAD >= 10

AND CANTIDAD <= 48

SELECT NOMBRE
FROM PROVEEDORES
ORDER BY NOMBRE

Ped#

1
3

Nombre

MNO
YTF
ZYZ

Franco Guidi Polanco

19

Franco Guidi Polanco

20

Ejemplos SELECT (8): join

Ejemplos SELECT (9)

Obtener los códigos de pedidos con los datos de

los proveedores a los que estos van dirigidos:
SELECT PED#, PROV#, NOMBRE, CIUDAD
FROM PEDIDOS, PROVEEDORES
WHERE PEDIDOS.PROV# = PROVEEDORES.PROV#

Ped#

Prov#

Nombre

Ciudad

1
2
3

5645462-8
6353134-4
8545432-8

YTF
ZYZ
MNO

Santiago

Arica

Santiago

Obtener las ciudades de los proveedores que han

Ciudad

Santiago

entregado lápices:
SELECT DISTINCT CIUDAD
FROM ARTICULOS, DETALLES,

PEDIDOS, PROVEEDORES

WHERE ARTICULOS.ART# = DETALLES.ART#
AND DETALLES.PED# = PEDIDOS.PED#
AND PEDIDOS.PROV# = PROVEEDORES.PROV#
AND ARTICULOS.NOMBREARTICULO = ‘Lápiz’

Franco Guidi Polanco

21

Franco Guidi Polanco

22

Ejemplos SELECT (10): redenominación

SELECT y funciones agregadas

Encontrar todos las parejas distintas de códigos

artículos :

SELECT A.ART#, B.ART#
FROM ARTICULOS A, ARTICULOS B
WHERE A.ART# < B.ART#

A.Art#

B.Art#

685431-4
685431-4
468624-8
468624-8
468624-8
468624-8
556546-3
556546-3

878795-7
996589-0
556546-3
685431-4
878795-7
996589-0
685431-4
996589-0

Si en la instrucción SELECT no hay un GROUP BY (visto

más adelante), las funciones agregadas operan sobre todas
las tuplas

Funciones agregadas:
COUNT(): cuenta tuplas
MIN(): obtiene el menor valor para un campo
MAX(): obtiene el mayor valor para un campo
SUM(): suma los valores de un campo
AVG(): calcula el promedio de valores de un campo
STDEV(): calcula la d.e. de valores de un campo
VARIANCE(): calcula la varianza de valores de un campo

Franco Guidi Polanco

23

Franco Guidi Polanco

24

SELECT y funciones agregadas

SELECT y funciones agregadas: regla

Contar los proveedores:

SELECT COUNT(*)
FROM PROVEEDORES

Sumar

SELECT SUM( Cantidad )
FROM DETALLES
WHERE ART#=‘878795-7’

Count(*)

3

Sum(Cantidad)

60

Regla para el uso de funciones agregadas:

Si una instrucción SELECT no contiene la cláusula GROUP BY,

y si la cláusula SELECT contiene una o más funciones

agregadas, todos los identificadores de columna
especificados en la cláusula SELECT deben estar

contenidos en una función agregada.

!

Franco Guidi Polanco

25

Franco Guidi Polanco

26

SELECT y funciones agregadas: regla

Interrogaciones anidadas

Ejemplo

Situación válida:

SELECT SUM( Cantidad )
FROM DETALLES
WHERE ART#=‘878795-7’

Situación NO valida:

SELECT Art#, SUM( Cantidad )

FROM DETALLES
WHERE ART#=‘878795-7’

Se utiliza una expresión SELECT como parte de la
cláusula where.
Por ejemplo: obtener el código de los artículos que

hayan sido pedidos en la mayor cantidad:

SELECT ART#
FROM DETALLES
WHERE CANTIDAD =

(SELECT MAX(CANTIDAD)
FROM DETALLES)

Art#

468624-8

Franco Guidi Polanco

27

Franco Guidi Polanco

28

Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS

Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS

Permite generar condiciones basadas en la

existencia o inexistencia de tuplas.

Ejemplo: encontrar los artículos que tienen el

mismo nombre (pero código diferente) :
SELECT *
FROM ARTICULOS A1
WHERE EXISTS

(SELECT *
FROM ARTICULOS A2
WHERE A1.NOMBRE_ARTICULO =
A2.NOMBRE_ART
  • Links de descarga
http://lwp-l.com/pdf13048

Comentarios de: Bases de Datos: Structured Query Language (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