[Tool/Web/Other] Erros comuns MySQL
#1

Estive olhando postagens no fуrum/discord sobre o uso de MySQL no SA-MP e percebi que muitos programadores cometem erros ao utilizar a linguagem SQL e o plugin MySQL do BlueG, entгo resolvi fazer este tutorial com os erros mais comuns cometidos pelos membros tanto na linguagem SQL quando no uso do plugin.
Caso vocк saiba de alguma outra gafe cometida pelos membros e queira adicionar ao tуpico, comente ou me mande MP que adiciono ao tуpico.

Bom vamos lб:
  • Deletar toda tabela quando cria uma coluna errada

    Este й o erro mais comum pelo que percebi entre os membros do fуrum, muitas vezes quando querem adicionar uma coluna ou alterar uma coluna, deletam toda tabela e a recriam novamente, alйm de ser trabalhoso vocк perde todos os dados da tabela, para isso utiliza a instruзгo ALTER TABLE, veja um exemplo:

    Para adicionar uma coluna na tabela utiliza-se a instruзгo:
    PHP код:
    ALTER TABLE tabela ADD coluna TIPODEDADO 
    por exemplo:
    PHP код:
    ALTER TABLE jogadores ADD dinheiro INT(11) DEFAULT '0' 
    Para excluir apenas uma coluna da tabela:
    PHP код:
    ALTER TABLE tabela DROP COLUMN coluna
    exemplo:
    PHP код:
    ALTER TABLE jogadores DROP COLUMN dinheiro
  • Tipo de dado ao ler o cache

    Vejo muitos tуpicos de pessoa pedindo ajuda para ler os dados do banco, que fazer o cуdigo porйm nгo funciona, porйm apenas nгo percebem que cada tipo de dado tem sua respectiva funзгo, por exemplo:
    Eu costumo identificar as colunas pelo seu nome, ou seja, uso as funзхes:

    cache_get_value_name para string
    PHP код:
    new dest[128];
    cache_get_value_name(0"none"dest);
    printf("The O valor na coluna 'nome' й '%s'."dest); 
    cache_get_value_name_int para inteiros
    PHP код:
    new int_dest;
    cache_get_value_name_int(2"dinheiro"int_dest);
    printf("O valor da terceira linha da coluna 'dinheiro' й '%d'."int_dest); 
    cache_get_value_name_float para floats
    PHP код:
    new Float:float_dest;
    cache_get_value_name_float(3"pos_x"float_dest);
    printf("O valor da quarta linha da coluna 'pos_x' й '%f'."float_dest); 
    exemplos por: wiki samp
  • Colunas com nome em sequencia

    PHP код:
    CREATE TABLE tabela (
    id INT(11PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(24NOT NULL,
    carro_1 INT(11),
    carro_2 INT(11),
    carro_3 INT(11),
    ...
    carro_n INT(11)); 
    Quase todos que conheзo do fуrum fazem isso, alguns por ter aprendido assim, outros por costume
    O MySQL й um SGBD Relacional, ou seja, ele tem relaзхes, vocк deve relacionar as tabelas, criar colunas em sequencias da trabalho para usar, para manutenзгo, legibilidade, etc...

    Exemplo de tabelas relacionadas:
    PHP код:
    CREATE TABLE jogador
    id INT(11PRIMARY KEY AUTO_INCREMENT
    nome VARCHAR(24NOT NULL
    // outras colunas da tabela, nenhuma sendo a chave do carro
    );
    CREATE TABLE carro
    id INT(11PRIMARY KEY AUTO_INCREMENT
    dono INT(4NOT NULL// aqui esta o relacionamento, este serб o ID do dono do veiculo, 
    FOREIGN KEY (donoREFERENCES jogador(idON DELETE CASCADE); 
    para mais informaзхes acesse esse tutorial
Estes sгo os "erros" que mais encontrei no tempo que estive observando tуpicos e conversas sobre SQL, com o tempo vou adicionando mais conteъdo ao tуpico

Links recomendandos:
w3schools
wiki sa-mp
Junзхes
Modelagem de dados
Reply
#2

Muito bom Mano.
Reply
#3

Bom tutorial, acho que vocк poderia comentar tambйm a questгo do SQL Injection; nгo й exatamente um erro do programador mas acho que merecia lugar em seu tуpico tambйm. Poderia citar exemplos de onde ele mais pode ocorrer, etc.
Reply
#4

Muito bom.
Reply
#5

Bom tutorial para quem estб iniciando estudos em MySQL
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)