You are on page 1of 10

1

GESTIN DE TABLAS: SEMANA 01-02

Gestin de las tablas


El principal objeto de la base de datos es la tabla, que consiste en un conjunto de filas y columnas. En el momento de crear la tabla, debern ser especificados los tipos de las columnas, elegidos entre los tipos de sistema o los tipos definidos por el usuario. Las tres operaciones de gestin de tabla son la creacin (CREATE TABLE), la modificacin (ALTER TABLE) y la eliminacin (DROP TABLE). Estas operaciones podrn realizarse en Transact-SQL o mediante el SQL Server Management Studio por un usuario dbo o que haya recibido el derecho CREATE TABLE. A una tabla se podrn agregar ndices, que permiten mejorar el rendimiento de las consultas. 1.- Los tipos de datos En el momento de definir una columna, se precisar el formato de uso de dato y el modo de almacenamiento por el tipo de la columna. Tipos de datos de sistema Estos tipos estn disponibles para todas las bases de datos de modo estndar.

Caracteres
char[(n)]: Cadena de caracteres de longitud fija, de n caracteres como mximo. Por defecto, 1; mximo, 8000. varchar (n | max): Cadena de caracteres de longitud variable, con n caracteres como mximo. Su valor predeterminado es 1 y el mximo 8000 caracteres. Si se precisa max, la 31 variable puede contener hasta 2 caracteres de texto. nchar [(n)]: Cadena de un mximo de 4000 caracteres unicode. Si se precisa max, la 31 variable puede contener hasta 2 bytes da datos de tipo texto. Los tipos de datos sinnimos para respetar la norma SQL-2003 son: Tipo SQL Server Char Nchar Varchar Sinnimos character nacional char nacional carcter char varying character varying nacional char varying nacional character varying

Nvarchar

Numricos
decimal [(p [, d])]: Numrico exacto de precisin p (nmero de cifras total), con d cifras a la derecha de la coma. p est comprendido entre 1 y 38, 18 por defecto. d est comprendido entre 1 y p, 0 por defecto. Ejemplo: para decimal (8,3) el intervalo admitido ser de -99999,999 a +99999,999. Los 38 38 valores son gestionado de -10 a 10 -1.

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 1

GESTIN DE TABLAS: SEMANA 01-02


numeric [(p[, d])]: Idntico a decimal. Para el tipo decimal, la precisin podr ser a veces ms grande que la requerida. Bigint: Tipo de datos entero codificado en 8 bytes. Los valores almacenados en este tipo 63 63 de datos estn comprendidos entre -2 (-9.223.372.036.854.775.808) y -2 1(9.233.372.036.854.775.807) Int: Nmero entero entre -231 (-2.147.783.648) y +231 -1(+2.147.483.647). El tipo de datos int es especifico de SQL Server y su sinnimo integer est estandarizado por SQL-92. 15 15 Smallint: Nmero entero entre -2 (-32.768) y 2 -1 (+32.767). Tinyint: Nmero entre positivo entre 0 y 255. float [(n): Numrico aproximado de n cifras; n comprende de 1 a 53. real: Idntico a float (24). double precision: Idntico a flout (53). money: Numrico en formato moneda comprendido entre -922.337.203.685.477,5808 y +922.337.203.685.477,5807 (8 bytes). Smallmoney: Numrico en formato moneda comprendido entre -214.748,3648 y +214.748,3647 (4 bytes).

Fecha
Datetime: Fecha y hora almacenada en 8 bytes; 4 para un nmero de das respecto al 1 de enero de 1900, 4 para un nmero de milisegundos despus de medianoche. Las fechas se gestionan del 1 de enero de 1753 al 31 de diciembre de 9999. Las horas se gestionan con una precisin de 333 milisegundos. Smalldatetime: Fecha y hora almacenados en 4 bytes. Las fechas se gestionan del 1 de enero de 1900 al 6 de junio de 2079, con una precisin de un minuto. Datetime2: Ms preciso que el tipo datetime, permite almacenar un tipo de dato fecha y hora comprendidos entre el 01/01/0001 y el 31/12/9999. Date: Permite almacenar una fecha comprendida entre el 01/01/0001 y el 31/12/9999. Time: Permite almacenar un dato positivo de tipo hora inferior a 24:00 h con una precisin de 100 nanosegundos.

Especiales
bit: Valor binario que puede tomar los valores 0 1. timestamp: Dato cuyo valor se actualiza automticamente cuando la lneas se modifica o inserta. unique identifier: Permite crear un identificador nico basado en la funcin NEWID () sql_variant: El tipo de datos sql_variant permite almacenar cualquier tipo de datos, exceptuando datos de tipo text, ntext, timestamp y sql_variant. Si una columna utiliza este tipo de datos, las distintas filas de la tabla pueden almacenar, en dicha columna, datos de tipos diferentes. Una columna de tipo sql_variant puede poseer una longitud mxima de 8.016 bytes.

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 2

GESTIN DE TABLAS: SEMANA 01-02


Antes de utilizar un valor almacenado en formato sql_variant en una operacin, es necesario convertir los datos a su formato original. Las columnas que utilizan el tipo sql_variant pueden participar en restricciones de claves primarias, de claves externas o de unicidad, pero los datos contenidos en la clave de una fila no pueden exceder los 900 bytes (lmite impuesto por los ndices). sql_variant no puede ser utilizado por las funciones CONTAINSTABLE y FREETEXTABLE. table: Es un tipo de dato particular, que permite almacenar y reenviar un conjunto de valores con vistas a una utilizacin futura. El modo principal de uso de este tipo de datos es la creacin de una tabla temporal.

DECLARE @MiTabla Table( codigo Int Primary Key, apellido Varchar(20)) INSERT @MiTabla VALUES (1,'Juan Perez') INSERT @MiTabla VALUES (2,'Miguel Diaz') SELECT * FROM @mitabla GO

Creacin de una tabla


La creacin de una tabla permite definir las columnas (nombre y tipo de datos) que la componen, as como las restricciones de integridad. Tambin es posible definir columnas calculadas, un criterio de ordenacin especfico y el destino de los datos de tipo text, ntext o image.

Sintaxis
CREATE TABLE [nombreEsquema.] nombre_tabla ( nombre_columna {tipocolumna / AS expresin_calculada } [, nombre_columna] [, restricciones] ) [ON NombreGrupoArchivo] [TEXTIMAGE_ON NombreGrupoArchivo] nombreEsquema: Nombre del esquema en el que se va a definir la tabla. nombre_tabla: Puede ser de la forma base.propietario.tabla. nombre_columna: Nombre de la columna, que debe ser nico en la tabla. Puede haber 250 columnas por tabla. Tipocolumna: Tipo de sistema o tipo definido por el usuario. Restricciones: Reglas de integridad de tipo DEFAULT, CHECK, PRIMARY KEY, etc. Grupoarchivo: Grupo de archivos sobre el cual se crear la tabla. AS expresin_calculada Es posible definir una regla de clculo para las columnas que contienen datos calculados. Por supuesto, nicamente podr accederse a estas columnas en modo slo lectura, y no es posible insertar datos o actualizar los datos de una columna de este tipo.

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 3

GESTIN DE TABLAS: SEMANA 01-02


Ejemplos: Creacin de la tabla TBLARTICULOS en un Grupo de Archivos
CREATE TABLE TblArticulos ( Id_Art Int Primary Key, Nom_Art Varchar(50), Pre_Art Numeric(8,2), Stk_Art Int ) On GRUPO_SECUNDARIO GO

Modificacin de una tabla


La modificacin de una tabla se realiza con un comando ALTER TABLE o mediante la interfaz grfica del SQL Server Management Studio. Al modificar una tabla, es posible aadir y eliminar columnas y restricciones, modificar la definicin de una columna (tipo de datos, intercalacin y comportamiento respecto al valor NULL), activar o desactivar las restricciones de integridad y los desencadenadores. Este ltimo punto puede resultar til durante la importacin masiva de datos a la base de datos si deseamos conservar tiempos de proceso coherentes.

Sintaxis
ALTER TABLE [nombreEsquema.] nombretabla {[ ALTER COLUMN nombre_columna {nuevo_tipo_datos [(longitud [, precisin])] [ COLLATE intercalacin] [NULL | NO NULL]}] | ADD nueva_column |[WITH CHECK | WITH NOCHECK] ADD restriccin_tabla |DROP {[CONSTRAINT] nombre_restriccin | COLUMN nombre_columna} | {CHECK | NOCHECK} CONSTRAINT {ALL | nombre_restriccin} | {ENABLE | DISABLE} TRIGGER {ALL | nombre_desencadenador}} nombreEsquema: Nombre del esquema en el que va a estar definida la tabla. WITH NOCHECK: Permite establecer si se deben verificar (comprobar) la informacin del campo o los campos que se utilizan en el Constraint antes de la creacin del mismo. NULL, NOT NULL: Permiten definir una restriccin de nulidad o de no nulidad en una columna existente en la tabla. CHECK, NOCHECK: Permite activar y desactivar restricciones de integridad. ENABLE, DISABLE: Permiten activar y desactivar la ejecucin de desencadenadores la tabla. asociados a

Ejemplo: Agregar dos columnas a la tabla TblClientes:


ALTER TABLE TblClientes ADD Tlf_Cli Varchar(20), Ruc_Cli Varchar(8) GO

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 4

GESTIN DE TABLAS: SEMANA 01-02


Ejemplo: Modificar la estructura de una columna Ruc_Cli para que no acepte valores Nulos y que soporte 11 caracteres:
ALTER TABLE TblClientes ALTER COLUMN Ruc_Cli Varchar(11) NOT NULL GO

Eliminacin de una tabla


Sintaxis
DROP TABLE [nombreEsquema.] nombre_tabla [, nombre_tabla] La eliminacin de una tabla eliminar los datos los ndices asociados. La eliminacin no ser posible si la tabla es referenciada por una clave externa.

Eliminacin de una tabla:


DROP TABLE TblClientes

Uso de la propiedad IDENTITY


Se puede asignar a una de las columnas de la tabla, la propiedad IDENTITY, siempre y cuando la columna se defina como cualquier tipo numrico sin decimales. El uso esta propiedad permite que la columna se comporte como llave primaria ya que el contenido de la columna es autogenerado en base a los parmetros de la propiedad. Ejemplo: CREATE TABLE departamento ( dep_id INTEGER IDENTITY(100,1) , nombre VARCHAR(25), responsable CHAR(3) NOT NULL ) GO La primera fila insertada en esta tabla tendr el valor 100 en la columna dep_id, la segunda el valor 101, y as sucesivamente. El primer parmetro de IDENTITY se conoce como la semilla o valor inicial (seed), y el segundo como el incremento (increment). Tenga en cuenta lo siguiente al utilizar la propiedad IDENTITY: Solo se permite una columna de identidad por tabla. La columna identidad no puede actualizarse o insertarse por defecto. No permite valores nulos. Debe usarse con el tipo de dato integer (int, smallint, o tinyint), numeric, o decimal. Los tipos de los datos numeric y decimal deben especificarse con una escala de 0. La propiedad IDENTITY no exije unicidad. Para dar fuerza a la unicidad, debe crear un ndice nico o un constraint unique.

Para poder insertar campos identidad SET IDENTITY_INSERT 'table_name' ON

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 5

GESTIN DE TABLAS: SEMANA 01-02


Para modificar el siguiente numero a generar de la progresin DBCC CHECKIDENT( 'table_name' ,RESEED, nuevonumero) Obtencin de la definicin de una tabla sp_help nombre_objeto Este procedimiento permite averiguar cmo est definido un objeto de la base de datos. Ejemplo: sp_help departamento GO

Tipos de datos por el usuario


Se pueden definir tipos de datos propios a travs de Management Studio o del comando CREATE TYPE.

Sintaxis (creacin)
CREATE TYPE nombreTipo {FROM tipoDeBase [(longitud [, precisin])] [NULL | NOT NULL] | EXTERNAL NAME nombreAssembly [.nombreClase] }[ ; ] Se puede definir un tipo de datos a partir de la definicin de una clase. Esta opcin est ligada a la integracin de CLR en SQL Server. Veremos esta integracin ms adelante en este libro.

Sintaxis (eliminacin)
DROP TYPE [schema_name.] type_name [ ; ] Ser imposible suprimir un tipo si ste se utiliza en una tabla de la base de datos en la que ha sido creado. Ejemplo: Creacin de un tipo para columnas como nombre cliente, nombre proveedor, etc.: CREATE TYPE TipoNombre FROM VARCHAR(30) NULL GO Ejemplo: Creacin de un tipo para valores entre -999 y +999: CREATE TYPE TipoEntero FROM NUMERIC(3) NOT NULL GO

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 6

GESTIN DE TABLAS: SEMANA 01-02


Pedir la creacin de un nuevo tipo de datos desde el SQL Server Management Studio:

Definicin de un nuevo tipo de datos Importe mediante el SQL Server Management Studio:

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 7

GESTIN DE TABLAS: SEMANA 01-02 RESTRICCIONES


Uno de los principales objetivos de una base de datos relacional es cuidar y controlar la integridad de datos, la cual podra perderse ante operaciones que modifican la informacin como: INSERT, UPDATE y DELETE. Por ejemplo se puede perder la integridad de datos ante alguna de las siguientes situaciones: Se puede registrar un pedido de un producto no existente Podra modificarse los datos existentes con valores incorrectos Los cambios a la base de datos podran aplicarse parcialmente, por ejemplo si se registra un pedido sin actualizar el stock del producto requerido. SQL Server provee de mltiples medios para controlar la integridad de datos, como por ejemplo: Datos Requeridos, es una de las restricciones ms sencillas que especifican que columnas permiten valores nulos y que columnas no. Al momento de definir las columnas de una tabla podr asignar a cada columna la especificacin NULL o NOT NULL. Control de validez, permite controlar los valores que se le asignarn a una columna. Por ejemplo en una columna que guarde promedios de estudiantes se podra controlar que el rango de valores se encuentre entre 0 y 10. Integridad de entidad, referido a que una clave principal asegura la unicidad de cada registro. Integridad referencial, asegura las relaciones entre las claves primarias y claves forneas, por ejemplo al agregar un pedido controlar que el cdigo de producto que se especifica en el pedido exista en la tabla de productos. Reglas comerciales, las modificaciones en la base de datos deben cumplir con ciertos requisitos para poder mantener la informacin ntegra, por ejemplo en el caso anteriormente mencionado, el producto podra existir pero el stock encontrarse en 0, de tal manera que no debera registrarse el pedido.

Los CONSTRAINTS son un mtodo estndar de forzar la integridad de datos, aseguran que los datos ingresados a las columnas sean vlidos y que las relaciones entre las tablas se mantendr. Los constraints pueden definirse al momento de crear la tabla, aunque tambin es posible hacerlo despus de que las tablas se han creado. Los CONSTRAINTS se ejecutan antes que la informacin se registre en el log.

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 8

GESTIN DE TABLAS: SEMANA 01-02


Mediante las restricciones ponemos limitaciones a los datos que se van a introducir en la base de datos. Determinamos que datos son vlidos para insertar en la columna de una tabla. Tenemos las restricciones UNIQUE, DEFAULT y CHECK que fuerzan la integridad de identidad, dominio y la marcada por usuario. Y por otro lado contamos con las restricciones PRIMARY KEY y FOREIGN KEY para garantizar la integridad referencial en las relaciones. 1. UNIQUE Esta restriccin obliga a que todos los valores de una determinada columna no estn repetidos en otros registros. Si tenemos varias restricciones UNIQUE en una misma tabla, todas deben ser cumplidas a la vez para cada registro. Con la restriccin UNIQUE aseguramos la integridad de identidad de la tabla, ya que cumplimos con la norma de que cada registro es diferente al resto. Si aplicamos claves principales a una tabla, automticamente se asigna esta restriccin a esa columna. 2. DEFAULT Como su propio nombre indica, esta restriccin introduce un valor por defecto en una columna cuando no se ndica ningn valor para insertar. Con esta restriccin aseguramos la integridad de dominio, ya que aseguramos valores vlidos para nuevos registros que se inserten. 3. CHECK Esta restriccin evala por medio de expresiones los valores que se insertan en una columna. Esta expresin, una vez que se evala devuelve un resultado, en funcin de si el dato es vlido (Verdadero) o no (Falso), por lo tanto devuelve un valor booleano que indica si el dato tendr permiso para ser ingresado o no.

Integridad en relaciones
Este tipo de integridad, denominada integridad referencial declarativa (DRI - Declarative Referential Integrity), es el proceso por el cual SQL Server fuerza de manera automtica las relaciones entre tablas. Antes de aparecer este tipo de integridad para servidores SQL Server, era necesario desarrollar cdigos para aplicaciones denominadas desencadenadores para cada tabla, y estos se encargaban de ejecutar una serie de acciones que asegurasen esta integridad, y siempre bajo la supervisin del administrador. A este tipo de integridad llegamos ahora de manera automtica, de un modo muy sencillo y con un rendimiento considerable, de modo que el administrador puede dedicarse a otras tareas. Para conseguir esta integridad tenemos dos tipos de restricciones: PRIMARY KEY y FOREIGN KEY. 1. PRIMARY KEY La clave principal (PRIMARY KEY) nos permite asegurar la integridad de entidad (puesto que es nica en cada registro) y por otro lado nos garantiza la estabilidad de las relaciones con otras tablas. 2. FOREIGN KEY La restriccin FOREIGN KEY, se conoce como la clave externa o fornea que ya hemos explicado. Y como ya sabes es la pareja de la restriccin PRIMARY KEY, y juntas cumplen con la integridad referencial. Una clave externa es una copia de la clave principal de la tabla principal, se inserta en la tabla que se pretende enlazar y con esto creamos la relacin entre un par de tablas. Las claves externas pueden ser varias en una misma tabla, mientras que las principales deben ser nicas.

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 9

10

GESTIN DE TABLAS: SEMANA 01-02


Para que esta relacin que comentamos se cumpla, la clave principal que enlaza con la externa debe cumplir obligatoriamente que las dos columnas sean del mismo tipo.

PROFESOR: LIN RODRGUEZ, Julio Csar

Pgina 10

You might also like