PDF de programación - Tema2. Bases de Datos Relacionales: SQL

Imágen de pdf Tema2. Bases de Datos Relacionales: SQL

Tema2. Bases de Datos Relacionales: SQLgráfica de visualizaciones

Publicado el 3 de Noviembre del 2019
616 visualizaciones desde el 3 de Noviembre del 2019
359,4 KB
34 paginas
Creado hace 19a (07/10/2004)
Departamento de Lenguajes y Ciencias de la
Computación Universidad de Málaga

Bases de Datos

(Ingeniería Técnica en Informática de Sistemas)

Tema 2. Bases de Datos Relacionales:

SQL

E.T.S.I. Informática

J. Galindo Gómez y E. Soler Castillo

SQL (Structured Query Language)

SQL

SQL está en continua evolución: Es una evolución del lenguaje
SEQUEL de D.D. Chamberlin y R.F. Boyce (1974) y fue implementado
por primera vez por IBM en su BDR llamado SYSTEM R.
– ISO (International Standards Organization) y ANSI (American National

Standards Institute) desarrollaron una versión estándar en 1986,
llamada SQL86 o SQL1. Posteriormente, se desarrolló SQL92 o
SQL2. Actualmente se desarrolla SQL3, que incluye conceptos de BD
orientadas a objetos.

SQL es un lenguaje estándar para GESTIÓN de BDR:

– Está incluido en muchos SGBD (DBMS), como DB2 (de IBM),

Oracle, Ingres, Informix, Sybase, Access, SQL Server...

Las mismas sentencias sirven en distintos SGBD.
Si se usan sólo las características estándares facilita la tarea de
migrar de SGBD →→→→ Hay funciones no estándar en algunos SGBD.

– Fácil de usar y aprender: Tiene similitudes con el Álgebra

Relacional, aunque se parece más al Cálculo y es más fácil e intuitivo
que ambos lenguajes formales.

– Aquí se incluye una introducción a SQL estándar con algunos

comentarios sobre el SGBD Oracle.

2

1

SQL

SQL (Structured Query Language)
SQL es un lenguaje COMPLETO: Incluye sentencias para

– DDL y DML: Permite definir esquemas, consultar, borrar, actualizar...
– Definición de vistas: Para ver la BD de distintas formas.
– Seguridad: Permisos de acceso distintos para cada usuario.
– Definir restricciones de integridad: Integridad referencial...
– Especificar control de transacciones: Para grandes empresas,

recuperación de errores, archivos históricos...

– Puede incrustarse en lenguajes de alto nivel (C, C++, Pascal, COBOL...).
– Permite operaciones tan complejas que su total definición es complicada:

Sólo veremos un subconjunto de las operaciones posibles.

ESQUEMA (schema): Conjunto de elementos (tablas, vistas,

permisos...) que pertenecen a la misma BD. Cada esquema tiene un
nombre y un usuario propietario del esquema.

CATÁLOGO (catalog): Conjunto de esquemas. Tiene un esquema es-

pecial llamado INFORMATION_SCHEMA que provee información sobre los
demás esquemas, usuarios autorizados, definiciones de dominio, restric-
ciones de integridad referencial (sólo entre tablas del mismo catálogo)...

SQL (Structured Query Language)

SQL

TIPOS de DATOS de los atributos de las relaciones:

– Enteros de distintos tamaños: INTEGER o INT y SMALLINT.

– Reales de distinta precisión: FLOAT(p), REAL, DOUBLE PRECISION, o el más

genérico DECIMAL(precisión, escala)

En Oracle:
NUMBER(p,s), donde p=“número total de dígitos” (de 1 a 38

en Oracle) y s=“número de decimales” (de -84 a 127 en
Oracle, con valor 0 por defecto).
NUMBER(p,0)
NUMBER

ENTERO
COMA FLOTANTE

Actual Data Specified As
7456123.89 NUMBER
7456123.89 NUMBER(9)
7456123.89 NUMBER(9,2)
7456123.89 NUMBER(9,1)
7456123.89 NUMBER(6)
7456123.89 NUMBER(7,-2)
7456123.89 NUMBER(-7,2)

Stored As
7456123.89
7456124
7456123.89
7456123.9
exceeds precision
7456100
exceeds precision

3

4

2

SQL (Structured Query Language)

SQL

TIPOS de DATOS de los atributos de las relaciones:

– Caracteres: CHAR(n) o CHARACTER(n), n=longitud fija (por defecto n=1).

También VARCHAR(n), n=longitud máxima

En Oracle, se recomienda:

VARCHAR2(n) con n=4000 como máximo.
Para cadenas más largas usar LONG (máximo 2GB) o
CLOB (Character Large OBject, máx. 4GB).
NCHAR y NVARCHAR2 usan el juego de caracteres
Nacional definido al crear la BD.
Diferencia entre CHAR y VARCHAR

– Cadenas de bits (para gráficos, sonidos, ficheros binarios...): BIT(n),

n=longitud fija o BIT VARYING(n), con n=longitud máxima. Por defecto n=1.

En Oracle, se recomienda:

RAW(tamaño_fijo_máx_2000bytes) o LONG RAW (sin argumento y con un
tamaño máximo de 2GB). Últimamente Oracle aconseja usar LOB o BLOB
(Binary Large OBject, máximo 4GB), o también BFILE para almacenar la
localización de un fichero binario.

SQL (Structured Query Language)

SQL

TIPOS de DATOS de los atributos de las relaciones:

– Fecha y Hora: DATE (año, mes, día: YYYY-MM-DD). TIME (horas, minutos,

segundos: HH:MM:SS). TIMESTAMP incluye ambos

En Oracle,

DATE incluye fecha y hora
Se usan las funciones TO_CHAR y TO_DATE para
convertir un dato de tipo fecha a texto y viceversa.

TO_DATE(’27-OCT-98’, ’DD-MON-YY’)
to_char(to_date('27-10-03','dd-mm-yy'),'dd-mon-yyyy')

27-oct-2003

5

6

3

SQL (Structured Query Language)

SQL

Aritmética del tipo DATE:
Se puede sumar y restar constantes numéricas así como otras

fechas a las fechas. Oracle interpreta las constantes como
número de días.
Ejemplos: SYSDATE + 1 mañana

SYSDATE - 7 hace una semana
SYSDATE + (10/1440) dentro de 10 minutos
Restar en atributo FechaAlquiler de SYSDATE devuelve el

número de días desde que fue alquilado.

Existe muchas otras funciones como ADD_MONTHS,
MONTHS_BETWEEN, NEXT_DAY, ROUND, etc.

DML de SQL: Consultas con SELECT

DML de SQL

• SELECT <Lista_Atributos>

FROM <Lista_Tablas>
WHERE <Condición>;

Esquema Conceptual:

Suministrador (S#, NombreS, Dirección, Ciudad);
Pieza (P#, NombreP, Peso, Cantidad);
Suministros (S#,P#);

Suministrador
S# NombreS
2
3
4

Juan
Luis
Pablo

Pieza
P# NombreP
2
Tornillo
4 Tuerca
8 Clavos

Dirección
C/ Pelayo
C/ Pato
C/Alfonso X

Ciudad
Málaga
Málaga
Granada

Peso
16
8
7

Cantidad
20
20
30

Suministros
S# P#
4
2
8
2
4
2
2
3

7

8

4

DML de SQL: Consultas con SELECT

DML de SQL

Ejemplos:
– Proyección:

“Nombre y Dirección de todos los suministradores”


SELECT NombreS, Direccion
FROM Suministrador;

Ojo al ;

– Selección:

“Todos los datos de los suministradores de Málaga”
SELECT * FROM Suministrador
WHERE NombreS= ‘Malaga’;

CASE SENSITIVE

“Piezas que pesen más de 15 gramos y que su Cantidad sea menor o

igual que 30”:

SELECT * FROM Pieza
WHERE Peso>15 AND Cantidad<=30;

“Piezas de las que se ignore el Peso”:
SELECT * FROM Pieza
WHERE Peso IS NULL;

No usar Peso=NULL.
Cada NULL es distinto

a otro.

Consultas con SELECT: Observaciones
Cláusula SELECT:

– Puede ponerse un * para indicar que se recuperen todos los

atributos de todas las tablas de la cláusula FROM.

– Puede usarse también el formato <Tabla>.* para referirse a todos

DML de SQL

los atributos de esa tabla.

– Pueden renombrarse los nombres de las columnas del resultado,
poniendo el nuevo nombre justo después del atributo (usar comillas
dobles si son varias palabras).
SELECT nombrep “Nombre de la pieza”, peso/1000 Kg
FROM Pieza;

Nombre de la pieza
Tornillo
Tuerca
Clavos

Kg
0.016
0.008
0.007

9

10

5

DML de SQL

Consultas con SELECT: Observaciones
Cláusula FROM: Para especificar tablas, vistas o

instantáneas (snapshot).
– Pueden ir varias tablas (vistas o instantáneas)
– Pueden ponerse alias a las tablas: <Tabla> <Alias>.
– Pueden usarse los alias en el SELECT (delante) y en el WHERE (detrás)

SELECT p.nombrep, p.peso FROM pieza p
WHERE p.cantidad>= 20;

Cláusula WHERE:

– Se usan los operadores relacionales <,>,<=,>=,<>,!=,=,LIKE

Comparación de Fechas, Caracteres, Números
Caracteres: UPPER, LOWER, LIKE ‘_ose%’

– La condición puede usar los op. lógicos NOT, AND y OR.
– Si no existe cláusula WHERE: Se supone que se recuperan todas las tuplas

(como si la condición fuese siempre verdad).

Si no existe cláusula WHERE y en la cláusula FROM hay varias tablas, se

obtiene el Producto Cartesiano: Por tanto, si hay varias tablas la
condición establece una selección de tuplas del Producto Cartesiano.

Las condiciones de una operación de REUNIÓN hay que explicitarlas.

11

Consultas con SELECT: Observaciones

– Null en Funciones SQL

DML de SQL

Todas las funciones escalares (excepto NVL y TRANSLATE) devuelven

null cuando se les pasa un null

argumento. Se puede usar la función NVL para devolver un valor cuando

hay un null.

NVL(COMM,0) devuelve 0 si COMM es null o el valor de COMM si no es

null.

La mayoría de las funciones de agregación ignoran nulls.
Media de 1000, null, null, null, y 2000  (1000+2000)/2 = 1500.

– Nulls con Operadores de Comparación

Usar IS NULL y IS NOT NULL.
Al usar otros operadores  UNKNOWN

Oracle considera 2 nulls iguales si aparecen en claves

compuestas.

12

6

Ejemplos:
– “Números de Suministradores que Suministren una Pieza de 16 gramos”:

DML de SQL

SELECT S# FROM Pieza, Suministros;

Suministros
S# P#
4
2
8
2
2
4
3
2

SELECT S# FROM Pieza,

Suministros

WHERE Peso = 16;

Pieza
P# NombreP
2
Tornillo
4 Tuerca
8 Clavos
P# NombreP
Tornillo
2
Tornillo
2
Tornillo
2
2
Tornillo
Tuerca
4
Tuerca
4
Tuerca
4
4
Tuerca
8 Clavos
8 Clavos
8 Clavos
8 Clavos

Peso
16
8
7
Peso
16
16
16
16
8
8
8
8
7
7
7
7

Cantidad
20
20
30
Cantidad S# P#
2 4
20
2 8
20
4 2
20
20
3 2
2 4
20
2 8
20
4 2
20
20
3 2
2 4
30
2 8
30
4 2
30
30
3 2

Ejemplos:
– “Números de Suministradores que Suministren una Pieza de 16 gramos”:

DML de SQL

SELECT S# FROM Pieza, Suministros
WHERE Pieza.P# = Suministros.P#;

P# NombreP
Tornillo
2
Tornillo
2
4
Tuerca
8 Clavos

Peso
16
16
8
7

Cantidad S# P#
4 2
20
3 2
20
20
2 4
2 8
30

SELECT S# FROM Pieza, Suministros

WHERE Pieza.P# = Suministros.P# AND Peso=16;

S#
4
3

13

14

7

DML de SQL: Consultas con SELECT

DML de SQL

Ejemplos:

– “Nombres de Suministradores que Suministren una Pieza de 16 gramos”:
SELECT NombreS FROM Suministrador, Pieza, Suministros

WHERE Suministros.P# = Pieza.P#

AND Suministros.S# = Suministrador.S# AND Peso=16;

Juan
Luis
Pablo

Suministrador
S# NombreS
2
3
4
Pieza
P# NombreP
2
Torn
  • Links de descarga
http://lwp-l.com/pdf16838

Comentarios de: Tema2. Bases de Datos Relacionales: 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