Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: Ejemplos en Transact-SQL (1ra parte)  (Leído 5161 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Ladri
Savant
*******

Prestigio: 4
Desconectado Desconectado

Sexo: Masculino
Mensajes: 43


Visual Basic 6 y .NET (principiante) / Pascal


« en: 25/08/2006, 22:26:04 »

En este post voy a empezar a explicar mediante ejemplos el uso del lenguaje Transact-SQL para las bases de datos del SQL Server.

La idea es ir viendo todas las posibles tareas que necesitemos saber a la hora de crear un sistema que use este tipo de bases de datos, y para eso voy a crear desde 0, a modo de ejemplo, una base de datos que podría servir para un software de administración de un video club (aunque muy básica, sólo para aprender los conceptos).

Vamos a empezar creando la base de datos, pero primero que nada hay que conocer a estos tres comandos que sirven para manejarse con los objetos en la base de datos: CREATE sirve para crear un objeto, ALTER sirve para modificarlo y DROP para borrarlo. Sabiendo esto ya podemos crear la base:

Código
CRE ATE DATABASE Video
 

Con ese simple comando se crea una base de datos llamada Video con todas las opciones por defecto, pero si se quiere definir la ubicación de la base y de su fichero log, el tamaño de estos, el incremento en tamaño, etc. se pueden especificar de esta manera:

Código
CRE ATE DATABASE Video
ON ( NAME = VideoDat,
    FILENAME = "C:\Bases\VideoDat.mdf",
    SIZE = 10MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB )
LOG ON ( NAME = VideoLog,
        FILENAME = "C:\Bases\VideoLog.ldf",
        SIZE = 5MB,
        MAXSIZE = 15MB,
        FILEGROWTH = 5MB )
 

Como podemos ver, con ON se especifican los parametros que va a tener nuestro archivo de bases de datos y con LOG ON, los del archivo de logeo.
NAME: Es el nombre que el lenguaje va a usar como referencia cuando nos querramos referir a él.
FILENAME: Es el path y el nombre en donde se va a alojar físicamente en nuestro disco.
SIZE: El tamaño inicial que va a ocupar.
MAXSIZE: El tamaño máximo que va a ocupar el archivo.
FILEGROWTH: El tamaño en el que va a ir aumentando el archivo a medida que se va ocupando.

Otra cosa, los tamaños se pueden poner usando KB, MB, GB y TB, si no se especifica la unidad se toma MB por defecto.

Ya tenemos la base creada, si por algún motivo nos confundimos al crearla o le queremos hacer alguna modificación se puede usar el comando ALTER para modificar cualquier parametro. Por ejemplo si queremos que el archivo de log ocupe 10 Mb en nuestro disco en vez de 5 Mb lo modificamos con MODIFY FILE:

Código
ALT ER DATABASE Video
MODIFY FILE (NAME = VideoLog,
            SIZE = 10MB)
 

Si por el contrario queremos borrar la base, basta con usar:

Código
DR OP DATABASE Video
 

Una vez que ya tenemos la base de datos podemos empezar a definir las tablas. Nuestra base de datos va a contar con 4 tablas:


PELICULAS                                     GENERO
=========                                    ======
Id_Pelicula (smallint)                        Id_Genero (tinyint)
Nombre (varchar(35))                      Genero (varchar(15))
Director (varchar(35))
Genero (tinyint)
Alquilada (bit)

CLIENTES                                      ALQUILERES
========                                     ==========
Id_Cliente (smallint)                         Id_Alquiler (smallint)
Nombre (varchar(35))                      FechaAlquiler (datetime)
                                                   Cliente (smallint)
                                                   Pelicula (smallint)

Ahí están los nombres de cada tabla y sus respectivas columnas con el tipo de datos que van a alojar entre paréntesis. Estos son los tipos de datos más importantes que hay en el SQL Server:

bigint -------> Enteros desde: -9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807
int ---------->    "      "  : -2.147.483.648 hasta 2.147.483.647
smallint ----->    "      "  : -32.768 hasta 32.767
tinyint ------>    "      "  : 0 hasta 255
bit ----------> Entero que puede ser 1 o 0
decimal ------> Números exactos desde: -10^38 + 1 hasta 10^38 – 1
float --------> Números aproximados desde: -1.79E + 308 hasta 1.79E + 308
real --------->   "         "         "  : -3.40E + 38 hasta 3.40E + 38
money --------> Monetarios desde: -922.337.203.685.477,5808 hasta 922.337.203.685.477,5807
smallmoney --->     "        "  : -214,748.3648 hasta 214,748.3647
char ---------> Caracteres no Unicode de longitud fija (hasta 4.000 caracteres)
varchar ------> Datos no Unicode de longitud variable (hasta 4.000 caracteres)
text ---------> Datos no Unicode de longitud variable (hasta 2.147.483.647 caracteres)

Hay muchos más tipos de datos, pero estos son los más importantes y más usados. Ahora si empezamos a crear las tablas usando nuevamente el comando CREATE, pero esta vez seguido de TABLE:

Código
CREATE TABLE Peliculas
            (Id_Pelicula smallint IDENTITY(1,1) PRIMARY KEY NOT NULL,
             Nombre varchar(35) NOT NULL,
             Director varchar(35),
             Genero tinyint DEFAULT(1) NOT NULL,
             Alquilada bit DEFAULT(0) NOT NULL)
 

Como podemos ver, definimos la tabla películas con sus respectivas columnas y tipos de datos, y además asignamos a la columna Id_Peliculas como la clave primaria con PRIMARY KEY, y con IDENTITY hacemos que el valor de ese campo se vaya incrementando de uno en uno, y definimos que no pueda ser un valor nulo con NOT NULL (osea que siempre haya algún tipo de dato alojado en ese campo), lo mismo para los campos Nombre, Genero y Alquilada. Aunque en estos últimos dos agregamos otra opción: DEFAULT(1), esto significa que si el usuario no ingresa nada en esos dos campos el valor por defecto va a ser siempre 0.

Sabiendo esto ya podemos crear las demás tablas a partir de su esctructura.

Código
CREATE TABLE Genero
            (Id_Genero tinyint IDENTITY(1,1) PRIMARY KEY NOT NULL,
             Genero varchar(15) NOT NULL)
CREATE TABLE Clientes
            (Id_Cliente smallint IDENTITY(1,1) PRIMARY KEY NOT NULL,
             Nombre varchar(35) NOT NULL)
CREATE TABLE Alquileres
            (Id_Alquiler smallint IDENTITY(1,1) PRIMARY KEY NOT NULL,
             FechaAlquiler datetime NOT NULL,
             Cliente smallint NOT NULL,
             Pelicula smallint NOT NULL)
 

Otra cosa que cabe aclarar, aunque no fué usado en ninguna de las tablas, existen otros dos tipos de restricciónes que se pueden aplicar a cualquier columna de una tabla, son las restricciones UNIQUE, que sirve para que no se puedan ingresar datos duplicados en una misma columna, y CHECK, que sirve para limitar los valores que se ingresan en una columna.

Ya creadas las tablas, el próximo paso sería crear las relaciones que hay entre ellas, en el siguiente gráfico se pueden ver las relaciones que va a haber en nuestra base de datos:


Para crear una relación entre dos tablas, hay que crear una restricción FOREING KEY (clave ajena). las claves ajenas solo pueden apuntar a una clave primaria o a una restricción UNIQUE, y la forma de agregarlas a una tabla es la siguiente:

Código
ALTER TABLE Peliculas
           ADD CONSTRAINT fk_Genero FOREIGN KEY (Genero)
           REFERENCES Genero(Id_Genero)
ALTER TABLE Alquileres
           ADD CONSTRAINT fk_Cliente FOREIGN KEY (Cliente)
           REFERENCES Clientes(Id_Cliente)
ALTER TABLE Alquileres
           ADD CONSTRAINT fk_Pelicula FOREIGN KEY (Pelicula)
           REFERENCES Peliculas(Id_Pelicula)
 

Primero que nada con ALTER TABLE elegimos la tabla a la cual le vamos a agregar la restricción, luego con ADD CONSTRAINT especificamos el nombre de la relación y con FOREING KEY elegimos que columna de la tabla va a ser la clave ajena, por último con REFERENCES apuntamos a la clave
primaria de la tabla con la cual queremos tener la relación.

Ya tenemos la estructura de la base creada, en los próximos posts vamos a empezar a trabajar con la información (ingreso de datos, consultas, etc). Cualquier duda/crítica/consulta/sugerencia es bienvenida.

En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #1 en: 25/08/2006, 23:43:03 »

Muy bueno, creo que antes de entrar en DML deberias tocar el tema de la conexion (y doble logueo) que necesita éste servidor.

Saludos.
En línea

Ladri
Savant
*******

Prestigio: 4
Desconectado Desconectado

Sexo: Masculino
Mensajes: 43


Visual Basic 6 y .NET (principiante) / Pascal


« Respuesta #2 en: 26/08/2006, 16:20:56 »

Si, ese tema lo iba a tocar pero tenía pensado al final, porque voy a poner ejemplos de como conectarse desde Visual Basic 6, .NET y PHP. Pero como estos son ejemplos paso a paso calculé que era mejor empezar con la creación de bases, tablas, entrada de datos, etc.. y una vez ya hecho esto ahi si los ejemplos de conección...

En línea
Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: