sábado, 10 de agosto de 2013

TABLAS

                                                                  TABLAS               

Las tablas son la estructura básica donde se almacena la información en la base de datos. Dado que en la mayoría de los casos, no hay forma de que el proveedor de base de datos sepa con antelación cuáles son sus necesidades de almacenamiento de datos. Muchas herramientas de base de datos le permiten crear tablas sin ingresar SQL, pero debido a que las tablas son los contenedores de toda la información, es importante incluir la sintaxis CREATE TABLE en esta guía de referencia.

Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea comprender lo que se incluye en una tabla. Las tablas se dividen en filas y columnas. Cada fila representa una parte de los datos, y cada columna puede pensarse como la representación de un componente de aquella parte de los datos. Entonces, por ejemplo, si tenemos una tabla para registrar la información del cliente, las columnas pueden incluir información tal como Primer Nombre, Apellido, Dirección, Ciudad, País, Fecha de Nacimiento y demás. Como resultado, cuando especificamos una tabla, incluimos los títulos de columna y los tipos de datos para esta columna en particular.

Entonces ¿Qué son los tipos de datos? Generalmente, los datos se generan en formas variadas. Podría ser un entero (tal como 1), un número real (tal como 0,55), una línea (tal como 'sql'), una fecha/expresión de tiempo (tal como '25-ene-2000 03:22:22'), o incluso en formato binario. Cuando especificamos una tabla, necesitamos especificar el tipo de dato asociado con cada columna (es decir, especificaremos que ‘First_Name’ es de char(50) tipo – lo que significa que es una línea con 50 caracteres). Una cosa a tener en cuenta es que las diferentes bases de datos relacionales permiten diferentes tipos de datos, entonces es prudente consultar primero una referencia específica de base de datos.

La sintaxis SQL para CREATE TABLE es


CREATE TABLE "nombre_tabla"
("columna 1" "tipo_de_datos_para_columna_1",

"columna 2" "tipo_de_datos_para_columna_2",
... );
Entonces, si debemos crear una tabla para cliente tal como se especifica anteriormente, ingresaríamos

CREATE TABLE CLIENTE
(ID_CLIENTE(5) PRIMARY KEY,
NOMBRE VARCHAR2(25)NOT NULL,
DIRECCION VARCHAR2(25)NOT NULL,
TELEF NUMBER(15)NOT NULL,
LIM_CRED VARCHAR2(25)NOT NULL);

Restricciones

Puede colocar restricciones para limitar el tipo de dato que puede ingresarse en una tabla. Dichas restricciones pueden especificarse cuando la tabla se crea por primera vez a través de la instrucción CREATE TABLE, o luego de crear la tabla a través de la instrucción ALTER TABLE.
Los tipos comunes de restricciones incluyen las siguientes:
Cada uno se describe en detalle a continuación.

NOT NULL
En forma predeterminada, una columna puede ser NULL. Si no desea permitir un valor NULL en una columna, querrá colocar una restricción en esta columna especificando que NULL no es ahora un valor permitido.
Por ejemplo, en la siguiente instrucción


UNIQUE
La restricción UNIQUE asegura que todos los valores en una columna sean distintos.



CHECK
La restricción CHECK asegura que todos los valores en una columna cumplan ciertas condiciones.

LLAVE PRIMARIA
La clave primaria se utiliza para identificar en forma única cada línea en la tabla. Puede ser parte de un registro real, o puede ser un campo artificial (uno que no tiene nada que ver con el registro real). Una clave primaria puede consistir en uno o más campos en una tabla. Cuando se utilizan múltiples campos como clave primaria, se los denomina claves compuestas.
Las claves primarias pueden especificarse cuando se crea la tabla (utilizando CREATE TABLE) o cambiando la estructura existente de la tabla (utilizando ALTER TABLE).
A continuación se presentan ejemplos para la especificación de una clave primaria cuando se crea una tabla:
MySQL:

CREATE TABLE PROVEEDOR
(ID_PROVEEDOR(5) PRIMARY KEY,
NOMBRE VARCHAR2(25)NOT NULL,
DIRECCION VARCHAR2(25)NOT NULL,
TELEF NUMBER(15)NOT NULL,
LIM_CRED VARCHAR2(15)NOT NULL);

Oracle:


CREATE TABLE Cliente

(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

SQL Server:


CREATE TABLE Customer

(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

A continuación se presentan ejemplos para la especificación de una clave primaria al modificar una tabla:

MySQL:

ALTER TABLE Cliente ADD PRIMARY KEY (SID);

Oracle:

ALTER TABLE Cliente ADD PRIMARY KEY (SID);

SQL Server

ALTER TABLE Cliente ADD PRIMARY KEY (SID);

Nota: Antes de utilizar el comando ALTER TABLE para agregar una clave primaria, necesitará asegurarse de que el campo esté definido como 'NOT NULL' -- en otras palabras, NULL no puede aceptarse como valor para ese campo.

LLAVE FORÁNEA

Una clave externa es un campo (o campos) que señala la clave primaria de otra tabla. El propósito de la clave externa es asegurar la integridad referencial de los datos. En otras palabras, sólo se permiten los valores que se esperan que aparezcan en la base de datos.

Por ejemplo, digamos que tenemos dos tablas, una tabla CLIENTE que incluye todos los datos del CLIENTE, y la tabla ORDERS que incluye los pedidos del CLIENTE. La restricción aquí es que todos los pedidos deben asociarse con un CLIENTE que ya se encuentra en la tabla CLIENTE. En este caso, colocaremos una clave externa en la tabla ORDERS y la relacionaremos con la clave primaria de la tabla CLIENTE. De esta forma, nos aseguramos que todos los pedidos en la tabla ORDERS estén relacionadas con un CLIENTE en la tabla CLIENTE. En otras palabras, la tabla ORDERS no puede contener información de un CLIENTE que no se encuentre en la tabla CLIENTE.

La estructura de estas dos tablas será la siguiente:
Tabla CLIENTE

Nombre de Columna
Característica
SID
llave Primaria
Last_Name

First_Name

Tabla ORDERS
Nombre de Columna
Característica
Order_ID
llave Primaria
Order_Date

Cliente_SID
llave Foránea
Amount

En el ejemplo anterior, la columna Customer_SID en la tabla ORDERS es una clave externa señalando la columna SID en la tabla CLIENTE.
A continuación se muestran ejemplos de cómo especificar la clave externa a la hora de crear la tabla ORDERS:

MySQL:


CREATE TABLE ORDERS

(Order_ID integer,
Order_Date date,
CLIENTE_SID integer,
Amount double,
PRIMARY KEY (Order_ID),
FOREIGN KEY (Cliente_SID) REFERENCES CLIENTE (SID));

Oracle:


CREATE TABLE ORDERS

(Order_ID integer PRIMARY KEY,
Order_Date date,
Cliente_SID integer REFERENCES CLIENTE (SID),
Amount double);

SQL Server:


CREATE TABLE ORDERS

(Order_ID integer PRIMARY KEY,
Order_Date datetime,
CLIENTE_SID integer REFERENCES CLIENTE(SID),
Amount double);

A continuación se presentan ejemplos para la especificación de una clave externa al modificar una tabla: Esto asume que se ha creado la tabla ORDERS, y que la clave externa todavía no se ha ingresado:

MySQL:


ALTER TABLE ORDERS

ADD FOREIGN KEY (Customer_SID) REFERENCES CLIENTE (SID);

Oracle:


ALTER TABLE ORDERS

ADD (CONSTRAINT fk_orders1) FOREIGN KEY (Cliente_SID) REFERENCES CLIENTE (SID);

SQL Server:


ALTER TABLE ORDERS

ADD FOREIGN KEY (Customer_SID) REFERENCES CLIENTE (SID);

 

Restricciones FOREIGN KEY

Una tabla  soporta restricciones de claves foráneas.
NOT NULL: Significa que la columna no puede tener valores nulos.
DEFAULT: Le proporcionamos a una columna un valor por defecto cuando el valor de la columna no se especifica en la cláusula INSERT.
En la especificación DEFAULT es posible incluir varias expresiones: constantes, funciones SQL y variables UID y SYSDATE.

Verificación de restricciones: CHECK: Actúa como una cláusula where.
Puede hacer referencia a una o más columnas, pero no a valores de otras filas.
En una cláusula CHECK no se pueden incluir subconsultas ni las pseudoconsultas SYSDATE, UID y USER.


Nota: La restricción NOT NULL es similar a CHECK (NOMBRE_COLUMNA IS NOT NULL)




UNIQUE: Evita valores repetidos en la misma columna. Puede contener una o varias columnas. Es similar a la restricción PRIMARY KEY, salvo que son posibles varias columnas UNIQUE definidas en una tabla. Admite valores NULL. Al igual que en PRIMARY KEY, cuando se define una restricción UNIQUE se crea un índice automáticamente. 

CREATE TABLE TRAMO
(ID_TRAMO VARCHAR2(10) PRIMARY KEY,
NOMB_TRAMO VARCHAR2(30) NOT NULL,
PRIN_TRAM VARCHAR2(30) NOT NULL,
FIN_TRAM VARCHAR2(30) NOT NULL,
KM_CONCLUYE VARCHAR2(10) NOT NULL,
ID_CARRETERA VARCHAR2(10)
CONSTRAINT TRAMO_ID_CARRETERA_FK
REFERENCES CARRETERA(ID_CARRETERA),
ID_COMUNA VARCHAR2(10));


No hay comentarios:

Publicar un comentario