MySQL - Sección 5 - Restricciones en tablas MySQL

Tabla de contenido

1. Descripción general de las restricciones en las tablas de MySQL

2. Atributo vacío

3. Valor por defecto

4. Descripción de la columna

5.zerofill

6. Clave principal

7. Crecimiento personal

8. Clave única

9. Claves foráneas

10. Caso completo


1. Descripción general de las restricciones en las tablas de MySQL

• Es el tipo de datos el que realmente restringe el campo.Si los datos insertados exceden el rango de valores del tipo de datos correspondiente, los datos no se podrán insertar.
• Sin embargo, las restricciones del tipo de datos son muy simples. Para garantizar mejor la legalidad de los datos y garantizar la corrección de los datos desde la perspectiva de la lógica comercial, MySQL tiene restricciones de tabla. El propósito es garantizar la seguridad de los datos como tanto como sea posible y reducir los errores del usuario.posibilidades operativas.
• Hay muchas restricciones de tabla.Este blog presenta principalmente lo siguiente: nulo/no nulo, predeterminado, comentario, zerofill, clave principal, auto_incremento, clave única, clave externa.


2. Atributo vacío

• Un atributo vacío tiene dos valores, nulo y no nulo.

• Básicamente, se permite que los campos predeterminados de la base de datos estén vacíos, pero en el desarrollo real, debemos hacer todo lo posible para asegurarnos de que los campos no estén vacíos, porque los valores vacíos no pueden participar en las operaciones.

Por ejemplo, puede ver que el valor de null es nulo a través de select. como sigue:

Dado que el valor nulo no puede participar en la operación, el valor obtenido después de sumar uno al valor nulo sigue siendo nulo. como sigue:

Si desea que un campo no pueda estar vacío, puede establecer el atributo no nulo para el campo correspondiente al crear la tabla. Por ejemplo, creamos una tabla de clases, que contiene el nombre de la clase y el aula donde se encuentra la clase. Si no desea que estos dos campos estén vacíos al insertar datos, puede establecer el atributo no nulo para estos dos campos cuando creando la tabla. como sigue:

Verifique la estructura de la tabla después de crear la tabla, puede ver que estos dos campos no pueden estar vacíos. como sigue:

Al insertar un registro en la tabla, solo cuando estos dos campos no están vacíos, la inserción puede ser exitosa; de lo contrario, la inserción fallará. como sigue:


3. Valor por defecto

• Si un campo aparecerá con frecuencia con un determinado valor, entonces puede considerar establecer este valor como el valor predeterminado del campo.

• Si no asigna un valor a un campo con un valor predeterminado al insertar datos en una tabla, se utilizará el valor predeterminado para la inserción.

Por ejemplo, cree una tabla de usuarios que contenga el nombre, la edad y el sexo del usuario. Establezca la edad del usuario en 0 de forma predeterminada y establezca el sexo del usuario en masculino de forma predeterminada. como sigue:

Verifique la estructura de la tabla después de crear la tabla, puede ver que el valor predeterminado se ha establecido correctamente. como sigue:

Al insertar datos en la tabla, si no se especifica la edad o el sexo del usuario, se utilizará el valor predeterminado correspondiente y, si se especifica, se utilizará el valor especificado por el usuario. como sigue:

Establecer no nulo y predeterminado al mismo tiempo:

• Una vez que se establece un valor predeterminado para un campo, el campo no tendrá un valor nulo, porque incluso si el valor del campo no se especifica al insertar datos, se completará con el valor predeterminado del campo.
• El propósito de establecer el atributo no nulo para un campo es restringir que el campo no pueda estar vacío, por lo que después de establecer un campo con el atributo predeterminado, parece no tener sentido establecer el atributo no nulo, pero en realidad tiene sentido, el atributo no nulo Puede evitar que insertemos explícitamente nulo directamente, y los dos son complementarios entre sí.

• Establezca no nulo y el valor predeterminado para un campo al mismo tiempo. Si fuerza que el campo sea nulo al insertar datos, aún se informará un error. Si no fuerza que se especifique el campo, el campo será el valor por defecto Si obligas a especificar el campo Si es un valor determinado, el campo es el valor correspondiente.
Cree una tabla de identificación, que incluya el nombre y la identificación, y configure los atributos predeterminados y no nulos para la identificación al mismo tiempo. como sigue:

Verifique la estructura de la tabla después de crear la tabla, puede ver que el campo de identificación no puede estar vacío y su valor predeterminado es 1. como sigue:

En este momento, al insertar datos en la tabla, puede insertar sin especificar la identificación, y el valor predeterminado de identificación se utilizará en este momento. como sigue:


4. Descripción de la columna

• La descripción de la columna se usa para describir cada campo cuando se crea la tabla. La descripción de la columna se guardará de acuerdo con la declaración de creación de la tabla. Generalmente se usa para que los programadores o DBA comprendan la información relevante de la tabla, lo que equivale a un comentario.

Por ejemplo, cree una tabla de usuarios que contenga el nombre de usuario, la edad y el sexo del usuario, y agregue una descripción de columna correspondiente después de cada campo. como sigue:

Después de crear la tabla, use el comando show create table table name; para ver los detalles relevantes de la creación de la tabla, incluidas las descripciones de las columnas. como sigue:


5.zerofill

• El número entre paréntesis detrás del tipo numérico representa el ancho de visualización.Después de establecer el atributo zerofill para el tipo numérico correspondiente, si el ancho de los datos es menor que el ancho establecido, se rellenará automáticamente con 0.

Por ejemplo, cree una tabla que contenga dos columnas de datos enteros, a y b, y establezca su ancho de visualización en 5, pero no establezca el atributo zerofill. como sigue:

Inserte un registro en la tabla, indicando que los valores de a y b son ambos 1. Dado que no hemos establecido el atributo zerofill para los campos a y b, al ver los datos en la tabla, todos se muestran como 1, y no hay concepto de ancho de pantalla. como sigue:

Modifique la estructura de la tabla y agregue el atributo zerofill a la columna A. Dado que el ancho de visualización de los datos en la columna a es 5, puede ver que los datos en la columna a con un ancho de menos de 5 dígitos se llenan automáticamente con 0 delante de los datos de la tabla. como sigue:

Cabe señalar que la función del atributo zerofill es mostrar los datos de una manera específica, y el método de almacenamiento de la capa inferior de los datos no ha cambiado. A través de la función hexadecimal, puede ver que el 00001 se muestra en la columna a se almacena realmente como 1 en la capa inferior. como sigue:

Nota:

1. Int también puede ir seguido de (valor), por ejemplo: int(11). El valor en int(valor) representa el número máximo de dígitos que puede mostrar el entero.

2. Si no hay paréntesis para especificar el tamaño de int al crear una variable de tipo int al crear una tabla, mysql especificará automáticamente el tamaño de 11 para int con signo y 10 para int sin signo, como se muestra en la figura a continuación.

Un número entero corresponde a 32 bits. Si es un número entero sin signo, su valor oscila entre 0 y 2^{32}-1más 2^{32}-1de 4200 millones. El valor predeterminado del número entero sin signo es de 10 bits porque solo puede mostrar todos los valores de más de 4200 millones. Los enteros con signo tienen un bit de signo más, por lo que los enteros con signo tienen un valor predeterminado de 11 bits.


6. Clave principal

Clave primaria:

• Después de insertar un registro en la tabla, para facilitar la búsqueda posterior, podemos seleccionar uno de los campos como clave de valor clave, y cuando necesitemos encontrar el registro, buscaremos el registro correspondiente según la clave. clave de valor
• La clave principal se usa para restringir de forma única los datos en el campo. La clave principal de cada registro en la tabla no se puede repetir ni estar vacía, y solo puede haber una clave principal en una tabla. Además, la columna donde se encuentra la clave principal donde se encuentra la clave suele ser de tipo entero.

Por ejemplo, cree una tabla de estudiantes, que contenga el nombre y el número de estudiante del estudiante. Dado que el número de estudiante del estudiante no se repetirá, se puede configurar como la clave principal. como sigue:

Después de que la tabla se haya creado con éxito, verifique la estructura de la tabla y podrá ver que PRI aparece en la columna Clave correspondiente a la identificación, lo que significa que hemos establecido correctamente el número de estudiante como la clave principal de esta tabla. Además, aunque el atributo no nulo no se configuró para el número de estudiante al crear la tabla, dado que la clave principal en sí misma no puede estar vacía, la identificación no puede estar vacía de manera predeterminada. como sigue:

La llamada restricción de clave principal es que el campo de clave principal del registro insertado en la tabla no se puede repetir.Si la clave principal del registro insertado es la misma que la clave principal del registro existente en la tabla, la inserción falla debido a un conflicto de clave principal. como sigue:

Utilice el comando modificar la clave principal de la tabla nombre de la tabla para eliminar la clave principal de la tabla especificada, ya que una tabla tiene solo una clave principal, por lo que al eliminar la clave principal, solo necesita especificar la clave principal de la tabla para ser eliminado Por ejemplo, después de eliminar la clave principal de la tabla de estudiantes y verificar la estructura de la tabla, puede ver que el PRI de la columna Clave correspondiente a la identificación se ha ido. como sigue:

Para la tabla que se ha creado, use el comando modificar nombre de tabla agregar clave principal (nombre de columna); para establecer la columna especificada como la clave principal, pero debe tenerse en cuenta que solo las columnas cuyos valores no están vacíos y no repetido se puede utilizar se establece como la clave principal. Por ejemplo, restablezca el número de estudiante como la clave principal de la tabla de estudiantes y luego verifique la estructura de la tabla. Puede ver que el PRI de la columna Clave correspondiente a la identificación está de vuelta. como sigue:

Clave primaria compuesta:

• Solo puede haber una clave principal en una tabla, pero una clave principal puede estar contenida en varios campos.Esta clave principal se denomina clave principal compuesta.

• La clave principal compuesta se utiliza para restringir de forma única los datos en varios campos, y los múltiples campos de cada registro de la tabla no se pueden repetir ni estar vacíos al mismo tiempo.

Por ejemplo, cree una tabla de procesos que contenga la dirección IP, el número de puerto y la información relacionada con el proceso del proceso, y combine la dirección IP y el número de puerto para formar una clave primaria compuesta. como sigue:

Verifique la estructura de la tabla después de crear la tabla, y puede ver que las columnas Clave de ip y puerto tienen banderas PRI, y no pueden estar vacías. como sigue:

Al insertar datos en la tabla de procesos, el conflicto de clave principal solo ocurrirá cuando la IP y el puerto del proceso de inserción entren en conflicto; de lo contrario, se permite la inserción. como sigue:

Al observar los datos insertados en la tabla, podemos ver que hay direcciones IP y números de puerto duplicados en la tabla, pero no habrá números de puerto e IP duplicados, que es la función de la clave principal compuesta. como sigue:

Use el comando alterar tabla nombre de tabla soltar clave primaria; para eliminar la clave principal compuesta de la tabla especificada. Por ejemplo, elimine la clave principal compuesta de la tabla de proceso y luego vea la estructura de la tabla. Puede ver que el PRI en la Clave la columna correspondiente a ip y puerto se ha ido. como sigue:

Para tablas que ya han sido creadas, también puede usar el comando modificar nombre de tabla agregar clave principal (múltiples nombres de columna); para formar una clave principal compuesta con múltiples columnas, pero debe tenerse en cuenta que los valores en las múltiples columnas seleccionadas no pueden estar vacías y no pueden tener duplicados al mismo tiempo. Por ejemplo, restablezca la ip y el puerto como la clave principal compuesta de la tabla de procesos y luego verifique la estructura de la tabla. Puede ver que el PRI en la columna Clave correspondiente a la ip y el puerto está de vuelta. como sigue:

Cómo diseñar la clave principal:

1. En combinación con el negocio, seleccione un atributo de columna único como clave principal.

2. Elija un valor único que no tenga nada que ver con su negocio. Con este diseño, el valor de la clave principal no tiene nada que ver con el negocio y los ajustes comerciales no afectarán la estructura general de la tabla de claves principales. Por ejemplo: número QQ.


7. Crecimiento personal

• Para un campo con el conjunto de propiedades de incremento automático, si no se asigna ningún valor al campo al insertar datos, el sistema buscará automáticamente el valor máximo existente en el campo actual e insertará el valor después de sumar 1 al valor máximo en el campo.
• Para que cualquier campo sea autocreciente, la premisa es que debe ser un índice (clave principal, es decir, la columna Clave tiene un valor), y el campo autocreciente debe ser de tipo numérico, y una tabla puede sólo tienen a lo sumo un campo autocreciente.
• El crecimiento propio generalmente se usa junto con la clave principal como clave principal lógica. En términos generales, se recomienda diseñar la clave principal como un campo que no tiene nada que ver con el negocio actual, para evitar la necesidad de modificar la clave principal debido a ajustes en la lógica del negocio.

Por ejemplo, cree una tabla que contenga id y nombre, y establezca id como la clave principal y el campo de aumento automático al mismo tiempo. como sigue:

Después de crear la tabla, verifique la estructura de la tabla y podrá ver que el indicador de incremento automático aparece en la columna Extra de id. como sigue:

Si el valor del campo de incremento automático no se especifica al insertar el primer registro en la tabla, el valor del campo de incremento automático comenzará desde 1 de forma predeterminada. como sigue:

Si el valor del campo autoincremental no se especifica al insertar registros en la tabla más tarde, el valor del campo autoincremental se incrementará secuencialmente. como sigue:

Por supuesto, al insertar un registro, también puede especificar el valor del campo de aumento automático. En este momento, el valor se usará para la inserción, pero tenga en cuenta que el valor especificado no puede ser el mismo que el valor de identificación existente en el mesa. como sigue:

Después de eso, si no especifica el valor del campo de aumento automático al insertar registros en la tabla, entonces el valor del campo de aumento automático encontrará el valor máximo de la columna de identificación y agregará el valor obtenido al agregar uno al valor máximo como el valor del campo autocreciente. como sigue:

Nota:

1. Por lo general, después de configurar el campo de crecimiento propio, no es necesario insertar manualmente un valor para el campo, simplemente deje que comience desde 1 para el crecimiento propio.

2. Si desea establecer directamente el valor inicial de autoincremento, puede usar la opción auto_incremento, como se muestra en la figura a continuación.

índice:
•  En una base de datos relacional, un índice es una estructura de almacenamiento físico separada que ordena los valores de una o más columnas en una tabla de base de datos Una lista de punteros lógicos a las páginas de datos en la tabla que identifican físicamente estos valores. La función del índice es equivalente a la tabla de contenido del libro, y el contenido requerido se puede encontrar rápidamente según el número de página en la tabla de contenido.
•  Un índice proporciona punteros a valores de datos almacenados en columnas específicas de una tabla y luego ordena esos punteros según el orden de clasificación que especifique. La base de datos usa el índice para encontrar un valor particular y luego avanza hasta la fila que contiene ese valor. De esta forma, la instrucción SQL correspondiente a la tabla se puede ejecutar más rápido y se puede acceder rápidamente a información específica en la tabla de la base de datos.


8. Clave única

• A menudo hay muchos campos en una tabla que requieren unicidad, pero solo puede haber una clave principal en una tabla, y una clave única puede resolver el problema de que múltiples campos en una tabla requieren restricciones de unicidad.
• Tanto la clave única como la clave principal pueden garantizar la unicidad de los datos en el campo, pero la clave única permite que el campo esté vacío, y varios campos pueden estar vacíos, y el campo vacío no se comparará para determinar la unicidad.
• Cabe señalar que no es que la clave principal sea única, sino que se selecciona un campo único como clave principal, y aquellos campos que no son claves principales pero que también requieren restricciones únicas deben establecerse como claves únicas.

•  Simplemente podemos entender que la clave primaria tiene más que ver con la unicidad. La clave única es más para garantizar que en los negocios no se duplique con otra información.

•  La clave principal es más para garantizar que se pueda encontrar un registro único durante la búsqueda, y la clave única es más para garantizar que cada valor diferente en la tabla también debe ser único en el nivel de mysql.
Por ejemplo, cree una tabla de estudiantes, que contenga la identificación, el nombre y el número de teléfono del estudiante. Elegimos id como la clave principal, pero al mismo tiempo, el número de teléfono de cada estudiante también debe tener una restricción única, por lo que el número de teléfono debe establecerse como una clave única. como sigue:

Verifique la estructura de la tabla después de crear la tabla y podrá ver que aparece el indicador UNI en la columna Clave de tel, lo que indica que tel se ha establecido correctamente como clave única. como sigue:

Al insertar un registro en la tabla, si el número de teléfono del registro insertado se duplica con el número de teléfono ya registrado en la tabla, la inserción fallará debido a un conflicto de clave único. como sigue:

Además, es posible que el registro insertado en la tabla no especifique el valor del campo de clave única. En este momento, el campo está vacío de forma predeterminada y no se realiza ninguna comparación de unicidad. como sigue:


9. Claves foráneas

Sintaxis de clave externa:

foreign key (字段名) references 主表(列)

• Las claves foráneas se utilizan para definir la relación entre la tabla principal y la tabla esclava, y mantener las restricciones entre la tabla maestra y la tabla esclava. Las restricciones de clave externa se definen principalmente en tablas esclavas, y la tabla principal debe tener restricciones de clave principal o restricciones de clave única.

• Después de definir la clave externa, los datos que deben insertarse en la columna de la clave externa deben existir en la columna correspondiente de la tabla principal o ser nulos.

Por ejemplo, primero cree una tabla de clases como la tabla principal, que contiene la identificación de la clase y el nombre de la clase, y establezca la identificación de la clase como la clave principal. como sigue:

Luego, cree una tabla de estudiantes como tabla secundaria, que contenga la identificación del estudiante, el nombre y la identificación correspondiente de la clase del estudiante, y configure la columna de identificación de la clase en la tabla del estudiante como una clave externa, que está asociada con la columna de identificación de la clase. en la mesa de clase. como sigue:

Después de crear la tabla, verifique la estructura de la tabla de la tabla de estudiantes y podrá ver que la columna Clave correspondiente a la identificación de la clase en la tabla de estudiantes tiene un indicador MUL, lo que indica que class_id se ha establecido correctamente como clave externa. como sigue:

Para demostrar las restricciones de clave externa, primero insertamos dos registros en la tabla de clases. como sigue:

En este momento, al insertar un registro en la tabla de estudiantes, si la identificación de clase correspondiente al registro insertado existe en la tabla de clase, o la identificación de clase insertada es nula, entonces se permite la inserción en este momento. como sigue:

Pero si el ID de clase correspondiente al registro insertado en la tabla de estudiantes es 3, es equivalente a que la clase correspondiente al registro insertado en la tabla de estudiantes no existe, y la inserción fallará en este momento, que es el foráneo. restricción clave. como sigue:

En este momento, si inserta la información de la clase con la identificación de clase de 3 en la tabla de clases y luego inserta el registro anterior en la tabla de estudiantes, entonces se permite la inserción. como sigue:

En este momento, si desea eliminar la clase 2103 en la tabla class_table, no puede eliminarla porque todavía hay estudiantes en la clase 2103 en la tabla student_table. como sigue:

Esto es si elimina a todos los estudiantes en la clase de investigación en línea 2103 en la tabla student_table y luego elimina la clase de investigación en línea 2103 en la tabla class_table, entonces se permite la eliminación. como sigue:

Explicar:

• El establecimiento de claves foráneas generales se establece a partir de la tabla.

• Teóricamente, incluso si no establecemos claves foráneas después de crear la tabla de clases y la tabla de estudiantes, ya tenemos claves foráneas semánticamente, pero no podemos garantizar la corrección de la identificación de clase en los registros subsiguientes insertados en la tabla de estudiantes.
• Después de establecer la identificación de clase en la tabla de estudiantes como clave externa, la restricción de clave externa puede garantizar que solo los registros con la identificación de clase en la tabla de clases se puedan insertar y modificar en la tabla de estudiantes, y solo los estudiantes que no tienen una clase correspondiente en la tabla de estudiantes puede Eliminar la clase correspondiente, de lo contrario, la inserción, modificación o eliminación fallará.
• La esencia de establecer realmente una clave foránea es entregar la correlación a MySQL para su revisión, y decirle a MySQL la relación de restricción entre las tablas por adelantado.Cuando un usuario inserta datos que no se ajustan a la lógica comercial, MySQL no le permitirá insertar.

• Las claves foráneas no solo se utilizan para generar asociaciones entre tablas, las claves foráneas también tienen reglas de restricción específicas en mysql para garantizar la integridad de los datos y la consistencia entre las tablas.


10. Caso completo

Descripción del caso:

Hay una tienda de datos, que registra los clientes y las condiciones de compra, y consta de las siguientes tres tablas:

• Tabla de bienes bienes: número de producto id_bienes, nombre de producto nombre_bienes, precio unitario precio unitario, categoría de producto, proveedor proveedor.
• Cliente de la tabla de clientes: número de cliente customer_id, nombre nombre, dirección dirección, dirección de correo electrónico, género sexo, ID card_id.
• Compra de la tabla de compras: número de orden order_id, número de cliente customer_id, número de producto id_bienes, números de cantidad de compra.
Requerir:

• Establecer clave principal, clave externa.
• El nombre del cliente no puede estar vacío.
• Los buzones no se pueden duplicar.
• El género del cliente (masculino, femenino).

mysql escribir:

En primer lugar, primero debemos crear una base de datos y luego completar la creación de estas tres tablas en la base de datos. como sigue:

Al crear una tabla de productos, establezca el número de producto como la clave principal y configúrelo como un campo de aumento automático. Los atributos de otros campos no son obligatorios y usted mismo puede establecerlos razonablemente. como sigue:

Después de crear la tabla de productos, vea la estructura de la tabla de la siguiente manera:

Al crear la tabla de clientes, configure el número de cliente como la clave principal y configúrelo como un campo de aumento automático, luego configure el atributo no nulo para el nombre, configure el buzón como una clave única, configure el género como un tipo de enumeración y solo proporcione opciones de género masculino y femenino. Además, aunque el título no requiere la tarjeta de identificación, normalmente la tarjeta de identificación también debe garantizar la unicidad, y es mejor configurarla como una clave única. como sigue:

Después de crear la tabla de clientes, vea la estructura de la tabla de la siguiente manera:

Al crear la tabla de compras, configure el número de pedido como la clave principal y se puede configurar como un campo de aumento automático, pero debe configurar el número de cliente y el número de producto como claves externas, que están asociadas respectivamente con el número de cliente y número de producto en la tabla de clientes y la tabla de productos, use restricciones de clave externa para garantizar que existan el número de cliente y el número de producto de cada pedido. como sigue:

Después de crear la tabla de compras, vea la estructura de la tabla de la siguiente manera:

Supongo que te gusta

Origin blog.csdn.net/qq_45113223/article/details/131279728
Recomendado
Clasificación