2
respostas

Tipo Varchar para PK

O professor solicita a criação da coluna para a matrícula (com o dado do tipo numérico), mas solicita do tipo STRING, o que não procede. Então deixo aqui a query pronta para a criação da coluna.

CREATE TABLE TABELA_DE_VENDEDORES(
    MATRICULA INT(5) PRIMARY KEY AUTO_INCREMENT,
    NOME VARCHAR(100),
    PERCENTUAL_COMISSAO FLOAT
);

A menos que sanem esse ponto por meio das respostas, ficarei grato.

2 respostas

Acredito que a MATRÍCULA possa ter valores nulos à esquerda, como "00125" e, nesse caso, o VARCHAR seria mais adequado, Se quiser dá pra continuar com INT(5), mas vai ter que colocar a propriedade ZEROFILL, pra preencher com zeros, assim:

CREATE TABLE TABELA_DE_VENDEDORES (numero INT(5) ZEROFILL);

Mas, fora isso, acredito que não faça nenhuma diferença

O ZEROFILL é aplicado apenas para o MySQL, o que não vem ao caso.

Se for para criar uma coluna de CHAR que aceite apenas os caracteres numéricos, então deveria incluir CONSTRAINT para essa tabela, o que não é mencionado pelo professor, como o exemplo abaixo:

CREATE TABLE TABELA_DE_VENDEDORES(
    MATRICULA CHAR(5),
    NOME VARCHAR(100),
    PERCENTUAL_COMISSAO FLOAT
);

ALTER TABLE TABELA_DE_VENDEDORES ADD CONSTRAINT PK_TABELA_DE_VENDEDORES
PRIMARY KEY (MATRICULA);
ALTER TABLE TABELA_DE_VENDEDORES ADD CONSTRAINT MATRICULA
CHECK (REGEXP_LIKE(MATRICULA, '^\d+(\.\d+)*$'));

Com isso, os dados da matrícula devem ser preenchidos de uma maneira que contenha 5 caracteres numéricos.