InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial SQL
Introducción SQL
El lenguaje SQL
Componentes del lenguaje SQL
Tablas
Indices
Vistas
Consultar datos. SELECT
Insertar datos. INSERT
Borrado de datos. DELETE
Actualización de datos. UPDATE
Consultas combinadas. JOINS
Consultas agregadas
Subconsultas
También puedes ver ...
Instalar SQL server enterprise en Vista o XP
¿Qué es el Collation en SQL ?
Como encriptar o cifrar cadenas y campos en SQL server 2005 ENCRYPTBYPASSPHRASE y DECRYPTBYPASSPHRASE
SQL Prompt - Intellisense para SQL Server
Borrado de datos. DELETE
Consultas agregadas
Introducción SQL
El lenguaje SQL
Componentes del lenguaje SQL
Indices

Afiliados
La Web del programador
MundoProgramacion


 

Lenguaje de Definición de datos (I)

Tablas

El lenguaje de definición de datos (DDL, Data Definition Language) es el encargado de permitir la descripcion de los objetos que forman una base de datos.

El lenguaje de definición de datos le va a permitir llevar a cabo las siguientes acciones:

  • Creación de tablas, índices y vistas.
  • Modificación de las estructura de tablas, índices y vistas.
  • Supresión de tablas, índices y vistas.

Pero antes de continuar vamos a comentar la nomenclatura que emplearemos, si tiene algún conocimiento de programación le resultará familiar.


Nomenclatura

La sintaxis empleada para la sentencias en las diferentes páginas esta basada en la notación EBNF. Vamos a ver el significado de algunos simbolos.

Símbolo
Significado
< >

Encierran parámetros de una orden que el usuario debe sustituir al escribir dicha orden por los valores que queramos dar a los parámetros.

[ ]

Indica que su contenido es opcional.

{ }

Indica que su contenido puede repetirse una o mas veces.

|

Separa expresiones. Indica que pueden emplearse una u otra expresión pero no más de una a la vez.

Además las palabras clave aparecen en mayúscula negrita y los argumentos en minúscula cursiva.

La sintaxis de una sentencia tendrá un aspecto como este:


CREATE TABLE
<nombre_tabla>
(
<nombre_campo> <tipo_datos(tamaño)>,
{
<nombre_campo> <tipo_datos(tamaño)>}
) ;

Creación de 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 el ellas vea la introducción a bases de datos.

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:


CREATE TABLE
<nombre_tabla>
(
<nombre_campo> <tipo_datos(tamaño)>
[null | not null] [default <valor_por_defecto>]
{
,<nombre_campo> <tipo_datos(tamaño)>
[null | not null] [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)   not null,
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).

    Notese que se han omitido las tildes y los espacios a proposito. Nunca cree campos que contengan caracteres especificos 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 standart 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.

Modificación de tablas

En ocasiones puede ser necesario modificar la estructura de una tabla, comúnmente para añadir un campo o reestricción. Para ello disponemos de la instruccción ALTER TABLE.

ALTER TABLE nos va a permitir:

  • Añadir campos a la estructura incial de una tabla.
  • Añadir reestriciones y referencias.

Para añadir un campo a una tabla existente:


ALTER TABLE
<nombre_tabla>
ADD <nombre_campo> <tipo_datos(tamaño)>
[null |not null] [default <valor_por_defecto>]
{
, <nombre_campo> <tipo_datos(tamaño)>
[null |not null] [default <valor_por_defecto>]} ;

    Ejemplo:


ALTER TABLE
tCoches
ADD num_plazas integer null 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:


CREATE TABLE
tClientes
(
codigo     integer        not null,
nombre   varchar(255)   not null,
apellidos varchar(255)   null,
nif        varchar(10)    null,
telefono  varchar(9)     null,
movil      varchar(9)      null
);
ALTER TABLE tClientes ADD
CONSTRAINT PK_tClientes primary key (codigo);

     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.

    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 TABLE tAlquileres ADD
CONSTRAINT
PK_tAlquileres primary key (codigo),
CONSTRAINT FK_Clientes foreign key (codigo_cliente)
                       references
tClientes (Codigo),
CONSTRAINT FK_Coches foreign key (matricula)
                     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.

Eliminación de tablas.

Podemos eliminar una tabla de una base de datos mediante la instruccion 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ón DROP TABLE fallará por integridad referencial.

Cuando eliminamos una tabla eliminamos también sus índices.


Inicio | Tutorial SQL Componentes del lenguaje SQLTutorial SQL Indices Versión para imprimir Foros de consulta

 
buen aporte por Jesus ALvarez
Respuesta recibida el [14/07/2007 10:57:34]
muchas gracias por aportar al enriqucimiento de los demas una consutla tu sabes como puedo insrtar datos en dos base de datos distintas desde c# ya que manejo programas multibase de datos, o algun ejm en transact para ello muchsimas gracias 
mi correo es reny18@msn.com

 
holas por lluliana
Respuesta recibida el [19/07/2007 05:15:15]
gracias por enseñarme sql si fueran tan ambles de mandarmelo el tutorial ami correo  yuly2005-1@hotmail.com por favor y si saben algo de .adonet vacan he 

 
pleace por lluliana
Respuesta recibida el [19/07/2007 05:18:35]
me gustaria saber si me pueden ofrecer informacion sobre programacion lenguajes ams que todo  gracias 

 
programador jr por cristobal
Respuesta recibida el [02/08/2007 09:45:26]
como puedo extrar de un campo de una tabla un numero de caracteres inferior a la longitud definida?

 
Manual SQL para aprender en 2 dias por karla Susana
Respuesta recibida el [01/10/2007 09:47:00]
Me podrian pasar algun manual para aprender sql en 2 dias, karla.berlanga@banorte.com

 
No. Definitivamente no podemos... por Devjoker
Respuesta recibida el [01/10/2007 03:16:03]
No. Definitivamente no podemos. Es imposible aprender nada en dos dias.

 
restriccion primary key por Armando Diaz
Respuesta recibida el [07/10/2007 06:50:20]
Hola , que es un restriccion primary key y para que sirve

Gracias

 
sql 2005 por romero
Respuesta recibida el [09/10/2007 07:39:29]
alguien me podria pasar aldun manual 
de sql 2005 por favor me lo pueden
enviar al msn jromero1934@cunivemsa.edu.co

 
NO PASA NADA NO SEENTIENDE NI MELAS MEJOR SERIA CON PANTALLAS por GGGGGGGGGGGGGGGGG
Respuesta recibida el [11/10/2007 11:32:58]
SAVES QUES EN LA PRÓXIMA HAGAN CON VENTANAS Y CON PASOS  NO ME CONVENCE ESTA PAGINA CAMBIENLO

 
MUY BUENO PERO... por Chuy
Respuesta recibida el [23/11/2007 12:56:09]
Me parece muy bueno el tutorial felicidades me saco de muchos apuros, auqnue como para novatos como yo estaria exelente con ventanas como mencionaban por ahi.

Saludos

 
No esta bueno. por Bayta Darell
Respuesta recibida el [24/01/2008 04:34:08]
Pedro tienes buen material, pero no encontré lo q buscaba aqui, me han servido otros de tus  materiales pero este no.

 
ERROR por SETH
Respuesta recibida el [07/02/2008 11:33:43]
HOLA NADAMAS PARA DECIRT QUE EN LA TABLA TCOCHES LA PRIMARY KEY ESTA MAL DECLARADA YA QUE SERIA constraint PK_tcoches primary key(matricula) y no solo con PK_COCHES SALUDOS Y BASTANTE INTERESANTES TUS TUTORIALES

 
CONSTRAINT por mauricio amado
Respuesta recibida el [13/03/2008 09:51:22]
en palabras un poquitin mas entendible...que me hace el CONSTRAINT??????

gracias mil

 
necesito a un amigo(a) q m pueda ayudar por ayuda soy lennin auxilio please
Respuesta recibida el [11/04/2008 03:51:30]
quiero empezar a meterle codigos a una base de datos y noc como hago? ayudenme por favor es urgente... please gracias

 
soy lennin de nuevo por ayudenme
Respuesta recibida el [11/04/2008 03:55:46]
como introduzco el select quiero aprender a hacer esto.. por favor es urgente de verdad estoy creando una base de datos con este campo:unidaddelsolicitante q hago? m estan pidiendo q busq la inf de este con solo presionar unidad del solicitante..pero esto esta bueno solo hace falta practica pero ayudenme..son mis pasantias de verdad

 
esta bueno pero necesito respuesta ayuda por lennin
Respuesta recibida el [14/04/2008 08:26:49]
todo esta bien pedro pero si m gustaria que colocaras paso a paso como se empieza a crear todo... dede loa mas basico q es crear una base de datos hasta introducir los codigos q en este caso son los q tu nos describess¡¡¡ quiero aprender y por eso doy esta sugerencia de verdad¡¡¡ leo muchoooo pero no hayo como empezar a hacer esto¡¡¡ gracias de verdad...por favor toma esta sugerencia y veras q a muchos ayudaras.. tngo 17 años y m quiero

 
Manual sql 2005 por larvizu
Respuesta recibida el [23/06/2008 01:57:53]
Esa pendejadota de que quiere aprender en dos dias que no mame, chale...

 
excelente pero necesito graficos por guais
Respuesta recibida el [22/08/2008 11:32:51]
seria mucho mas comveniente con graficas ya que para principiantes aun asi o se entiende. 

un abrazo.

 
nooooooooooooo por manolo
Respuesta recibida el [26/09/2008 03:26:35]
ahora tengo parcial de esta le ctura gracias por esa lectura tan largaaaaaaaaaaaaaaaaaaa

 
quiero dedo por oscar d'gay
Respuesta recibida el [26/09/2008 03:29:20]
ya acabe de empezar

 
la ruta del bus por blanco y negro1 valver
Respuesta recibida el [26/09/2008 03:31:06]
no pana me pusieron a leer esto y tengo un sueño ponga un juego para no dormirme y vendo el bus con cupo 

 
coja un codigo y metalo a la t... por oscar d'gay
Respuesta recibida el [26/09/2008 03:33:09]
coja un codigo y metalo a la torre.......
PARA LENNIN

 
APRENDER EN DOS DIAS por C,C++
Respuesta recibida el [03/11/2008 06:52:15]
QUIERE APRENDER EN DOS DIAS,
POBRE PENDEJO, SI CUESTA, MEJOR
QUE BALLA A LA SECCION DE Bioingenieria
para que le inserten un pinche chip
en el cerebro con toda la pinche informacion

 
ni mierda por moy...
Respuesta recibida el [01/12/2008 08:23:40]
este contenido no me sirvio para ni pura m..... mejor agarrenlo y metanselo  
en cl c...


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial SQL Componentes del lenguaje SQLTutorial SQL Indices Versión para imprimir

Tablas
Autor: Pedro Herrarte Sánchez
Visitas: 74901 Fecha de publicación: 22/10/2005
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 42 | Comentarios: 0 | Archivo: Articulos
Visitas: 109 | Comentarios: 0 | Archivo: Articulos
Visitas: 155 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 33 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 285 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Basic .NET|C#
Visitas: 842 | Comentarios: 2 | Archivo: Articulos
Categorias: C#|ASP.NET|HTML DHTML|XML|JavaScript|ASP.NET|ASP|PHP|Visual Studio
Visitas: 712 | Comentarios: 1 | Archivo: Articulos
Categorias: Administración|Tutorial SQL
Visitas: 451 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 1053 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 250 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS

Útimos temas recibidos en los foros ...
FORMULARIO ACCESS por jcifuentes ... [Access] 11 29/05/2007
Ysmael por Ysmael ... [SQL] 0 08/01/2009
Reflection por Maurito22 ... [C#] 2 06/01/2009
Programador por Robert ... [ORACLE] 0 07/01/2009
como insertar registros en un formulario de visual basic.net desde la base de datos sql server por orlan ... [SQL Server] 8 09/06/2008
quierocodigo de autogenerado del seguro por edwin garcia ramirez ... [Visual Basic .NET] 0 07/01/2009
Video gratis sobre AJAX con ASP.NET por alexxe ... [ASP.NET] 1 06/01/2009
calcular saldo acumulativo por cben ... [SQL] 5 30/12/2008
comparar 2 campos de 2 tablas usando el like por nani ... [SQL Server] 1 06/01/2009
Apagar ordenador remoto en C# por victoryiyo ... [C#] 1 07/01/2009
numero de AUTOGENERADO IPSS por carlos ... [Visual Basic .NET] 5 30/10/2008
Como mandar mensaje a Celular por Pako ... [C#] 63 13/03/2007

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
19/08/2006 Virtualización. Maquinas Virtuales.
03/10/2006 Fundamentos de C#    forma parte de...Tutorial C#
01/09/2006 Como encriptar o cifrar cadenas y campos en SQL server 2005 ENCRYPTBYPASSPHRASE y DECRYPTBYPASSPHRASE
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
05/08/2007 Como ver peliculas descargadas en Windows Vista
12/01/2008 SQL dinámico en Transact SQL    forma parte de...Tutorial de Transact SQL
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
13/04/2008 String.Format
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
18/08/2008 SQL Server 2008

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]