Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Tipos De Datos En Gestores De Base De Datos
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Tipos De Datos En Gestores De Base De Datos 
 
Buenos días!.

Ayer recibí el libro de bases de datos. Parece que usa MySQL. Aunque realmente los ejercicios se tratan todos online en una consola.
No se complica por ahora con la instalación de un gestor de base de datos y la creación de una tabla. Que es lo que haría la mayoría
de los manuales.

Como no me gusta "exclusivamente" depender de la página online. Creo los ejemplos en Python, aunque no es difícil de hacerlo en Gambas.
Al final me voy a dedicar a estudiarlo para los dos.

Pues bien, aunque el libro supuestamente usa MySQL, estoy creando los ejemplos en Sqlite. Para las consultas aparentemente da igual.
Creando la tabla si he visto cosas que no había visto hasta ahora en el poco tiempo que llevo practicando.

He creado una tabla "empleados" de la siguiente forma: (No aparenta aun, todavía que use un campo de auto incremento para el campo clave.)

CREATE TABLE empleados(
        ID_EMPLEADO int(10) NOT NULL,
        NOMBRE varchar(30) NOT NULL,
        APELLIDOS varchar(50) NOT NULL,
        F_NACIMIENTO date NOT NULL,
        SEXO varchar(1) NOT NULL,
        CARGO varchar(30) NOT NULL,
        SALARIO float NOT NULL,
        PRIMARY KEY(ID_EMPLEADO))
 


Como veis ha usado mayúsculas para los nombres de los campos. La sintaxis que usa es comandos en minúsculas y nombre de campos en mayúsculas.

Bien, yo no había usado int(10) en Sqlite, parece algo de MySQL, tiene que ver con el formato del número y no con su tamaño.
De varchar nada que comentar. En cuanto al tipo fecha, date. Observo que va aaaammdd, que es una cadena de texto.

Eso me ha funcionado para Sqlite3. He creado varias consultas y perfecto. Aun así. Os voy a mostrar una captura de la tabla empleados
que se muestra en la web.

Con el comando "desc empleados" me muestra toda la tabla, de esta forma:

 capturatablaempleados

Ahora mirar, palabras como UNSIGNED (sin signo). Según el autor que esto permite aumentar el rango de los número positivos en detrimento de los negativos,
de modo que el valor mínimo es en el caso definido como UNSIGNED es cero y el número mayor posible a almacenar es el doble de grande que un campo
número con signo, que si permite números negativos. Al no necesitar números negativos se desplaza el rango de valores para tener más números positivos disponibles.

Parece que no puedo hacer esto en Sqlite3:

CREATE TABLE empleados(
        ID_EMPLEADO int(10) UNSIGNED NOT NULL
....
 


Ya que puede responder con error tal como este:

Citar:

sqlite3.OperationalError: near "UNSIGNED": syntax error


(Ya veo, parece que va antes de int. ). Lo estaba escribiendo como lo veía en la tabla de la web.

...
ID_EMPLEADO unsigned int(10) NOT NULL
...
 


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por jguardon el Sabado, 25 Junio 2016, 18:18; editado 2 veces 
Editado por jguardon, Sabado, 25 Junio 2016, 18:18: el nombre de la sintaxis debe ir en minúsculas
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Tipos De Datos En Gestores De Base De Datos 
 
Sobre tipos de datos, no compares muy exhaustivamente las dos bases de datos, como te he dicho algunas veces SQLite es algo especial.
Te traduzco ésto de su manual:

Citar:
La mayoría de los motores de base de datos SQL (todos los motores de base de datos SQL que no sea SQLite, por lo que sabemos) utilizan tipos estáticos, rígidos. Con tipos estáticos, el tipo de datos de un valor se determina por su contenedor - la columna particular en el que se almacena el valor.

SQLite utiliza un sistema más general de tipo dinámico. En SQLite, el tipo de datos de un valor se asocia con el valor en sí, no con su contenedor. El sistema de tipo dinámico de SQLite es compatible con los sistemas de tipo estático más comunes de otros motores de bases de datos en el sentido de que las declaraciones SQL que trabajan en las bases de datos de tipos estáticos debería funcionar de la misma manera en SQLite. Sin embargo, el tipo dinámico en SQLite le permite hacer cosas que no son posibles en las bases de datos tradicionales con tipos rígidos.

Cada valor almacenado en una base de datos SQLite (o manipulada por el motor de base de datos) tiene una de las siguientes clases de almacenamiento:

    NULL. El valor es un valor nulo.

    INTEGER. El valor es un entero con signo, almacena en 1, 2, 3, 4, 6, u 8 bytes dependiendo de la magnitud del valor.

    REAL. El valor es un valor de punto flotante, se almacena como un número de coma flotante de 8 bytes IEEE.

    TEXT. El valor es una cadena de texto, almacenados utilizando la codificación de la base de datos (UTF-8, UTF-16BE o UTF-16LE).

    BLOB. El valor es una masa de datos, almacenados exactamente como era de entrada.

Tenga en cuenta que una clase de almacenamiento es ligeramente más general que un tipo de datos. La clase de almacenamiento INTEGER, por ejemplo, incluye 6 diferentes tipos de datos enteros de diferentes longitudes. Esto marca una diferencia en el disco. Pero tan pronto como valores enteros se leen fuera del disco y en la memoria para su procesamiento, se convierten al tipo de datos más general (8 bytes entero con signo). Y así, en su mayor parte, "clase de almacenamiento" es indistinguible de "tipo de datos" y los dos términos se pueden utilizar indistintamente.

Cualquier columna en una base de datos SQLite versión 3, excepto un INTEGER columna de clave principal, se puede utilizar para almacenar un valor de cualquier clase de almacenamiento.

Todos los valores de los comandos SQL, ya sean literales incorporados en el texto SQL o parámetros unidos a las sentencias SQL precompilados tienen una clase de almacenamiento implícita. En circunstancias descritas a continuación, el motor de base de datos puede convertir los valores numéricos entre las clases de almacenamiento (entero y real) y TEXT durante la ejecución de la consulta...

... Con el fin de maximizar la compatibilidad entre SQLite y otros motores de bases de datos, SQLite apoya el concepto de "tipo de afinidad" en columnas. El tipo de afinidad de una columna es el tipo recomendado para los datos almacenados en esa columna. La idea importante aquí es que se recomienda el tipo, no se requiere. Cualquier columna todavía puede almacenar cualquier tipo de datos. Es sólo que algunas columnas, dada la opción, prefieren utilizar una clase de almacenamiento sobre otro. La clase de almacenamiento preferido para una columna se denomina su "afinidad".


Las cursivas son mías, claro.

Hablando de Bases de Datos, hay que diferenciar el lenguaje de consulta (SQL) con el lenguaje de definición de datos, que es propio de cada BD. El importante, en mi opinión, es el primero, que es el que vas a usar todos los días en todos los programas y lenguajes que uses. El otro creación de bases, de tablas, modificación de estructuras, etc. etc. sólo se suele utilizar al inicio, cuando defines la BD y, al menos yo lo hago así, se suele utilizar herramientas concretas e independientes para ello (phpmyAdmin para mysql y Sqliteman para SQLite).

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Tipos De Datos En Gestores De Base De Datos 
 
Vaya panzada que te has dado de traducir.  

Citar:

En SQLite, el tipo de datos de un valor se asocia con el valor en sí, no con su contenedor.


¿ Puedes explicar eso ?.  

Citar:

Sin embargo, el tipo dinámico en SQLite le permite hacer cosas que no son posibles en las bases de datos tradicionales con tipos rígidos.


Vaya. Y luego no se le da la suficiente importancia a SQLite.

Citar:

...8 bytes entero con signo


Ah, de ahí viene lo de con signo y sin signo. Al final va a todo sobre el binario.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Pasar Todos Los Datos De Un Table View A U... alan Instalación 7 Domingo, 27 Febrero 2011, 23:48 Ver último mensaje
alan
No hay nuevos mensajes Se Puede En Una Grilla Mostrar Los Datos D... metalgearxd General 5 Jueves, 28 Febrero 2013, 20:54 Ver último mensaje
shordi
No hay nuevos mensajes Como Puedo Modificar Datos De La Base De D... metalgearxd General 2 Viernes, 01 Marzo 2013, 13:40 Ver último mensaje
metalgearxd
No hay nuevos mensajes Tipos De Datos. Constantes Shell General 3 Domingo, 31 May 2015, 19:37 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron