MySQL

Download Descrição
MySQL para 1 banco de dados Código fonte do Banco de dados MySQL
MySQL para mais de 1 banco de dados Código fonte do Banco de dados MySQL

 

Banco de Dados
Criar Banco de dados
Pesquisar
Inserir
Alterar
Excluir
Listar
Localizar

Banco de dados

Existem 2 tipos de bancos de dados:

Trabalhar com um único arquivo de banco de dados é mais fácil do que trabalhar com mais de um arquivo de banco de dados. A 2ª opção exige muito trabalho do programador, um banco de dados mal projetado prejudica o trabalho de uma equipe inteira, porém, um banco de dados bem projetado facilita a vida de todos.

Iremos ensinar como criar um banco de dados do mais simples (um único arquivo) ao mais complexo (com mais de um arquivo).

Banco de dados com um único arquivo

Um exemplo de banco de dados é uma Agenda telefônica nesta agenda tem os seguintes campos:

Nesta agenda tem os seguintes dados, veja tabela abaixo:

Nome

Idade

Profissão

Endereço

Telefone

E-mail

João Torres

29

Agricultor

Rua Venancio Barbosa 51

3480-9351

joaotorres@webmail.com

Maria Teresa

15

Estudante

Rua Venancio Barbosa 35

4686-2233

mariateresa@webmail.com

Flavia Antônia

39

Professora

Rua Vasco da Gama 85

7287-9324

flaviaantonia@webmail.com

Tiago Pereira

18

Desenhista

Rua Antônio Gonçalo 25

2867-2368

tiagopereira@webmail.com

Mateus Francisco

11

Estudante

Rua Gonçalo de Magalhães 38

7987-1155

mateusfrancisco@webmail.com

Igor Gomes

17

Estudante

Rua Francisco Pereira 57

7386-7000

igorgomes@webmail.com

Antônio Vasco

16

Estudante

Rua Diego Santos 187

7763-4720

antoniovasco@webmail.com

Marcos Antônio

38

Professor

Rua Junqueira Freire 316

8249-3165

marcosantonio@webmail.com

Tadeu Antônio

71

Aposentado

Rua Pereira Campos 21

4297-2332

tadeuantonio@webmail.com

Renata Camargo

26

Balconista

Rua João Pinto 122

3629-1111

renatacamargo@webmail.com

Diogo Francisco

29

Atendente

Rua João Pinto 122

9317-5155

diogofrancisco@webmail.com

Agora vamos criar um programa que contenha todos esses dados.

Instalando o banco de dados

1) Crie uma pasta chamada agenda e insira o código fonte abaixo:

Arquivo base.php

 <?php

            // Abrindo o banco de dados

            $conexao = mysql_connect('localhost','root','');

            mysql_select_db('agenda',$conexao);

?>

Arquivo instalacao.php

 <?php

            // Criando o banco de dados

            include "base.php";

           

            $usuarios=mysql_query('CREATE TABLE usuarios(

 

            codigo integer primary key auto_increment,

 

            nome varchar(40),

            idade varchar(3),

            profissao varchar(15),

            endereco varchar(40),

            telefone varchar(14),

            e_mail varchar(40));',

            $conexao);

           

            if($usuarios){

            echo 'A tabela de usuários foi criada<br>';

            } else {

            echo 'Erro: a tabela de usuários não foi criada. Veja sintaxe!<br>';

            }

?>

2) Execute o EasyPHP. Ele irá iniciar os servidores. Clique com o botão direito do mouse sobe o "E" preto que irá aparecer no canto inferior direito da tela e escolha a opção Administração.

3) A página do EasyPHP va abrir em seu navegador padrão. Clique no link MySQL

4) A página que irá ser carregado é a página para criação do Banco de Dados. Coloque um nome para o seu banco como mostra a figura. Tudo no EasyPHP é bem intuitivo.

5) Em "Nome do Banco" substitua pelo banco de dados em que você vai criar. Coloque agenda e clique no botão criar.

6) Abra o seu navegador e digite http://localhost/agenda/instalacao.php.

7) Se não ocorrer nenhum erro o navegador vai enviar uma mensagem: "A tabela de usuários foi crada".

8) Insira o código fonte do banco de dados em seguida digite no seu navegador http://localhost/agenda/bancodedados.php.

Obs: o arquivo bancodedados.php é a soma de HTML + Javascript + PHP + MySQL.

Arquivo bancodedados.php

Cada cor corresponde a um script diferente:

  • HTML
  • Javascript
  • PHP
  • MySQL

<html>
<head>
<title>Banco de Dados</title>

<?php
$menu=$_POST['menu'];

if ($menu=="pesquisar"){
pesquisar("primeiro", null);
} else if($menu=="inserir"){
inserir();
} else if($menu=="alterar"){
$valor=$_POST['valor'];
alterar($valor);
} else if ($menu=="excluir"){
$valor=$_POST['valor'];
excluir($valor);
} else if ($menu=="listar"){
listar();
} else if ($menu=="localizar"){
localizar();

 

 

} else if ($menu=="primeiro"){
$valor=null;
pesquisar($menu, $valor);
} else if ($menu=="anterior"){
$valor=$_POST['valor'];
pesquisar($menu, $valor);
} else if ($menu=="proximo"){
$valor=$_POST['valor'];
pesquisar($menu, $valor);
} else if ($menu=="ultimo"){
$valor=null;
pesquisar($menu, $valor);
} else if ($menu=="ir_para"){
$valor=$_POST['valor'];
pesquisar($menu, $valor);

} else if ($menu=="inserirBD"){
$nome=$_POST['nome'];
$idade=$_POST['idade'];
$profissao=$_POST['profissao'];
$endereco=$_POST['endereco'];
$telefone=$_POST['telefone'];
$e_mail=$_POST['e_mail'];

include "base.php";
$result=mysql_query('insert into usuarios(nome, idade, profissao, endereco, telefone, e_mail) values("'.$nome.'", "'.$idade.'", "'.$profissao.'", "'.$endereco.'", "'.$telefone.'", "'.$e_mail.'");',$conexao);

if ($result) {
echo '<center>Usuario cadastrado com sucesso!</center>';
} else {
echo '<center>Usuário não pode ser cadastrado</center>';
}

pesquisar("ultimo",null);

 

} else if ($menu=="alterarBD"){
$codigo=$_POST['codigo'];
$nome=$_POST['nome'];
$idade=$_POST['idade'];
$profissao=$_POST['profissao'];
$endereco=$_POST['endereco'];
$telefone=$_POST['telefone'];
$e_mail=$_POST['e_mail'];

include "base.php";
$result=mysql_query('replace into usuarios(codigo, nome, idade, profissao, endereco, telefone, e_mail) values("'.$codigo.'", "'.$nome.'", "'.$idade.'", "'.$profissao.'", "'.$endereco.'", "'.$telefone.'", "'.$e_mail.'");',$conexao);

if ($result) {
echo '<center>Usuario recadastrado com sucesso!</center>';
} else {
echo '<center>Usuário não pode ser recadastrado</center>';
}
pesquisar("ultimo",null);

 

} else if ($menu=="excluirBD"){
$codigo=$_POST['codigo'];

include "base.php";
$result=mysql_query('delete from usuarios where codigo='.$codigo.';',$conexao);
if($result){
echo "registro excluído!";
} else {
echo "registro não encontrado!";
}
pesquisar("ultimo",null);

 

} else if ($menu=="localizarBD"){
$rd_localizar=$_POST['rd_localizar'];
$txt_localizar=$_POST['txt_localizar'];

include "base.php";
$result=mysql_query("SELECT codigo, nome, idade, profissao, endereco, telefone, e_mail FROM usuarios WHERE ".$rd_localizar." LIKE '%".$txt_localizar."%' ",$conexao);

$Quantos=mysql_num_rows($result);
echo '<center><b>'.$Quantos.' Registros encontrados</b></center><br>';
$i=0;
?>

<script language="javascript">
function voltar_localizar(){
document.frm_formulario.menu.value="localizar"
frm_formulario.submit()
}
</script>

</head>
<body>
<center>
<form name="frm_formulario" action="bancodedados.php" method="post">
<input type="button" value="Voltar" onClick="voltar_localizar()">
<table width="100%" border="1">
<tr>
<td bgcolor="#CCCCCC"><strong>Código</strong></td>
<td bgcolor="#CCCCCC"><strong>Nome</strong></td>
<td bgcolor="#CCCCCC"><strong>Idade</strong></td>
<td bgcolor="#CCCCCC"><strong>Profiss&atilde;o</strong></td>
<td bgcolor="#CCCCCC"><strong>Endere&ccedil;o</strong></td>
<td bgcolor="#CCCCCC"><strong>Telefone</strong></td>
<td bgcolor="#CCCCCC"><strong>E-Mail</strong></td>
</tr>

<?php
for ($i=0; $i<
$Quantos; $i++) {
?>

<tr>
<td>
<?php echo mysql_result($result, $i, 'codigo');?></td>
<td>
<?php echo mysql_result($result, $i, 'nome');?></td>
<td>
<?php echo mysql_result($result, $i, 'idade');?></td>
<td>
<?php echo mysql_result($result, $i, 'profissao');?></td>
<td>
<?php echo mysql_result($result, $i, 'endereco');?></td>
<td>
<?php echo mysql_result($result, $i, 'telefone');?></td>
<td>
<?php echo mysql_result($result, $i, 'e_mail');?></td>
</tr>

<?php
}
?>

</table>
<input type="button" value="Voltar" onClick="voltar_localizar()">
<input type="hidden" name="menu" value="">
</form>
</center>

<?php
} else {
pesquisar("primeiro", null);
}
?>

</body>
</html>

<?php
function pesquisar($menu, $valor){

include "base.php";
$result=mysql_query("select codigo, nome, idade, profissao, endereco, telefone, e_mail from usuarios order by codigo;", $conexao);
$Quantos=mysql_num_rows($result);
if($menu=="primeiro"){
$i=0;
} else if ($menu=="ultimo"){
$i=
$Quantos-1;
}
if($valor==null){
} else if($menu=="anterior"){
if($valor>=1){
$i=$valor-1;
} else {
$i=0;
}
} else if($menu=="proximo"){
if($valor<
$Quantos-1){
$i=$valor+1;
} else {
$i=$valor;
}
} else {
$i=$valor-1;
}
?>

<script language="javascript">
function inserir(){
document.frm_formulario.menu.value="inserir"
frm_formulario.submit()
}
function alterar(){
document.frm_formulario.menu.value="alterar"
document.frm_formulario.valor.value= <?php echo $i."\n"; ?>
frm_formulario.submit()
}
function excluir() {
document.frm_formulario.menu.value="excluir"
document.frm_formulario.valor.value= <?php echo $i."\n"; ?>
frm_formulario.submit()
}
function listar() {
document.frm_formulario.menu.value="listar"
frm_formulario.submit()
}
function localizar() {
document.frm_formulario.menu.value="localizar"
frm_formulario.submit()
}
function primeiro() {
document.frm_formulario.menu.value="primeiro"
frm_formulario.submit()
}
function anterior() {
document.frm_formulario.menu.value="anterior"
document.frm_formulario.valor.value= <?php echo $i."\n"; ?>
frm_formulario.submit()
}
function proximo() {
document.frm_formulario.menu.value="proximo"
document.frm_formulario.valor.value= <?php echo $i."\n"; ?>
frm_formulario.submit()
}
function ultimo() {
document.frm_formulario.menu.value="ultimo"
frm_formulario.submit()
}
function ir_para() {
valor=document.frm_formulario.txt_ir_para.value
if(valor>=1 && valor<= <?php echo
$Quantos; ?>){
document.frm_formulario.valor.value=valor
document.frm_formulario.menu.value="ir_para"
frm_formulario.submit()
}else{
alert("Valor inválido")
document.frm_formulario.txt_ir_para.value="1"
}
}
</script>

</head>
<body>
<h1 align="center">Pesquisar</h1>
<form name="frm_formulario" action="bancodedados.php" method="post">
<center>
<input type="button" value="Inserir" onClick="inserir()">

<?php if($Quantos<=0){ ?>
</center>
<div align="center">
<table>
<tr>
<td align="left"> Sem registro no momento
</td>
</tr>
</table>
</div>

<?php } else { ?>
<input type="button" value="Alterar" onClick="alterar()">
<input type="button" value="Excluir" onClick="excluir()">
<input type="button" value="listar" onClick="listar()">
<input type="button" value="Localizar" onClick="localizar()">
<br />
</center>
<div align="center">
<table>
<tr>
<td align="left"> Nome:

<?php echo mysql_result($result, $i, 'nome');?>
<br />
Idade:

<?php echo mysql_result($result, $i, 'idade');?>
<br />
Profiss&atilde;o:

<?php echo mysql_result($result, $i, 'profissao');?>
<br />
Endere&ccedil;o:

<?php echo mysql_result($result, $i, 'endereco');?>
<br />
Telefone:

<?php echo mysql_result($result, $i, 'telefone');?>
<br />
E-Mail:

<?php echo mysql_result($result, $i, 'e_mail');?>
<br />
</td>
</tr>
</table>
</div>
<center>
<input type="button" value="Primeiro" onClick="primeiro()">
<input type="button" value="Anterior" onClick="anterior()">

<?php echo ($i+1)."/".$Quantos; ?>
<input type="button" value="Pr&oacute;ximo" onClick="proximo()">
<input type="button" value="&Uacute;ltimo" onClick="ultimo()">
</center>
<center>
<br>
<input type="button" value="Ir Para ->" onClick="ir_para()">
<input type="text" name="txt_ir_para" value="1" size="5"><br>

<?php } ?>
<input type="hidden" name="menu" value="">
<input type="hidden" name="valor" value="">
</center>
</form>

<?php
}
?>

<?php
function inserir() {
?>

<script language="javascript">
function salvarBD(){
if(confirm("Deseja salvar este registro?")){
document.frm_formulario.menu.value="inserirBD"
frm_formulario.submit()
}
}
function canselarBD(){
if(confirm("Deseja canselar este registro?")){
document.frm_formulario.menu.value="pesquisar"
frm_formulario.submit()
}
}
</script>

</head>
<body>
<h1 align="center">Inserir</h1>
<form name="frm_formulario" action="bancodedados.php" method="post">
<div align="center">
<table>
<tr>
<td align="left">
Nome: <input type="text" name="nome" value="" size="40" maxlength="40"><br>
Idade: <input type="text" name="idade" value="" size="3" maxlength="3"><br>
Profissão: <input type="text" name="profissao" value="" size="15" maxlength="15"><br>
Endereço: <input type="text" name="endereco" value="" size="40" maxlength="40"><br>
Telefone: <input type="text" name="telefone" value="" size="14" maxlength="14"><br>
E-Mail: <input type="text" name="e_mail" value="" size="40" maxlength="40"><br>
</td>
</tr>
</table>
</div>
<center>
<input type="button" value="Salvar" onClick="salvarBD()">
<input type="button" value="Canselar" onClick="canselarBD()"><br>
<input type="hidden" name="menu" value="">
</center>
</form>

<?php
}
?>
<?php
function alterar($i){

include "base.php";
$result=mysql_query("select codigo, nome, idade, profissao, endereco, telefone, e_mail from usuarios order by codigo;", $conexao);
?>
<script language="javascript">
function salvarBD(){
if(confirm("Deseja salvar este registro?")){
document.frm_formulario.menu.value="alterarBD"
frm_formulario.submit()
}
}
function canselarBD(){
if(confirm("Deseja canselar este registro?")){
document.frm_formulario.menu.value="pesquisar"
frm_formulario.submit()
}
}
</script>

</head>
<body>
<h1 align="center">Alterar</h1>
<form name="frm_formulario" action="bancodedados.php" method="post">
<div align="center">
<table>
<tr>
<td align="left">
Nome: <input type="text" name="nome" value="
<?php echo mysql_result($result, $i, 'nome');?>" size="40" maxlength="40"><br>
Idade:<input type="text" name="idade" value="
<?php echo mysql_result($result, $i, 'idade');?>" size="3" maxlength="3"><br>
Profissão: <input type="text" name="profissao" value=
"<?php echo mysql_result($result, $i, 'profissao');?>" size="15" maxlength="15"><br>
Endereço: <input type="text" name="endereco" value="
<?php echo mysql_result($result, $i, 'endereco');?>" size="40" maxlength="40"><br>
Telefone: <input type="text" name="telefone" value="
<?php echo mysql_result($result, $i, 'Telefone');?>" size="14" maxlength="14"><br>
E-Mail: <input type="text" name="e_mail" value="
<?php echo mysql_result($result, $i, 'e_mail');?>" size="40" maxlength="40"><br></td>
<input type="hidden" name="codigo" value="
<?php echo mysql_result($result, $i, 'codigo');?>">
</tr>
</table>
</div>
<center>
<input type="button" value="Salvar" onClick="salvarBD()">
<input type="button" value="Canselar" onClick="canselarBD()"><br>
<input type="hidden" name="menu" value="">
</center>
</form>

<?php
}
?>
<?php
function excluir($i){

include "base.php";
$result=mysql_query("select codigo, nome, idade, profissao, endereco, telefone, e_mail from usuarios order by codigo;", $conexao);
?>
<script language="javascript">
function f_excluir() {
if(confirm("Deseja mesmo excluir?")){
document.frm_formulario.menu.value="excluirBD"
frm_formulario.submit()
}
}
function cancelar() {
document.frm_formulario.menu.value="pesquisar"
frm_formulario.submit()
}
</script>

</head>
<body>
<h1 align="center">Excluir</h1>
<div align="center">
<table>
<tr>
<td align="left"> Nome:

<?php echo mysql_result($result, $i, 'nome');?>
<br />
Idade:

<?php echo mysql_result($result, $i, 'idade');?>
<br />
Profiss&atilde;o:

<?php echo mysql_result($result, $i, 'profissao');?>
<br />
Endere&ccedil;o:

<?php echo mysql_result($result, $i, 'endereco');?>
<br />
Telefone:

<?php echo mysql_result($result, $i, 'telefone');?>
<br />
E-Mail:

<?php echo mysql_result($result, $i, 'e_mail');?>
<br />
</td>
</tr>
</table>
</div>
<h1 align="center">Deseja excluir este registro?</h1>
<center>
<form name="frm_formulario" action="bancodedados.php" method="post">
<input type="button" value="Sim!" onClick="f_excluir()">
<input type="button" value="Não / Calcelar!" onClick="cancelar()"><br>
<input type="hidden" name="menu" value="">
<input type="hidden" name="codigo" value="
<?php echo mysql_result($result, $i, 'codigo');?>">
</form>
<?php
}
?>

<?php
function listar(){
?>

</head>
<body>
<h1 align="center">Listar</h1>
<form name="frm_formulario" action="bancodedados.php" method="post">
<center>
<input type="submit" value="Voltar">

<?php
include "base.php";
$result=mysql_query("select codigo, nome, idade, profissao, endereco, telefone, e_mail from usuarios order by codigo;",$conexao);
$Quantos=mysql_num_rows($result);
$i=0;
?>
</center>
<table width="100%" border="1">
<tr>
<td bgcolor="#CCCCCC"><strong>Código</strong></td>
<td bgcolor="#CCCCCC"><strong>Nome</strong></td>
<td bgcolor="#CCCCCC"><strong>Idade</strong></td>
<td bgcolor="#CCCCCC"><strong>Profiss&atilde;o</strong></td>
<td bgcolor="#CCCCCC"><strong>Endere&ccedil;o</strong></td>
<td bgcolor="#CCCCCC"><strong>Telefone</strong></td>
<td bgcolor="#CCCCCC"><strong>E-Mail</strong></td>
</tr>

<?php
for ($i=0; $i<
$Quantos; $i++) {
?>

<tr>
<td>
<?php echo mysql_result($result, $i, 'codigo');?></td>
<td>
<?php echo mysql_result($result, $i, 'nome');?></td>
<td>
<?php echo mysql_result($result, $i, 'idade');?></td>
<td>
<?php echo mysql_result($result, $i, 'profissao');?></td>
<td>
<?php echo mysql_result($result, $i, 'endereco');?></td>
<td>
<?php echo mysql_result($result, $i, 'telefone');?></td>
<td>
<?php echo mysql_result($result, $i, 'e_mail');?></td>
</tr>

<?php
}
?>

</table>
<center>
<input type="submit" value="Voltar"><br>
<input type="hidden" name="menu" value="pesquisar">
</center>
</form>

<?php
}
?>
<?php
function localizar(){
?>

<script language="javascript">
function localizar() {
document.frm_formulario.menu.value="localizarBD"
frm_formulario.submit()
}
function voltar() {
document.frm_formulario.menu.value="pesquisar"
frm_formulario.submit()
}
</script>

</head>
<body>
<h1 align="center">Localizar</h1>
<div align="center">
<table>
<tr>
<td align="left">
<form name="frm_formulario" action="bancodedados.php" method="post">
Localizar: <input type="text" name="txt_localizar" value="">
<input type="button" value="Localizar" onClick="localizar()">
<input type="button" value="Voltar" onClick="voltar()"><br>
<input type="radio" name="rd_localizar" value="nome" checked="checked">Nome<br>
<input type="radio" name="rd_localizar" value="idade">Idade<br>
<input type="radio" name="rd_localizar" value="profissao">Profissão<br>
<input type="radio" name="rd_localizar" value="endereco">Endereço<br>
<input type="radio" name="rd_localizar" value="telefone">Telefone<br>
<input type="radio" name="rd_localizar" value="e_mail">E-Mail

<input type="hidden" name="menu" value="">
</form>
</td>
</tr>
</table>
</div>

<?php
}
?>

Imagens do banco de dados

Se tudo ocorreu bem com o banco de dados é dividido em:

Pesquisar (Primeiro - Anterior - Próximo - Último - Ir para)

Inserir

Alterar

Excluir

Listar

Localizar

Arquivo base.php

Abrindo um banco de dados (base.php)

Para que nosso site tenha conexão a um banco de dados, precisamos criar uma página chamada base.php, que conterá nossos comandos de acesso ao banco de dados e esta será adicionada por um comando especial em cada página.

 

 <?php

            // Abrindo o banco de dados

            $conexao = mysql_connect('localhost','root','');

            mysql_select_db('agenda',$conexao);

?>

 

O MySQL possui um usuário padrão chamado root e senha nula, ou seja, em branco. O servidor padrão do MySQL é o localhost. Veja em mysql_connect.

O nome do banco de dados é agenda, a string 'agenda' deve ser modificada para o nome do banco de dados que seu provedor lhe fornecerá. O seu nome será incerido na função mysql_select_db.

Para que esta conexão seja utilizada pelo site, poderemos incluir um comando no início da página e nas páginas de administração que serão criadas. Isto evitará a repetição destes comandos. No banco de dados coloque o seguinte:

 

<?php include "base.php"; ?>

 

.

Arquivo instalacao.php

Criando um banco de dados

Criando uma tabela (CREATE TABLE)

Veja que estamos utilizando o identificador de conexão anteriormente criado no arquivo base.php. Isto é possível pela utilização do comando include.

Observação: O banco de dados MySQL só é aberto para o usuário se no código fonte iserirmos <?php include "base.php" ?>. Sem isto, o banco de dados não será aberto.

 

mysql_query: esta função executa uma instrução SQL. É o comando mais usado para executar comandos MySQL para criar, iserir, alterar, excluir e pesquisar tabelas.

 

Dentro da função mysql_query existe um comando para criar tabelas chamado CREATE TABLE.

Observe:

 

CREATE TABLE <tabela> (

          <campo1> <tipo>,

          <campo2> <tipo>,

          .

          .

          .

     );

 

A partir dessa sintaxe básica, criaremos a nossa tabela. Em nossa tabela temos os seguintes dados:

Nome da tabela: usuarios
Campo: Tipo: Descrição:
codigo integer primary key auto_increment Chave primária
nome varchar(40) 40 caracteres
idade varchar(3) 3 caracteres
profissao varchar(15) 15 caracteres
endereco varchar(40) 40 caracteres
telefone varchar(14) 14 caracteres
e_mail varchar(40) 40 caracteres

 

Chaves

Para organizarmos o banco de dados usamos um número de identificação para cada registro, veja:

Tabela: Cliente
ClienteID Nome Endereco Cidade
1
Julia Maria Rua da Esquina Campinas
2
Antônio Ricardo Avenida Rio Bonito Horizontina
3
Michele Camargo Rua do Norte São Francisco
4
Amaral Travessia do Sul Cantagalo

ClienteID é a chave. Isso facilita o armazenamento de seus detalhes em um banco de dados.

Existem dois tipos de chave: chave primária e chave secundária.

O exemplo acima é uma chave primária.

A chave primária os números não se repetem, todas as tabelas tem uma única chave primária.

Chave secundária: quando trabalhamos com mais de uma tabela é necessário ligarmos uma tabela a outra, observe:

ClienteID é a chave primária de Cliente, mas quando ela aparece em outra tabela, como pedidos, é referida como chave secundária, ClienteID_2.

A chave secundária os números podem ser repetidos, e toda a tabela pode conter mais de uma chave secundária (ao contrário da chave primária).

Por padrão identificamos a chave primária por ID e chave secundária por ID_2.

Talvez você se pergunte proque escolhemos ter duas tabelas separadas se não podemos armazenar em uma tabela só?

Se um mesmo cliente fazer 3 pedidos diferentes não é preciso repetir os dados do cliente 3 vezes, isso evita armazenamento desnecessário. Deixando mais lento e o banco de dados maior.

Quanto mais econômico o seu banco de dados, melhor a sua rapidez e melhor a sua produção.

Isto é matéria para outro assunto. A nossa simples agenda tem uma tabela só.

No MySQL a chave primária é declarada como integer primary key auto_increment.

  • integer: define o tipo do campo como inteiro (veja tipos de dados, pode ser outro valor inteiro);
  • primary key: define o campo da tabela como um campo primário, ou seja, este não aceitará valores duplicados e será utilizado como campo chave de expressões;
  • auto_increment: permite que ao incluir registros nesta tabela, este campo não precise receber valores porque será incrementado automaticamente.

Tipos de dados

Assim como existem vários tipos de variáveis, tais como:

- Variáveis strings

- Variáveis booleanas

- Variáveis de números inteiros e

- Variáveis de números reais.

Existem vários tipos de campos para o armazenamento de informações no banco de dados.

Cada campo armazena um tipo de dados.

A seguir, a listagem completa dos tipos de dados utilizados no MySQL:

Campos de dados Booleanos
Tipo de dado Descrição
BOOL É um número inteiro que pode ser 0 ou 1 (1 bit). O valor zero é considerado false e o valor um é considerado true. ( 0 = false; 1 = true)

 

Campo de dados numéricos com números negativos e positivos (faixa com sinal)
Tipo de dado Descrição
TINYINT [(M)] Números inteiros entre -128 e 127
SMALLINT [(M)] Números inteiros entre -32.758 e 32.757
MEDIUMINT [(M)] Números inteiros entre -8.388.608 e 8.388.607
INT [(M)] (ou INTEGER [(M)] ) Númoros inteiros entre -2.147.483.548 e 2.147.483.547
BIGINT [(M)] Números inteiros entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807

 

Campo de dados numéricos sem números negativos (faixa sem sinal)
Tipo de dado Descrição
TINYINT [(M)] UNSIGNED De 0 até 255
SMALLINT [(M)] UNSIGNED De 0 até 65.535
MEDIUMINT [(M)] UNSIGNED De 0 até 16.777.215
INT (ou INTEGER) [(M)] UNSIGNED De 0 até 4.294.967.295
BIGINT [(M)] UNSIGNED De 0 até 18.446.744.073.709.551.615

 

** Obsevação: [(M)] siginifica número total de dígitos, pode ser omititio ou não.

 

O UNSIGNED impede o armazenamento de números negativos, ou seja, valores menores que zero não serão permitidos. Quando omitimos o atributo UNSIGNED seu padrão é SIGNED, ou seja, permitirá valores negativos.

 

Campos de dados numéricos com decimais
Tipo de dado Descrição
DECIMAL(M, D) M números antes da vírgula e D casas decimais
FLOAT Valor numérico com vírgula, podendo ter até 38 posições
DOUBLE Valor numérico com vírgula, podendo ter até 308 posições

 

Campos de dados tipo data e hora
Tipo de dado Descrição
DATE Ano-Mês-Dia (YYYY-MM-DD)
TIME Hora (HH:MM:SS)
DATETIME Ano-Mês-Dia hh:mm:ss (YYYY-MM-DD HH:MM:SS)
TIMESTAMP

Data e hora

TIMESTAMP     YYYYMMDDHHMMSS
TIMESTAMP(14) YYYYMMDDHHMMSS
TIMESTAMP(12) YYMMDDHHMMSS
TIMESTAMP(10) YYMMDDHHMM
TIMESTAMP(8)  YYYYMMDD
TIMESTAMP(6)  YYMMDD
TIMESTAMP(2)  YY
YEAR

Dois ou quatro dígitos para valores de anos

YEAR(2) - dois dígitos

YEAR(4) ou YEAR - quatro dígitos

 

Os do tipo string dividem-se em três grupos. Primeiro, são strings velhas simples, isto é, pequenas partes de texto. Essas partes são os tipos CHAR (caractere de comprimento fixo) e VARCHAR (caractere de comprimento variável). Você pode especificar a largura de cada um. As colunas do tipo CHAR serão preenchidos com espalos até a largura mãxima independente do tamanho do banco de dados, enquanto as colunas VARCHAR variam em largura com os dados. (Note que o MySQL distribuirá em faixas os espaços finais a partir de CHARs quando eles forem recuperados e a partir de VARCHARs ELES FOREM ARMAZENADOS). Há uma relação de troca ou compensação entre espaço versus velocidade com esses dois tipos.

O segundo, são os tipos TEXT e BLOB. Esses tipos ocorrem em vários tamanhos. Servem para texto longo ou dados binários, respectivamente. BLOBs são binary large objects. Esses podem armazenar o que você quiser, por exemplo, dados de imagem ou dados de som.

Na prática, as colunas BLOB e TEXT são as mesmas exceto que TEXT diferencia letras maiúsculas de minúsculas e BLOB não diferencia. Como esses tipos de colunas podem armazenar grandes quantidades.

O terceiro grupo tem dois tipos, SET e ENUM. O tipo SET é utilizado para especificar que valores nessa coluna devem vir de um conjunto particular de valores especificados. Os valors de coluna podem conter mais de um valor do conjunto. Você pode ter um máximo de 64 itens no conjunto especificado ENUM é uma enumeração. É muito semelhante a Set, exceto que colunas desse tipo podem ter somente um dos valores especificados ou NULL e que pode ter um máximo de 65.535 coisas na enumeração.

Campos de dados string
Tipos de dados Descrição
Binários Não binários  
BINARY(n) CHAR(n) Sequência de caracteres de comprimento variável podendo chegar até 255 caracteres.
VARBINARY(n) VARCHAR(n) Sequência de caracteres de comprimento variável, podendo chegar até 65.535 caracteres.
TINYBLOB TINYTEXT Valores com até 255 caracreres (28 - 1 = 1 byte)
BLOB TEXT Bloco longo de texto de até 65.535 caracteres (216 - 1 = 2 bytes)
MEDIUMBLOB MEDIUMTEXT Bloco longo de texto de até 16.777.215 caracteres (224 - 1 = 3 bytes)
LONGBLOB LONGTEXT Bloco longo de texto de até 4.294.967.295 caracteres (232 - 1 = 4 bytes)

Tipos de dados ENUM e SET

 

Os tipos de dados ENUM e SET são tipos de dados bastante especiais em ocasiões em que temos opções que não mudam ou quase não mudam. Exemplo:

Campo Tipo
Salada_de_fruta ENUM('maçã', 'banana', 'mamão', 'manga', laranja')
Salada SET('couve', 'cenoura', 'batata', 'tomate')

Se você inserir um valor inválido em um SET ou ENUM (isto é, uma string que não está presente na lista de valores permitidos), a string vazia é inserida no lugar como um valor especial de erro.

Se um ENUM ou SET é declarado NULL, NULL é também um valor permitido para a coluna, e o valor padrão é NULL. Se um ENUM ou SET é declarado NOT NULL, o valor padrão é o primeiro elemento da lista de valores permitidos.

Tipo de dado Descrição
SET('valor1', 'valor2',...) A lista pode ter até 64 valores diferentes
ENUM('valor1', 'valor2',...) A lista pode conter 65.535 valores distintos.

 

O código de instalação do banco de dados no servidor ficou assim:

 

<?php

            // Criando o banco de dados

            include "base.php";

           

            $usuarios=mysql_query('CREATE TABLE usuarios(

 

            codigo integer primary key auto_increment,

 

            nome varchar(40),

            idade varchar(3),

            profissao varchar(15),

            endereco varchar(40),

            telefone varchar(14),

            e_mail varchar(40));',

            $conexao);

           

            if($usuarios){

            echo 'A tabela de usuários foi criada<br>';

            } else {

            echo 'Erro: a tabela de usuários não foi criada. Veja sintaxe!<br>';

            }

?>

  • usuarios é a nossa tabela;
  • $conexao: faz a conexão do PHP ao banco de dados MySQL;
  • $usuarios: verifica se deu algum erro na instalação do banco de dados no servidor.
Arquivo bancodedados.php

Inserindo um registro (INSERT INTO)

Trecho:

            include "base.php";

            $result=mysql_query('insert into usuarios(nome, idade, profissao, endereco, telefone, e_mail) values("'.$nome.'", "'.$idade.'", "'.$profissao.'", "'.$endereco.'", "'.$telefone.'", "'.$e_mail.'");',$conexao);

 

Sintaxe:

INSERT INTO <tabela> (campo1, campo2, ...) VALUES (valor1, valor2, ...);

 

Descrição:

INSERT insere novos registros em uma tabela existente.

Alterando um registro (REPLACE INTO)

Trecho:

            include "base.php";

            $result=mysql_query('replace into usuarios(codigo, nome, idade, profissao, endereco, telefone, e_mail) values("'.$codigo.'", "'.$nome.'", "'.$idade.'", "'.$profissao.'", "'.$endereco.'", "'.$telefone.'", "'.$e_mail.'");',$conexao);

Sintaxe:

REPLACE INTO <tabela>(campo_primário, campo1, campo2, ...) VALUES(valor_do_registro, valor1, valor2);

 

Descrição:

REPLACE funciona exatamente como o INSERT, sendo que, substitui o registro antigo por um novo.

Excluindo um registro (DELETE FROM)

Trecho:

            include "base.php";

            $result=mysql_query('delete from usuarios where codigo='.$codigo.';',$conexao);

 

Sintaxe:

DELETE FROM <tabela> WHERE campo_primário = valor_do_registro;

 

Descrição:

Remove (apaga) fisicamente o registro marcado para deleção.

Listar registros (SELECT)

Sintaxe:

SELECT campo1, campo2 [, ...] FROM <tabela> ORDER BY campo_primário;

 

Descrição:

SELECT é utilizado para retornar registros selecionados de uma ou mais tabelas.

O comando SELECT serve para realizar consultas ao banco de dados (como um todo), e não somente a uma tabela.

 

Trecho:

</head>

<body>

<h1 align="center">Listar</h1>

<form name="frm_formulario" action="bancodedados.php" method="post">

<center>

<input type="submit" value="Voltar">

<?php

            include "base.php";

            $result=mysql_query("select codigo, nome, idade, profissao, endereco, telefone, e_mail from usuarios order by codigo;",$conexao);

            $Quantos=mysql_num_rows($result);

            $i=0;

?>

</center>

<table width="100%" border="1">

  <tr>

    <td bgcolor="#CCCCCC"><strong>Código</strong></td>

    <td bgcolor="#CCCCCC"><strong>Nome</strong></td>

    <td bgcolor="#CCCCCC"><strong>Idade</strong></td>

    <td bgcolor="#CCCCCC"><strong>Profiss&atilde;o</strong></td>

    <td bgcolor="#CCCCCC"><strong>Endere&ccedil;o</strong></td>

    <td bgcolor="#CCCCCC"><strong>Telefone</strong></td>

    <td bgcolor="#CCCCCC"><strong>E-Mail</strong></td>

  </tr>

<?php

            for ($i=0; $i<$Quantos; $i++) {

?>

  <tr>

    <td><?php echo mysql_result($result, $i, 'codigo');?></td>

            <td><?php echo mysql_result($result, $i, 'nome');?></td>

    <td><?php echo mysql_result($result, $i, 'idade');?></td>

    <td><?php echo mysql_result($result, $i, 'profissao');?></td>

    <td><?php echo mysql_result($result, $i, 'endereco');?></td>

    <td><?php echo mysql_result($result, $i, 'telefone');?></td>

    <td><?php echo mysql_result($result, $i, 'e_mail');?></td>

  </tr>

<?php

}

?>

</table>

<center>

<input type="submit" value="Voltar"><br>

<input type="hidden" name="menu" value="pesquisar">

</center>

</form>

Localizar um registro

 

Sintaxe:

SELECT campo1, campo2 [,...] FROM <tabela> WHERE campo_qualquer LIKE %localizar%

 

Descrição:

Localiza uma palavra no banco de dados exemplo: SELECT (...) campo_nome LIKE %João%.

O banco de dados vai procurar por João e criar uma lista com o respectivo nome.

 

Trecho:

 

include "base.php";
$result=mysql_query("SELECT codigo, nome, idade, profissao, endereco, telefone, e_mail FROM usuarios WHERE ".$rd_localizar." LIKE '%".$txt_localizar."%' ",$conexao);

$Quantos=mysql_num_rows($result);
echo '<center><b>'.$Quantos.' Registros encontrados</b></center><br>';
$i=0;
?>

<script language="javascript">
function voltar_localizar(){
document.frm_formulario.menu.value="localizar"
frm_formulario.submit()
}
</script>

</head>
<body>
<center>
<form name="frm_formulario" action="bancodedados.php" method="post">
<input type="button" value="Voltar" onClick="voltar_localizar()">
<table width="100%" border="1">
<tr>
<td bgcolor="#CCCCCC"><strong>Código</strong></td>
<td bgcolor="#CCCCCC"><strong>Nome</strong></td>
<td bgcolor="#CCCCCC"><strong>Idade</strong></td>
<td bgcolor="#CCCCCC"><strong>Profiss&atilde;o</strong></td>
<td bgcolor="#CCCCCC"><strong>Endere&ccedil;o</strong></td>
<td bgcolor="#CCCCCC"><strong>Telefone</strong></td>
<td bgcolor="#CCCCCC"><strong>E-Mail</strong></td>
</tr>

<?php
for ($i=0; $i<
$Quantos; $i++) {
?>

<tr>
<td>
<?php echo mysql_result($result, $i, 'codigo');?></td>
<td>
<?php echo mysql_result($result, $i, 'nome');?></td>
<td>
<?php echo mysql_result($result, $i, 'idade');?></td>
<td>
<?php echo mysql_result($result, $i, 'profissao');?></td>
<td>
<?php echo mysql_result($result, $i, 'endereco');?></td>
<td>
<?php echo mysql_result($result, $i, 'telefone');?></td>
<td>
<?php echo mysql_result($result, $i, 'e_mail');?></td>
</tr>

<?php
}
?>

</table>
<input type="button" value="Voltar" onClick="voltar_localizar()">
<input type="hidden" name="menu" value="">
</form>
</center>

mysql_query:

 

Esta função executa uma instrução SQL. É o comando mais usado para executar comandos MySQL para criar, iserir, alterar, excluir e pesquisar tabelas.

mysql_num_rows:

 

  • $Quantos = mysql_num_rows($result);: este comando armazena na variável $Quantos, o número de registros da tabela de usuários. Observe que estamos utilizando o identificador $result, que naquele momento representa o resultado da última query executada pelo comando mysql_query, que em nosso caso, faz referência à tabela de usuários;
  • $i=0;: criamos esta variável para ser utilizada dentro de um ciclo for, e assim representar cada linha da consulta feite pelo comando mysql_query anterior.
  • for($i==0;$i<$Quantos; $i++): para que seja possível listar na tela todos os registros da tabela de usuários, precisamos utilizar o comando for. Neste caso, ele executará o comando mysql_result inicialmente na linha zero da tabela de usuários e só terminará a repetição quando a variável $i for menor que $Quantos.

mysql_result:

 

mysql_result($result, $i, 'campo');: este comando envia para a tela o valor do campo. A variável $i define qual linha será enviada, que também representa o registro na tabela. Como estamos dentro de um ciclo for que pega desde o início até o fim da tabela, todas as linhas serão enviadas formando, assim, nossa lista de usuários.