1. Base de Datos Avanzada
CREACION DE TABLAS EN SQL SERVER 2005.
Este tipo de sentencias son especialmente útiles para bases de datos como MySQL, las cuales
trabajan directamente con comandos SQL y no por medio de editores.Para crear una tabla debemos
especificar diversos datos: El nombre que le queremos asignar, los nombres de los campos y sus
características. Además, puede ser necesario especificar cuáles de estos campos van a ser índices y
de qué tipo van a serlo.La sintaxis de creación puede variar ligeramente de una base de datos a otra
ya que los tipos de campo aceptados no están completamente estandarizados.A continuación os
explicamos someramente la sintaxis de esta sentencia y os proponemos una serie de ejemplos
prácticos:
Sintaxis:
Create Table nombre_tabla
(
nombre_campo_1 tipo_1
nombre_campo_2 tipo_2
nombre_campo_n tipo_n
Key(campo_x,...)
)
Pongamos ahora como ejemplo la creación de la tabla pedidos que hemos empleado en capítulos
previos:
Create Table pedidos
(
id_pedido INT(4) NOT NULL AUTO_INCREMENT,
id_cliente INT(4) NOT NULL,
id_articulo INT(4)NOT NULL,
fecha DATE,
cantidad INT(4),
total INT(4), KEY(id_pedido,id_cliente,id_articulo)
)
En este caso creamos los campos id los cuales son considerados de tipo entero de una longitud
especificada por el número entre paréntesis. Para id_pedido requerimos quedicho campo se
incremente automáticamente (AUTO_INCREMENT) de una unidad a cada introducción de un
nuevo registro para, de esta forma, automatizar su creación. Por otra parte, para evitar un mensaje de
error, es necesario requerir que los campos que van a ser definidos como índices no puedan ser nulos
(NOT NULL).El campo fecha es almacenado con formato de fecha (DATE) para permitir su correcta
explotación a partir de las funciones previstas a tal efecto.Finalmente, definimos los índices
enumerándolos entre paréntesis precedidos de la palabra KEY o INDEX.
7mo “A” Sistemas Henrry Davids Carriel Álvarez
2. Base de Datos Avanzada
Del mismo modo podríamos crear la tabla de artículos con una sentencia como ésta:
Create Table articulos
(
id_articulo INT(4) NOT NULL AUTO_INCREMENT,
titulo VARCHAR(50),
autor VARCHAR(25),
editorial VARCHAR(25),
precio REAL,
KEY(id_articulo)
)
En este caso puede verse que los campos alfanuméricos son introducidos de la misma forma que los
numéricos. Volvemos a recordar que en tablas que tienen campos comunes es de vital importancia
definir estos campos de la misma forma para el buen funcionamiento de la base.Muchas son las
opciones que se ofrecen al generar tablas. No vamos a tratarlas detalladamente pues sale de lo
estrictamente práctico. Tan sólo mostraremos algunos de los tipos de campos que pueden ser
empleados en la creación de tablas con sus características:
Tipo Bytes Descripción
INT o INTEGER 4 Números enteros. Existen otros tipos de mayor o menor
longitud específicos de cada base de datos.
DOUBLE o 8 Números reales (grandes y con decimales). Permiten
REAL almacenar todo tipo de número no entero.
CHAR 1/caracter Alfanuméricos de longitud fija predefinida
VARCHAR 1/caracter+1 Alfanuméricos de longitud variable
DATE 3 Fechas, existen multiples formatos específicos de cada base de
datos
BLOB 1/caracter+2 Grandes textos no indexables
BIT o 1 Almacenan un bit de información (verdadero o falso)
BOOLEAN
TIPOS DE DATOS DEL SQL SERVER 2005.
Los tipos de datos SQL se clasifican en 13 tipos de datos primarios y de varios sinónimos válidos
reconocidos por dichos tipos de datos. Los tipos de datos primarios son:
Tipo de Datos Longitud Descripción
7mo “A” Sistemas Henrry Davids Carriel Álvarez
3. Base de Datos Avanzada
BINARY 1 byte Para consultas sobre tabla adjunta de productos de bases de
datos que definen un tipo de datos Binario.
BIT 1 byte Valores Si/No ó True/False
BYTE 1 byte Un valor entero entre 0 y 255.
COUNTER 4 bytes Un número incrementado automáticamente (de tipo Long)
CURRENCY 8 bytes Un entero escalable entre 922.337.203.685.477,5808 y
922.337.203.685.477,5807.
DATETIME 8 bytes Un valor de fecha u hora entre los años 100 y 9999.
SINGLE 4 bytes Un valor en punto flotante de precisión simple con un rango de -
3.402823*1038 a -1.401298*10-45 para valores negativos,
1.401298*10- 45 a 3.402823*1038 para valores positivos, y 0.
DOUBLE 8 bytes Un valor en punto flotante de doble precisión con un rango de -
1.79769313486232*10308 a -4.94065645841247*10-324 para
valores negativos, 4.94065645841247*10-324 a
1.79769313486232*10308 para valores positivos, y 0.
SHORT 2 bytes Un entero corto entre -32,768 y 32,767.
LONG 4 bytes Un entero largo entre -2,147,483,648 y 2,147,483,647.
LONGTEXT 1 byte por De cero a un máximo de 1.2 gigabytes.
carácter
LONGBINARY Según se De cero 1 gigabyte. Utilizado para objetos OLE.
necesite
TEXT 1 byte por De cero a 255 caracteres.
carácter
La siguiente tabla recoge los sinónimos de los tipos de datos definidos:
Tipo de Tipo de Datos Tipo de Datos Tipo de Datos
Datos
BINARY VARBINARY DOUBLE FLOAT FLOAT8 IEEEDOUBLE
NUMBER NUMERIC
BIT BOOLEAN LOGICAL SHORT INTEGER2
LOGICAL1 YESNO SMALLINT
BYTE INTEGER1 LONG INT INTEGER INTEGER4
COUNTER AUTOINCREMENT LONGBINARY GENERAL OLEOBJECT
CURRENCY MONEY LONGTEXT LONGCHAR MEMO NOTE
DATETIME DATE TIME TIMESTAMP TEXT ALPHANUMERIC CHAR -
CHARACTER STRING - VARCHAR
SINGLE FLOAT4 IEEESINGLE REAL VARIANT (No VALUE
Admitido)
7mo “A” Sistemas Henrry Davids Carriel Álvarez
4. Base de Datos Avanzada
TIPOS DE BASE DE DATOS
SQL Server incluye varias bases de datos del sistema (MASTER, MSDB, MODEL, TEMPDB,
DISTRIBUTION, MSSQLSYSTEMRESOURCE), cada con unas finalidades específicas, que a
continuación se indican:
MASTER. ¿Para que sirve MASTER? Almacena información de configuración de la
instancia de SQL Server, como puede ser la definición de los inicios de sesión (Logins), de
las bases de datos, de los errores del sistema, etc. Hay que tener en cuenta, que no toda la
configuración de la instancia se almacena en MASTER, pues por ejemplo, el modo de
autenticación (Windows o Mixto) se almacena en el registro.
También contiene los procedimientos almacenados extendidos, y muchos otros
procedimientos almacendos del sistema sólo disponibles en MASTER.
MSDB. ¿Para que sirve MSDB? Principalmente tiene la función de dar soporte al Agente
de SQL Server, de tal modo que almacena la definición y planificación de JOBs, Planes de
Mantenimiento, etc. (incluyendo su historial de ejecución), así como almacena la definición
de otros objetos como Operadores, Alertas, etc. Esto implica, que el Agente de SQL Server,
que cómo sabemos es un servicio de Windows, se conectará a esta base de datos, y por ello
será necesario parar el Agente de SQL Server si deseamos hacer un RESTORE de la misma,
pues necesitaremos exclusividad.
Sin embargo, MSDB también se utiliza cuando el Agente de SQL Server no está
presente, como es el caso de SQL Express (que no incluye éste servicio) o en los casos en
que no se utiliza (ej: el Agente de SQL Server está parado). Por poner ejemplos, siempre que
se realiza una copia de seguridad (BACKUP DATABASE o BACKUP LOG) o una
restauración (RESTORE DATABASE o RESTORE LOG), se almacena en MSDB (tablas
backupfile, backupfilegroup, backupmediafamily, backupmediaset, backupset, restorefile,
restorefilegroup, restorehistory).
Por último, también permite servir de ubicación de almacenamiento de paquetes DTS
(SQL Server 2000) y DTSX (SQL Server 2005 - SSIS).
MODEL. ¿Para que sirve MODEL? Esta base de datos sirve de modelo. Siempre que se crea
una nueva base de datos (CREATE DATABASE), se realiza una copia de la base de datos
MODEL, heredando de ésta su configuración y contenido, salvo que se especifique lo
contrario. Por ejemplo, es posible establecer el Modo de Recuperación o Modo de Registro
de MODEL en SIMPLE (o sencillo), con el fin de evitar que al crear una base de datos por
defecto se utilice el Modo de Recuperación FULL (completo).
TEMPDB. ¿Para que sirve TEMPDB? Almacena tanto los objetos temporales (tablas
temporales, procedimientos almacenados temporales, etc.), como los resultados intermedios
que pueda necesitar crear el motor de base de datos, por ejemplo durante la ejecución de
consultas que utilizan las cláusulas GROUP BY, ORDER BY, DISTINCT, etc.
Además, TEMPDB se crea de nuevo siempre que se inicia la instancia SQL Server, tomando
su tamaño por defecto. Dado que según necesite más espacio, TEMPDB crecerá hasta el
tamaño que necesite, y dado que el crecimiento de un fichero implica esperas debidas a la
entrada/salida, es muy importante en entornos críticos dimensionar correctamente TEMPDB
para que se cree con un tamaño apropiado, y evitar dichas esperas de entrada/salida en tiempo
de ejecución, justo cuando estamos ofreciendo servicio a los usuarios. Evidentemente,
estamos desplazando dichas esperas al momento de inicio de la instancia, pero también
conseguimos una ventaja adicional al crear de una vez TEMPDB: limitamos la fragmentación
(también muy importante en entornos críticos).
7mo “A” Sistemas Henrry Davids Carriel Álvarez
5. Base de Datos Avanzada
A partir de SQL Server 2005, también se utiliza al habilitar el modo de aislamiento
SNAPSHOT, así como al crear o reconstruir índices con la opción SORT_IN_TEMPDB.
DISTRIBUTION. ¿Para que sirve DISTRIBUTION? No existe por defecto. Se crea al
habilitar una instancia de SQL Server como Distribuidor en un entorno de Replicación.
Durante el proceso de configuración del Distribuidor, se puede elegir el nombre de ésta base
de datos, por lo que no resulta estrictamente necesario que se llame DISTRIBUTION.
Almacena información como la definición de las Publicaciones, la definición de los Agentes
de Instantánea, etc.
MSSQLSYSTEMRESOURCE. ¿Para que sirve MSSQLSYSTEMRESOURCE? Esta base
de datos es nueva en SQL Server 2005. Aparentemente está oculta (no podremos verla
desde SQL Server Management Studio). Es de sólo lectura y no contiene datos, sino por el
contrario, contiene el código de todos los objetos del sistema de SQL Server 2005. No es
accesible directamente, puesto que es necesario establecer el modo de usuario único
(single_user) para poder acceder a esta base de datos (USE MSSQLSYSTEMRESOURCE).
En cualquier caso, jamás se debe acceder a esta base de datos.
Una de las principales diferencias entre SQL Server 2000 y SQL Server 2005, está en que en SQL
Server 2005 ya no es posible actualizar directamente las tablas del catálogo del sistema, es
decir, no funciona la opción 'allow update' de sp_configure. Todas las manipulaciones de éste tipo,
se deben de realizar a traves de los procedimientos almacenados del sistema o de las propias
sentencias del motor de base de datos (CREATE, ALTER, DROP, etc.).
CARACTERISTICAS PRINCIPALES DEL SQL SERVER
2005.
Las características de la Administración de Bases de Datos
Característica Descripción
Mirroring de Bases de Datos Microsoft SQL Server 2005 amplía las posibilidades de
duplicación de logs (“log shipping”) proporcionando a los
administradores de BBDD la opción de mirroring. Los
administradores pueden usar esta funcionalidad para
garantizar la disponibilidad de sus sistemas SQL mediante la
configuración de un servidor en espera para su activación
automática en caso de fallo (failover).
Operaciones de Indexación Online La opción de indexado online permite modificaciones
concurrentes (actualizaciones, borrados e inserciones) en las
tablas subyacentes o datos con índices cluster y de cualquier
índice asociado durante la ejecución de DDL de indexación.
Por ejemplo, mientras se está reconstruyendo un índice
cluster, se puede seguir haciendo actualizaciones a los datos
y consultas sobre estos datos.
Nuevas herramientas integradas SQL Server 2005 introduce el SQL Server Studio, una suite
de herramientas de gestión integradas. Este nuevo conjunto
incluye nuevas funcionalidades para desarrollo, implantación
y resolución de problemas de Bases de Datos SQL, así como
mejoras de las funcionalidades anteriores.
Aislamiento de Imágenes (SI) Se dispone de un nuevo nivel de aislamiento de imagen de
BBDD (“SnapshotIsolation”, SI) a nivel de base de datos. SI
permite a los usuarios acceder a la última operación
realizada utilizando una vista transitoria consistente de la
7mo “A” Sistemas Henrry Davids Carriel Álvarez
6. Base de Datos Avanzada
Base de Datos. Esta funcionalidad ofrece una escalabilidad
mayor para implementaciones de bases de datos
extremadamente grandes.
Particionado de Datos El particionado de datos se ha mejorado con particiones
nativas de tablas e índices, posibilitando soluciones de
escalabilidad horizontal. Al particionar tablas de bases de
datos muy grandes, el rendimiento de las consultas a la
base de datos se mejora notablemente.
Backups duplicados (“mirroredbackup”) SQL Server 2005 incluye un nuevo soporte para volúmenes
de backup espejados, aumentando la disponibilidad de las
copias de seguridad de SQL Server. La posibilidad de replicar
el backup permite resolver posibles problemas de corrupción
del medio físico de copia.
Restauración online SQL Server 2005 permitirá realizar una operación de
recuperación mientras una instancia de SQL Server está
activa. La restauración online mejora la disponibilidad de
SQL Server, ya que únicamente los datos que se están
recuperando quedan como no disponibles. El resto de la
base de datos permanece online y disponible.
Recuperación rápida Esta característica mejora la disponibilidad de las bases de
datos de SQL Server con una nueva opción. Los usuarios
podrán reconectarse a una base de datos en recuperación
después de que realizar un “roll forward” sobre el log de
transacciones.
Conexión de Administrador dedicada SQL Server 2005 introduce la conexión de administración
dedicada, que pueden utilizar los administradores de BBDD
para acceder a un servidor en explotación aun cuando el
servidor está bloqueado o no disponible por cualquier
motivo. Así, los administradores podrán ejecutar funciones
de diagnóstico, o sentencias Transact SQL, a fin de poder
resolver problemas en el servidor.
Mejoras en la Replication Para bases de datos distribuidas móviles, SQL Server 2005
proporciona una serie de funcionalidades de replicación
extremo a extremo, incluyendo la posibilidad de publicar
bases de datos Oracle. SQL Server 2005 incluirá nuevas
mejoras a las herramientas y sobre la escalabilidad de la
replicación también.
Las características de Desarrollo
Característica Descripción
Soporte para .NET Framework SQL Server 2005 introduce la posibilidad de desarrollar
objetos de base de datos en lenguajes .NET. Pueden crearse
Objetos de código, incluyendo Funciones, Procedimientos y
Triggers en lenguajes como C# y VB.NET. Se pueden crear
también dos nuevos objetos en estos lenguajes: User-
DefinedTypes y Agregados.
Tecnologías XML Las tecnologías XML son un estándar importante y
ampliamente aceptado para distribuir datos entre diferentes
aplicaciones sobre redes locales e Internet. Microsoft SQL
Server 2005 soporta el almacenamiento nativo de
documentos XML, especificación de consultas con XML y
devolución de resultado de consultas como documentos
XML.
ADO.NET Versión 2.0 Desde el nuevo soporte para tipos SQL a “Multiple Active
Result Set”, ADO .NET supone una evolución de los métodos
de acceso y manipulación de datos, para conseguir una
mayor escalabilidad y flexibilidad.
Mejoras en Transact-SQL SQL Server 2005 introduce muchas posibilidades nuevas
para el desarrollo de aplicaciones de bases de datos
escalables. Estas mejoras incluyen el manejo de errores,
nuevas posibilidades de consultas recursivas y soporte para
7mo “A” Sistemas Henrry Davids Carriel Álvarez
7. Base de Datos Avanzada
nuevas funcionalidades del motor de SQL Server.
Gestor de Servicio SQL El Gestor de Servicio SQL (SQL ServiceBroker) ofrece un
marco para aplicaciones distribuidas orientado a aplicaciones
de línea de negocios a gran escala.
Servicios de Notification Los Servicios de Notificación (“Notification Services”)
permiten construir aplicaciones de notificación mejoradas,
capaces de expedir información personalizada en el
momento en que se genera, como puede ser alertas de
cotizaciones de bolsa, nuevas suscripciones, alertas de envío
de paquetes, o cambios en las tarifas de billetes de avión, a
cualquier dispositivo y a millones de suscriptores.
Servicios Web En SQL Server 2005 , los desarrolladores pueden crear
servicios Web en la capa de base de datos, convirtiendo a
SQL Server en un servidor HTTP. Esta capacidad supone un
nuevo modelo de acceso a los datos para aplicaciones
basadas en Web Services.
Soporte para Xquery SQL Server 2005 incluye funcionalidades Xquery de altas
prestaciones, que permiten la manipulación de objetos XML
en la capa de datos, así como un nuevo juego de
herramientas de creación de Xquery.
Mejoras en la Búsqueda de Texto Completo SQL Server 2005 incluirá soporte para aplicaciones de texto
completo ampliadas. Las funcionalidades de catálogo se han
mejorado para proporcionar una mayor flexibilidad sobre el
conjunto de datos que se catalogan. El rendimiento de las
funciones de consulta y la escalabilidad han mejorado
sensiblemente. Una serie de nuevas herramientas de gestión
permiten un mayor control de la implementación de texto
completo.
Mejoras en Seguridad SQL Server 2005 incorpora un nuevo modelo de seguridad
que separa a los usuarios de los objetos, proporciona un
acceso muy granular y un mejor control de los accesos a los
datos. Además, todas las tablas del sistema se implementan
ahora como Vistas, lo que redunda en un mayor control
sobre los objetos de sistema de la Base de Datos.
Las características de Business Intelligence
Característica Descripción
Servicios de Análisis Con SQL Server 2005, los Servicios de Análisis (Analysis
Services) se mueven en el entorno del análisis en tiempo
real. Desde mejoras en la escalabilidad hasta una
integración profunda con Microsoft Office, SQL Server 2005
amplía el concepto de “businessintelligence” a todos los
niveles de su negocio.
Servicios de Transformación de Datos (DTS) Los Servicios de Transformación de Datos (DTS) son un
conjunto de herramientas gráficas y objetos programables
que pueden usarse para extraer, transformar y cargar datos
(ETL) desde fuentes muy diversas y llevarlas a un destino
único o múltiples destinos. Data Transformation Services
(DTS) para Microsoft SQL Server 2005 introduce un rediseño
completo para proporcionar una plataforma ETL integral.
Data Mining SQL Server 2005 introduce cuatro nuevos algoritmos de
Data Mining, así como herramientas y asistentes mejorados,
haciendo que el data mining sea más accesible a negocios
de cualquier tamaño.
Servicios de Reporting Servicios de Reporting permite a los negocios integrar de
forma sencilla datos desde fuentes heterogéneas y data
warehouses en informes ricos, interactivos y gestionables,
que pueden localizarse y consultarse en intranets, extranets
y en Internet.
7mo “A” Sistemas Henrry Davids Carriel Álvarez
8. Base de Datos Avanzada
Soporte de Servicios de Análisis en Cluster Esta funcionalidad mejora la disponibilidad de los Servicios
de Análisis con soporte para clusters con conmutación de
nodos, soporte mejorado para múltiples instancias y soporte
para backup y recuperación de objetos y datos de Servicios
de Análisis.
Indicadores de Rendimiento Principales Los Indicadores de Rendimiento Principales (“Key
Performance Indicators” , KPI) permiten definir métricas de
negocio en formato gráfico, adaptables, para ayudar a
generar y hacer el seguimiento de entornos de prueba
corporativos.
Escalabilidad y Rendimiento Se ha mejorado la escalabilidad y el rendimiento de los
Servicios de Análisis de SQL Server 2005 por medio de
características como el proceso de partición paralelo,
creación de particiones ROLAP y HOLAP remotas, cubos
particionados distribuidos, cálculos persistentes y cache
proactivo.
Cubo en un solo click Cuando se crea un cubo en un proyecto de Data Warehouse,
el asistente para creación de Cubos incluye una opción para
habilitar la detección de cubos y sugerencias con un solo
click. Esta tecnología de cubos en un solo click de SQL
Server 2005 examina las relaciones en una vista del origen
de datos y aporta sugerencias.
Mejoras en la Arquitectura SQL Server 2005 introduce una nueva arquitectura de
Servicios de Transformación de Datos (DTS). La arquitectura
consiste en dos motores: El Runtime de Transformación de
Datos (DTR). Este motor ejecuta paquetes DTS, tareas DTS,
hace seguimiento de la ejecución del paquete y proporciona
servicios para las tareas. El Pipeline de Transformación de
Datos (DTP). El motor DTP extrae datos de las fuentes,
aplica las transformaciones contra las columnas de datos y
carga los datos en los sistemas de almacenamiento.
Integración con los informes de Office System Los reports emitidos por el servidor de reports pueden
ejecutarse en el contexto de SharePoint Portal Server y
aplicaciones Office, como Word y Excel. Los usuarios de
SharePoint pueden utilizar las funcionalidades de SharePoint
para suscribirse a informes, crear nuevas versiones de los
informes y distribuirlos. Los usuarios pueden también abrir
reports en Word o Excel para ver versiones en HTML de los
mismos. Los usuarios de SQL Server y Servicios de Análisis
pueden definir reports basados en consultas contra bases de
datos relacionales y multidimensionales. Las consultas
definidas con el QueryBuilder pueden procesarse utilizando
las posibilidades de proceso de datos incorporado al servidor
de informes.
CREAR, MODIFICAR Y ELIMINAR TABLAS.
CREAR TABLAS:
En el modelo relacional la información de una base de datos se almacena en tablas. Para saber más sobre las
tablas y como se almacena la información de BD
La creación de la base de datos debe comenzar por con la creación de una o más tablas. Para ello
utilizaremos la sentencia CREATE TABLE.
La sintaxis de la sentencia es la siguiente:
7mo “A” Sistemas Henrry Davids Carriel Álvarez
9. Base de Datos Avanzada
CREATE TABLE <nombre_tabla>
(
<nombre_campo><tipo_datos(tamaño)>
[null | notnull] [default <valor_por_defecto>]
{
,<nombre_campo><tipo_datos(tamaño)>
[null | notnull] [default <valor_por_defecto>]}
[
, constraint <nombre> primary key (<nombre_campo>[ ,...n ])]
[
, constraint <nombre> foreign key (<nombre_campo>[ ,...n ])
references <tabla_referenciada> ( <nombre_campo> [ ,...n ] ) ]
);
Ejemplo: Vamos a simular una base de datos para un negocio de alquiler de coches, por lo que vamos a
empezar creando una tabla para almacenar los coches que tenemos.
CREATE TABLE tCoches
(
matricula char(8) notnull,
marca varchar(255) null,
modelo varchar(255) null,
color varchar(255) null,
numero_kilometros numeric(14,2) null default 0,
constraint PK_Coches primary key (matricula)
);
En este ejemplo creamos una tabla llamada tCoches con cinco campos (matricula, marca, modelo, color,
numero_kilometros).
Nótese que se han omitido las tildes y los espacios a propósito. Nunca cree campos que contengan
caracteres específicos de un idioma (tildes, eñes, ...) ni espacios.
Las claves primarias y externas (o foraneas) se pueden implementar directamente a través de la
instrucción CREATE TABLE, o bien se pueden agregar a través de sentencias ALTER TABLE.
Cada gestor de bases de datos implementa distintas opciones para la instrucción CREATE TABLE, pudiendo
especificarse gran cantidad de parámetros y pudiendo variar el nombre que damos a los tipos de datos, pero
la sintaxis estándar es la que hemos mostrado aquí. Si queremos conocer más acerca de las opciones
de CREATE TABLE lo mejor es recurrir a la documentación de nuestro gestor de base de datos
MODIFICAR TABLAS:
En ocasiones puede ser necesario modificar la estructura de una tabla, comúnmente para añadir un campo o
restricción. Para ello disponemos de la instrucción ALTER TABLE.
ALTER TABLE nos va a permitir:
Añadir campos a la estructura incial de una tabla.
Añadir restricciones y referencias.
Para añadir un campo a una tabla existente:
ALTER TABLE <nombre_tabla>
ADD <nombre_campo><tipo_datos(tamaño)>
7mo “A” Sistemas Henrry Davids Carriel Álvarez
10. Base de Datos Avanzada
[null |notnull] [default <valor_por_defecto>]
{
, <nombre_campo><tipo_datos(tamaño)>
[null |notnull] [default <valor_por_defecto>]} ;
Ejemplo:
ALTER TABLE tCoches
ADD num_plazas integernull default 5;
En este ejemplo añadimos el campo num_plazas a la tabla tCoches que habiamos creado en el apartado
anterior.
Para añadir una clave primaria vamos a crear una tabla de cliente y le añadiremos la clave primaria
ejecutando una sentencia alter table:
Creamos la tabla clientes y le añadimos una reestricción primary key a la que damos el nombre
PK_tClientes en el campo codigo.
CREATE TABLE tClientes
(
codigo integer notnull,
nombre varchar(255) notnull,
apellidos varchar(255) null,
nif varchar(10) null,
telefono varchar(9) null,
movil varchar(9) null
);
ALTER TABLEtClientesADD
CONSTRAINTPK_tClientesprimary key (codigo);
Solo podemos modificar una única tabla a la vez con ALTER TABLE, para modificar más de una tabla
debemos ejecutar una sentencia ALTER TABLE por tabla.
Para añadir una clave externa (o foranea) necesitamos una tercera tabla en nuestra estructura. Por un
lado tenemos la tabla tCoches y la tabla tClientes, ahora vamos a crear la tabla tAlquileres que será la
encargada de "decirnos" que clientes han alquilado un coche.
CREATE TABLE tAlquileres
(
codigo integer not null,
codigo_cliente integer not null,
matricula char(8) not null,
fx_alquiler datetime not null,
fx_devolucion datetime null
);
ALTER TABLEtAlquileresADD
CONSTRAINTPK_tAlquileresprimary key (codigo),
CONSTRAINT FK_Clientesforeign key (codigo_cliente)
referencestClientes (Codigo),
CONSTRAINTFK_Cochesforeign key (matricula)
7mo “A” Sistemas Henrry Davids Carriel Álvarez
11. Base de Datos Avanzada
references tCoches (matricula);
Bien, en este código creamos la tabla tAlquileres, y luego mediante una sentencia ALTER TABLE añadimos
una clave primaria llamada PK_tAlquileres en el campo codigo, una clave externa llamada FK_Clientes
referenciada al codigo de la tabla tClientes, y por último otra clave externa llamada FK_Coches referenciada al
campo matricula de la tabla tCoches.
Nota:Cuando creamos una clave externa el campo referenciado y el que sirve de referencia deben ser del
mismo tipo de datos.
Si somos observadores nos daremos cuenta que los campos que sirven de referencia a las claves foraneas
son las claves primarias de sus tablas. Sólo podemos crear claves externas que referencien claves primarias.
Al igual que ocurria con la sentencia CREATE TABLE cada gestor de bases de datos implementa sus
mejoras, siendo la mejor forma de conocerlas recurrir a la documentación del gestor de bases de datos.
En principio, para borrar columnas de una tabla debemos:
1. Crear una tabla con la nueva estructura.
2. Transferir los datos
3. Borrar la tabla original.
y digo en principio, porque como ya hemos comentado según el gestor de bases de datos con el que
trabajemos podremos realizar esta tarea a través de una sentencia ALTER TABLE.
ELIMINAR TABLAS:
Podemos eliminar una tabla de una base de datos mediante la instrucción DROP TABLE.
DROP TABLE <nombre_tabla>;
La instrucción DROP TABLE elimina de forma permanente la tabla y los datos en ella contenida.
Si intentamos eliminar una tabla que tenga registros relacionados a través de una clave externa la
instrucciónDROP TABLE fallará por integridad referencial.
Cuando eliminamos una tabla eliminamos también sus índices.
INGRESAR, MODIFICAR Y ELIMINAR REGISTROS.
INGRESAR REGISTRO:
Los registros pueden ser introducidos a partir de sentencias que emplean la instrucción Insert.
La sintaxis utilizada es la siguiente:
Insert Into nombre_tabla (nombre_campo1, nombre_campo2,...) Values (valor_campo1,
valor_campo2...)
Un ejemplo sencillo a partir de nuestra tabla modelo es la introducción de un nuevo cliente lo cual se
haría con una instrucción de este tipo:
Insert Into clientes (nombre, apellidos, dirección, población, codigopostal, email, pedidos)
7mo “A” Sistemas Henrry Davids Carriel Álvarez
12. Base de Datos Avanzada
Values
('Henrry', 'Carriel', 'vinces', 'vinces', '123', henrrydavids_carriel@hotmail.com', 3)
Como puede verse, los campos no numéricos o booleanos van delimitados por apostrofes: '. También
resulta interesante ver que el código postal lo hemos guardado como un campo no numérico. Esto es
debido a que en determinados países (europeos) los códigos postales contienen también letras.
Aunque, de todos modos, puede que sea más cómodo utilizar un programa con interfaz gráfica, como
Access, que nos puede servir para crear las tablas en bases de datos del propio Access o por ODBC a
otras bases de datos como SQL Server o MySQL.
Por supuesto, no es imprescindible rellenar todos los campos del registro. Eso sí, puede ser que
determinados campos sean necesarios. Estos campos necesarios pueden ser definidos cuando
construimos nuestra tabla mediante la base de datos.
MODIFICAR REGISTRO:
Update es la instrucción del lenguaje SQL que nos sirve para modificar los registros de una tabla.
Como para el caso de Delete, necesitamos especificar por medio de Where cuáles son los registros en
los que queremos hacer efectivas nuestras modificaciones. Además, obviamente, tendremos que
especificar cuáles son los nuevos valores de los campos que deseamos actualizar.
La sintaxis es de este tipo:
Update nombre_tabla Set nombre_campo1 = valor_campo1, nombre_campo2 = valor_campo2,...
Where condiciones_de_selección
Un ejemplo aplicado:
Update clientes Set nombre='Davids' Where nombre='Henrry'
Mediante esta sentencia cambiamos el nombre Henrry por el de Davids en todos los registros cuyo
nombre sea Henrry.
Aquí también hay que ser cuidadoso de no olvidarse de usar Where, de lo contrario, modificaríamos
todos los registros de nuestra tabla.
Update producto Set precio=12,50, descuento=15%
Esa sentencia modificaría el campo precio y el campo descuento en todos los productos de la tabla
producto. Si tenemos una tabla con miles de productos con esa sentencia se actualizarían todos, de
modo que la totalidad de los registros tendrían el mismo precio y el mismo descuento. Os aseguro
que este problema de olvidarse el Where no es algo extraño que ocurra, incluso para programadores
experimentados y puede acarrear problemas serios.
BORRAR REGISTRO:
Para borrar un registro nos servimos de la instrucción Delete. En este caso debemos especificar cual
o cuales son los registros que queremos borrar. Es por ello necesario establecer una selección que se
llevara a cabo mediante la cláusula Where.
La forma de seleccionar se verá detalladamente en capítulos posteriores. Por ahora nos
contentaremos de mostrar cuál es el tipo de sintaxis utilizado para efectuar estas supresiones:
7mo “A” Sistemas Henrry Davids Carriel Álvarez
13. Base de Datos Avanzada
Delete From nombre_tabla Where condiciones_de_selección
Ej:
Delete From clientes
Delete From clientes Where nombre='Henrry'
Hay que tener cuidado con esta instrucción ya que si no especificamos una condición con Where, lo
que estamos haciendo es borrar toda la tabla:
7mo “A” Sistemas Henrry Davids Carriel Álvarez