SQL Server for Analytics
EXPOSITOR: Ghalo Vhadis Morua Castañeda
Sesión 3:
Restricciones de campos, datos masivos y consultas de
cálculo
3.1
Tipos de
Restricciones de
Campos
• Restricciones de Valores Nulos y no Nulos.
• Restricciones para los Datos (IDENTITY, DEFAULT, CHECK y
UNIQUE).
• Restricciones de Integridad Referencial (Primary Key y Foreign
Key).
• Opciones de Integridad Referencial para la Eliminación y/o
Actualización de Datos (NO ACTION, CASCADE, SET NULL y SET
DEFAULT).
Restricciones de Valores Nulos y no Nulos
• Cuando se crea tablas se debe especificar si sus campos podrá permitir valores nulos o no. Los campos con Claves
primarias (llaves) siempre serán de restricción no nula, pues no existen llaves vacías, en otros campos se debe analizar si
será necesario dejarlo vacío o no, como por ejemplo si que algún dato de una persona como teléfono o correo no se tenga
esa información. Las restricciones que se utilizaran serán:
• NULL.
• NOT NULL.
Restricciones para los Datos
En este ejemplo veremos las distintas restricciones que se le pueden dar a los campos (columnas) de las tablas, estos son:
IDENTITY
Solo es aplicable a columnas de tipo numérico, ya que define un autoincremento de valores correlativos por cada registro
dentro de la tabla.
DEFAULT
Permite asignar un determinado valor por defecto según el tipo de datos, dicho valor debe ser especificado antes de registrar
valores a la tabla.
CHECK
Permite restringir el rango de valores que pueden estar permitidos ingresar en una o mas columnas de una tabla. Se debe
tener en cuenta que CHECK evalúa el valor a ingresar en la tabla, por lo tanto, se debe implementar una condición sobre cada
campo evaluado.
UNIQUE
Permite determinar que los valores registrados en una misma columna no sean idénticos, no requiere obligatoriamente algún
tipo de clave (llave), se puede establecer UNIQUE a varias columnas, y puede permitir un valor nulo en una misma columna.
Restricciones de Integridad Referencial
Las restricciones de integridad permiten asignar llaves primarias o foráneas a las tablas, es necesario dicha referencia para que
las tablas se logren asociar a otras (Relación de tablas), generando la integridad referencial entre tablas. Se presentan dos
restricciones para la integridad:
CLAVE PRIMARIA (PRIMARY KEY).
Se asigna a una columna permitiendo solo el ingreso de valores único, permitiendo la identificación de un registro con los
demás. Lo mas recomendable es asignarle el tipo de datos número entero (int) o carácter simple (Char).
CLAVE SECUNDARIA O FORÁNEA (FOREIGN KEY).
Se asigna a una columna de una Tabla para que esta pueda ser relacionada con otra tabla.
Opciones de Integridad Referencial para la Eliminación y/o Actualización de Datos
Para este ejemplo utilizaremos la base de datos “RetailPerú” que contiene las tablas “Línea” y
“Artículo”, que a su vez están relacionadas.
TABLA “Artículo”:
TABLA “Línea”:
Cuando se intenta eliminar una fila de una tabla a la que apuntan claves foráneas, la
eliminación falla debido a que las filas que contienen las claves foráneas no pueden quedar
“huérfanas”. Por ejemplo, cuando intentamos eliminar a una línea que tiene artículos
registrados.
Opciones de Integridad Referencial para la Actualización y/o Eliminación de Datos
La integridad referencial en cascada permite controlar las acciones que lleva a cabo SQL Server cuando se intenta actualizar o
eliminar una clave primaria a la que apuntan claves foráneas existentes. Esto se controla mediante clausulas ON DELETE y ON
UPDATE en la clausula REFERENCES con las instrucciones CREATE TABLE y ALTER TABLE.
La clausula ON DELETE controla las acciones que se llevaran a cabo si intenta eliminar una fila a la que apuntan las claves
foráneas existentes. A partir de SQL Server 2005 la clausula ON DELETE tiene cuatro opciones:
NO ACTION: Especifica que la eliminación produce un error.
CASCADE: Especifica que también se eliminan todas las filas con claves foráneas que apuntan a la fila eliminada.
SET NULL: Especifica que todas las filas con claves foráneas que apuntan a la fila eliminada tendrán el valor NULL en la clave
foránea.
SET DEFAULT: Especifica que todas las filas con claves foráneas que apuntan a la fila eliminada se configurarán al valor
predeterminado en la clave foránea.
La clausula ON UPDATE define las acciones que se llevaran a cabo si intenta actualizar un valor de clave candidata a la que
apuntan las claves foráneas existentes. También acepta las operaciones NO ACTION, CASCADE, SET NULL y SET DEFAULT.
3.2
Manejo de datos
Masivos
• Definición de Exportación e Importación Masiva de Datos.
• Volcado de Información con el comando BULK INSERT.
Definición de Exportación e Importación Masiva de Datos
El motor de base de datos de Microsoft SQL Server permite importar y exportar masivamente datos entre una tabla de SQL
Server y un archivo de datos que podría ser un txt, csv, etc.
Exportación Masiva: Se refiere a la copia de datos de una tabla de SQL Server a un archivo de datos.
Importación Masiva: Significa cargar datos de un archivo de datos a una tabla de SQL Server.
INSTRUCCIÓN BULK INSERT:
La Instrucción BULK INSERT importa un archivo de datos a una tabla con un formato definido por el usuario.
BULK INSERT <NOMBRE_TABLA>
FROM ‘ARCHIVO_DATOS’
WITH (
FIELDTERMINATOR = <SIMBOLO_CAMPO_TERMINADOR>
FIRSTROW = <NUMERO_FILA>
ROWTERMINATOR = < SIMBOLO_FILA_TERMINADOR >
)
Definición de Exportación e Importación Masiva de Datos
<NOMBRE_TABLA>: Es el nombre de la tabla o vista en la que se va a realizar una importación masiva de datos. Solo se
pueden utilizar vistas en las que todas las columnas hagan referencia a la misma tabla base.
‘ARCHIVO_DATOS’: Es la ruta de acceso completa al archivo de datos que contiene los datos que se van a importar en la tabla
o vista especificada. BULK INSERT puede importar datos desde un disco (incluidos una ubicación de red, disco duro, etc).
FIELDTERMINATOR: Especifica el terminador de campo que se va a utilizar para archivos de datos de tipo texto, hay que
considerar que los datos dentro del archivo de texto siempre deben contar con el mismo separador de campos, el cual puede
ser cualquier carácter.
FIRSTROW: Especifica el numero de la primera fila que se van a cargar. El valor predeterminado es la primera fila del archivo
de datos especificado.
ROWTERMINATOR: Especifica el terminador de fila que se va a utilizar para archivos de datos de tipo CHAR y VARCHAR. El
terminador de fila determinado es /n (carácter de nueva línea).
Volcado de Información con el comando BULK INSERT
Utilizando un archivo de texto con información, haremos el volcado de información hacia la tabla “Productos_2” de la base de
datos “Ventas2021”.
3.3
Consultas de
Cálculo
• Funciones de Cálculo.
• Ejemplos de Consultas de Cálculo.
Funciones de Cálculo
Este tipo de cálculos se realizan sobre registros individuales, no sobre grupos como con las consultas de agrupación.
Para este tipo de consultas, suelen utilizarse las siguientes funciones:
FUNCION DESCRIPCION
ROUND() Permite redondear.
GATEDATE () Devuelve el día y hora actual.
DATEDIFF() Devuelve la diferencia entre 2 fechas.
CONVERT() Permiten formatear los resultados.
+ Permite concatenar.
Ejemplos de Consultas de Cálculo
Crearemos una consulta de cálculo a la tabla “Productos” que nos calcule en una nueva columna cuanto serían los precios más
el IGV:
ASÍ COMO HEMOS MULTIPLICADO PARA OBTENER
EL IGV, SE PUEDE HACER OTROS CÁLCULOS COMO
SUMA, RESTA, DIVISIÓN ,ETC.
Ejemplos de Consultas de Cálculo
Ahora si queremos mostrar ambos precios, pero redondeados, utilizaremos la función ROUND:
COMO VEMOS EN EL EJEMPLO, PODREMOS REDONDEAR
NÚMEROS QUE ESTÉN EN LOS REGISTRO DE NUESTRA TABLA
COMO VALORES QUE SON CALCULADOS.
Ejemplos de Consultas de Cálculo
Si queremos obtener la fecha actual, y hacer múltiples cálculos con ella, podemos utilizar las funciones GETDATE y DATEDIFF:
HAY QUE TENER EN CUENTA QUE PARA PODER HACER
CALCULOS ENTRE FECHAS, ES FUNDAMENTAL QUE LAS
COLUMNAS A CALCULAR TENGAN EL FORMATO FECHA
(COMO POR EJEMPLO “DATETIME”).
NOTA: La función DATEFIFF puede calcular diferencia entre fechas en años (year ó yyyy), meses (month ó m) y días (day o d).
Ejemplos de Consultas de Cálculo
Cuando ejecutamos consultas, las cuales involucren columnas o campos calculados con fechas, SQL las mostrara con un
formato que contiene fecha y hora, para cambiarlo podemos utilizar la función “CONVERT”:
EL CODIGO 103 CORRESPONDE AL TIPO DE
FORMATO FECHA QUE SE ESTABLECIO
(DD/MM/YYYY), HAY MULTIPLES FORMATOS
PARA ESCOGER (101,102,103,104,…..).
Ejemplos de Consultas de Cálculo
Algunas veces es necesario combinar en forma conjunta (concatenar) los resultados de varios campos diferentes:
EJERCICIO DE CLASE Nº 03:
GENERANDO CONSULTAS DE CÁLCULO
1. Utilice la bd “Ventas2022” para realizar una consulta que visualice los campos “NOMBREARTÍCULO”, “SECCIÓN”,
“PRECIO” de la tabla “Productos” y un campo nuevo que nombramos con el texto “DESCUENTO”. Debe mostrar el
resultado de aplicar sobre el campo “PRECIO” un descuento de un 40 %. El formato del nuevo campo para debe aparecer
con 2 lugares decimales.
2. Realizar una consulta visualizando los campos “FECHA”, “SECCIÓN”, “NOMBREARTÍCULO” y “PRECIO” de la tabla
“Productos”, crear un campo que nombramos “DESCUENTO_PROMO”, el cual debe mostrar la mitad del campo PRECIO.
Solo se mostraran los producto de "CERÁMICA", el formato del nuevo campo debe aparecer con 2 decimales. Ordenar el
resultado de la consulta por el campo “FECHA” descendente.
Síguenos como @cedhinfo en: