Dúvida na criação de tabela MYSQL

souto

To fold or to FOLD?
Vivam,

Tenho uma pequena dúvida, que os mais entendidos em bases de dados saberão com certeza esclarecer.
Tenho uma tabela na qual preciso de ter um campo para guardar um preço, em €.
Que tipos me sugerem para esse campo? Gostava de ter um campo que depois me facilitasse a inserção e me permitisse fazer contas facilmente. Estou a usar PHP.

Obrigado pela atenção e cumprimentos.
 
double ou float. Tu não vais guardar a moeda, não faz sentido.. guardas o valor e depois apresentas o simbolo do euro a frente :P. É so fazer contas nesses valores e o resto são historias :)
 
Boas, não aconselho a utilização do tipo DOUBLE ou FLOAT para representar valores monetários em MySQL porque estes tipos arredondam os valores. Utiliza o tipo NUMERIC ou DECIMAL (são o mesmo).

Podes consultar a sintaxe aqui.
 
Obrigado pelas respostas, que me ajudaram bastante.
Tenho outra dúvida no entanto. Imaginem que tenho uma variável que recebo dum post... Que tem o valor 5,2. Como é que eu insiro este valor para um campo do tipo DECIMAL ? Só preciso da sintaxe SQL.

Cumprimentos.
 
Boas, segue um exemplo:

Código:
CREATE TABLE empregado (
  id_empregado INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  salario DECIMAL(12,2) NOT NULL,
  PRIMARY KEY(id_empregado)
);
 
INSERT INTO empregado(salario) VALUES('2000.20');

Aproveito também para dizer que é preciso ter cuidado ao definir a precisão (número de digitos significativos guardados) de uma coluna DECIMAL devido ao facto de o PHP ter um parâmetro que pode 'limitar' essa precisão.
Por exemplo, ao guardares o valor 123456789123456.00 numa variável em PHP, se o paramêtro precision do PHP estiver com o valor 14, o valor guardado vai ser 123456789123450.00.
Para resolver este problema, podes verificar o parâmetro precision no ficheiro php.ini (penso que o valor por defeito é de 14 digitos significativos) e alterá-lo, caso seja necessário, para um valor maior ou igual ao definido na coluna do tipo DECIMAL.
 
Boas, segue um exemplo:

Código:
CREATE TABLE empregado (
  id_empregado INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  salario DECIMAL(12,2) NOT NULL,
  PRIMARY KEY(id_empregado)
);
 
INSERT INTO empregado(salario) VALUES('2000.20');

Aproveito também para dizer que é preciso ter cuidado ao definir a precisão (número de digitos significativos guardados) de uma coluna DECIMAL devido ao facto de o PHP ter um parâmetro que pode 'limitar' essa precisão.
Por exemplo, ao guardares o valor 123456789123456.00 numa variável em PHP, se o paramêtro precision do PHP estiver com o valor 14, o valor guardado vai ser 123456789123450.00.
Para resolver este problema, podes verificar o parâmetro precision no ficheiro php.ini (penso que o valor por defeito é de 14 digitos significativos) e alterá-lo, caso seja necessário, para um valor maior ou igual ao definido na coluna do tipo DECIMAL.

:lol: ninguém ganha tanto por lá.

Obrigado pela ajuda preciosa.

Cumprimentos.
 
Back
Topo