Sei sulla pagina 1di 12

Las tablas son la estructura bsica donde se almacena la informacin en la base de datos.

Dado que en la mayora de los casos, no hay forma de que el proveedor de base de datos sepa con antelacin cuales son sus necesidades de almacenamiento de datos, es probable que necesite crear tablas en la base de datos usted mismo. 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 informacin, es importante incluir la sintaxis CREATE TABLE en esta gua 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 representacin de un componente de aquella parte de los datos. Entonces, por ejemplo, si tenemos una tabla para registrar la informacin del cliente, las columnas pueden incluir informacin tal como Primer Nombre, Apellido, Direccin, Ciudad, Pas, Fecha de Nacimiento y dems. Como resultado, cuando especificamos una tabla, incluimos los ttulos 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. Podra ser un entero (tal como 1), un nmero real (tal como 0,55), una lnea (tal como 'sql'), una fecha/expresin 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 lnea 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 especfica de base de datos. La sintaxis SQL para CREATE TABLEes 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 el cliente tal como se especifica anteriormente, ingresaramos CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date) A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor predeterminado, agregue [valor] Predeterminado luego de la instruccin de tipo de datos. En el ejemplo anterior, si deseamos predeterminar una columna Address como Desconocida y Ciudad como Mumbai, ingresaramos

CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50) default 'Unknown', City char(50) default 'Mumbai', Country char(25), Birth_Date date) Tambin puede limitar el tipo de informacin que una tabla /columna puede mantener. Esto se realiza a travs de la palabra clave CONSTRAINT, que se describe a continuacin. 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 travs de la instruccin CREATE TABLE, o luego de crear la tabla a travs de la instruccin ALTER TABLE. Los tipos comunes de restricciones incluyen las siguientes: NOT NULL UNIQUE CHECK Clave primaria Clave externa

Cada uno se describe en detalle a continuacin. NOT NULL En forma predeterminada, una columna puede ser NULL. Si no desea permitir un valor NULL en una columna, querr colocar una restriccin en esta columna especificando que NULL no es ahora un valor permitido. Por ejemplo, en la siguiente instruccin, CREATE TABLE Customer (SID integer NOT NULL, Last_Name varchar (30) NOT NULL, First_Name varchar(30)); Las columnas SID y Last_Name no incluyen NULL, mientras que First_Name puede incluir NULL. UNIQUE La restriccin UNIQUE asegura que todos los valores en una columna sean distintos. Por ejemplo, en la siguiente instruccin, CREATE TABLE Customer (SID integer Unique,

Last_Name varchar (30), First_Name varchar(30)); La columna SID no puede incluir valores duplicados, mientras dicha restriccin no se aplica para columnas Last_Name y First_Name. Por favor note que una columna que se especifica como clave primaria tambin puede ser nica. Al mismo tiempo, una columna que es nica puede o no ser clave primaria. CHECK La restriccin CHECK asegura que todos los valores en una columna cumplan ciertas condiciones. Por ejemplo, en la siguiente instruccin, CREATE TABLE Customer (SID integer CHECK (SID > 0), Last_Name varchar (30), First_Name varchar(30)); La columna SID slo debe incluir enteros mayores a 0. Por favor note que la restriccin CHECKno sea ejecutada por MySQL en este momento. Clave primaria y Clave externa se comentan en las siguientes dos secciones. Clave primaria La clave primaria se utiliza para identificar en forma nica cada lnea 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 ms campos en una tabla. Cuando se utilizan mltiples 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 continuacin se presentan ejemplos para la especificacin de una clave primaria cuando se crea una tabla: MySQL: CREATE TABLE Customer (SID integer, Last_Name varchar(30), First_Name varchar(30), PRIMARY KEY (SID)); Oracle:

CREATE TABLE Customer (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 continuacin se presentan ejemplos para la especificacin de una clave primaria al modificar una tabla: MySQL: ALTER TABLE Customer ADD PRIMARY KEY (SID); Oracle: ALTER TABLE Customer ADD PRIMARY KEY (SID); SQL Server: ALTER TABLE Customer 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. Clave externa Una clave externa es un campo (o campos) que seala la clave primaria de otra tabla. El propsito de la clave externa es asegurar la integridad referencial de los datos. En otras palabras, slo se permiten los valores que se esperan que aparezcan en la base de datos. Por ejemplo, digamos que tenemos dos tablas, una tabla CUSTOMER que incluye todos los datos del CUSTOMER, y la tabla RDENES que incluye los pedidos del CUSTOMER. La restriccin aqu es que todos los pedidos deben asociarse con un CUSTOMER que ya se encuentra en la tabla CUSTOMER. En este caso, colocaremos una clave externa en la tabla ORDERS y la relacionaremos con la clave primaria de la tabla CUSTOMER. De esta forma, nos aseguramos que todos los pedidos en la tabla ORDERS estn relacionadas con un CUSTOMER en la tabla CUSTOMER. En otras palabras, la tabla ORDERS no puede contener informacin de un CUSTOMER que no se encuentre en la tabla CUSTOMER. La estructura de estas dos tablas ser la siguiente: Tabla CUSTOMER
nombre de columna caracterstica

SID Last_Name First_Name

Clave Primaria

Tabla ORDERS
nombre de columna caracterstica Order_ID Order_Date Customer_SID Amount Clave Externa Clave Primaria

En el ejemplo anterior, la columna Customer_SID en la tabla ORDERS es una clave externa sealando la columna SID en la tabla CUSTOMER. A continuacin se muestran ejemplos de cmo especificar la clave externa a la hora de crear la tabla ORDERS: MySQL: CREATE TABLE ORDERS (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Order_ID), Foreign Key (Customer_SID) references CUSTOMER(SID)); Oracle: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date date, Customer_SID integer references CUSTOMER(SID), Amount double); SQL Server: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date datetime, Customer_SID integer references CUSTOMER(SID), Amount double); A continuacin se presentan ejemplos para la especificacin de una clave externa al modificar una tabla: Esto asume que se ha creado la tabla ORDERS, y que la clave externa todava no se ha ingresado: MySQL: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

Oracle: ALTER TABLE ORDERS ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); SQL Server: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); Create View Las vistas pueden considerarse como tablas virtuales. Generalmente hablando, una tabla tiene un conjunto de definiciones, y almacena datos fsicamente. Una vista tambin tiene un conjunto de definiciones, que se construye en la parte superior de la(s) tabla(s) u otra(s) vista(s), y no almacena datos fsicamente. La sintaxis para la creacin de una vista es la siguiente: CREATE VIEW "NOMBRE_VISTA" AS "Instruccin SQL" La Instruccin SQL puede ser cualquiera de las instrucciones SQL que hemos descripto en esta gua de referencia. Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la siguiente tabla: Tabla Customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date) y deseamos crear una vista denominada V_Customer que contiene slo las columnas First_Name, Last_Name y Pas de esta tabla, ingresaramos CREATE VIEW V_Customer AS SELECT First_Name, Last_Name, Country FROM Customer Ahora tenemos una vista llamada V_Customer con la siguiente estructura: View V_Customer (First_Name char(50), Last_Name char(50), Country char(25)) Podemos utilizar tambin una vista para aplicar uniones a dos tablas. En este caso, los usuarios slo ven una vista en vez de dos tablas, y la instruccin SQL que los usuarios

necesitan emitir se vuelve mucho ms simple. Digamos que tenemos las siguientes dos tablas: Tabla Store_Information
store_name Sales San Diego Los Angeles Boston Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y deseamos construir una vista que tenga ventas organizadas segn la regin. Colocaramos la siguiente instruccin SQL: CREATE VIEW V_REGION_SALES AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Esto nos brinda una vista, V_REGION_SALES, que se ha definido para las ventas de los negocios segn los registros de la regin. Si deseamos saber el contenido de esta vista, ingresamos, SELECT * FROM V_REGION_SALES Resultado: REGION SALES East West 700 2050

Create Index Los ndices nos ayudan a obtener datos de las tablas en forma ms rpida. Utilicemos un ejemplo para ilustrar este punto: Digamos que estamos interesados en leer en un libro de jardinera acerca de cmo cultivar pimientos. En vez de leer el libro desde el comienzo hasta que encontremos una seccin

sobre pimientos, es mucho ms rpido para nosotros ir a la seccin ndice al final del libro, ubicar qu pginas contienen la informacin sobre pimientos, y luego dirigirnos a esas pginas directamente. Al dirigirnos al ndice primero ahorramos tiempo y seguramente es el mtodo ms eficiente para ubicar la informacin que necesitamos. El mismo principio se aplica para la obtencin de datos desde una tabla de base de datos. Sin un ndice, el sistema de base de datos lee a travs de toda la tabla (este proceso se denomina escaneo de tabla) para localizar la informacin deseada. Con el ndice correcto en su lugar, el sistema de base de datos puede entonces primero dirigirse al ndice para encontrar de dnde obtener los datos, y luego dirigirse a dichas ubicaciones para obtener los datos necesarios. Esto es mucho ms rpido. Por lo tanto, generalmente se recomienda crear ndices en tablas. Un ndice puede cubrir una o ms columnas. La sintaxis general para la creacin de un ndice es: CREATE INDEX "NOMBRE_NDICE" ON "NOMBRE_TABLA" (NOMBRE_COLUMNA) Digamos que tenemos la siguiente tabla: Tabla Customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date) Si deseamos crear un ndice tanto en Ciudad como en Pas, ingresaramos, CREATE INDEX IDX_CUSTOMER_LAST_NAME on CUSTOMER (Last_Name) Pour crer un index dans City et Country, il faut saisir CREATE INDEX IDX_CUSTOMER_LOCATION on CUSTOMER (City, Country) No hay una regla estricta respecto de cmo nombrar un ndice. El mtodo generalmente aceptado es colocar un prefijo, tal como IDX_, antes del nombre de un ndice para evitar la confusin con otros objetos de la base de datos. Tambin es una buena idea brindar informacin sobre qu tabla y columna(s) se utilizar el ndice. Por favor note que la sintaxis exacta para CREATE INDEX puede ser distinta segn las diferentes bases de datos. Debera consultar con su manual de referencia de base de datos para obtener la sintaxis precisa.

Alter Table Una vez que se crea la tabla en la base de datos, hay muchas ocasiones donde uno puede desear cambiar la estructura de la tabla. Los casos tpicos incluyen los siguientes: - Agregar una columna - Eliminar una columna - Cambiar el nombre de una columna

- Cambiar el tipo de datos para una columna Por favor note que lo anterior no es una lista exhaustiva. Hay otras instancias donde ALTER TABLE se utiliza para cambiar la estructura de la tabla, tales como cambiar la especificacin de la clave primaria o agregar una restriccin nica para una columna. La sintaxis SQL para ALTER TABLE es ALTER TABLE "nombre_tabla" [modificar especificacin] [modificar especificacin] depende del tipo de modificacin que deseamos realizar. Para los usos mencionados anteriormente, las instrucciones [modificar especificacin] son: Agregar una columna: ADD columna 1 tipos de datos para columna 1 Eliminar una columna: DROP columna 1 Cambiar el nombre de una columna: CHANGE nombre antiguo de la columna nuevo nombre de la columna tipos de datos para la nueva columna". Cambiar el tipo de datos para una columna: MODIFY columna 1 nuevo tipo de datos

Recorramos ejemplos para cada uno de lo anteriormente mencionado, utilizando la tabla cliente creada en la seccin CREATE TABLE, il convient de se reporter aux exemples mentionns ci-dessus. Tabla customer
Column Name Data Type First_Name Last_Name Address City Country Birth_Date char(50) char(50) char(50) char(50) char(25) date

Primero, deseamos agregar una columna denominada Gender a esta tabla. Para hacerlo, ingresamos, ALTER table customer add Gender char(1) Estructura de la tabla resultante:

Table customer
Column Name Data Type First_Name Last_Name Address City Country Birth_Date Gender char(50) char(50) char(50) char(50) char(25) date char(1)

Luego, deseamos renombrar Address" a Addr. Para hacerlo, ingresamos, ALTER table customer change Address Addr char(50) Estructura de la tabla resultante: Table customer
Column Name Data Type First_Name Last_Name Addr City Country Birth_Date Gender char(50) char(50) char(50) char(50) char(25) date char(1)

Luego, lo que queremos es cambiar el tipo de datos para Addr a 30 caracteres. Para hacerlo, ingresamos, ALTER table customer modify Addr char(30) Estructura de la tabla resultante: Table customer
Column Name Data Type First_Name Last_Name Addr City char(50) char(50) char(30) char(50)

Country Birth_Date Gender

char(25) date char(1)

Finalmente, deseamos eliminar la columna Gender. Para hacerlo, ingresamos, ALTER table customer drop Gender Estructura de la tabla resultante: Table customer
Column Name Data Type First_Name Last_Name Addr City Country Birth_Date char(50) char(50) char(30) char(50) char(25) date

A veces podemos decidir que necesitamos eliminar una tabla en la base de datos por alguna razn. De hecho, sera problemtico si no podemos hacerlo ya que esto creara una pesadilla de mantenimiento para DBA. Afortunadamente, SQL nos permite hacerlo, ya que podemos utilizar el comando DROP TABLE. La sintaxis paraDROP TABLE es DROP TABLE "nombre_tabla" Entonces, si deseamos eliminar una tabla denominada cliente que creamos en la seccin CREATE TABLE, simplemente ingresamos DROP TABLE customer. A veces deseamos eliminar los datos en una tabla. Una forma de hacer esto es con DROP TABLE, que vimos en la ltima seccin Pero Si deseamos simplemente deshacernos de los datos pero no de la tabla en s? Para esto, podemos utilizar el comando TRUNCATE TABLE. La sintaxis paraTRUNCATE TABLE es TRUNCATE TABLE "nombre_tabla" Entonces, si deseamos truncar una tabla denominada cliente que creamos en SQL CREATE TABLE, simplemente ingresamos TRUNCATE TABLE customer

Potrebbero piacerti anche