sql

#Curso SQL: CREATE TABLE, Crear una tabla

Siguiendo con el curso de SQL, vamos a comenzar con la parte del lenguaje DDL (Data Definition Languaje o lenguaje de definición de datos). Hasta ahora hemos manipulado los datos existentes de una base de datos. A partir de ahora mostraré las bases para la creación de una base de datos. Creación de tablas, restricciones, relaciones entre tablas, etc.

En éste capítulo hablaremos de la creación de tablas, y como eliminarlas.

¿Qué es una tabla?

Una tabla en una base de datos es la unidad mínima de organización de datos. Describe una entidad, como por ejemplo: un empleado, una oficina, un pedido…

Una tabla puede ser permanente o temporal. Las tablas permanentes, son aquellas que persisten, con sus datos incluidos, entre diferentes sesiones. Sin embargo, una tabla temporal persiste entre sesiones, pero no así sus datos.

Una definición de tabla, contiene el nombre de la misma y en un conjunto de columnas. Cada columna es un atributo de la entidad que representa la tabla. A cada una, se le da un nombre y un tipo de dato, además de la longitud (que puede estar definida por el tipo de dato) y algunos modificadores que definen propiedades de dicha columna.

Las filas, o tuplas, de una tabla, representan los diferentes valores de los datos contenidos en la misma.

El comando de creación de tablas tiene el siguiente formato:

CREATE TABLE nombre_tabla(
  columna1 tipo_dato,
  coulmna2 tipo_dato,
  columna3 tipo_dato,
  ...
)

Para verlo más claro, observa el siguiente ejemplo de una tabla para guardar clientes de una empresa:

CREATE TABLE Cliente(
  Id_Cliente NUMBER(10),
  Nombre VARCHAR2(50),
  Apellidos VARCHAR2(100),
  Telefono VARCHAR2(9),
  Direccion VARCHAR2(200),
  Fecha_Alta DATE,
  Edad NUMBER(2)
);

En éste ejemplo tenemos el nombre ‘Cliente’. La palabra en primer lugar de cada línea (excepto el CREATE TABLE), son los identificadores de las columnas. Y a continuación, se encuentra el tipo de dato y la longitud máxima de la columna.

Tipos de datos de Oracle

En el ejemplo de creación de la tabla he mostrado tres tipos de datos: NUMBER, VARCHAR2 y DATE. Sin embargo, hay algunos más. Voy a explicarlos todos aquí.

Existen varias categorías:

Tipos de datos de carácter

Son tipos de datos que pueden almacenar cualquier carácter alfanumérico en cadenas. Los valores de bytes almacenados se interpretan como un esquema de codificación de caracteres o conjunto de caracteres. Algunos ejemplos comunes de conjuntos de caracteres son: 7-bit ASCII, EBCDIC o el Unicode UTF-8.

  • VARCHAR2: se trata del tipo de dato de caracteres más común de Oracle, y también del más eficiente. Almacena una cadena de caracteres literales de longitud variable. Los literales que se almacenan en estos campos, se encierran en comilla simples (‘). De ésta forma se pueden distinguir de los nombres de objetos del schema. En la creación de un VARCHAR2 se especifica la longitud, por ejemplo VARCHAR2(25), que significa que la columna tiene un máximo de 25 bytes.
  • CHAR: en esta caso se almacena una cadena de caracteres de longitud fija. Cuando la creamos indicamos una longitud igual que en el anterior: CHAR2(25). El tamaño por defecto es 1 byte. La base de datos se encarga de completar la longitud indicada con caracteres blancos (espacio).
  • NVARCHAR2 y NCHAR: Son idénticos al VARCHAR2 y CHAR, pero almacenan los caracteres en codificación Unicode.

Tipos de datos numéricos

Este tipo de datos puede almacenar valores numéricos en coma fija y flotante, valor cero e infinito. Algunos tipos numéricos también almacenan el valor ‘NaN’. Se trata de un valor especial que representa un valor indefinido como resultado de una operación incorrecta.

  • NUMBER: Tipo de dato utilizado para almacenar números de coma fija. Se especifica de la siguiente forma: NUMBER(p,e). La ‘p’ se refiere a la precisión, es decir, el número de dígitos que puede tener en total dicho número. Por su parte, la ‘e’, se refiere a la escala, que quiere decir cuántos de esos dígitos son decimales.
  • BINARY_FLOAT y BINARY_DOUBLE: Se trata de tipos de datos que almacenan número en coma flotante. La diferencia más notable es que, mientras el tipo NUMBER almacena los dígitos en formato decimal, estos lo almacenan en formato binario. Esto permite realizar operaciones aritméticas de forma mucho más rápida. Almacenan representaciones aproximadas de los números decimales.

Tipos de datos de tiempo

Esta categoría de tipos de dato almacenan fechas y periodos de tiempo de forma inteligible por las zonas horarias.

  • DATE: Almacena una fecha y hora. Aunque puede ser representada en valores numéricos o caracteres, el tipo DATE tiene algunas propiedades especiales. Internamente, los valores se almacenan como números, utilizando 7 bytes para cada uno de los siguientes campos (por orden): siglo, año, mes, día, hora, minuto y segundo. Sin embargo, los datos se muestran de acuerdo a un formato especificado. Veremos los formatos de fechas más adelante, pero de momento has de saber que el formato por defecto es: DD-MON-RR; lo cual muestra las fechas tal y como sigue: 01-JAN-11 (1 de enero de 2011). Las horas se muestras con el formato 24 horas: HH:MI:SS. Esto mostraría las horas como sigue (hora por defecto si no se indica nada): 00:00:00.
  • TIMESTAMP: Se trata de una extensión del tipo DATE que almacena fracciones de segundo añadidas a la información del tipo DATE. Es un tipo de dato útil cuando se necesita almacenar valores de tiempo precisos, como eventos de aplicaciones. Existen dos variables: TIMESTAMP WITH TIME ZONE y TIMESTAMP WITH LOCAL TIME ZONE. En ellos se almacena la zona horaria con los valores de la zona horaria y se transforma a la zona horaria de la sesión del usuario que lo lee. Esto es útil para evaluar información de tiempo entre zonas geográficas.

Insertar datos en las tablas creadas

Una vez que se tiene una o más tablas, podemos introducir datos en las mismas. La forma de introducir datos ya la hemos visto en un artículo anterior de la serie. Se utiliza el comando INSERT INTO.  Ya lo he explicado anteriormente, pero es conveniente recodar su funcionamiento, por lo que lo reproduciré aquí.

La forma más básica de este comando, permite introducir en una tabla una fila de datos especificando todos los campos. El comando funciona de la siguiente forma:

Para probar los ejemplos de código y experimentar con las consultas puedes ir al siguiente enlace:

http://sqlfiddle.com/

INSERT INTO nombre_tabla
VALUES (valor1, valor2, valor3, ...);

Los valores que corresponden con cadenas de caracteres se encierran entre comillas simples (‘) o dobles (“). El valor1, corresponde a la primera columna especificada en la creación de la tabla, el valor dos a la segunda, y así sucesivamente.

También puede indicarse a qué columna va dirigido cada valor de la siguiente forma:

INSERT INTO nombre_tabla (columna1, columna2, columna3, ...)
VALUES (valor1, valor2, valor3, ...);

En este caso no hace falta respetar el orden de columnas que se definió al crear la tabla. Al usar este comando el valor1 corresponde a la columna1, el valor2 a la columna2, etc. Tampoco hace falta rellenar todas las columnas, tan solo aquellas que indiquemos en la lista.

Veamos unos ejemplos:

INSERT INTO Cliente
VALUES (1, "Juan", "Gomez Toca", "012345678", "Calle Romeral", 12/12/2012, 45);
INSERT INTO Cliente (Id_Cliente, Nombre, Apellidos, Telefono, Direccion, Fecha_Alta, Edad)
VALUES (2, "Rosa", "Cotos Rodriguez", "012345678", "Calle Mayor", 12/12/2012, 28);
INSERT INTO Cliente (Id_Cliente, Nombre, Apellidos, Edad)
VALUES (3, "Rodrigo", "Ferran Soto", 52);

Probando los ejemplos de código de éste artículo

Para probar los ejemplos de código y experimentar con las consultas puedes ir al siguiente enlace:

http://sqlfiddle.com/

En el recuadro en blanco se pueden escribir los comandos y copiar el texto de ejemplo. Si al pulsar “build schema” se pone en blanco el resto de la web, ya se puede ir al recuadro a la derecha para comprobar los comandos de consulta de la información: SELECT, UPDATE, DELETE.

Es importante tener en cuenta que las tablas anteriores se borran al volver a pulsar “Build schema”, por lo que si has creado una y quieres añadir otra, no debes borrar la primera para volver a ejecutar el script completo. Esto no sucede en las bases de datos de verdad, pero al ser un simulador funciona de ésta forma.

Artículos anteriores del curso de SQL:

Capítulo 1: Introducción al SQL y las bases de datos relacionales

Capítulo 2: La cláusula WHERE, filtrando datos

Capítulo 3: SELECT avanzado e INSERT INTO

Capítulo 4: Cruzando tablas

Capítulo 5: Consultas con subquery

Dejar un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga una mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información sobre las cookies utilizadas.plugin cookies

ACEPTAR
Aviso de cookies