Você está aqui: MySQL ::: Dicas & Truques ::: Atributos (Attributes)

Usando o atributo NULL na definição dos campos de suas tabelas MySQL

Quantidade de visualizações: 10994 vezes
O atributo NULL do MySQL é usado quando queremos criar campos que podem não conter nenhum valor em um determinado momento, ou seja, podem ser deixados em branco. Note que NULL significa ausência de valor. Desta forma, é importante ter em mente que o valor 0 (zero) e uma string vazia são diferentes de NULL.

Veja um comando DDL CREATE TABLE usado para criar uma tabela chamada usuarios:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

CREATE TABLE  usuarios(
  id INT NOT NULL AUTO_INCREMENT,
  usuario VARCHAR(30) NOT NULL,
  senha VARCHAR(10) DEFAULT NULL,
  email VARCHAR(150) DEFAULT NULL,
  PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

Veja que aqui o campo id é do tipo INT, não aceita NULL e é auto-incremento. O campo usuario também não aceita NULL, enquanto os campos senha e email o permitem. Observe agora a seguinte instrução SQL INSERT INTO:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

INSERT INTO usuarios VALUES(NULL, 'osmar', NULL, NULL);

Esta instrução é executada sem qualquer problema. Embora o campo id seja NOT NULL, ele é auto-incremento. Desta forma, ao fornecermos o valor NULL, o MySQL se encarrega de inserir o próximo valor de auto-incremento. Note como fornecemos NULL para os valores dos campos senha e email para indicar que o preenchimento de tais campos é opcional ou deverá ser realizado em etapas posteriores.

Link para compartilhar na Internet ou com seus amigos:

MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial

Como excluir a chave primária de uma tabela MySQL usando o comando ALTER TABLE DROP PRIMARY KEY

Quantidade de visualizações: 9249 vezes
Em algumas situações, talvez com o propósito de realizar uma manutenção em um determinado banco de dados MySQL, nós precisamos remover a chave primária de uma tabela. Para isso podemos usar o comando DDL ALTER TABLE DROP PRIMARY KEY. Comece analisando a seguinte tabela "livros":

Field     Type                Null     Key    Default    Extra       
id        int(10) unsigned    NO       PRI    -          auto_increment       
titulo    varchar(45)         NO              -                   
paginas   int(10) unsigned    NO              -
Veja que o campo id é do tipo int, auto-incremento e foi marcado como chave primária da tabela. Assim, se por alguma razão quisermos remover esta chave primária, basta dispararmos o comando ALTER TABLE DROP PRIMARY KEY nesta tabela. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

ALTER TABLE livros DROP PRIMARY KEY;

Sei. O comando não funcionou como esperávamos. O MySQL nos mostrou a seguinte mensagem de erro:

Error 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key.

Este erro nos informa de que uma tabela MySQL só pode ter uma coluna auto-incremento, e esta deve, obrigatoriamente, ser marcada como chave primária. Assim, precisamos remover o atributo auto-incrememento antes. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

ALTER TABLE livros MODIFY id INT NOT NULL;

Pronto. Agora que já retiramos o auto-incremento do campo, o comando ALTER TABLE DROP PRIMARY KEY já pode ser disparado novamente.

Você deverá ter um cuidado especial se o campo que você vai remover o auto-incremento e chave primária estiver sendo referenciado como chave estrangeira em outra(s) tabela(s). Analise estas situações antes. É próvável que o MySQL exiba um monte de mensagens de erro até você descobrir a causa da falha do comando ALTER TABLE DROP PRIMARY KEY.


MySQL ::: Dicas & Truques ::: Tipos de Dados

Como usar o tipo de dados TINYINT do MySQL

Quantidade de visualizações: 20727 vezes
O tipo de dados TINYINT do MySQL é usado quando precisamos armazenar valores inteiros que se encaixem na faixa de -128 a 127. Este tipo ocupa 1 byte de espaço (8 bits).

Veja um trecho de código no qual criamos uma tabela MySQL chamada produtos contendo três campos:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

CREATE TABLE produtos(
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  categoria TINYINT UNSIGNED NOT NULL,
  nome` VARCHAR(45) NOT NULL,
  PRIMARY KEY(id)
)
ENGINE = InnoDB;


Aqui nós usamos o tipo TINYINT para a categoria do produto. Isso quer dizer que poderemos ter no máximo 127 categorias diferentes no sistema. Mas, note o uso do modificador UNSIGNED após o nome do tipo de dados. Este modificador faz com que o valor seja somente positivo, o que altera a faixa de valores positivos para 0 até 255. Valores negativos não serão permitidos.

Veja agora uma instrução SQL INSERT que insere um novo produto na tabela recém-criada:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

INSERT INTO produtos VALUES(null, 23, 'CAMISETA REGATA AX');

Se o valor fornecido para a categoria estiver fora da faixa permitida para um TINYINT você verá a seguinte mensagem de erro:

Out of range value adjusted for column 'categoria' at row 1 (Erro: 1264)

Vamos verificar o comportamento deste tipo de dados em uma função MySQL? Veja o código que cria uma função somar():

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

DELIMITER $$

DROP FUNCTION IF EXISTS somar $$
CREATE FUNCTION somar(a TINYINT, b TINYINT) RETURNS TINYINT
BEGIN
  RETURN a + b;
END $$

DELIMITER ;

Veja que os parâmetros e o retorno da função são do tipo TINYINT. Eis uma demonstração de como chamá-la:

SELECT somar(4, 3) AS soma;

Experimente fornecer valores que, quando somados, excedam a capacidade de um TINYINT e observe o comportamento da função.

Para finalizar, note que é comum informarmos o tipo TINYINT com um valor inteiro em parênteses, por exemplo, TINYINT(2). Este número nos parênteses não interfere em nada nos valores a serem armazenados. Ele é usado para controlar a largura do campo na exibição do valor nos resultados de uma query SELECT ou como um lembrete da quantidade de dígitos a serem usados no campo.


MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial

Como criar chaves estrangeiras no MySQL - Como criar Foreign Keys em tabelas do MySQL

Quantidade de visualizações: 89020 vezes
O que é chave estrangeira (foreign key)?

O papel da chave estrangeira é manter uma referência a um registro presente em outra tabela. Imagine o seguinte cenário. Temos uma tabela livros e uma tabela autores. Neste cenário, um autor pode escrever vários livros e um livro pode ser escrito somente por um determinado autor. Aqui temos uma relação 1:N, ou seja, um para muitos: um autor pode escrever zero, um ou vários livros.

Comece analisando a tabela autores:

Field    Type               Null   Key    Default   Extra    
id       int(10) unsigned   NO     PRI    -         auto_increment    
nome     varchar(45)        NO            -                
email    varchar(45)        NO            -                
Como podemos ver, esta tabela possui três campos: id, nome e email. O campo id é do tipo int, auto-incremento e é a chave primária da tabela (não poderá haver ids repetidos nem o valor NULL). Esta tabela foi criada com o seguinte comando DDL CREATE TABLE:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

CREATE TABLE autores(
  id int(10) unsigned NOT NULL auto_increment,
  nome varchar(45) NOT NULL,
  email varchar(45) NOT NULL,
  PRIMARY KEY(id)
)ENGINE=InnoDB;

Analise agora a tabela livros:

Field      Type                Null    Key    Default    Extra    
id         int(10) unsigned    NO      PRI    -          auto_increment    
titulo     varchar(45)         NO             -               
paginas    int(10) unsigned    NO             -               
id_autor   int(10) unsigned    NO             -               
Note que esta tabela possui os campos id, titulo, paginas e id_autor. Veja o comando DDL CREATE TABLE usado para sua criação:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

CREATE TABLE livros(
  id INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT,
  titulo VARCHAR(45) NOT NULL,
  paginas INTEGER UNSIGNED NOT NULL,
  id_autor INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY(id)
)ENGINE = InnoDB;

O campo id é do tipo int, auto-incremento e foi marcado como chave primária. Dessa forma, o campo id identifica unicamente cada livro. O campo id_autor é do tipo int e sua função é guardar o id do autor que escreveu um determinado livro. Ao trazer o valor do campo id da tabela autores para o campo id_autor da tabela livros nós estamos relacionando as duas tabelas. O campo id_autor, neste cenário, é a chave estrangeira, pois seu valor sempre refletirá o valor do campo id da tabela autores (a única exceção é quando queremos deixar, temporariamente, um livro sem autor). Lembre-se, em uma relação 1:N, a chave estrangeira, em geral, ficará no lado N da relação.

Integridade Referencial (Restrições de Chave Estrangeira) - Referential Integrity (Foreign Key Constraints)

Imagine agora que você inseriu alguns registros na tabela autores e na tabela livros. Todas as vezes que o valor do campo id_autor na tabela livros for igual ao valor do campo id na tabela autores nós estaremos criando um relação autor-livro. É possível, a qualquer momento, listar um livro e saber de imediato o id do seu autor (isso permite fazer um join com a tabela autores para obter os dados do respectivo autor).

Mas, o que acontecerá se excluirmos um registro na tabela autores e, mais tarde, descobrirmos que o campo id_autor da tabela livros guardava uma referência para o autor excluído? Teremos a quebra da integridade referencial. Para evitar tais situações, é responsabilidade do programador escrever códigos de verificações para prevenir estas ocorrências.

Os bancos de dados, e principalmente o MySQL, possuem mecanismos para reforçar esta proteção: restrições de chave estrangeira. As restrições de chave estrangeira asseguram duas situações possíveis:

1) Não permitir que um autor seja excluído quando qualquer livro possuir uma referência a ele;

2) Se o autor for excluído, todos os livros que o referenciam também o serão.

Definindo a chave estrangeira na tabela livros usando o atributo CONSTRAINT FOREIGN KEY REFERENCES

Vamos agora reescrever o comando DDL CREATE TABLE para a tabela livros de forma a aplicar as restrições de chaves estrangeiras. Veja a nova versão:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

CREATE TABLE livros(
  id INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT,
  titulo VARCHAR(45) NOT NULL,
  paginas INTEGER UNSIGNED NOT NULL,
  id_autor INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY(id),
  CONSTRAINT livros_autores FOREIGN KEY(id_autor) REFERENCES autores(id)
)ENGINE = InnoDB;

A estrutura da tabela livros será alterada para aquela mostrada abaixo:

Field      Type                Null   Key    Default    Extra    
id         int(10) unsigned    NO     PRI    -          auto_increment    
titulo     varchar(45)         NO            -              
paginas    int(10) unsigned    NO            -                
id_autor   int(10) unsigned    NO     MUL    -
Veja que agora o campo id_autor foi sinalizado como MUL, ou seja, parte de um índice não único. Experimente agora inserir dados em ambas as tabelas e faça relacionamentos entre autores e livros. Tente excluir um autor que tenha um livro relacionado a ele. Imediatamente o MySQL abortará a operação com a seguinte mensagem de erro:

ErrorNr. 1451: Cannot delete or update a parent row: a foreign key constraint fails (`estudos/livros`, CONSTRAINT `livros_autores` FOREIGN KEY (`id_autor`) REFERENCES `autores` (`id`))

Em mais dicas desta seção você aprenderá a usar as cláusulas ON DELETE e ON UPDATE e as ações RESTRICT, SET NULL, CASCADE e NO ACTION. Todas estas cláusulas e ações são usadas para reforçar a integridade referencial de suas bases de dados.


Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

var a = new Array();
var b = new Array();
a[1] = 3;
b[2] = 5;
a = b;

Quais valores estão contidos em a[1] e a[2] depois da execução deste código?

A) a[1] é 3 e a[2] é 5.

B) a[1] é indefinido e a[2] é 5.

C) ambos a[1] e a[2] são indefinidos.

D) A execução deste código provoca um erro.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Introdução à Ética

Como e por que julgamos que uma ação é correta ou não? Quais os critérios que devem ser utilizados para tal? Várias respostas são, hoje, dadas a essas perguntas.

Podemos afirmar que a ação correta é aquela que:

A) Considera a felicidade dos grupos prevalecentes, como as elites.

B) É praticada por um agente inerentemente bom e sem influência social

C) Está de acordo com regras próprias de grupos minoritários com interesses duvidosos.

D) É considerada a melhor ação pela subjetividade do sujeito em suas reflexões.

E) É aquela que está adequada às leis, regras e normas legais do Estado.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil dos prepostos e preponentes

É definido como a pessoa que responde pelos atos da atividade empresária e normalmente pode também ser identificado como o patrão, empregador ou dono do negócio. Assinale a alternativa que corresponde a esta definição.

A) Preposto.

B) Gerente.

C) Preponente.

D) Contabilista.

E) Advogado.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil no código de defesa do consumidor

A Constituição Federal brasileira confere à defesa do consumidor garantia de:

A) ordem social.

B) direitos e garantias fundamentais.

C) direitos políticos.

D) princípio fundamental.

E) direito de nacionalidade.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em AutoCAD Civil 3D

Survey Points e COGO Points

Em relação aos Survey Points e COGO Points, qual das afirmações abaixo é VERDADEIRA?

A) Survey points podem ser editados na janela Properties.

B) Cogo points são exibidos na aba Settings.

C) Survey points são exibidos tanto na aba Prospector quanto na aba Survey.

D) Survey points são exibidos somente na aba Prospector.

E) Cogo points são exibidos apenas na aba Survey.
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de MySQL

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 50 usuários muito felizes estudando em nosso site.