Pplware

Vamos dar uns toques de SQL? VIII

Por Pedro Gaspar para o PPLWARE

Nas semanas anteriores temos aprendido a obter registos através de linguagem SQL, mas ate ao momento ainda não se falou de como alterar esses mesmos registos. Esta semana vamos aprender a fazer uma tabela recorrendo ao SQL e vamos também aprender um pouco sobre os campos mais usuais neste mundo.

Sintaxe de criação de tabela:

CREATE TABLE  nome_tabela (
nome_campo  tipo(tamanho) [NULL/NOT NULL] ,
nome_campo2  tipo(tamanho) [NULL/NOT NULL] ,
nome_campo3 tipo [NULL/NOT NULL] ,
)
Tipo de campos existentes

Muito bem, temos trabalhado ate ao momento com a tabela tbl_pplware que tem os seguintes dados:

Supondo que temos uma empresa e que esta tabela representa os funcionários da nossa empresa vamos querer agora registar as horas que os mesmos trabalham, se fazem a alimentação deles dentro da empresa ou por conta própria, se fizeram o turno de manha, tarde ou noite e ainda deixar um campo para que possamos deixar uma nota Vamos começar por criar o nosso campo id que será a nossa chave primaria, ou seja, o indica irá ser feito nesse campo, irá ser um campo numérico e tamanho máximo 9 e de incrementação automática.

Campo id

`id` INT( 9 ) NOT NULL AUTO_INCREMENT PRIMARY KEY

Iremos precisar de criar tambem um campo que nos permita ligar à outra tabela (atravez do campo id_pessoa), vamos utilizar um campo INT novamente com o nome id_p

Campo id_p

`id_p` INT( 9 ) NOT NULL

No fim de termos o nosso campo de indexação iremos criar os campos de data e hora onde precisaremos de dois, um para registar a hora de entrada do funcionário e outro para registar a hora de saída, serão campos DATETIME e não poderão ser de valor nulo.

Campos de entrada e saída:

`data_entrada` DATETIME NOT NULL ,
`data_saida` DATETIME NOT NULL

De seguida precisamos do nosso campo para registar que turno foi feito, para este vamos usar um campo tipo ENUM, no campo ENUM defenimos que valores o campo irá aceitar, e ele só aceitará esses

Campo turno:

`turno` ENUM( 'manha', 'tarde', 'noite' ) NOT NULL

Nota, se pretendesse-mos que ficasse um valor por defeito caso não seja indicado nenhum valor ao inserir também o poderemos fazer

Exemplo:

`turno` ENUM( 'manha', 'tarde', 'noite' ) NOT NULL DEFAULT 'manha'

No campo de alimentação iremos utilizar campo tipo BOOL (verdadeiro ou valso), neste campo só poderemos inserir valores 0 ou 1 (TRUE ou FALSE)

Campo alimentação:

`alimentacao` BOOL NOT NULL

E por fim o campo onde iremos deixar alguma nota caso seja necessário, para isso iremos usar uma campo VARCHAR com tamanho máximo de 250 valores, alem disso vamos dizer que o campo pode ser nulo, pois nem sempre será necessário deixar uma nota.

Campo nota:

`nota` VARCHAR( 250 ) NULL

Resultado final:

CREATE TABLE `pplware`.`horas` (

`id` INT( 9 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`id_p` INT( 9 ) NOT NULL ,

`data_entrada` DATETIME NOT NULL ,

`data_saida` DATETIME NOT NULL ,

`turno` ENUM( 'manha', 'tarde', 'noite' ) NOT NULL ,

`alimentacao` BOOL NOT NULL ,

`nota` VARCHAR( 250 ) NOT NULL

)

E com isto cria-mos a nossa tabela, vou adicionar alguns registos para ficar-mos com alguns dados para a próxima semana:

INSERT INTO horas( id_p, data_entrada, data_saida, turno, alimentacao, nota ) VALUES
( 1, '2011-07-14 08:00:00', '2011-07-14 12:00:00', 'manha', 1, NULL ) ,
( 2, '2011-07-14 08:00:00', '2011-07-14 12:00:00', 'manha', 0, NULL ) ,
( 3, '2011-07-14 13:00:00', '2011-07-14 16:00:00', 'tarde', 1, NULL ) ,
(4, '2011-07-14 13:00:00', '2011-07-14 16:00:00', 'tarde', FALSE, NULL ) ,
( 5, '2011-07-14 16:00:00', '2011-07-14 20:00:00', 'tarde', FALSE, NULL ) ,
( 6, '2011-07-14 22:00:00', '2011-07-15 02:00:00', 'noite', TRUE, NULL ) ,
( 7, '2011-07-14 22:00:00', '2011-07-15 02:00:00', 'noite', TRUE, NULL ) ,
( 8, '2011-07-14 02:00:00', '2011-07-15 06:00:00', 'noite', FALSE, NULL ) ,
( 9, '2011-07-14 02:00:00', '2011-07-15 06:00:00', 'noite', FALSE,'adormeceu durante a hora de trabalho' )

Resultado final da nossa tabela:

Desafio da semana

Gostava que me deixassem queries de inserção nos comentários para eu adicionar mais registos a tabela

Exit mobile version