{"id":15915,"date":"2024-07-19T02:55:26","date_gmt":"2024-07-18T23:25:26","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=15915"},"modified":"2024-07-19T02:55:26","modified_gmt":"2024-07-18T23:25:26","slug":"https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/es\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/","title":{"rendered":"Comprender las limitaciones de SQL"},"content":{"rendered":"<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87\">Introducci\u00f3n<\/h2>\n<p>Al dise\u00f1ar una base de datos, puede que en ocasiones desee restringir los datos permitidos en ciertas columnas. Por ejemplo, si crea una tabla con informaci\u00f3n sobre rascacielos, podr\u00eda querer que la columna que contiene la altura de cada edificio no admita valores negativos.<\/p>\n<p>Los sistemas de gesti\u00f3n de bases de datos relacionales (SGBDR) permiten controlar los datos que se a\u00f1aden a una tabla mediante restricciones. Una restricci\u00f3n es una regla especial que se aplica a una o m\u00e1s columnas (o a toda la tabla) y limita los cambios que se pueden realizar en los datos de la tabla mediante una sentencia. <code>INSERTAR<\/code>, <code>ACTUALIZAR<\/code>, o <code>BORRAR<\/code> Limita.<\/p>\n<p>Este art\u00edculo analiza en detalle qu\u00e9 son las restricciones y c\u00f3mo se utilizan en RDBMS. Tambi\u00e9n analiza cada una de las cinco restricciones definidas en el est\u00e1ndar SQL y explica sus funciones correspondientes.<\/p>\n<h2 id=\"%d9%85%d8%ad%d8%af%d9%88%d8%af%db%8c%d8%aa-%d9%87%d8%a7-%da%86%db%8c%d8%b3%d8%aa%d8%9f\">\u00bfCuales son las limitaciones?<\/h2>\n<p>En SQL, una restricci\u00f3n es cualquier regla aplicada a una columna o tabla que limita los datos que se pueden insertar en ella. Al intentar realizar una operaci\u00f3n que modifique los datos almacenados en la tabla, como una instrucci\u00f3n INSERT, UPDATE o DELETE, el RDBMS comprueba si esos datos infringen las restricciones existentes y, de ser as\u00ed, devuelve un error.<\/p>\n<p>Los administradores de bases de datos suelen usar restricciones para garantizar que la base de datos cumpla con un conjunto definido de reglas de negocio. En el contexto de una base de datos, una regla de negocio es cualquier pol\u00edtica o procedimiento que una empresa u otra organizaci\u00f3n sigue y al que sus datos deben adherirse. Por ejemplo, supongamos que est\u00e1 creando una base de datos que cataloga el inventario de la tienda de un cliente. Si el cliente especifica que cada registro de producto debe tener un n\u00famero de identificaci\u00f3n \u00fanico, puede crear una columna con la restricci\u00f3n UNIQUE que garantiza que no haya dos entradas iguales en esa columna.<\/p>\n<p>Las restricciones tambi\u00e9n son \u00fatiles para mantener la integridad de los datos. La integridad de los datos es un t\u00e9rmino amplio que se utiliza a menudo para describir la precisi\u00f3n, consistencia y racionalidad generales de los datos almacenados en una base de datos, seg\u00fan sus casos de uso espec\u00edficos. Las tablas de una base de datos suelen estar relacionadas, y las columnas de una tabla dependen de los valores de otra. Dado que la entrada de datos suele ser propensa a errores humanos, las restricciones son \u00fatiles en casos como este, ya que pueden garantizar que ning\u00fan dato introducido err\u00f3neamente pueda afectar dichas relaciones y, por lo tanto, comprometer la integridad de la base de datos.<\/p>\n<p>Imagine que est\u00e1 dise\u00f1ando una base de datos con dos tablas: una para listar los estudiantes actuales de una escuela y otra para listar los miembros del equipo de baloncesto de dicha escuela. Puede aplicar una restricci\u00f3n de clave externa a una columna de la tabla &quot;equipo de baloncesto&quot; que haga referencia a una columna de la tabla &quot;escuela&quot;. Esto establece una relaci\u00f3n entre ambas tablas al exigir que cada entrada de la tabla &quot;equipo&quot; haga referencia a una entrada de la tabla &quot;estudiantes&quot;.<\/p>\n<p>Los usuarios definen restricciones al crear una tabla por primera vez o pueden a\u00f1adirlas posteriormente con la sentencia ALTER TABLE, siempre que no entren en conflicto con los datos ya existentes en la tabla. Al crear una restricci\u00f3n, el sistema de base de datos le asigna autom\u00e1ticamente un nombre, pero en la mayor\u00eda de las implementaciones de SQL se puede a\u00f1adir un nombre personalizado para cada restricci\u00f3n. Estos nombres se utilizan para referirse a las restricciones en las sentencias ALTER TABLE cuando se modifican o eliminan.<\/p>\n<p>El est\u00e1ndar SQL define formalmente s\u00f3lo cinco restricciones:<\/p>\n<ul>\n<li>Clave principal<\/li>\n<li>Clave externa<\/li>\n<li>\u00danico<\/li>\n<li>Revisar<\/li>\n<li>No est\u00e1 vac\u00edo.<\/li>\n<\/ul>\n<p>Ahora que tiene una comprensi\u00f3n general de c\u00f3mo se utilizan las restricciones, analicemos con m\u00e1s detalle cada una de estas cinco restricciones.<\/p>\n<h2 id=\"%da%a9%d9%84%db%8c%d8%af-%d8%a7%d9%88%d9%84%db%8c%d9%87\">Clave principal<\/h2>\n<p>La restricci\u00f3n CLAVE PRINCIPAL requiere que cada entrada en una columna determinada sea \u00fanica y no NULA, lo que le permite usar esa columna para identificar cada fila individual en la tabla.<\/p>\n<p>En el modelo relacional, una clave es una columna o conjunto de columnas de una tabla donde se garantiza que cada valor sea \u00fanico y no contenga ning\u00fan valor nulo. Una clave principal es una clave especial cuyos valores se utilizan para identificar filas individuales de una tabla, y la columna o columnas que la componen pueden utilizarse para identificar la tabla en el resto de la base de datos.<\/p>\n<p>Este es uno de los aspectos importantes de las bases de datos relacionales: con una clave principal, los usuarios no necesitan saber que sus datos est\u00e1n almacenados f\u00edsicamente en una m\u00e1quina, y su SGBD puede rastrear cada registro y recuperarlos ad hoc. Esto, a su vez, significa que los registros no tienen un orden l\u00f3gico definido, y los usuarios pueden recuperar sus datos en cualquier orden o mediante cualquier filtro.<\/p>\n<p>Se puede crear una clave principal en SQL con una restricci\u00f3n PRIMARY KEY, que es esencialmente una combinaci\u00f3n de las restricciones UNIQUE y NOT NULL. Una vez definida la clave principal, el SGBD crea autom\u00e1ticamente un \u00edndice asociado a ella. Un \u00edndice es una estructura de base de datos que facilita la recuperaci\u00f3n m\u00e1s r\u00e1pida de datos de una tabla. Al igual que un \u00edndice en un libro de texto, las consultas solo tienen que examinar las entradas de la columna indexada para encontrar los valores relacionados. Esto permite que la clave principal act\u00fae como identificador para cada fila de la tabla.<\/p>\n<p>Una tabla solo puede tener una clave principal, pero al igual que las claves normales, una clave principal puede constar de m\u00e1s de una columna. Dicho esto, una caracter\u00edstica distintiva de las claves principales es que utilizan \u00fanicamente el conjunto m\u00ednimo de atributos necesarios para identificar de forma \u00fanica cada fila de una tabla. Para ilustrar esta idea, imagine una tabla que almacena informaci\u00f3n sobre los estudiantes de una escuela utilizando las siguientes tres columnas:<\/p>\n<ul>\n<li><code>identificaci\u00f3n de estudiante<\/code>:Se utiliza para almacenar el n\u00famero de identificaci\u00f3n \u00fanico de cada estudiante.<\/li>\n<li><code>nombre de pila<\/code>:Se utiliza para guardar el nombre de cada estudiante.<\/li>\n<li><code>Apellido<\/code>:Se utiliza para guardar el apellido de cada estudiante.<\/li>\n<\/ul>\n<p>Es posible que algunos estudiantes de una escuela compartan el mismo nombre, lo que har\u00eda que la columna &quot;Nombre&quot; no sea una buena opci\u00f3n como clave principal. Lo mismo ocurre con la columna &quot;Apellido&quot;. Una clave principal compuesta por las columnas &quot;Nombre&quot; y &quot;Apellido&quot; podr\u00eda funcionar, pero a\u00fan existe la posibilidad de que dos estudiantes compartan nombre y apellido.<\/p>\n<p>Una clave principal compuesta por el ID del estudiante y las columnas firstName o lastName podr\u00eda funcionar, pero como el ID de cada estudiante ya es \u00fanico, incluir cada columna de nombre en la clave principal es redundante. Por lo tanto, en este caso, el conjunto m\u00ednimo de atributos que puede identificar cada fila, y por lo tanto una buena opci\u00f3n para la clave principal de la tabla, es solo la columna studentID.<\/p>\n<p>Si una clave consta de datos observables y utilizables (es decir, datos que representan entidades, eventos o propiedades del mundo real), se denomina clave natural. Si la clave se genera internamente y no representa nada externo a la base de datos, se denomina clave sustituta o artificial. Algunos sistemas de bases de datos no recomiendan el uso de claves naturales porque incluso datos aparentemente fijos pueden cambiar de forma impredecible.<\/p>\n<h2 id=\"%da%a9%d9%84%db%8c%d8%af-%d8%ae%d8%a7%d8%b1%d8%ac%db%8c\">Clave externa<\/h2>\n<p>La restricci\u00f3n FOREIGN KEY requiere que cada entrada en una columna dada ya debe existir en una columna espec\u00edfica de otra tabla.<\/p>\n<p>Si tiene dos tablas que desea relacionar, una forma de hacerlo es definir una clave externa con una restricci\u00f3n FOREIGN KEY. Una clave externa es una columna de una tabla (la tabla secundaria) cuyos valores provienen de una clave de otra tabla (la tabla principal). Esta es una forma de expresar una relaci\u00f3n entre dos tablas: una restricci\u00f3n FOREIGN KEY requiere que los valores de la columna a la que se aplica existan en la columna a la que hace referencia.<\/p>\n<p>El siguiente diagrama muestra dicha relaci\u00f3n entre dos tablas: una utilizada para registrar informaci\u00f3n sobre los empleados de una empresa y la otra para el seguimiento de las ventas. En este ejemplo, la clave principal de la tabla EMPLOYEES est\u00e1 referenciada por la clave externa de la tabla SALES:<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1160\"  height=\"840\"  class=\"aligncenter wp-image-15918 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1160px) 100vw, 1160px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8.png 1160w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-300x217.png 300w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-1024x742.png 1024w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-768x556.png 768w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-110x80.png 110w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-200x145.png 200w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-380x275.png 380w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-255x185.png 255w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-550x398.png 550w, https:\/\/cdn.itpiran.net\/2024\/07\/19024637\/1-8-800x579.png 800w\" ><\/p>\n<p>Si intenta insertar un registro en una tabla secundaria y el valor introducido en la columna de clave externa no existe en la clave principal de la tabla principal, la instrucci\u00f3n de inserci\u00f3n no ser\u00e1 v\u00e1lida. Esto ayuda a mantener la integridad de la relaci\u00f3n, ya que las filas de ambas tablas siempre est\u00e1n correctamente relacionadas.<\/p>\n<p>Generalmente, la clave externa de una tabla es la clave principal de la tabla principal, pero no siempre es as\u00ed. En la mayor\u00eda de los RDBMS, cualquier columna de la tabla principal con una restricci\u00f3n UNIQUE o PRIMARY KEY puede ser referenciada por la clave externa de la tabla secundaria.<\/p>\n<h2 id=\"%d9%85%d9%86%d8%ad%d8%b5%d8%b1-%d8%a8%d9%81%d8%b1%d8%af\">\u00danico<\/h2>\n<p>La restricci\u00f3n UNIQUE evita que se agreguen valores duplicados a la columna dada.<\/p>\n<p>Como su nombre indica, una restricci\u00f3n UNIQUE requiere que cada entrada de una columna sea un valor \u00fanico. Cualquier intento de agregar un valor que ya figura en la columna generar\u00e1 un error.<\/p>\n<p>Las restricciones UNIQUE son \u00fatiles para imponer relaciones uno a uno entre tablas. Como se mencion\u00f3 anteriormente, se puede establecer una relaci\u00f3n entre dos tablas mediante una clave externa, pero existen varios tipos de relaciones entre tablas:<\/p>\n<ul>\n<li><code><code>\u06cc\u06a9 \u0628\u0647 \u06cc\u06a9<\/code><\/code>Se dice que dos tablas tienen una relaci\u00f3n uno a uno si las filas de la tabla principal corresponden a una y s\u00f3lo una fila de la tabla secundaria.<\/li>\n<li><code>Uno a muchos<\/code>En una relaci\u00f3n de muchos a cualquiera, una fila de la tabla principal puede relacionarse con varias filas de la tabla secundaria, pero cada fila de la tabla secundaria puede relacionarse solo con una fila de la tabla principal.<\/li>\n<li><code>\u00bfCu\u00e1ntos?<\/code>:Si las filas de la tabla principal se pueden relacionar con varias filas de la tabla secundaria y viceversa, se dice que las dos tienen una relaci\u00f3n de muchos a muchos.<\/li>\n<\/ul>\n<p>Al agregar una restricci\u00f3n UNIQUE a una columna que tiene una restricci\u00f3n FOREIGN KEY aplicada, puede garantizar que cada entrada en la tabla principal aparezca solo una vez en la secundaria, estableciendo as\u00ed una relaci\u00f3n uno a uno entre las dos tablas.<\/p>\n<p>Tenga en cuenta que puede definir restricciones UNIQUE tanto a nivel de tabla como de columna. Al definirse a nivel de tabla, una restricci\u00f3n UNIQUE puede aplicarse a m\u00e1s de una columna. En este caso, cada columna de la restricci\u00f3n puede tener valores duplicados, pero cada fila debe tener una combinaci\u00f3n \u00fanica de valores en las columnas restringidas.<\/p>\n<h2 id=\"%d8%a8%d8%b1%d8%b1%d8%b3%db%8c\">Revisar<\/h2>\n<p>Una restricci\u00f3n CHECK define una condici\u00f3n para una columna, conocida como predicado, que cualquier valor ingresado en ella debe satisfacer.<\/p>\n<p>Los predicados de la restricci\u00f3n CHECK se escriben como una expresi\u00f3n que puede evaluarse como VERDADERO, FALSO o posiblemente desconocido. Si se intenta introducir un valor en una restricci\u00f3n CHECK y este hace que la instrucci\u00f3n se eval\u00fae como VERDADERO o desconocido (lo que ocurre con valores NULL), la operaci\u00f3n se realizar\u00e1 correctamente. Sin embargo, si la expresi\u00f3n se eval\u00faa como FALSO, fallar\u00e1.<\/p>\n<p>Los predicados CHECK suelen basarse en un operador de comparaci\u00f3n matem\u00e1tico (como &lt;, &gt;, &lt;=, OR &gt;=) para restringir el rango de datos permitidos en una columna. Por ejemplo, un uso com\u00fan de las restricciones CHECK es evitar que se contengan valores negativos en algunas columnas cuando un valor negativo no tendr\u00eda sentido, como en el ejemplo siguiente.<\/p>\n<p>Esta sentencia CREATE TABLE crea una tabla llamada productInfo con columnas para el nombre, el n\u00famero de identificaci\u00f3n y el precio de cada producto. Dado que no tiene sentido que un producto tenga un precio negativo, esta sentencia aplica una restricci\u00f3n CHECK a la columna de precio para garantizar que solo contenga valores positivos:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE TABLE productInfo (\r\nproductID int,\r\nname varchar(30),\r\nprice decimal(4,2)\r\nCHECK (price &gt; 0)\r\n);<\/code><\/pre>\n<\/div>\n<p>Ning\u00fan predicado CHECK debe usar un operador de comparaci\u00f3n matem\u00e1tico. Normalmente, se puede usar cualquier operador SQL que pueda evaluarse como verdadero, falso o desconocido en un predicado de verificaci\u00f3n, incluyendo LIKE, BETWEEN, IS NOT NULL, etc. Algunas implementaciones de SQL, aunque no todas, permiten incluir una subconsulta en un predicado CHECK. Sin embargo, tenga en cuenta que la mayor\u00eda de las implementaciones no permiten referenciar a otra tabla en una sentencia.<\/p>\n<h2 id=\"%d8%aa%d9%87%db%8c-%d9%86%db%8c%d8%b3%d8%aa\">No est\u00e1 vac\u00edo.<\/h2>\n<p>La restricci\u00f3n NOT NULL evita que se agreguen valores NULL a la columna dada.<\/p>\n<p>En la mayor\u00eda de las implementaciones de SQL, si se inserta una fila de datos pero no se especifica un valor para una columna espec\u00edfica, el sistema de base de datos representar\u00e1 los datos faltantes como NULL de forma predeterminada. En SQL, NULL es una palabra clave especial que se utiliza para representar un valor desconocido, faltante o no especificado. Sin embargo, NULL no es un valor en s\u00ed mismo, sino el estado de un valor desconocido.<\/p>\n<p>Para ilustrar esta diferencia, imagine una tabla utilizada para el seguimiento de clientes en una agencia de talentos que tiene columnas para el nombre y apellido de cada cliente. Si un cliente usa un solo nombre, como &quot;Cher&quot;, &quot;Usher&quot; o &quot;Beyonc\u00e9&quot;, el administrador de la base de datos podr\u00eda introducir solo un nombre en la columna de nombre, lo que provocar\u00eda que el SGBD insertara NULL en la columna de apellido. La base de datos no considera que el apellido de un cliente sea literalmente &quot;nulo&quot;. Simplemente significa que se desconoce el valor de la columna de apellido de esa fila o que el campo no corresponde a ese registro en particular.<\/p>\n<p>Como su nombre indica, la restricci\u00f3n NOT NULL impide que cualquier valor en la columna dada sea nulo. Esto significa que, para cualquier columna con una restricci\u00f3n NOT NULL, debe especificar un valor al insertar una nueva fila. De lo contrario, la operaci\u00f3n INSERT fallar\u00e1.<\/p>\n<h2 id=\"%d9%86%d8%aa%db%8c%d8%ac%d9%87\">Resultado<\/h2>\n<p>Las restricciones son una herramienta esencial para cualquiera que busque dise\u00f1ar una base de datos con un alto nivel de integridad y seguridad. Al restringir los datos que se introducen en una columna, se garantiza que las relaciones entre tablas se mantengan correctamente y que la base de datos cumpla con las reglas de negocio que definen su prop\u00f3sito.<\/p>","protected":false},"excerpt":{"rendered":"Introducci\u00f3n Al dise\u00f1ar una base de datos, puede haber ocasiones en las que desee imponer restricciones a los datos\u2026","protected":false},"author":1,"featured_media":15916,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_focuskeywords":"","_yoast_wpseo_primary_category":"193","footnotes":""},"categories":[193,349],"tags":[403,391],"class_list":{"0":"post-15915","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorials","8":"category-database","9":"tag-data-base","10":"tag-mysql"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL - \u0628\u0644\u0627\u06af ITPiran<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itpiran.net\/blog\/es\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0645\u0642\u062f\u0645\u0647 \u0647\u0646\u06af\u0627\u0645 \u0637\u0631\u0627\u062d\u06cc \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0648\u0627\u0642\u0639\u06cc \u067e\u06cc\u0634 \u0628\u06cc\u0627\u06cc\u062f \u06a9\u0647 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/es\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-18T23:25:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2024\/07\/19024037\/sql.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1793\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL\",\"datePublished\":\"2024-07-18T23:25:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/\"},\"wordCount\":107,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/19024037\\\/sql.jpg\",\"keywords\":[\"data base\",\"MySQL\"],\"articleSection\":[\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/\",\"name\":\"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/19024037\\\/sql.jpg\",\"datePublished\":\"2024-07-18T23:25:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/19024037\\\/sql.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/19024037\\\/sql.jpg\",\"width\":1793,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/category\\\/tutorials\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"name\":\"\u0628\u0644\u0627\u06af ITPiran\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\",\"name\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"alternateName\":\"ITPIran Blog\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"width\":512,\"height\":512,\"caption\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\",\"name\":\"admin\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/es\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comprender las limitaciones de SQL - Blog de ITPiran","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.itpiran.net\/blog\/es\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/","og_locale":"es_ES","og_type":"article","og_title":"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0645\u0642\u062f\u0645\u0647 \u0647\u0646\u06af\u0627\u0645 \u0637\u0631\u0627\u062d\u06cc \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0648\u0627\u0642\u0639\u06cc \u067e\u06cc\u0634 \u0628\u06cc\u0627\u06cc\u062f \u06a9\u0647 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc&hellip;","og_url":"https:\/\/www.itpiran.net\/blog\/es\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2024-07-18T23:25:26+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2024\/07\/19024037\/sql.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL","datePublished":"2024-07-18T23:25:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/"},"wordCount":107,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/19024037\/sql.jpg","keywords":["data base","MySQL"],"articleSection":["\u0622\u0645\u0648\u0632\u0634\u06cc","\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/","url":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/","name":"Comprender las limitaciones de SQL - Blog de ITPiran","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/19024037\/sql.jpg","datePublished":"2024-07-18T23:25:26+00:00","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2024\/07\/19024037\/sql.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/19024037\/sql.jpg","width":1793,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/https-www-digitalocean-com-community-conceptual-articles-understanding-sql-constraints\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itpiran.net\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0622\u0645\u0648\u0632\u0634\u06cc","item":"https:\/\/www.itpiran.net\/blog\/category\/tutorials\/"},{"@type":"ListItem","position":3,"name":"\u062f\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc SQL"}]},{"@type":"WebSite","@id":"https:\/\/www.itpiran.net\/blog\/#website","url":"https:\/\/www.itpiran.net\/blog\/","name":"Blog de ITPiran","description":"Noticias y art\u00edculos sobre comercio sostenible en Ir\u00e1n","publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itpiran.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.itpiran.net\/blog\/#organization","name":"Blog sobre negocios iran\u00edes sostenibles","alternateName":"ITPIran Blog","url":"https:\/\/www.itpiran.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","contentUrl":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","width":512,"height":512,"caption":"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81","name":"administraci\u00f3n","url":"https:\/\/www.itpiran.net\/blog\/es\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/posts\/15915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/comments?post=15915"}],"version-history":[{"count":2,"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/posts\/15915\/revisions"}],"predecessor-version":[{"id":15919,"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/posts\/15915\/revisions\/15919"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/media\/15916"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/media?parent=15915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/categories?post=15915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/es\/wp-json\/wp\/v2\/tags?post=15915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}