Galera, iniciei meus estudos em SQL
e estou tentado criar as tabelas no MySql Guery Brownser ,porem ele tá apresentando erro …
Segue o script:
CREATE TABLE CONTRATO (
dtInicio date,
nContrato integer(20) PRIMARY KEY NOT NULL,
nParcelas integer(10),
dtFinal date,
nomeCurso varchar(30),
cpf integer(20)
);
CREATE TABLE ALUNO (
cpf integer(29) PRIMARY KEY NOT NULL,
nome varchar(40)
);
CREATE TABLE CONTAaRECEBER (
valorPago real,
estatus varchar,
cpf integer(29),
nDocumento integer,
codConta integer PRIMARY KEY NOT NULL AUTO_INCREMENT,
FOREIGN KEY(cpf) REFERENCES ALUNO (cpf)
);
CREATE TABLE DOCUMENTO (
nDocumento integer(10) PRIMARY KEY NOT NULL,
tipoDocumento varchar(20),
valor real
);
ALTER TABLE CONTRATO ADD FOREIGN KEY(cpf) REFERENCES ALUNO (cpf)
ALTER TABLE CONTA A RECEBER ADD FOREIGN KEY(nDocumento) REFERENCES DOCUMENTO (nDocumento).
O erro que ele apresenta:
15 You have an error in your SQL syntax: check the manual that corresponds to your MySql server version for the right syntax to use near ’ 1064
cpf integer(29),
nDocumento integer,
codConta integer PRIMARY KEY NOT NULL A’ at line 3
CREATE TABLE CONTRATO (
dtInicio date,
nContrato integer PRIMARY KEY,
nParcelas integer,
dtFinal date,
nomeCurso varchar(30),
cpf integer
);
CREATE TABLE ALUNO (
cpf integer PRIMARY KEY,
nome varchar(40)
);
CREATE TABLE CONTAaRECEBER (
valorPago real,
estatus varchar (50),
cpf integer,
nDocumento integer,
codConta integer AUTO_INCREMENT PRIMARY KEY,
FOREIGN KEY(cpf) REFERENCES ALUNO (cpf)
);
CREATE TABLE DOCUMENTO (
nDocumento integer PRIMARY KEY,
tipoDocumento varchar(20),
valor real
);
Vê esse código ai camarada, é o seguinte:
1 - Cuidado com algumas regras básicas, sei que está começando, mas é bom ir aprendendo… Ex: cpf geralmente não pode ser chave primaria porque se tem um aluno estrangeiro e não tem CPF?
2 - Se é chave primária automaticamente será not null, então nem necessita colocar not null em chave primária.
3 - cuidado com esse limite nos itens integer também, geralmente nem é necessário utilizar, somente em casos bem específicos.
4 - Padroniza mais sua indentação, por exemplo tabela Aluno tem o campo nome, prefira utilizar nomeAluno ou nmAluno e siga esses conceitos para todas as outras, assim você fica sempre sabendo de onde é o campo que você está tratando, porque em grandes tabelas você vai se perder.
Alterações feitas, muito obrigado pelas Dicas!