Está en la página 1de 76

EL MODELO RELACIONAL

UNIDAD 3

Modelos y Bases de Datos Ingeniería e


Modelo

Ingeniería e
relacional
La ventaja del modelo relacional es que los datos se
almacenan, al menos conceptualmente, de un modo
en que los usuarios entienden con mayor facilidad. Los
datos se almacenan como tablas y las relaciones entre
las filas y las tablas son visibles en los datos. Este

Modelos y Bases de Datos


enfoque permite a los usuarios obtener información de
la base de datos sin asistencia de sistemas
profesionales de administración de información.
Modelo

Ingeniería e
relacional
Las características más importantes de los modelos relacionales son:
1. Es importante saber que las entradas en la tabla tienen un solo valor
(son atómicos); no se admiten valores múltiples, por lo tanto la
intersección de un renglón con una columna tiene un solo valor,
nunca un conjunto de valores.

Modelos y Bases de Datos


2. Todas las entradas de cualquier columna son de un solo tipo. Por
ejemplo, una columna puede contener nombres de clientes, y en
otra puede tener fechas de nacimiento. Cada columna posee un
nombre único, el orden de las comunas no es de importancia
para la tabla, las columnas de una tabla se conocen como
atributos. Cada atributo tiene un dominio, que es una
descripción física y lógica de valores permitidos.

3. No existen 2 filas en la tabla que sean idénticas.

4. La información en las bases de datos son representados como datos


explícitos, no existen apuntadores o ligas entre las tablas.
Modelo

Ingeniería e
relacional
En el enfoque relacional es sustancialmente distinto de
otros enfoques en términos de sus estructuras lógicas y
del modo de las operaciones de entrada/salida. En el
enfoque relacional, los datos se organizan en tablas
llamadas relaciones, cada una de las cuales se implanta

Modelos y Bases de Datos


como un archivo. En terminología relacional una fila en
una relación representa un registro o una entidad; Cada
columna en una relación representa un campo o un
atributo.
    Así, una relación se compone de una colección de
entidades(o registros) cuyos propietarios están descritos
por cierto número de atributos predeterminados
implantados como campos.
Ingeniería e
Estructura de las bases de
datos relacionales

La arquitectura relacional se puede expresar en términos


de tres niveles de abstracción: nivel interno, conceptual y
de visión.
 La arquitectura relacional consta de los siguientes

Modelos y Bases de Datos


componentes: 
Ingeniería e
Estructura de las bases de
datos relacionales

Modelo relacional de datos:     En el nivel conceptual, el


modelo relacional de datos está representado por una
colección de relaciones almacenadas. Cada registro de tipo
conceptual en un modelo relacional de datos se implanta
como un archivo almacenado distinto.

Modelos y Bases de Datos


Submodelo de datos:     Los esquemas externos de un
sistema relacional se llaman submodelos relacionales de
datos; cada uno consta de uno a más escenarios (vistas)
para describir los datos requeridos por una aplicación dada.
Un escenario puede incluir datos de una o más tablas de
datos. Cada programa de aplicación está provisto de un
buffer ("Area de trabajo de usuario") donde el DBMS puede
depositar los datos recuperados de la base para su
procesamiento, o puede guardar temporalmente sus salidas
antes de que el DBMS las escriba en la base de datos.
 
Ingeniería e
Estructura de las bases de
datos relacionales

Esquema de almacenamiento:     En el nivel interno, cada


tabla base se implanta como un archivo almacenado. Para
las recuperaciones sobre las claves principal o secundaria se
pueden establecer uno o más índices para accesar un
archivo almacenado.
Sublenguaje de datos:

Modelos y Bases de Datos


     Es un lenguaje de manejo de datos para el sistema
relacional, el álgebra relacional y cálculo relacional, ambos
lenguajes son "relacionalmente completos", esto es,
cualquier relación que pueda derivarse de una o más tablas
de datos, también se puede derivar con u solo comando del
sublenguaje. Por tanto, el modo de operación de
entrada/Salida en un sistema relacional se puede procesar
en la forma: una tabla a la vez en lugar de: un registro a la
vez; en otras palabras, se puede recuperar una tabla en vez
de un solo registro con la ejecución de un comando del
sublenguaje de datos. 
Ingeniería e
Llave primaria
• En el diseño de bases de datos relacionales, se llama
llave primaria a un campo o a una combinación de
campos que identifica de forma única a cada fila de
una tabla. Una llave primaria comprende de esta
manera una columna o conjunto de columnas. No
pueden haber dos filas en una tabla que tengan la
misma llave primaria.

Modelos y Bases de Datos


Llave

Ingeniería e
primaria(cont.)
• Una llave primaria debe identificar unívocamente a todas
las posibles filas de una tabla y no solo a las filas que
se encuentran en un momento determinado. Ejemplos
de llaves primarias son DNI (asociado a una persona) o
ISBN (asociado a un libro). Las guias telefónicas y
diccionarios no pueden usar nombres o palabras o
números del sistema decimal de Dewey como llaves
candidatas, porque identifican unívocamente números

Modelos y Bases de Datos


de teléfono o palabras.
Llave

Ingeniería e
primaria(cont.)
• Una llave primaria es un caso especial de llave única. La
mayor diferencia es que para claves únicas, no se
impone automáticamente la restricción implícita NOT
NULL, mientras que para llaves primarias, sí. Así, los
valores en columnas de clave única pueden o no ser
NULL. Otra diferencia es que las llaves primarias
deben definirse por medio de otra sintaxis.

Modelos y Bases de Datos


Llave

Ingeniería e
primaria(cont.)
El modelo relacional, según se lo expresa mediante cálculo
relacional y álgebra relacional, no distingue entre llave
primaria y otros tipos de claves. Las llaves primarias fueron
agregadas al estándar SQL principalmente para
conveniencia del programador.
Tanto llaves únicas como claves primarias pueden
referenciarse con llaves foráneas.

Modelos y Bases de Datos


Criterios de selección de una

Ingeniería e
buena llave
Para escoger la clave primaria entre las claves candidatas se
pueden seguir estas indicaciones:
1· Escoger la clave candidata que tenga menos atributos.
2· Escoger la clave candidata cuyos valores no tengan
probabilidad de cambiar en el futuro.

Modelos y Bases de Datos


3· Escoger la clave candidata cuyos valores no tengan
probabilidad de perder la unicidad en el futuro.
4· Escoger la clave candidata con el mínimo número de
caracteres (si es de tipo texto).
5· Escoger la clave candidata más fácil de utilizar desde el
punto de vista de los usuarios..
Ingeniería e
Actividad

Modelos y Bases de Datos


Lee el articulo sobre «Cómo elegir una clave
primaria de una tabla» y menciona 10 ideas
principales. Al final concluye por que es
importante elegir una llave primaria.
Ingeniería e
Llave foránea
En el contexto de bases de datos relacionales, una llave
foránea (o Foreign Key FK) es una limitación referencial
entre dos tablas. La llave foránea identifica una columna o
grupo de columnas en una tabla (tabla hija o referendo) que
se refiere a una columna o grupo de columnas en otra tabla
(tabla maestra o referenciada). Las columnas en la tabla
referendo deben ser la llave primaria u otra llave candidata
en la tabla referenciada.

Modelos y Bases de Datos


Llave

Ingeniería e
foránea(cont.)
Los valores en una fila de las columnas referendo deben
existir solo en una fila en la tabla referenciada. Así, una fila
en la tabla referendo no puede contener valores que no
existen en la tabla referenciada. De esta forma, las
referencias pueden ser creadas para vincular o relacionar
información. Esto es una parte esencial de la normalización
de base de datos. Múltiples filas en la tabla referendo
pueden hacer referencia, vincularse o relacionarse a la

Modelos y Bases de Datos


misma fila en la tabla referenciada. Mayormente esto se ve
reflejado en una relación uno (tabla maestra o referenciada)
a muchos (tabla hija o referendo).
Llave

Ingeniería e
foránea(cont.)
La tabla referendo y la tabla referenciada pueden ser la
misma, esto es, la clave foránea remite o hace referencia a
la misma tabla. Esta llave externa es conocida en SQL:2003
como auto-referencia o clave foránea recursiva. Una tabla
puede tener múltiples llaves foráneas y cada una puede
tener diferentes tablas referenciadas. Cada llave foránea es
forzada independientemente por el sistema de base de
datos. Por tanto, las relaciones en cascada entre tablas

Modelos y Bases de Datos


pueden realizarse usando llaves foráneas. Configuraciones
impropias de las llaves foráneas o primarias o no forzar
esas relaciones son frecuentemente la fuente de muchos
problemas para la base de datos o para el modelamiento de
los mismos.
Ingeniería e
Atributo
Un atributo es el papel que tiene un
determinado dominio en una relación.
Es muy usual dar el mismo nombre al atributo y
al dominio. En el caso de que sean varios los

Modelos y Bases de Datos


atributos de una misma tabla definidos sobre el
mismo dominio, habrá que darles nombres
distintos, ya que una tabla no puede tener dos
atributos con el mismo nombre.
Por ejemplo los atributos edad_física y
edad_mental pueden estar definidos sobre el
mismo dominio edad; o los atributos
precio_compra y precio_venta pueden estar
definidos sobre el mismo dominio de enteros de
longitud 5.
Ingeniería e
Dominio
Un dominio es un conjunto finito de valores
homogéneos y atómicos caracterizados por un nombre;
decimos homogéneos porque son todos del mismo tipo y
atómicos porque son indivisibles.
Todo dominio ha de tener un nombre por el cual nos
podamos referir a él y un tipo de datos; así el tipo de

Modelos y Bases de Datos


datos del dominio "nacionalidades" es una tira de
caracteres de longitud 10.
El dominio "nacionalidades" tiene valores : España,
Francia,... Si descompusiéramos España en E,s,p,...
perdería la semántica.
Ejemplos de dominios serían:
Colores: Es el conjunto de los colores D={rojo, verde,
azul,}
Números de DNI: Es conjunto de números del DNI válidos,
formados por ocho dígitos.
Edad: Edades posibles de los empleados entre 18 y 80
años.
Ingeniería e
Esquema
Un esquema de tupla, τ, es un conjunto de pares de la forma:
τ = {(A1, D1), (A2, D2),…, (An, Dn)}
donde:
{A1, A2, …, An} (n > 0) es el conjunto de nombres de
atributos del esquema, necesariamente distintos.

Modelos y Bases de Datos


D1, D2 …, Dn son los dominios asociados a dichos
atributos que no tienen que ser necesariamente distintos.

Ejemplo:

Persona = {(dni, entero), (nombre, cadena), (dirección,


cadena)}
donde:
{ dni, nombre, dirección } es el conjunto de nombres de
atributos
del esquema.
entero, cadena, cadena son los dominios asociados a dichos
atributos.
Ingeniería e
Integridad Referencial
Cuando se define una columna como clave foránea,
las filas de la tabla pueden contener en esa
columna o bien el valor nulo (ningún valor), o bien
un valor que existe en la otra tabla, un error sería
asignar a un habitante una población que no está

Modelos y Bases de Datos


en la tabla de poblaciones. Eso es lo que se
denomina integridad referencial y consiste en
que los datos que referencian otros (claves
foráneas) deben ser correctos. La integridad
referencial hace que el sistema gestor de la base
de datos se asegure de que no hayan en las claves
foráneas valores que no estén en la tabla principal.
La integridad referencial se activa en cuanto
creamos una clave foránea y a partir de ese
momento se comprueba cada vez que se
modifiquen datos que puedan alterarla.
Ingeniería e
Integridad Referencial
¿ Cuándo se pueden producir errores en los datos?
• Cuando insertamos una nueva fila en la tabla secundaria y el
valor de la clave foránea no existe en la tabla principal.
insertamos un nuevo habitante y en la columna poblacion
escribimos un código de poblacion que no está en la tabla de
poblaciones (una población que no existe).
• Cuando modificamos el valor de la clave principal de un

Modelos y Bases de Datos


registro que tiene 'hijos', modificamos el codigo de Valencia,
sustituimos el valor que tenía (1) por un nuevo valor (10), si
Valencia tenía habitantes asignados, qué pasa con esos habitantes,
no pueden seguir teniendo el codigo de población 1 porque la
población 1 ya no existe, en este caso hay dos alternativas, no
dejar cambiar el codigo de Valencia o bien cambiar el codigo de
población de todos los habitantes de Valencia y asignarles el código
10.
• Cuando modificamos el valor de la clave foránea, el nuevo valor
debe existir en la tabla principal. Por ejemplo cambiamos la
población de un habitante, tenía asignada la población 1 (porque
estaba empadronado en valencia) y ahora se le asigna la población
2 porque cambia de lugar de residencia. La población 2 debe existir
en la tabla de poblaciones.
• Cuando queremos borrar una fila de la tabla principal y ese
registro tiene 'hijos', por ejemplo queremos borrar la población 1
(Valencia) si existen habitantes asignados a la población 1, estos no
se pueden quedar con el valor 1 en la columna población porque
tendrían asignada una población que no existe. En este caso
Ingeniería e
Modelos y Bases de Datos
Actividad
Realiza un mapa conceptual de la unidad
básico)
datos (SQL
Manipulación de

Modelos y Bases de Datos Ingeniería e


Ingeniería e
SQL
El lenguaje de consulta estructurado o SQL (por sus
siglas en inglés structured query language) es un lenguaje
declarativo de acceso a bases de datos relacionales que
permite especificar diversos tipos de operaciones en éstas.
Una de sus características es el manejo del álgebra y el

Modelos y Bases de Datos


cálculo relacional permitiendo efectuar consultas con el fin
de recuperar -de una forma sencilla- información de
interés de una base de datos, así como también hacer
cambios sobre ella.
Ingeniería e
Orígenes
Los orígenes del SQL están ligados a las de las bases de
datos relacionales. En 1970 E. F. Codd propone el modelo
relacional y asociado a éste un sublenguaje de acceso a
los datos basado en el cálculo de predicados. Basándose
en estas ideas, los laboratorios de IBM definen el lenguaje

Modelos y Bases de Datos


SEQUEL (Structured English QUEry Language) que más
tarde sería ampliamente implementado por el sistema de
gestión de bases de datos (SGBD) experimental System R,
desarrollado en 1977 también por IBM. Sin embargo, fue
Oracle quien lo introdujo por primera vez en 1979 en un
programa comercial.
Ingeniería e
Orígenes (cont.)
El SEQUEL terminaría siendo el predecesor de SQL, siendo
éste una versión evolucionada del primero. El SQL pasa a
ser el lenguaje por excelencia de los diversos sistemas de
gestión de bases de datos relacionales surgidos en los
años siguientes y es por fin estandarizado en 1986 por el

Modelos y Bases de Datos


ANSI, dando lugar a la primera versión estándar de este
lenguaje, el "SQL-86" o "SQL1". Al año siguiente este
estándar es también adoptado por la ISO.
Ingeniería e
Orígenes (cont.)
Sin embargo, este primer estándar no cubre todas las
necesidades de los desarrolladores e incluye
funcionalidades de definición de almacenamiento que se
consideraron suprimir. Así que en 1992 se lanza un nuevo
estándar ampliado y revisado del SQL llamado "SQL-92" o

Modelos y Bases de Datos


"SQL2".
En la actualidad el SQL es el estándar de facto de la
inmensa mayoría de los SGBD comerciales. Y, aunque la
diversidad de añadidos particulares que incluyen las
distintas implementaciones comerciales del lenguaje es
amplia, el soporte al estándar SQL-92 es general y muy
amplio.
Ingeniería e
Orígenes (cont.)
Sin embargo, este primer estándar no cubre todas las
necesidades de los desarrolladores e incluye
funcionalidades de definición de almacenamiento que se
consideraron suprimir. Así que en 1992 se lanza un nuevo
estándar ampliado y revisado del SQL llamado "SQL-92" o

Modelos y Bases de Datos


"SQL2".
En la actualidad el SQL es el estándar de facto de la
inmensa mayoría de los SGBD comerciales. Y, aunque la
diversidad de añadidos particulares que incluyen las
distintas implementaciones comerciales del lenguaje es
amplia, el soporte al estándar SQL-92 es general y muy
amplio.
Evolución del SQL

Modelos y Bases de Datos Ingeniería e


Características generales

Ingeniería e
del SQL

El SQL es un lenguaje de acceso a bases de datos que


explota la flexibilidad y potencia de los sistemas
relacionales permitiendo gran variedad de operaciones en
éstos últimos.
Es un lenguaje declarativo de "alto nivel" o "de no

Modelos y Bases de Datos


procedimiento", que gracias a su fuerte base teórica y su
orientación al manejo de conjuntos de registros, y no a
registros individuales, permite una alta productividad en
codificación y la orientación a objetos. De esta forma una
sola sentencia puede equivaler a uno o más programas
que se utilizarían en un lenguaje de bajo nivel orientado a
registros.
Ingeniería e
Optimización

Como ya se dijo arriba, y suele ser común en los lenguajes


de acceso a bases de datos de alto nivel, el SQL es un
lenguaje declarativo. O sea, que especifica qué es lo que se
quiere y no cómo conseguirlo, por lo que una sentencia no
establece explícitamente un orden de ejecución.
El orden de ejecución interno de una sentencia puede

Modelos y Bases de Datos


afectar gravemente a la eficiencia del SGBD, por lo que se
hace necesario que éste lleve a cabo una optimización
antes de su ejecución. Muchas veces, el uso de índices
acelera una instrucción de consulta, pero ralentiza la
actualización de los datos. Dependiendo del uso de la
aplicación, se priorizará el acceso indexado o una rápida
actualización de la información. La optimización difiere
sensiblemente en cada motor de base de datos y depende
de muchos factores.
Existe una ampliación de SQL conocida como FSQL (Fuzzy
SQL, SQL difuso) que permite el acceso a bases de datos
difusas, usando la lógica difusa. Este lenguaje ha sido
Ingeniería e
Comandos
Existen dos tipos de comandos SQL:

• Los DLL
• Los DML

Modelos y Bases de Datos


Ingeniería e
Lenguaje de definición de
datos (DDL)
El lenguaje de definición de datos (en inglés Data Definition
Language, o DDL), es el que se encarga de la modificación
de la estructura de los objetos de la base de datos. Existen
cuatro operaciones básicas: CREATE, ALTER, DROP y
TRUNCATE.

Modelos y Bases de Datos


Ingeniería e
Lenguaje de definición de
datos (DDL)

Modelos y Bases de Datos


Lenguaje de manipulación

Ingeniería e
de datos DML(Data
Manipulation Language)

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

Modelos y Bases de Datos


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.
manipulación de datos

Ingeniería e
DML(Data Manipulation
Language)

Modelos y Bases de Datos


manipulación de datos

Ingeniería e
DML(Data Manipulation
Language)

Modelos y Bases de Datos


Ingeniería e
Cláusulas

Las cláusulas son condiciones de modificación utilizadas


para definir los datos que desea seleccionar o manipular.

Modelos y Bases de Datos


Ingeniería e
Cláusulas

Las cláusulas son condiciones de modificación utilizadas


para definir los datos que desea seleccionar o manipular.

Modelos y Bases de Datos


Operadores

Modelos y Bases de Datos Ingeniería e


Comparación
 Operadores de

Modelos y Bases de Datos Ingeniería e


Ingeniería e
  Funciones de Agregado
La s fu n cio n e s d e a g re g a d o se u sa n d e n tro d e
u n a clá u su la S E LE C T e n g ru p o s d e re g istro s
p a ra d e vo lve r u n ú n ico va lo r q u e se a p lica a u n
g ru p o d e re g istro s.
 

Modelos y Bases de Datos


Ingeniería e
  Creación de la Base de
Datos

CREATE DATABASE db_name

Modelos y Bases de Datos


Ingeniería e
  Acceso a la Base de
Datos
USE db_name

Modelos y Bases de Datos


  Creación de Tablas

Ingeniería e
Nuevas

Si se está utilizando el motor de datos de Microsoft para


acceder a bases de datos access, sólo se puede emplear
esta instrucción para crear bases de datos propias de
access. Su sintaxis es:
    CREATE TABLE tabla (campo1 tipo (tamaño) índice1 ,
    campo2 tipo (tamaño) índice2 , ...,
    índice multicampo , ... )

Modelos y Bases de Datos


En donde:
  Creación de Tablas

Ingeniería e
Nuevas

Ejemplo:

CREATE TABLE Empleados (Nombre TEXT (25) , Apellidos


TEXT (50));

Crea una nueva tabla llamada Empleados con dos campos,

Modelos y Bases de Datos


uno llamado Nombre de tipo texto y longutid 25 y otro
llamado apellidos con longitud 50.
Ingeniería e
  La cláusula CONSTRAINT
Se utiliza la cláusula CONSTRAINT en las instrucciones ALTER
TABLE y CREATE TABLE para crear o eliminar índices. Existen
dos sintaxis para esta cláusula dependiendo si desea Crear ó
Eliminar un índice de un único campo o si se trata de un campo
multiíndice. Si se utiliza el motor de datos de Microsoft, sólo
podrá utilizar esta cláusula con las bases de datos propias de
dicho motor.

Modelos y Bases de Datos


Para los índices de campos únicos:
    CONSTRAINT nombre {PRIMARY KEY | UNIQUE | REFERENCES
tabla externa
    [(campo externo1, campo externo2)]}
Para los índices de campos múltiples:
    CONSTRAINT nombre {PRIMARY KEY (primario1[, primario2 [,
...]]) |
    UNIQUE (único1[, único2 [, ...]]) |
    FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES tabla externa
[(campo externo1
    [,campo externo2 [, ...]])]}
  La cláusula CONSTRAINT

Modelos y Bases de Datos Ingeniería e


  La cláusula CONSTRAINT

Modelos y Bases de Datos Ingeniería e


Ingeniería e
  Creación de Índices

Si se utiliza el motor de datos Jet de Microsoft sólo se


pueden crear índices en bases de datos del mismo motor.
La sintaxis para crear un índice en ua tabla ya definida en la
siguiente:
    CREATE [ UNIQUE ] INDEX índice
    ON tabla (campo [ASC|DESC][, campo [ASC|DESC], ...])
    [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

Modelos y Bases de Datos


En donde:
Ingeniería e
  Creación de Índices
Se puede utilizar CREATE INDEX para crear un pseudo índice sobre una
tabla adjunta en una fuente de datos ODBC tal como SQL Server que
no tenga todavía un índice. No necesita permiso o tener acceso a un
servidor remoto para crear un pseudo índice, además la base de datos
remota no es consciente y no es afectada por el pseudo índice. Se
utiliza la misma sintaxis para las tabla adjunta que para las originales.
Esto es especialmente útil para crear un índice en una tabla que sería
de sólo lectura debido a la falta de un índice.    

Ejemplo:

Modelos y Bases de Datos


CREATE INDEX MiIndice ON Empleados (Prefijo, Telefono);
Crea un índice llamado MiIndice en la tabla empleados con los campos
Prefijo y Telefono.
   
CREATE UNIQUE INDEX MiIndice ON Empleados (ID) WITH DISALLOW
NULL;
Crea un índice en la tabla Empleados utilizando el campo ID, obligando
que que el campo ID no contenga valores nulos ni repetidos.
Ingeniería e
Insertar valores
La instrucción SQL que lleva a cabo la inclusión de una
nueva línea en una tabla es INSERT. La sintaxis con la que
ésta se usa comunmente es:

INSERT INTO nombre_tabla [ ( lista_campos ) ]


VALUES ( lista_valores )

ejemplo:

Modelos y Bases de Datos


INSERT INTO Institution ( ID, name, city, country )
VALUES ( 1, '7th IFIP 2.6 Working Conference on Database
Semantics (DS-7)', 'Leysin', 'Switzerland' );
  Modificar el Diseño de

Ingeniería e
una Tabla
Modifica el diseño de una tabla ya existente, se puden
modificar los campos o los índices existentes. Su sintaxis
es:
    ALTER TABLE tabla {ADD {COLUMN tipo de
campo[(tamaño)] [CONSTRAINT índice]
    CONSTRAINT índice multicampo} |
    DROP {COLUMN campo I CONSTRAINT nombre del

Modelos y Bases de Datos


índice} }
En donde:
  Modificar el Diseño de

Ingeniería e
una Tabla

Ejemplos:

Modelos y Bases de Datos


ALTER TABLE Empleados ADD COLUMN Salario CURRENCY;
Agrega un campo Salario de tipo Moneda a la tabla Empleados.
    ALTER TABLE Empleados DROP COLUMN Salario;
Elimina el campo Salario de la tabla Empleados.
    ALTER TABLE Pedidos ADD CONSTRAINT RelacionPedidos FOREIGN KEY
    (ID_Empleado) REFERENCES Empleados (ID_Empleado);
Agrega un indice externo a la tabla Pedidos. El índice externo se basa en el campo
ID_Empleado y se refiere al campo ID_Empleado de la tabla Empleados. En este ejemplo
no es necesario indicar el campo junto al nombre de la tabla en la cláusula REFERENCES,
pues ID_Empleado es la clave principal de la tabla Empleados.
    ALTER TABLE Pedidos DROP CONSTRAINT RelacionPedidos;
Elimina el índide de la tabla Pedidos.
  Mostrar Base de Datos y

Ingeniería e
Tablas
SHOW DATABASES;
SHOW TABLES;

Modelos y Bases de Datos


Ingeniería e
Modificar registros
UPDATE nombre_tabla SET campo1, campo2 , etc. WHERE
condicion [Modifica el registro con ID 1 con los valores nombre:
Mauricio, apellido: Mono, pais: Mexico, idioma: ES de español]

Ejemplos:

UPDATE tabla SET nombre = 'Mauricio', apellido = 'Mono',

Modelos y Bases de Datos


pais = 'Mexico', idioma = 'ES' WHERE id = '1' [Modifica el
registro con ID 1 con los valores nombre: Mauricio, apellido:
Mono, pais: Mexico, idioma: ES de español]
UPDATE tabla SET Idioma = 'EN' WHERE apellido = 'Mono'
AND nombre = 'Mauricio' [Modifica el idioma a EN de inglés
donde el nombre sea Mauricio y el apellido sea Mono]
Ingeniería e
Eliminar registros
DELETE FROM tabla WHERE id = '1' [Borramos el registro]
DELETE FROM tabla WHERE nombre = 'Mauricio' [Borramos
todos los registros que tengan el nombre de Mauricio]

Modelos y Bases de Datos


Ingeniería e
  Selección
La selección total o parcial de una tabla se lleva a
cabo mediante la instrucción Select. En dicha
selección hay que especificar: -Los campos que
queremos seleccionar
-La tabla en la que hacemos la selección
En nuestra tabla modelo de clientes podríamos hacer
por ejemplo una selección del nombre y dirección de

Modelos y Bases de Datos


los clientes con una instrucción de este tipo:

Select nombre, dirección From clientes


Ingeniería e
  Selección (Cont.)
Si quisiésemos seleccionar todos los campos,
es decir, toda la tabla, podríamos utilizar el
comodín * del siguiente modo:

Select * From nombre_tabla

Modelos y Bases de Datos


Ingeniería e
  Selección (Cont.)
Resulta también muy útil el filtrar los registros
mediante condiciones que vienen expresadas
después de la cláusula Where. Si quisiésemos
mostrar los clientes de una determinada ciudad
usaríamos una expresión como esta:
Select * From clientes Where poblacion = 'Madrid'

Modelos y Bases de Datos


Ingeniería e
  Selección (Cont.)
Además, podríamos ordenar los resultados en
función de uno o varios de sus campos. Para este
ultimo ejemplo los podríamos ordenar por nombre
así:

Select * From clientes Where poblacion ='Madrid'


Order By nombre

Modelos y Bases de Datos


Ingeniería e
  Selección (Cont.)
Teniendo en cuenta que puede haber más de un
cliente con el mismo nombre, podríamos dar un
segundo criterio que podría ser el apellido:

Select * From clientes Where poblacion = 'Madrid'


Order By nombre, apellido

Modelos y Bases de Datos


Ingeniería e
  Selección (Cont.)
Si invirtiésemos el orden « nombre,apellido » por «
apellido, nombre », el resultado sería distinto.
Tendríamos los clientes ordenados por apellido y
aquellos que tuviesen apellidos idénticos se
subclasificarían por el nombre.
Es posible también clasificar por orden inverso. Si
por ejemplo quisiésemos ver nuestros clientes por

Modelos y Bases de Datos


orden de pedidos realizados teniendo a los mayores
en primer lugar escribiríamos algo así:

Select * From clientes Order By pedidos Desc


Ingeniería e
  Selección (Cont.)
Una opción interesante es la de efectuar selecciones
sin coincidencia. Si por ejemplo buscásemos el
saber en qué ciudades se encuentran nuestros
clientes sin necesidad de que para ello aparezca
varias veces la misma ciudad usaríamos una
sentencia de esta clase:

Modelos y Bases de Datos


Select Distinct poblacion From clientes Order By
poblacion

Así evitaríamos ver repetido Madrid tantas veces


como clientes tengamos en esa población.
Ingeniería e
  Selección (Cont.)
Veamos a continuación aplicaciones practicas con operadores.

En esta sentencia seleccionamos todos los clientes de Madrid cuyo


nombre no es Pepe.

Select * From clientes Where poblacion = 'madrid' And Not nombre


='Pepe'

Modelos y Bases de Datos


Si quisiéramos recoger en una selección a los clientes de nuestra tabla
cuyo apellido comienza por A y cuyo número de pedidos esta
comprendido entre 20 y 40:
Select * From clientes Where apellidos ='A%' And pedidos Between
20 And 40

El operador In, lo veremos más adelante, es muy práctico para


consultas en varias tablas. Para casos en una sola tabla es empleado
del siguiente modo:

Select * From clientes Where poblacion In


('Madrid','Barcelona','Valencia')
Ingeniería e
  Selección (Cont.)
Estas tablas pueden ser utilizadas simultáneamente para extraer
informaciones de todo tipo. Supongamos que queremos enviar un
mailing a todos aquellos que hayan realizado un pedido ese mismo día.
Podríamos escribir algo así:

Select clientes.apellidos, clientes.email From clientes,pedidos


Where pedidos.fecha = '25/02/00' And pedidos.id_cliente=
clientes.id_cliente

Modelos y Bases de Datos


Como puede verse esta vez, después de la cláusula From, introducimos
el nombre de las dos tablas de donde sacamos las informaciones.
Además, el nombre de cada campo va precedido de la tabla de
provenencia separados ambos por un punto. En los campos que poseen
un nombre que solo aparece en una de las tablas, no es necesario
especificar su origen aunque a la hora de leer la sentencia puede
resultar más claro el precisarlo. En este caso el campo fecha podría
haber sido designado como "fecha" en lugar de "pedidos.fecha".
Veamos otro ejemplo más para consolidar estos nuevos conceptos.
Esta vez queremos ver el título del libro correspondiente a cada uno de
los pedidos realizados:

Select pedidos.id_pedido, articulos.titulo From pedidos,


articulos Where pedidos.id_articulo=articulos.id_articulo
Ingeniería e
  Tipos de Datos
• Tipos numéricos

• Tipos de Fecha

Modelos y Bases de Datos


• Tipos de Cadena
Ingeniería e
  Tipos Numéricos

Existen tipos de datos numéricos, que se pueden dividir en dos grandes
grupos, los que están en coma flotante (con decimales) y los que no.

*TinyInt: es un número entero con o sin signo. Con signo el rango de


valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0
a 255
Bit ó Bool: un número entero que puede ser 0 ó 1
*SmallInt: número entero con o sin signo. Con signo el rango de valores
va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535.
*MediumInt: número entero con o sin signo. Con signo el rango de

Modelos y Bases de Datos


valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0
a16777215.
*Integer, Int: número entero con o sin signo. Con signo el rango de
valores va desde -2147483648 a 2147483647. Sin signo el rango va
desde 0 a 429.4967.295
*BigInt: número entero con o sin signo. Con signo el rango de valores va
desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin
signo el rango va desde 0 a 18.446.744.073.709.551.615.
*Float: número pequeño en coma flotante de precisión simple. Los
valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y
desde 1.175494351E-38 a 3.402823466E+38.
*xReal, Double: número en coma flotante de precisión doble. Los valores
permitidos van desde -1.7976931348623157E+308 a
-2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a
  Tipos Numéricos (cont.)

Modelos y Bases de Datos Ingeniería e


Ingeniería e
  Tipos fecha
A la hora de almacenar fechas, hay que tener en cuenta que Mysql no
comprueba de una manera estricta si una fecha es válida o no.
Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que
el día esta comprendido entre 0 y 31.
Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1
de enero del 1001 al 31 de diciembre de 9999. El formato de
almacenamiento es de año-mes-dia

*DateTime: Combinación de fecha y hora. El rango de valores va desde


el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de
diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato

Modelos y Bases de Datos


de almacenamiento es de año-mes-dia horas:minutos:segundos

*TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de


enero de 1970 al año 2037. El formato de almacenamiento depende del
tamaño del campo:
  Tipos fecha (cont.)

Modelos y Bases de Datos Ingeniería e


Ingeniería e
  Tipos fecha (cont.)
Time: almacena una hora. El rango de horas va desde -838 horas, 59
minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de
almacenamiento es de 'HH:MM:SS'

Year: almacena un año. El rango de valores permitidos va desde el año


1901 al año 2155. El campo puede tener tamaño dos o tamaño 4
dependiendo de si queremos almacenar el año con dos o cuatro dígitos.

Modelos y Bases de Datos


Ingeniería e
  Tipo cadena
*Char(n): almacena una cadena de longitud fija. La cadena podrá
contener desde 0 a 255 caracteres.

*VarChar(n): almacena una cadena de longitud variable. La cadena


podrá contener desde 0 a 255 caracteres.

Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los
tipo Test y los tipo BLOB (Binary large Object)

La diferencia entre un tipo y otro es el tratamiento que reciben a la hora


de realizar ordenamientos y comparaciones. Mientras que el tipo test se

Modelos y Bases de Datos


ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB
se ordena teniéndolas en cuenta.
Ingeniería e
  Tipo cadena (Cont.)
Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser
ficheros.

*TinyText y TinyBlob: Columna con una longitud máxima de 255


caracteres.

*Blob y Text: un texto con un máximo de 65535 caracteres.

*MediumBlob y MediumText: un texto con un máximo de 16.777.215


caracteres.

Modelos y Bases de Datos


*LongBlob y LongText: un texto con un máximo de caracteres
4.294.967.295. Hay que tener en cuenta que debido a los protocolos de
comunicación los paquetes pueden tener un máximo de 16 Mb.

*Enum: campo que puede tener un único valor de una lista que se
especifica. El tipo Enum acepta hasta 65535 valores distintos

*Set: un campo que puede contener ninguno, uno ó varios valores de una
lista. La lista puede tener un máximo de 64 valores.
  Tipo cadena (Cont.)

Modelos y Bases de Datos Ingeniería e


Ingeniería e
  Tipo cadena (Cont.)
Diferencia de almacenamiento entre los tipos Char y
VarChar

Modelos y Bases de Datos

También podría gustarte