SQL Server - Tablas
SQL Server - Tablas
Tablas
Concepto
• objetos de la BD que se usan para almacenar
todos los datos
– campos
• contienen cierto tipo de info
• tb se conocen como columnas
– registros
• grupo de campos relacionados que contienen info
sobre una sola entidad
• tb se conocen como filas
Tipos de datos integrados
• cada campo tiene un tipo de datos específico
– limita el tipo de datos que se puede insertar
Categorias de tipos de datos
• Numéricos exactos
• Cadenas de caracteres Unicode
• Numéricos aproximados
• Cadenas binarias
• Fecha y hora
• Otros tipos de datos
• Cadenas de caracteres
Tipos de datos numéricos
• Bit.
– Una columna o variable de tipo bit puede almacenar el rango de valores de 1 a 0.
– muy util como bit de estado: on/off, yes/no…
• Tinyint.
– Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0 a 255.
– requiere 1 byte de espacio en disco duro.
– solo puede almacenar valores hasta 255
– util para casos de tipo de producto cuando se tienen menos de 255 productos
• SmallInt.
– Una columna o variable de tiposmallint puede almacenar el rango de valores -32768 a 32767.
– requiere 2 bytes de espacio en disdo curo.
– sirve para las cifras más pequeñas que no se almacenarían en un campo de tio int pq smallint requiere menos espacio.
• Int
– Una columna o variable de tipo intpuede almacenar el rango de valores -2 31 a 231-1 .
• BigInt.
– Una columna o variable de tipobigint puede almacenar el rango de valores -2 63 a 263-1 .
– requiere 4 bytes de espacio en disco duro
– sirve para almacenar grandes cifras que se utilizarán en funciones matemáticas
• Decimal(p,s).
– Una columna de tipo decimal puede almacenar datos númericos decimales sin redondear. Donde p es la precision (número total del
dígitos) y s la escala (número de valores decimales)
– p es precision y s escala
– se utiliza con número con un separador decimal
– numeric es sinónimo de decimal. son iguales.
• Float.
– Una columna de datos float puede almacenar el rango de valores -1,79x-10 308a 1,79x-10308, , si la definimos con el valor máxmo de
precisión. La precisión puede variar entre 1 y 53.
– algunos número no finalizan tras la coma decimal, como PI
– hay que calcular un final aproximado, que es lo que hace float
– float(2) almacena pi como 3,14
• Real.
– Sinónimo de float(24). Puede almacenar el rango de valores -3,4x-10 38a 3,4x-1038,
• Money.
– Almacena valores númericos monetarios de -2 63 a 263-1, con una precisión de hasta diexz milesimas de la unidad monetaria.
– requiere 8 bytes de espacio en disco.
– puede guardar sumas de dinero superiores a 214.748
• SmallMoney.
– Almacena valores númericos monetarios de -214.748,3647 a 214.748,3647, con una precisión de hasta diez milesimas de la unidad
monetaria.
– requiere 4 bytes en disco duro.
• Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos autonuméricos.
Tipos de datos de caracter
• Char(n).
– Almacena n caracteres en formato ASCII, un byte por cada letra.
– Cuando almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior.
– Por ejemplo, si en un char(5), guardamos el valor 'A', se almacena 'A ', ocupando los cinco bytes.
– sirve para datos que siempre tendrán la misma longitud.
– siempre utiliza la misma cantidad de espacio en disco
– char(5) usa 5 bytes de espacio aunque solo hay dos caracteres almacenados en el campo
• Varchar(n).
– Almacena n caracteres en formato ASCII, un byte por cada letra.
– Cuando almacenamos datos en el tipo varchar, unicamente se utilizan los caracteres necesarios,
– Por ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', ocupando solo un byte bytes.
– maximo de 8000 caracteres
– útil cuando los datos no tienen siempre la misma longitud.
– usa menos espacio de disco cuanto menos caracteres tenga.
• Varchar(max).
– Igual que varchar, pero al declararse como max puede almacenar2 31-1 bytes.
• Nchar(n).
– Almacena n caracteres en formato UNICODE, dos bytes por cada letra.
– Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
• Nvarchar(n).
– Almacena n caracteres en formato UNICODE, dos bytes por cada letra.
– Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
• Nvarchar(max).
– Igual que varchar, pero al declararse como max puede almacenar 2 31-1 bytes.
Tipos de datos fecha
• Datetime.
– Almacena fechas con una precision de milisegundo.
– Debe usarse para fechas muy especificas.
– incluye datos desde 1/1/1753 hasta 31/12/9999 con precisión de 0,007 segundos
– requiere 8 bytes de espacio en disdo duro
• SmallDatetime.
– Almacena fechas con una precision de minuto, por lo que ocupa la mitad de espacio de que el tipo
datetime, para tablas que puedan llegar a tener muchos datos es un factor a tener muy en cuenta.
– de 1/1/1960-6/6/2079 con precisión de 1 minuto
– requiere 4 bytes de espacio en disco
– se usa para fechas y horas menos específicas
• TimeStamp.
– Se utiliza para marcar un registro con la fecha de inserción - actualización.
– El tipo timestamp se actualiza automáticamente cada vez que insertamos o modificamos los
datos.
– se usa para realizar el seguimiento de los cambios en los datos
Tipo de datos binarios
• Binary.
– Se utiliza para almacenar datos binarios de longitud fija, con una longitud
máxima de 8000 bytes.
– sirve para almacenar aquello que se deba escribir en binario o hexadecimal
• identificador de seguridad, por ejemplo
• Varbinary.
– Se utiliza para almacenar datos binarios de longitud variable, con una
longitud máxima de 8000 bytes
– Es muy similar a binary, salvo que varbinary utiliza menos espacio en disco.
• Varbinary(max).
– Igual que varbinary, pero puede almacenar 231-1 bytes
– util para almacenar objetos binarios como ficheros de imagen jpeg o
documentos de word
Tipos de datos XML
• XML.
– Una de las grandes mejoras que incorpora SQL
Server 2005 es el soporte nativo para XML.
– se utiliza para almacenar XML.
Tipos de datos definidos por el usuario
• Management Studio
• bases de datos – nuestra base – Programación
– Tipos
• boton derecho en Tipos de datos definidos por
usuario - Nuevo
• Crear un campo llamado Pais
– en tipo de datos nchar
– longitud – 2
– desactivamos permitir valores nulos
– Enlace
• dejamos en blanco regla y predeterminado
– Aceptar
Columnas calculadas
• tb podemos crear columnas calculadas
– son columnas especiales que NO tienen datos
propios
– muestran el resultado de una expresión aplicada a
datos de otras columnas de la tabla
Particiones de tablas
• en tablas muy grandes:
– particionar
• reducen su tamaño
• sin perder datos
• la tabla se corta en varias secciones
– se pueden almacenar
– y acceder
– de manera independiente
– sin que los usuarios lo sepan
Pasos
• Primero debemos crear una columna de partición
• y un intervalo de valores para la columna
– Tabla pedidos
• fecha de pedido es una buena
• el intervalor puede ser cualquiera
– por ejemplo, superior a un año
– prueba
Imposición de integridad de entidad
Solución
clave principal
utilizar claves principales
• asegura que cada uno de los registros de la tabla es exclusivo
• debemos crear un tipo especial de índice llamado indice unico.
– los indices sirven para acelerar el acceso a datos
• leen los valores de una columna
• guaran una lista organizada para buscar luego
– el índice único
• genera esta lista
• no permite que se almacenen valores duplicados en el indice
– cuando una columna puede usarse como identificador único para una fila
» clave candidata o suplente
» la columna identidad es una buena opción
• sus valores son únicos por definición
Crear clave principal
• Bases de datos – tu base – tablas – Clientes –
boton derecho – Modificar
• boton derecho en codigo cliente y Establecer
clave principal
• guardar
– hay veces que tenemos la clave en codigo pero tb
necesitamos en nif, nº seguridad social…
– Solución
• restricción UNIQUE
Restricciones UNIQUE
• Diferencias entre restricciones de clave
principal y UNIQUE
– las claves princiaples se emplean con claves
externas para formar la integridad referencial y las
claves unicas NO
– las restrcciones UNIQUE permiten insertar valores
nulos, mientras que las claves principales NO
• ambas sirven para garantizar que se insertan
datos únicos en un campo
– se usa UNIQUE para asegurar que no puedan
añadir valores duplicados a un campo que no
forma parte de la clave principal
• campo para dni
Ejemplo
• el tfno será unico
– Management Studio – nueva consulta
– Seleccionamos la base de datos
• ALTER TABLE tutabla
• ADD CONSTRAINT CK_Telefono
• UNIQUE (nombre de campo)
– en Explorador de objetos
• actualizamos tal vez
• en la tabla – Claves
– vemos una clave unique
probamos restricción UNIQUE
• inserta un nuevo registro con un tfno que ya
exista
Integridad referencial
• los datos de una tabla se ven afectados por los
datos de otra
– no debemos hacer un pedido de un producto que
no exista
• integridad referencial declarativa (DRI)
– vinculando clave princiapl de una de las tablas con la clave
externa de otra.
Claves externas
• codigo producto es clave externa
– pq es la clave que relaciona dos tablas
Ejemplo error
• vamos a hacer un pedido de un producto que
no existe
– USE base de datos
– INSERT nombre tabla
– VALUES (999, 5, 57, getdate())
• no existe un producto 57, por ejemplo
– ejecuta
– se actualiza en ambas??
• Eliminamos valores
– USE base de datos
– DELETE from clientes
– WHERE codigo=2
• ejecuta
• se elimina de ambas tablas?
Diagramas de bases de datos
• Todo lo anterior se podria realizar con
Diagramas