• No se han encontrado resultados

06 SqlServer Tablas

N/A
N/A
Protected

Academic year: 2020

Share "06 SqlServer Tablas"

Copied!
52
0
0

Texto completo

(1)

Sql Server

(2)

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

(3)

Tipos de datos integrados

cada campo tiene un tipo de datos específico

(4)

Categorias de tipos de datos

Numéricos exactos

Cadenas de caracteres Unicode

Numéricos aproximados

Cadenas binarias

Fecha y hora

Otros tipos de datos

(5)

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 2

31

-1 .

BigInt.

Una columna o variable de tipobigint puede almacenar el rango de valores -2

63

a 2

63

-1 .

requiere 4 bytes de espacio en disco duro

(6)

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-10308a 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-1038a 3,4x-1038,

Money.

Almacena valores númericos monetarios de -263 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.

(7)

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 almacenar231-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).

(8)

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.

(9)

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 2

31

-1 bytes

(10)

Tipos de datos XML

XML.

Una de las grandes mejoras que incorpora SQL

Server 2005 es el soporte nativo para XML.

(11)

Tipos de datos definidos por el usuario

si necesitas un tipo de campo concreto

podemos crear un tipo de atos basado en otro

(12)

Crear tipo de dato definido por usuario

Management Studio

bases de datos – nuestra base – Programación

– Tipos

boton derecho en Tipos de datos definidos por

(13)

Crear un campo llamado Pais

en tipo de datos nchar

longitud – 2

desactivamos permitir valores nulos

Enlace

dejamos en blanco regla y predeterminado

(14)

Columnas calculadas

tb podemos crear columnas calculadas

son columnas especiales que NO tienen datos

propios

muestran el resultado de una expresión aplicada a

(15)

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

(16)

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

Crear una función de partición

(17)

tras planificar particiones

crear tablas con particiones

(18)

Crear tablas

Tabla Clientes

codigo de clientes – int , identity

nombre – nvarchar(20)

direccion– nvarchar(50)

ciudad– nvarchar(20)

pais – Estado

(19)

Tabla pedidos

codigo pedido – int

codigo producto – int

codigo cliente - int

cantidad – int

(20)

Tabla productos

(21)

podemos crear las tablas

(22)

en Bases de Datos – seleccionas la nuestra –

boton derecho – Tablas – Nueva tabla

para codigo producto

no permitir valores nulos

en Propiedades de columna

Diseñador de tablas

(23)

Ahora hacemos la de clientes y la de Pedidos

código de pedido

NO será la columna de identidad

(24)

En ninguna tabla hemos creado claves

(25)

Restricción de datos

nos permite forzar la integridad de datos

ahora solo hay la restricción del tipo de dato

Hay tres tipos de integridad de datos

(26)

Integridad de dominio

no poner numero en nombre de alguien

no poner en Pais las siglas que quieran

se puede forzar esta integridad con las

restricciones

CHECK

(27)

restricciones CHECK

instrucción de Transact-SQL que se encuentra

vinculada a un campo

se emplea para restringir los datos que se aceptan

en el campo

(28)

pasos Check

en Tabla dbo.clientes

boton derecho – Restricciones – Nueva

Nombre – CK_nombrecampo

Descripción – Comprobar codigos postales válidos

Creamos una restricción que solo acepte 5 numeros

entre 0 – 9

Expresión

(nombrecampo like ‘[0-9][0-9][0-9][0-9][0-9]’)

sin espacios entre los corchetes

(29)

Insertamos registros

nueva consulta

USE nombrebasedatos

INSERT nombretbla

VALUES ( ‘nombre’, ‘direccion’, ‘ciudad’, ‘pais’, ‘zip’,

‘tfno’)

(30)

para ver los registros

nueva consulta

SELECT * FROM nombretabla

(31)

inserta otro registro con zip erroneo.

(32)

Restricciones DEAFULT

si dejamos campos en blanco en insert o

update

se aplican restricciones DEFAULT para completar

estos registros

(33)

Crear restricción DEFAULT

Bases de datos – tu base – Tablas –

dbo.tutabla – Columnas

en Pais – boton derecho – Modificar

Valor o enlace predeterminado

‘ES’

con comillas simples

(34)

Imposición de integridad de entidad

asegurarse de que cada uno de los registros de

las tablas es único y que no hay un registro

duplicado accidentalmente

el mismo cliente con diferente id

Solución

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

probamos restricción UNIQUE

inserta un nuevo registro con un tfno que ya

(41)

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

(42)

Claves externas

codigo producto es clave externa

(43)

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

podemos eliminar TODOS los registros de una tabla

(44)

Crear clave externa

Tablas – Pedidos

Claves – boton derecho – nueva clave externa

Nombre – FK_Clientes_Pedidos

Descripción – relaciona tablas con codigo cliente

Especidficación de tablas y columnas

clic en puntos

seleccionamos Clientes en la lista Tabla de clave principal

Aceptar

(45)

Insert y Update

comprobar datos…

se verifica que todos los datos existentes en las dos tablas se

adecuan a la nueva restricción

si no lo hacen, se recibe un aviso

exigir para replicación

la replica se usa para copiar BD de un servidor a otro

esta opción habilita que la relación se ocpe mediante replica a

otro servidor junto con las tablas de las claves principal y externa

exigir restrícción de clave externa

si no necesitamos ya la relación creada

(46)

Prueba a añadir registros y ver si falla o no

para eliminar un registro

(47)

Integridad referencial en cascada

no podemos eliminar un registro de una tabla

que se usa en otra

se puede cambiar esto con cascada

Bases de datos – tu base – Tablas – boton derecho

– tabla clientes - Modificar

Relaciones de clave externa

Especificación de insert y update

(48)

sin accion

no se puede eliminar/insertar una fila de una tabla principal

a la que hace referencia una fila de una tabla externa

cascada

si eliminas/actualizas un fila de una tabla principal tb se

elimina/actualiza la fila en la tabla externa

establecer en null

los valores de las columnas pasan a null

establecer como predeterminado

(49)

Ejemplo

los pones en casacada

menu archivo – nuevo – nueva consulta

USE nombrebase de datos

select * from clientes

(50)

Actualizamos valores

UPDATE clientes

SET codigo = 20

WHERE codigo=1

ejecuta

(51)

Eliminamos valores

USE base de datos

DELETE from clientes

WHERE codigo=2

ejecuta

(52)

Diagramas de bases de datos

Todo lo anterior se podria realizar con

Referencias

Documento similar

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Y de otra parte, porque con motivo de tal efemérides se actualiza con toda justicia la ingente obra realizada durante medio siglo por los fundadores y miembros de la Editorial, a la

Estamos realizando la segunda Encuesta colombiana sobre Condiciones de Trabajo y Salud, Con el Objevo de determinar las condiciones de seguridad y salud en el trabajo del

Con el cometido de evaluar la credibilidad del testimonio en casos de violencia de gé- nero, a la vez que la huella psíquica con- trolando una potencial simulación, hemos

TABLAS Tabla 18: Mercancías y productos vegetales interceptados por inspecciones en controles a la importación vegetal en península y Baleares..

El objetivo general de la presente Tesis Doctoral fue analizar la viabilidad y fiabilidad de la versión en español del cuestionario del Youth Activity

Este trabajo de investigación determinó la variabilidad de la práctica médica en procedimientos cardiovasculares, tanto en angioplastia como en revascularización,