¡Domina SQL! Guía Definitiva para Crear Tablas y Usar Tipos Numéricos Efectivamentepost-template-default single single-post postid-46 single-format-standard et_pb_button_helper_class et_fixed_nav et_show_nav et_secondary_nav_enabled et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db
771 715 4434

Trabajar con bases de datos de cualquier tipo significa trabajar con datos. Estos datos pueden tener un par de formatos predefinidos. SQL es un lenguaje para manipular datos en bases de datos. Creado a principios de los años 70, sigue utilizándose hoy en día en casi todas las bases de datos relacionales después de 50 años. SQL se utiliza como lenguaje de datos estándar para manipular y consultar datos en las bases de datos más populares. Sin embargo, antes de poder consultar los datos de una base de datos, tenemos que almacenarlos en ella. Las bases de datos utilizan tablas para almacenar los registros de datos.

La creación de tablas es el primer paso en todo proyecto de código SQL. Para ello, se utilizan instrucciones DDL (lenguaje de definición de datos) como CREATE. Una vez hayas creado una base de datos SQL utilizando el Structured Query Language, podrás crear una nueva tabla. Ésta se utiliza para almacenar tus registros de datos y especifica la estructura en la que se prepararán estos datos. Las tablas constan de campos o columnas que pueden contener determinados tipos de datos y filas en las que se listan estos datos. Para crear una nueva tabla, utiliza la sentencia SQL CREATE TABLE. Ésta no solo creará la nueva tabla, sino que también determinará cómo debe estructurarse. Solo con mirar la sintaxis de SQL CREATE TABLE, se puede ver que los tipos de datos y los nombres son obligatorios para la correcta creación de una nueva tabla. Con el comando SQL CREATE TABLE puedes crear una nueva tabla, cuyo nombre se especificará en la primera línea. Dentro de los paréntesis, se detallan las columnas de la tabla. Debes asignar un nombre a columna1, columna2, etc., y especificar qué tipo de datos se pueden almacenar en cada columna.

Tipos de Tablas en SQL

Aca se presentarán las Tablas base. Se puede utilizar una forma de la instrucción CREATE TABLE para crear todos los tipos de tablas, excepto las tablas temporales locales declaradas. A lo largo del resto del capítulo, se analizarán en primer lugar las tablas temporales locales persistentes, aunque se tocará el tema de las tablas temporales en los capítulos subsecuentes. La tercera línea de la sintaxis aplica solo si se crea una tabla temporal. La cláusula permite especificar si la tabla se debe vaciar o no cuando la instrucción COMMIT se ejecuta.

  • Tablas base persistentes: Un objeto de esquema nombrado definido por la definición de una tabla en la instrucción CREATE TABLE. Las tablas base persistentes tienen los datos de SQL que se almacenan en la base de datos. Éste es el tipo más común de tabla base y es a menudo a lo que se refiere la gente cuando menciona tablas base o tablas.

  • Tablas temporales globales: Un objeto de esquema nombrado definido por una definición de tabla en la instrucción CREATE GLOBAL TEMPORARY TABLE. Aunque la definición de la tabla es parte del esquema, la tabla actual existe solo cuando se hace referencia dentro del contexto de la sesión SQL en la cual se creó. Cuando la sesión termina, la tabla ya no existe. No se puede acceder a una tabla temporal global creada en una sesión desde otra sesión de SQL.

    Lea también: Declarar Impuestos con Infonavit

  • Tablas temporales locales: creadas Un objeto de esquema nombrado definido por una definición de tabla en la instrucción CREATE LOCAL TEMPORARY TABLE. Sin embargo, se puede acceder a una tabla global desde cualquier lugar dentro de una sesión asociada de SQL, mientras que en una tabla temporal local solo se podrá acceder dentro del módulo asociado.

  • Tablas temporales locales declaradas: Una tabla declarada como parte de un procedimiento en un módulo. La definición de la tabla no se incluye en el esquema y no existe hasta que ese procedimiento se ejecuta.

Declaración de Columnas y Tipos de Datos

Cuando defina un nuevo campo en una tabla, es obligatorio que especifique su tipo de datos. En el Motor de base de datos de SQL Server, cada columna, variable local, expresión y parámetro tiene un tipo de datos relacionado. SQL Server proporciona un conjunto de tipos de datos de sistema que define todos los tipos de datos que se pueden usar con SQL Server. También puede definir sus propios tipos de datos en Transact-SQL o Microsoft .NET Framework. Los tipos de datos de alias están basados en los tipos de datos proporcionados por el sistema. Para más información sobre los tipos de datos de alias, véase CREATE TYPE.

Para ilustrar cómo funciona SQL CREATE TABLE, utilizaremos un ejemplo sencillo que muestra el aspecto que podría tener una tabla de este tipo. En esta instrucción se creó una tabla llamada ARTISTAS, una columna llamada ID_ARTISTA y una columna llamada NOMBRE_ARTISTA. La columna ID_ARTISTA se asocia con el tipo de dato INTEGER, y la columna NOMBRE_ARTISTA se asocia con el tipo de datos CHARACTER. Observe que las definiciones de las dos columnas se separan por una coma.

Tipos de Datos Predefinidos y Definidos por el Usuario

  • Predefinido: Los tipos de datos predefinidos son los más comunes. Cada tipo de datos predefinido es un elemento nombrado (utilizando una palabra clave en SQL) que limita valores a las restricciones definidas por esa base de datos.

    Lea también: Guía para Declarar Aportaciones Voluntarias

  • Definido por el usuario: Los tipos de datos definidos por el usuario se basan en los tipos predefinidos o definiciones de atributos, y se agregan como objetos de esquema al entorno SQL. El tipo definido por el usuario es una forma de tipo de datos (almacenada como un objeto de esquema) que está en parte definida por el programador y en parte basada en uno o más tipos de datos. SQL proporciona la instrucción CREATE TYPE para definir los tipos definidos por el usuario. Cuando se especifica FINAL, le dice a SQL que no se definen subtipos para este tipo. La alternativa es especificar NOT FINAL, lo que significa que se pueden definir los subtipos para este tipo.

Tipos de Datos Numéricos en SQL: Conceptos Fundamentales

Los valores nominales solo se diferencian por su "nombre". Los valores nominales no se tratan como números; no se pueden sumar ni restar, y no tienen un orden inherente. Por ejemplo, los números de ID de los estudiantes y los números de teléfono son valores nominales. Se utilizan más como una etiqueta que como un número. Podemos decir que nuestros números de teléfono son iguales (misma importancia, misma longitud), pero no podemos compararlos ni decir que uno de ellos es el primero. No podemos sumarlos para obtener un número de teléfono significativo.

Los valores ordinales proporcionan un orden o rango. En los valores ordinales, lo importante es el orden que existe entre ellos. Supongamos que tenemos una escala de 1 a 3 que califica el estado de ánimo de una persona. "1" significaría sentirse infeliz, "2" estar contento y "3" estar feliz. Se sabe que "feliz" tiene un valor más alto que "contento" o "infeliz", pero eso es todo. No se puede sumar "contento" e "infeliz" para obtener un "feliz".

Los valores de intervalo muestran las diferencias exactas. En una escala de intervalos, lo importante son las diferencias entre los valores. Si se resta 90 grados centígrados de 100 grados centígrados, se obtiene una diferencia de 10 grados. Los años, las fechas y la mayoría de las medidas de las personas son medidas de intervalo. Los valores de intervalo son numéricos y se representan como tales en la base de datos.

Los valores ratio son intervalos con un valor cero definido. Al igual que en las escalas de intervalo, en las escalas ratio las diferencias entre los valores son calculables. Sin embargo, en estas escalas, el valor cero significa que no hay nada que medir. Por ejemplo, si pensamos en términos de masa, longitud y duración, si cualquiera de ellas tiene un valor cero, no hay nada. Las escalas ratio son muy importantes para la ciencia.

Lea también: ¿A partir de qué ingresos debes declarar?

Todos los tipos de datos numéricos de SQL se utilizan para representar todos los valores anteriores, especialmente los intervalos y los ratios. Se pueden comparar los valores de los caracteres en SQL, por lo que es posible argumentar que los valores de los caracteres también podrían representar datos de intervalo.

Precisión y Escala

Todos los tipos de datos numéricos tienen una precisión, y algunos tienen una escala. La precisión se refiere al número de dígitos (dentro de un valor numérico específico) que se pueden almacenar. La escala se refiere al número de dígitos en la parte fraccional de ese valor (los dígitos a la derecha del punto decimal). Por ejemplo, el número 435.27 tiene una precisión de 5 y una escala de 2. Una escala de 0 indica que el número es un número entero y no contiene ningún componente fraccional.

Tipos de Datos Numéricos Exactos

Los tipos de datos numéricos exactos son SMALLINT, INTEGER, BIGINT, NUMERIC(p,s) y DECIMAL(p,s). Estos solo son un reflejo de la necesidad de almacenar los datos de forma segura, predecible y utilizable. Los tipos de datos numéricos exactos de SQL están formados por los subtipos NUMERIC(p,s) y DECIMAL(p,s). Son números exactos, y los definimos por su precisión (p) y escala (s).

Los tipos de datos enteros (integer) contienen números enteros o sin punto decimal. En latín, integer significa entero. El estándar ANSI SQL define SMALLINT, INTEGER y BIGINT como tipos de datos enteros. Para estos tipos, el tamaño predeterminado de la columna es importante. Las columnas INTEGER redondean los decimales. Si usted utiliza tipos de datos enteros en las fórmulas, debe saber que el redondeo puede causar inconsistencias en las fórmulas. Por ejemplo, si se inserta el valor 123314.3147 en una columna INTEGER, el valor insertado sería 123314. El resultado, ahora un número decimal, sería 123314.3147. Esto es una clara incoherencia.

Existe una pequeña diferencia entre los tipos de datos numéricos NUMERIC(p,s) y DECIMAL(p,s) de SQL. NUMERIC determina la precisión y la escala exactas. DECIMAL especifica solo la escala exacta; su precisión es igual o mayor que la especificada por el programador. Además, sea consciente de que muchos de los principales sistemas de gestión de bases de datos tienen representaciones específicas del proveedor para los tipos de datos numéricos (por ejemplo, el tipo de datos NUMBER de Oracle). Los valores permitidos tienen precisión y escala.

La precisión es un número entero que representa el número total de dígitos permitidos en esta columna. Estos dígitos están en una base de tipos numéricos (radix) específica, es decir, binaria (base 2) o decimal (base 10), y suelen conllevar un punto decimal. Cuando inserte datos en una columna NUMERIC, recuerde sus límites de precisión. Si intenta insertar un número demasiado grande, es posible que obtenga un error. Por ejemplo, si se intenta insertar un número como 1234567.89 en un campo NUMERIC(6,2), esto producirá un error. Por el contrario, si insertamos 1234.1123 en un campo NUMERIC(6,2), el segundo intento funciona. Esto se debe a que el RDBMS redondea el número insertado, descartando cualquier dígito "extra" que esté a la derecha del punto decimal. En este caso, se mantiene ".11", pero se descarta el "23" siguiente.

Parámetros de Precisión y Escala para NUMERIC y DECIMAL

Parámetro Descripción
Precisión (p) El número total máximo de dígitos decimales que se almacenarán. Este número incluye los lados derecho e izquierdo del separador decimal. La precisión debe ser un valor comprendido entre 1 y la precisión máxima de 38.
Escala (s) El número de dígitos decimales que se almacenarán a la derecha del separador decimal. Este número se extrae de p para determinar el número máximo de dígitos a la izquierda del separador decimal. La escala debe ser un valor comprendido entre 0 y p, y solo se puede especificar si se especifica la precisión. La escala predeterminada es 0. Por tanto, 0 <= s <= p.

En el caso de los tipos de datos decimal y numeric, SQL Server considera cada combinación de precisión y escala como un tipo de datos distinto. En las instrucciones Transact-SQL, una constante con un separador decimal se convierte automáticamente a un valor de datos numeric con la precisión y escala mínimas necesarias. De forma predeterminada, SQL Server usa el redondeo cuando convierte un número a un valor decimal o numeric con una precisión y una escala inferiores. Por el contrario, si la opción SET ARITHABORT es ON, SQL Server genera un error cuando se produce un desbordamiento. Antes de SQL Server 2016 (13.x), la conversión de valores float a decimal o numeric solo está restringida a valores de precisión de 17 dígitos. Cualquier valor float menor que 5E-18 (cuando se establece mediante la notación científica de 5E-18 o la notación decimal de 0.000000000000000005) redondea hacia abajo a 0.

Supongamos que ahora queremos incluir en la tabla una columna para almacenar el precio de cada alimento. Creamos una columna llamada price. Esta columna tendrá valores numéricos con decimales, por lo que utilizaremos el tipo de datos NUMERIC. Este tipo de datos acepta números decimales con cualquier número de dígitos después del punto decimal. Por ejemplo, se puede utilizar el tipo de datos NUMERIC(6,2) para almacenar precios con una longitud máxima de 6 dígitos, 2 de ellos después del punto decimal. Cualquier valor que se agregue a la columna SALARIO_EMPLEADO se ajustará a las especificaciones del tipo de datos NUMERIC con una precisión de 8 y una escala de 2. Como resultado, el valor puede ser cualquiera desde -999999.99 hasta 999999.99.

Tipos de Datos Numéricos Aproximados

Los tipos de datos numéricos aproximados son FLOAT(p), REAL y DOUBLE PRECISION. Representan números reales, pero no se escriben como números exactos en la base de datos. Más bien, son una aproximación al número real, debido a la forma en que los sistemas informáticos representan los números. Los valores permitidos tienen precisión pero no escala. Como resultado, el punto decimal puede flotar. Un número de punto flotante es aquel que contiene un punto decimal, pero el punto decimal se puede localizar en cualquier lugar dentro del número, por lo que se dice que un numérico aproximado no tiene escala. Los tipos de datos numéricos float y relacionados con float de SQL contienen valores numéricos aproximados. Constan de una cifra significativa (un valor numérico con signo) y un exponente (un valor entero con signo que especifica el orden de magnitud de la cifra significativa). La diferencia entre FLOAT(p) y REAL es que FLOAT tiene una precisión binaria (no decimal) igual o mayor que el valor definido. La precisión predefinida de REAL se basa en la base de datos usada.

En los cálculos, los tipos aproximados pueden dar resultados extraños como 204.000000056, cuando el resultado exacto debería ser 204. Si se está creando una base de datos para una aplicación de ingeniería o científica, los tipos de datos flotantes valdrían. También, hay una diferencia de velocidad; si se está haciendo un número excepcionalmente alto de cálculos complicados (por ejemplo, funciones trigonométricas, etc.), estos serían mucho más rápidos con tipos flotantes que con el resto de tipos de datos numéricos.

Otros Tipos de Datos Relevantes

Tipo de Datos Booleano

El tipo de datos booleano (a diferencia de los tipos de datos de intervalo) es muy sencillo y fácil de aplicar. El tipo de dato respalda una construcción de verdadero/falso que permite solo tres valores: verdadero, falso o desconocido. Supongamos que queremos identificar qué alimentos tienen certificación ecológica. Podemos incluir una columna llamada is_organic_certified del tipo de datos BOOLEAN. Como puede imaginar, el valor TRUE en la columna is_organic_certified indica que el alimento es certificado ecológico.

Tipos de Datos de Fecha y Hora

El tipo de datos de intervalo está estrechamente relacionado con los tipos de datos de fecha y hora. El valor de un tipo de datos de intervalo representa la diferencia entre dos valores de fecha y hora. El tipo de datos de intervalo utiliza la palabra clave INTERVAL seguido por una cláusula de intervalo. No se puede mezclar un tipo de intervalo con los demás. Otro tipo de datos relacionado con la fecha y la hora es INTERVAL, utilizado para representar un periodo de tiempo. El tipo de datos de intervalo especifica intervalos entre años, meses, o ambos (Intervalos de año-mes). El tipo de datos de intervalo especifica intervalos entre cualquiera de los siguientes valores: días, horas, minutos o segundos (Intervalos de día-hora). En este ejemplo, un valor en esa columna incluiría cuatro dígitos para el año, un guión, y luego dos dígitos para el mes, tal como 1999-08.

También se puede usar el tipo de dato DATE para almacenar un único valor de fecha en una tabla SQL. El tipo TIMESTAMP es para almacenar un punto en el tiempo con la fecha y la hora. Supongamos que queremos almacenar no solo la fecha de preparación del alimento, sino también la hora, ya que en algunos casos la hora específica puede ser importante para la caducidad de los alimentos. Cuando almacenamos un nuevo registro en la tabla food, el valor de prepared_at debe seguir un formato como '2022-11-03 11:30:45'. Dicho esto, no necesitamos almacenar los segundos porque ese nivel de detalle no es necesario para la caducidad de los alimentos. Por lo tanto, podemos omitir los segundos y utilizar valores parecidos a '2022-11-03 11:30'.

Cadenas de Caracteres y Binarias

  • Cadenas de caracteres: Los valores permitidos se deben extraer de un conjunto de caracteres, ya sea de un conjunto predeterminado o de un conjunto definido en el momento que la columna se define.

  • Cadenas de carácter nacional: Los valores permitidos son similares a los de las cadenas de caracteres, salvo que el conjunto de caracteres asociados con estos tipos de datos se definen por la aplicación. Como resultado, cuando una cadena de carácter nacional se especifica, los valores asociados con ese tipo de datos deben basarse en el conjunto de caracteres especificado por el sistema de gestión de base de datos relacional (RDBMS) para las cadenas de carácter nacional. Éstas son útiles para almacenar cadenas de caracteres en varios lenguajes en la misma base de datos.

  • Cadenas de bits: Los valores permitidos se basan en bits de datos (dígitos binarios), lo que significa que estos tipos de datos permiten solo valores de 0 o 1.

  • Cadenas binarias: Los valores permitidos son similares a las cadenas de bits, excepto que se basan en bytes (denominado como octetos en SQL:2006), en lugar de bits. Como resultado, ningún conjunto de caracteres se relacionan con ellas. SQL solo respalda un tipo de datos en una cadena binaria: BINARY LARGE OBJECT.

Restricciones y Valores Predeterminados en la Creación de Tablas

Otra característica valiosa que SQL respalda es la habilidad de especificar un valor predeterminado para una columna cuando se utilice la instrucción CREATE TABLE para crear una tabla. La palabra clave DEFAULT le permite configurar un valor predeterminado para una columna. En expr, puede utilizar una expresión o un valor constante. Observe que la columna LUGAR_DE_NACIMIENTO incluye el valor predeterminado ‘Desconocido.’ El valor es aceptable, ya que se ajusta a los requisitos del tipo de datos VARCHAR(60). También observe que el valor predeterminado se encierra en comillas simples. Debe utilizar comillas simples para valores de cadena de caracteres.

Una limitación en una tabla es una regla que restringe qué datos se introducen en la tabla. Al definir una columna como NOT NULL, se selecciona automáticamente la opción de validación No vacío para el campo correspondiente del archivo de base de datos de FileMaker Pro.

Ejemplos Prácticos de Creación de Tablas

Abra la aplicación de clientes de su RDBMS y conecte la base de datos INVENTARIO.

Creación de la tabla DISCOS_COMPACTOS

La primera tabla que se crea es la tabla DISCOS_COMPACTOS. Observe que incluye tres columnas, dos de las cuales tienen un tipo de datos INT y una que tiene un tipo de datos VARCHAR(60). Esta tabla tiene información acerca de los discos compactos en el inventario. La columna ID_DISCO_COMPACTO contiene números que identifican únicamente a cada CD. La columna TITULO_CD contiene los nombres actuales de los CD. La columna ID_DISQUERA contiene números que identifican a las compañías que editan los CD. Verifique que se introdujo la información correcta y ejecute la instrucción.

Creación de la tabla DISQUERAS_CD

La próxima tabla que se crea es la tabla DISQUERAS_CD. La tabla incluye la columna ID_DISQUERA, que identifica únicamente a cada compañía que edita los CD, y la columna NOMBRE_COMPAÑIA, que enumera los nombres actuales de las compañías.

Creación de la tabla TIPOS_MUSICA

La última tabla que se crea es la tabla TIPOS_MUSICA. La tabla incluye la columna ID_TIPO, que identifica únicamente cada categoría de música, y la columna NOMBRE_TIPO, que enumera los nombres actuales de las categorías de música (por ejemplo, blues o jazz). La base de datos ahora contiene tres tablas nuevas. Estas tablas sirven como base para otros ejercicios. A medida que progrese mediante estos ejercicios, podrá modificar esas tablas, crear tablas adicionales, insertar datos en las tablas, y después hacer consultas y manipular esos datos.

Creación de la tabla TIPOS_DISCO_COMPACTO

Cree la siguiente tabla llamada TIPOS_DISCO_COMPACTO. La tabla incluye la columna ID_DISCO_COMPACTO y la columna ID_TIPO. Ambas columnas se asignarán a un tipo de datos INT.

Claves Foráneas (FOREIGN KEY)

Para definir una relación de clave externa, use la cláusula FOREIGN KEY REFERENCES después del tipo de campo. La columna de clave externa debe ser INT, NUMERIC, DECIMAL o VARCHAR, y debe coincidir con el tipo de datos de la columna referenciada. La tabla referenciada ya debe existir, y la columna referenciada debe existir en esa tabla. Con la cláusula FOREIGN KEY REFERENCES, la secuencia CREATE TABLE o ALTER TABLE crea la relación en el gráfico de relaciones de FileMaker.

tags: #create #table #declarar #tipo #de #dato