UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO DIVISIÓN ACADÉMICA DE CIENCIAS Y TECNOLOGÍAS DE LA INFORMACIÓN Docente: Doris Crystal Gómez carrillo 5to “a” alumna: Yesenia Sarai Martínez Collado Villahermosa, Centro Tabasco a 02 de diciembre del 2021 Investigación de restricciones Concepto de (PK): Una llave primaria o PRIMARY KEY es una columna o un grupo de columnas que identifica de forma exclusiva cada fila de una tabla. Puede crear una llave primaria para una tabla utilizando la restricción PRIMARY KEY. Uso: Primary key (PK): Indica si la columna es la que define al registro, este debe ser único en la tabla y sera obligatorio de escribir. Si es numérico es buena idea unirlo con Auto Increment (AI). Estará asociado con NN. Una llave primaria o PRIMARY KEY es una columna o un grupo de columnas que identifica de forma exclusiva cada fila de una tabla. Puede crear una llave primaria para una tabla utilizando la restricción PRIMARY KEY. Si la llave principal consta de solo una columna, puede definir el uso de la restricción PRIMARY KEY como una restricción de columna. Concepto: Not Null (NN): Significa No nulo o no está vacio, La restricción SQL NOT NULL también se puede crear utilizando SQL Server Management Studio, haciendo clic en el botón derecho en la tabla necesaria y seleccionando la opción Diseño. Al lado de cada columna, usted encontrará una pequeña casilla de verificación que puede usar para especificar la capacidad nula de esa columna. Al desmarcar la casilla de verificación junto a la columna, entonces se creará automáticamente una restricción SQL NOT NULL, evitando que se inserte cualquier valor NULL en esa columna, como se muestra a continuación: Uso: indica que una columna no puede estar vacía, haciéndola obligatoria. Concepto: Unique index (UQ): Este tipo de índice no permite el almacenamiento de valores iguales. Uso: este tipo de índice se refiere a un índice normal, no único. Esto implica que admite valores duplicados para la columna (o columnas) que componen el índice. No aplica ninguna restricción especial a los datos de la columna (o columnas) que componen el índice, sino que se emplea simplemente para mejorar el tiempo de ejecución de las consultas. Indica que la columna debe ser única, es como el primary key pero sin sus restricciones. Concepto: Binary colunm: es abreviatura para especificar la colación binaria del conjunto de caracteres de la columna. La ordenación y la comparación se basa en los valores numéricos de los caracteres. Uso: indica que la columna contendrá un valor binario Concepto: Unsigned (UN): El atributo "unsigned" (sin signo) permite sólo valores positivos. Si necesitamos almacenar edades, por ejemplo, nunca guardaremos valores negativos, entonces sería adecuado definir un campo "edad" de tipo entero sin signo: edad integer unsigned; En los tipos enteros, "unsigned" duplica el rango, es decir, el tipo "integer" permite valores de -2000000000 a 2000000000 aprox., si se define "integer unsigned" el rango va de 0 a 4000000000 aprox. Uso: indica que si el campo contiene un numero este no podrá ser negativo, haciendo que sea más óptimo, al tener un menor rango de números. Solo si estas 100% seguro de que no podrá tener negativos. Concepto: Zero Filled (ZF): "zerofill" rellena con ceros los espacios disponibles a la izquierda. Por ejemplo, creamos la tabla "libros", definiendo los campos "codigo" y "cantidad" con el atributo "zerofill": create table libros( codigo int(6) zerofill auto_increment, titulo varchar(40) not null, autor varchar(30), editorial varchar(15), precio decimal(5,2) unsigned, cantidad smallint zerofill, primary key (codigo) ); Note que especificamos el tamaño del tipo "int" entre paréntesis para que muestre por la izquierda ceros, cuando los valores son inferiores al indicado; dicho parámetro no restringe el rango de valores que se pueden almacenar ni el número de dígitos. Al ingresar un valor de código con menos cifras que las especificadas (6), aparecerán ceros a la izquierda rellenando los espacios; por ejemplo, si ingresamos "33", aparecerá "000033". Al ingresar un valor para el campo "cantidad", sucederá lo mismo. Si especificamos "zerofill" a un campo numérico, se coloca automáticamente el atributo "unsigned". Cualquier valor negativo ingresado en un campo definido "zerofill" es un valor inválido. Uso: si el campo es numérico, rellena con 0 todas las posiciones a la izquierda para completar hasta su longitud máxima. Concepto: Auto increment (AI): Auto Increment es una función que opera en tipos de datos numéricos. Genera automáticamente valores numéricos secuenciales cada vez que se inserta un registro en una tabla para un campo definido como incremento automático. Uso: si el campo es numérico, aumenta en uno su valor, viene bien para campos tipo id numéricos. Concepto: Generated column (G): Se trata de un tipo de columnas que son el resultado de otras dos o más columnas. Estas columnas pueden ser el resultado de operaciones aritméticas como sumas, multiplicaciones, una concatenación de varios campos, etc. Podríamos por ejemplo calcular el IVA o un descuento en una factura o bien podríamos crear un campo calculado que sea el resultado de concatenar dos o más campos como puede ser el nombre y los apellidos. Básicamente, se refiere a que podemos generar esta columna a partir de otras, por ejemplo, el resultado de multiplicar un campo por otro, podemos indicarle si queremos guardar ese valor (stored) o no(virtual). Uso: Para mostraros un ejemplo de como funcionan vamos a crear una tabla de usuarios en la que el nombre y los dos apellidos se introduzcan individualmente y generemos un campo nuevo «usuario» que sea el nombre completo. CREATE TABLE `usuarios` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(45) DEFAULT NULL, `primerApellido` varchar(45) DEFAULT NULL, `segundoApellido` varchar(45) DEFAULT NULL, `usuario` varchar(45) GENERATED ALWAYS AS (concat(`nombre`,' ',`primerApellido`,' ',`segundoApellido`)) STORED, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; En el código anterior especificamos el parámetro STORED. Con este parámetro indicamos que se guarden los resultados en la tabla y podamos añadir por ejemplo un índice. Si no especificamos nada por defecto la columna es VIRTUAL. Las columnas de este tipo se generan automáticamente en cada consulta y no permiten la creación de índices. Para insertar los datos tendremos que ejecutar por ejemplo: INSERT INTO `pruebas`.`usuarios` (`nombre`,`primerApellido`,`segundoApellido`) 'Moreno', 'González'); VALUES ('David', Una vez ejecutada la inserción, deberían haberse producido la concatenación de ambos y devolver en el campo «usuario»: «David Moreno González». Otra opción que nos permite este tipo de columnas es usar operaciones aritméticas, veamos por ejemplo como aplicar el I.V.A automáticamente a cada artículo esta vez creándolo desde MySQL Workbench: Si ejecutamos: INSERT INTO tenis',1); `articulos`(`articulo`,`precio`)VALUES('Pelota de