Download Base de datos relacional

Document related concepts

SQL wikipedia , lookup

Lenguaje de definición de datos wikipedia , lookup

Lenguaje de manipulación de datos wikipedia , lookup

Null (SQL) wikipedia , lookup

Normalización de bases de datos wikipedia , lookup

Transcript
1
MANUAL BASICO DE SQL SEVER
SQL es un lenguaje formal declarativo, estandarizado ISO, para manipular
información en una base de datos.
SQL NO es un acrónimo (Structured Query Language) ya que la ISO lo define
con nombre oficial Database Language SQL. No es un lenguaje estructurado
(puede ser usado en bloques o procedimientos), No es solamente para
consultas("queries") y desde el punto de vista computacional no es un lenguaje
ya que no es Turing completo. (Fuente negación Acrónimo: "Visual Quickstart
Guide SQL, 3th edition - Chris Fehily, Peachpit Press")
Contenido
 1 Orígenes y evolución
 2 Características generales
o 2.1 Optimización
 3 Lenguaje de definición de datos (LDD)
o 3.1 CREATE
 3.1.1 Ejemplo (crear una tabla)
o 3.2 ALTER
 3.2.1 Ejemplo (agregar columna a una tabla)
o 3.3 DROP
 3.3.1 Ejemplo
o 3.4 TRUNCATE
 3.4.1 Ejemplo
 4 Lenguaje de manipulación de datos (LMD)
o 4.1 Definición
o 4.2 INSERT
 4.2.1 Forma básica
 4.2.2 Ejemplo
 4.2.3 Formas avanzadas
 4.2.3.1 Inserciones en múltiples filas
 4.2.3.2 Copia de filas de otras tablas
o 4.3 UPDATE
 4.3.1 Forma básica
 4.3.2 Ejemplo
o 4.4 DELETE
 4.4.1 Forma básica
 4.4.2 Ejemplo
 5 Recuperación de clave
 6 Disparadores (Triggers)
 7 Sistemas de gestión de base de datos
 8 Véase también
Características generales
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 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.
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.
2
El orden de ejecución interno de una sentencia puede 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 implementado a nivel experimental y está evolucionando
rápidamente.
Lenguaje de definición de datos (LDD)
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.
CREATE
Este comando crea un objeto dentro de la base de datos. Puede ser una tabla,
vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor
de la base de datos soporte.
Ejemplo (crear una tabla)
CREATE TABLE 'TABLA_NOMBRE' (
'CAMPO_1' INT,
'CAMPO_2' STRING
)
ALTER
Este comando permite modificar la estructura de un objeto. Se pueden
agregar/quitar campos a una tabla, modificar el tipo de un campo,
agregar/quitar índices a una tabla, modificar un trigger, etc.
Ejemplo (agregar columna a una tabla) [editar]
ALTER TABLE 'TABLA_NOMBRE' (
ADD NUEVO_CAMPO INT UNSIGNED meel
)
DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla,
vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor
de la base de datos soporte. Se puede combinar con la sentencia ALTER.
Ejemplo
ALTER TABLE ''TABLA_NOMBRE''
(
DROP COLUMN ''CAMPO_NOMBRE1''
)
TRUNCATE
Este comando trunca todo el contenido de una tabla. La ventaja sobre el
comando DROP, es que si se quiere borrar todo el contenido de la tabla, es
mucho más rápido, especialmente si la tabla es muy grande. La desventaja es
que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los
registros, ya que no se permite la cláusula WHERE. Si bien, en un principio,
esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en
3
realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla
y la vuelve a crear y no ejecuta ninguna transacción.
Ejemplo
TRUNCATE TABLE ''TABLA_NOMBRE1''
Lenguaje de manipulación de datos (LMD)
Definición
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 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. Otros ejemplos
de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.
INSERT
Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una)
tabla en una base de datos relacional.
Forma básica [editar]
INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'',
[''valor2,...''])
Las cantidades de columnas y valores deben ser iguales. Si una columna no se
especifica, le será asignado el valor por omisión. Los valores especificados (o
implícitos) por la sentencia INSERT deberán satisfacer todas las restricciones
aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es
violada, no se agrega la fila y se devuelve un error.
Ejemplo
INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto
Jeldrez', 4886850);
Cuando se especifican todos los valores de una tabla, se puede utilizar la
sentencia acortada:
INSERT INTO ''tabla'' VALUES (''valor1'', [''valor2,...''])
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la
tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Jeldrez', 4886850);
Formas avanzadas [editar]
Inserciones en múltiples filas [editar]
Una característica de SQL (desde SQL-92) es el uso de constructores de filas
para insertar múltiples filas a la vez, con una sola sentencia SQL:
INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])
VALUES (''valor1a'', [''valor1b,...'']), (''value2a'', [''value2b,...'']),...
Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2),
MySQL, y H2.
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la
tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'),
('Alejandro Sosa', '4556550');
Que podía haber sido realizado por las sentencias
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');
INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');
4
Notar que las sentencias separadas pueden tener semántica diferente
(especialmente con respecto a los triggers), y puede tener diferente
rendimiento que la sentencia de inserción múltiple.
Para insertar varias filas en MS SQL puede utilizar esa construcción:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212'
UNION ALL
SELECT 'Peter Doe', '555-2323';
Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con
el estándar SQL (SQL: 2003), debido a la cláusula subselect incompleta.
Para hacer lo mismo en Oracle se usa DUAL TABLE, siempre que se trate de
solo una simple fila:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM DUAL
UNION ALL
SELECT 'Peter Doe','555-2323' FROM DUAL
Una implementación conforme al estándar de esta lógica se muestra el
siguiente ejemplo, o como se muestra arriba:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c)
UNION ALL
SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)
Copia de filas de otras tablas [editar]
Un INSERT también puede utilizarse para recuperar datos de otros, modificarla
si es necesario e insertarla directamente en la tabla. Todo esto se hace en una
sola sentencia SQL que no implica ningún procesamiento intermedio en la
aplicación cliente. Un SUBSELECT se utiliza en lugar de la cláusula VALUES.
El SUBSELECT puede contener JOIN, llamadas a funciones, y puede incluso
consultar en la misma TABLA los datos que se inserta. Lógicamente, el
SELECT se evalúa antes que la operación INSERT esté iniciada. Un ejemplo
se da a continuación.
INSERT INTO phone_book2
SELECT *
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
Una variación es necesaria cuando algunos de los datos de la tabla fuente se
está insertando en la nueva tabla, pero no todo el registro. (O cuando los
esquemas de las tablas no son iguales.)
INSERT INTO phone_book2 ( [name], [phoneNumber] )
SELECT [name], [phoneNumber]
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
El SELECT produce una tabla (temporal), y el esquema de la tabla temporal
debe coincidir con el esquema de la tabla donde los datos son insertados.
UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un
conjunto de registros existentes en una tabla.
5
Forma básica
UPDATE ''tabla'' SET ''columna1'' = ''valor1'' ,''columna2'' = ''valor2'',...
WHERE ''columnaN = ''valorN''
Ejemplo
UPDATE My_table SET field1 = 'updated value' WHERE field2 = 'N';
.
DELETE
Una sentencia DELETE de SQL borra uno o más registros existentes en una
tabla,
Forma básica
DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''
Ejemplo]
DELETE FROM My_table WHERE field2 = 'N';
Recuperación de clave [editar]
Los diseñadores de base de datos que usan una clave suplente como la clave
principal para cada tabla, se ejecutará en el ocasional escenario en el que es
necesario recuperar automáticamente la base de datos, generando una clave
primaria de una sentencia SQL INSERT para su uso en otras sentencias SQL.
La mayoría de los sistemas no permiten sentencias SQL INSERT para retornar
fila de datos. Por lo tanto, se hace necesario aplicar una solución en tales
escenarios.
Implementaciones comunes incluyen:
 Utilizando un procedimiento almacenado especifico de base de datos
que genera la clave suplente, realice la operación INSERT, y finalmente
devuelve la clave generada.
 Utilizando una sentencia SELECT específica de base de datos, sobre
una tabla temporal que contiene la última fila insertada. DB2 implementa
esta característica de la siguiente manera:
SELECT *
FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Cristobal
Jeldrez','0426.817.10.30' ) ) AS t
 Utilizando una sentencia SELECT después de la sentencia INSERT con
función específica de base de datos, que devuelve la clave primaria
generada por el registro insertado más recientemente.
 Utilizando una combinación única de elementos del original SQL
INSERT en una posterior sentencia SELECT.
 Utilizando un GUID en la sentencia SQL INSERT y la recupera en una
sentencia SELECT.
 Utilizando la función de PHP mysql_insert_id() de MySQL después de la
sentencia INSERT.
 Utilizando un INSERT con la cláusula RETURNING para Oracle, que
sólo se puede utilizar dentro de un PL/SQL bloque, en el caso de
PostgreSQL se puede usar también tanto con SQL como con PL/SQL.
INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' )
RETURNING phone_book_id INTO v_pb_id
 En el caso de MS SQL se puede utilizar la siguiente instrucción:
SET NoCount ON;
INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' );
SELECT @@Identity AS ID
Disparadores (Triggers)
6
Los desencadenantes, también conocidos como disparadores, (triggers en
inglés) son definidos sobre la tabla en la que opera la sentencia INSERT, los
desencadenantes son evaluados en el contexto de la operación.
Desencadenantes BEFORE INSERT permiten la modificación de los valores
que se insertará en la tabla. Desencadenantes AFTER INSERT no puede
modificar los datos de ahora en adelante, pero se puede utilizar para iniciar
acciones en otras tablas, por ejemplo para aplicar mecanismos de auditoría.
Sistemas de gestión de base de datos [editar]
Los sistemas de gestión de base de datos con soporte SQL más utilizados son,
por orden alfabético:
 DB2
 Firebird
 Informix
 Interbase
 MySQL
 Oracle
 PostgreSQL
 Pervasive
 SQLite
 SQL Server
 Sybase ASE
Véase también
 SQL injection
 FSQL
 AQL
 Modelo de base de datos
Base de datos relacional
De Wikipedia, la enciclopedia libre
Saltar a navegación, búsqueda
Una base de datos relacional es una base de datos que cumple con el
modelo relacional, el cual es el modelo más utilizado en la actualidad para
modelar problemas reales y administrar datos dinámicamente. Permiten
establecer interconexiones (relaciones) entre los datos (que están guardados
en tablas), y trabajar con ellos conjuntamente. Tras ser postuladas sus bases
en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José
(California), no tardó en consolidarse como un nuevo paradigma en los
modelos de base de datos.1
Contenido
[ocultar]
 1 Características
 2 Elementos
o 2.1 Relaciones base y derivadas
o 2.2 Restricciones
o 2.3 Dominios
o 2.4 Clave única
7








o
o
2.5 Clave primaria
2.6 Clave foránea
3 Clave índice
o 3.1 Procedimientos almacenados
4 Estructura
5 Manipulación de la información
6 Manejadores de base de datos relacionales
7 Ventajas y desventajas
8 Véase también
9 Referencias
10 Enlaces externos
Características
 Una base de datos relacional se compone de varias tablas o
relaciones.
 No pueden existir dos tablas con el mismo nombre.
 Cada tabla es a su vez un conjunto de registros, filas o tuplas.
Elementos
Relaciones base y derivadas
En una base de datos relacional, todos los datos se almacenan y se acceden a
ellos por medio de relaciones. Las relaciones que almacenan datos son
llamados "relaciones base" y su implementación es llamada "tabla". Otras
relaciones no almacenan datos, pero son calculadas al aplicar operaciones
relacionales. Estas relaciones son llamadas "relaciones derivadas" y su
implementación es llamada "vista" o "consulta". Las relaciones derivadas son
convenientes ya que expresan información de varias relaciones actuando como
si fuera una sola.
Restricciones
Una restricción es una condición que obliga el cumplimiento de ciertas
condiciones en la base de datos. Algunas no son determinadas por los
usuarios, sino que son inherentemente definidas por el simple hecho de que la
base de datos sea relacional. Algunas otras restricciones las puede definir el
usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.
Las restricciones proveen un método de implementar reglas en la base de
datos. Las restricciones restringen los datos que pueden ser almacenados en
las tablas. Usualmente se definen usando expresiones que dan como resultado
un valor booleano, indicando si los datos satisfacen la restricción o no.
Las restricciones no son parte formal del modelo relacional, pero son incluidas
porque juegan el rol de organizar mejor los datos. Las restricciones son muy
discutidas junto con los conceptos relacionales.
Dominios [editar]
Un dominio describe un conjunto de posibles valores para cierto atributo. Como
un dominio restringe los valores del atributo, puede ser considerado como una
restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos
los valores de este atributo deben de ser elementos del conjunto especificado".
Distintos tipos de dominios son: enteros, cadenas de texto, fecha, etc.
Clave única
Cada tabla puede tener uno o más campos cuyos valores identifican de forma
única cada registro de dicha tabla, es decir, no pueden existir dos o más
registros diferentes cuyos valores en dichos campos sean idénticos. Este
conjunto de campos se llama clave única.
Pueden existir varias claves únicas en una determinada tabla, y a cada una de
éstas suele llamársele candidata a clave primaria.
8
Clave primaria
Una clave primaria es una clave única elegida entre todas las candidatas que
define univocamente a todos los demas atributos de la tabla, para especificar
los datos que serán relacionados con las demás tablas. La forma de hacer esto
es por medio de claves foráneas.
Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave
puede contener valores NULL.
Clave foránea
Una clave foránea es una referencia a una clave en otra tabla. Las claves
foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde
están referenciadas.
Por ejemplo, el código de departamento puede ser una clave foránea en la
tabla de empleados, obviamente se permite que haya varios empleados en un
mismo departamento, pero existirá sólo un departamento.
Clave índice
Las claves índice surgen con la necesidad de tener un acceso más rápido a los
datos. Los índices pueden ser creados con cualquier combinación de campos
de una tabla. Las consultas que filtran registros por medio de estos campos,
pueden encontrar los registros de forma no secuencial usando la clave índice.
Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento,
cada una de ellas es óptima para cierta distribución de datos y tamaño de la
relación.
Los índices generalmente no se consideran parte de la base de datos, pues
son un detalle agregado. Sin embargo, las claves índices son desarrolladas por
el mismo grupo de programadores que las otras partes de la base de datos.
Procedimientos almacenados [editar]
Un procedimiento almacenado es código ejecutable que se asocia y se
almacena con la base de datos. Los procedimientos almacenados usualmente
recogen y personalizan operaciones comunes, como insertar un registro dentro
de una tabla, recopilar información estadística, o encapsular cálculos
complejos. Son frecuentemente usados por un API por seguridad o simplicidad.
Los procedimientos almacenados no son parte del modelo relacional, pero
todas las implementaciones comerciales los incluyen.
Estructura
La base de datos se organiza en dos marcadas secciones; el esquema y los
datos (o instancia).
El esquema es la definición de la estructura de la base de datos y
principalmente almacena los siguientes datos:
 El nombre de cada tabla
 El nombre de cada columna
 El tipo de dato de cada columna
 La tabla a la que pertenece cada columna
Las bases de datos relacionales pasan por un proceso al que se le conoce
como normalización, el resultado de dicho proceso es un esquema que permite
que la base de datos sea usada de manera óptima.
Los datos o instancia es el contenido de la base de datos en un momento dado.
Es en si, el contenido de todos los registros.
Manipulación de la información
Para manipular la información utilizamos un lenguaje relacional, actualmente se
cuenta con dos lenguajes formales el álgebra relacional y el cálculo relacional.
9
El álgebra relacional permite describir la forma de realizar una consulta, en
cambio, el cálculo relacional sólo indica lo que se desea devolver.
El lenguaje más común para construir las consultas a bases de datos
relacionales es SQL (Structured Query Language), un estándar implementado
por los principales motores o sistemas de gestión de bases de datos
relacionales.
En el modelo relacional los atributos deben estar explícitamente relacionados a
un nombre en todas las operaciones, en cambio, el estándar SQL permite usar
columnas sin nombre en conjuntos de resultados, como el asterisco
taquigráfico (*) como notación de consultas.
Al contrario del modelo relacional, el estándar SQL requiere que las columnas
tengan un orden definido, lo cual es fácil de implementar en una computadora,
ya que la memoria es lineal.
Es de notar, sin embargo, que en SQL el orden de las columnas y los registros
devueltos en cierto conjunto de resultado nunca está garantizado, a no ser que
explícitamente sea especificado por el usuario.
Manejadores de base de datos relacionales [editar]
Existe software exclusivamente dedicado a tratar con bases de datos
relacionales. Este software se conoce como SGBD (Sistema de Gestión de
Base de Datos relacional) o RDBMS (del inglés Relational Database
Management System).
Entre los gestores o manejadores actuales más populares encontramos:
MySQL, PostgreSQL, Oracle, DB2 y Microsoft SQL Server.
Ventajas y desventajas
Ventajas
 Provee herramientas que garantizan evitar la duplicidad de registros.
 Garantiza la integridad referencial, así, al eliminar un registro elimina
todos los registros relacionados dependientes.
 Favorece la normalización por ser más comprensible y aplicable.
Desventajas
 Presentan deficiencias con datos gráficos, multimedia, CAD y sistemas
de información geográfica.
 No se manipulan de forma manejable los bloques de texto como tipo de
dato.
Las bases de datos orientadas a objetos (BDOO) se propusieron con el objetivo
de satisfacer las necesidades de las aplicaciones anteriores y así,
complementar pero no sustituir a las bases de datos relacionales.
Véase también
 Base de datos
 Modelo relacional
 Modelo entidad-relación
 Base de datos orientada a objetos
LENGUAJE DE DEFINICION DE DATOS (LDD) O DATA DEFINITION
LANGUAJE (DDL):
Es el encargado de la definición y creación de esquemas de Bases de Datos,
tablas, vistas e índices entre otros.
Una vez finalizado el diseño de una base de datos relacional y escogido un
SGBDR ( o RDBMS) para su implementación, el primer paso consiste en
especificar el esquema conceptual y el esquema interno de la base de datos, y
la correspondencia entre ambos. En muchos Sistemas de Gestión de Bases de
10
Datos Relacionales no se mantiene una separación estricta de niveles, por lo
que el administrador de la base de datos y los diseñadores utilizan el mismo
lenguaje para definir ambos esquemas, y para ello, es necesario utilizar el
lenguaje de definición de datos (LDD del español ó DDL por sus siglas del
inglés de Data Definition Lenguage).
Todo SGBDR posee un compilador de LDD cuya función consiste en procesar
las sentencias del lenguaje para identificar las descripciones de los distintos
elementos de los esquemas y almacenar la descripción del esquema en el
catálogo o diccionario de datos. En el diccionario se describen todos los objetos
de la base de datos, por tal razón, se le conoce también como metadatos.
Cuando en un SGBDR hay una clara separación entre los niveles conceptual e
interno, el LDD sólo sirve para especificar el esquema conceptual. Para
especificar el esquema interno se utiliza un lenguaje de definición de
almacenamiento (LDA). Las correspondencias entre ambos esquemas se
pueden especificar en cualquiera de los dos lenguajes. Para tener una
verdadera arquitectura de tres niveles sería necesario disponer de un tercer
lenguaje, el lenguaje de definición de vistas (LDV), que se utilizaría para
especificar las vistas de los usuarios y su correspondencia con el esquema
conceptual.
El lenguaje de definición de datos permite:
Definir y crear una base de datos y todos sus objetos (principalmente
las tablas), para esto es necesario utilizar la sentencia CREATE. La
sentencia CREATE TABLE sirve para crear la estructura de una tabla
no para rellenarla con datos, nos permite definir las columnas que
tiene y ciertas restricciones que deben cumplir esas columnas.
Borrar una base de datos o los objetos de la misma que ya no se
necesitan usando la sentencia DROP. La sentencia DROP TABLE sirve
para eliminar una tabla. No se puede eliminar una tabla si está abierta,
tampoco la podemos eliminar si el borrado infringe las reglas de integridad
referencial (si interviene como tabla padre en una relación y tiene registros
relacionados).
Cambiar la definición de una base de datos existente o la de los
objetos existentes de la misma. Para esto, es necesario utilizar la sentencia
ALTER. La sentencia ALTER TABLE sirve para modificar la estructura
de una tabla que ya existe. Mediante esta instrucción podemos añadir
columnas nuevas, eliminar columnas. Ten cuenta que cuando eliminamos
una columna se pierden todos los datos almacenados en ella. También nos
permite crear nuevas restricciones o borrar algunas existentes. La sintaxis
puede parecer algo complicada pero sabiendo el significado de las palabras
reservadas la sentencia se aclara bastante; ADD (añade), ALTER
(modifica), DROP (elimina), COLUMN (columna), CONSTRAINT
(restricción).
Cambiar el nombre de una tabla utilizando la sentencia RENAME.
Al hablar de objetos de una base de datos, se está refriendo a las tablas (que
son los principales) y a partir de éstos, poder crear Indices, vistas,
procedimientos almacenados, funciones, triggers, así también objetos como las
llaves primarias y foráneas que aunque son parte propiamente de las tablas,
algunos gestores de bases de datos los administra como objetos propios de la
base de datos. La operación de renombrado se hace atómicamente, lo que
11
significa que ningún otro proceso puede acceder a ninguna de las tablas
mientras se realiza el renombrado.
1)
USANDO LA SENTENCIA CREATE:
Normalmente se utiliza la sentencia create para crear tablas, por lo que a
continuación se presenta su respectiva sintaxis para tal efecto. Para la
cración de los otros objetos de la base de datos cambia de alguna forma
esta sintaxis.
Sintaxis
Create Table nombre_tabla
(
nombre_campo_1 tipo_1
nombre_campo_2 tipo_2
nombre_campo_n tipo_n
Key(campo_x,...)
)
EJEMPLOS REALIZADOS EN SQL SERVER:
a).
Creando una base de datos de nombre Ejemplo_BD
(database):
USE master
GO
CREATE DATABASE Ejemplo_BD
ON
( NAME = Ejemplo_BD_data,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\
Ejemplo_BD_data.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Ejemplo_BD _log',
FILENAME = 'c:\program files\microsoft sql server\mssql\data\
Ejemplo_BD _log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
Sintaxis:
NAME = Nombre_del_archivo_lógico,
FILENAME = Nombre_del_archivo_en_el_sistema (path
completo)
SIZE = TAMAÑO (inicial)
MAXSIZE = (tamaño_máximo | UNLIMITED)
(Tamaño máximo que puede tener la base de datos, UNLIMITED
= tamaño
ilimitado)
FILEGROWTH = Incremento del archivo (crecimiento en MB)
12
b)
Creando tres tablas en la base de datos Ejemplo_BD
(tables):
CREATE TABLE ALUMNO
(
CARNE
NVARCHAR(10)
NOT
NULL,
NOMBRE
NVARCHAR(100) NOT
NULL,
DIRECCION
NVARCHAR(100) NOT
NULL,
TELEFONO
NVARCHAR(10)
NULL,
SEXO
CHAR(1)
NOT
NULL,
FECHA_NAC
DATETIME
NOT
NULL,
CONSTRAINT PK_ALUMNO PRIMARY KEY
(CARNE)
)
CREATE TABLE CURSO
(
CODIGO
NVARCHAR(10)
NOT
NULL,
DESCRIPCION
NVARCHAR(100) NOT
NULL,
PRERREQUISITO NVARCHAR(10)
NOT
NULL,
CREDITO
SMALLINT,
CONSTRAINT PK_CURSO PRIMARY KEY
(CODIGO)
)
CREATE TABLE ASIGNACION
(
CARNE
NVARCHAR(10)
NOT
NULL,
CODIGO
NVARCHAR(10)
NOT
NULL,
ANIO
INT
NOT
NULL,
SEMESTRE
SMALLINT
NOT
NULL,
CICLO
SMALLINT
NOT
NULL,
ZONA
SMALLINT
NOT
NULL,
NOTA
SMALLINT
NOT
NULL
)
c)
Creando un índice (Index):
create index Acceso_Alumno
13
d)
on Alumno
(
carne
)
Creando una vista (view).
CREATE VIEW RESULTADO_ASINACION AS (
SELECT A.CARNE, A.NOMBRE, C.CODIGO,
C.DESCRIPCION,
ASI.ANIO, ASI.SEMESTRE, ASI.CICLO, ASI.ZONA,
ASI.NOTA
FROM ALUMNO AS A, CURSO AS C, ASIGNACION AS
ASI
WHERE A.CARNE = ASI.CARNE AND ASI.CODIGO =
C.CODIGO
)
2)
USANDO LA SENTENCIA DROP:
EJEMPLOS REALIZADOS EN SQL SERVER:
a)
Borrando la base de datos Ejemplo_BD:
drop database Ejemplo_BD
b)
Borrando una de las tres tablas:
drop table Asignacion
c)
Borrando la vista.
drop view RESULTADO_ASINACION
3)
USANDO LA SENTENCIA ALTER:
EJEMPLOS REALIZADOS EN SQL SERVER:
a)
Alterando la estructura de una base de datos:
ALTER TABLE ASIGNACION
ADD CONSTRAINT KP_ASIGNACION PRIMARY KEY
(CARNE,CODIGO,ANIO,SEMESTRE,CICLO)
ALTER TABLE ASIGNACION
ADD CONSTRAINT FK_ASIGNACION_ALUMNO FOREIGN KEY
(CARNE) REFERENCES ALUMNO(CARNE)
4)
ALTER TABLE ASIGNACION
ADD CONSTRAINT FK_ASIGNACION_CURSO FOREIGN KEY
(CODIGO) REFERENCES CURSO(CODIGO)
b)
Etc.
USANDO LA SENTENCIA RENAME:
a)
Renombrar una tabla en Oracle:
RENAME TABLE <nombre de tabla existente> TO <nuevo
nombre de la tabla>
b)
Renombrar una tabla en MySQL:
RENAME TABLE tbl_name TO new_tbl_name
[, tbl_name2 TO new_tbl_name2] ...
La sentencia renombra una o más tablas a la vez
14
Ejemplo:
c)
RENAME TABLE old_table TO tmp_table,
new_table TO old_table,
tmp_table TO new_table;
Si la sentencia renombra más de una tabla, las operaciones se
realizan de izquierda a derecha. Si se quiere intercambiar el
nombre de dos tablas, se puede hacer de este modo (asumiendo
que no existe ninguna tabla con el nombre tmp_table):
Renombrar una tabla en SQL Server:
En SQL Server, para cambiar el nombre de una tabla es
necesario usar un procedimiento almacenado. El nombre del SP
es ‘sp_rename’ y su respectiva sintaxis es
Excel sp_rename <nombre de tabla existente>, <nuevo nombre
de la tabla>
Por ejemplo:
Exec sp_renama ‘Asignacion’, ‘Asignacion_Alumno’