+2

Introdução ao MySQL

criado por João Prado Maia em 09/12/2000 4:37pm
<p><br>
<font color=\"#003366\"><span class=\"negrito\">Trabalhando com valores NULOS</span></font></p>
<p>O valor NULL pode ser surpreendente at&eacute; voc&ecirc; se acostumar
a isto. Conceitualmente, valores NULL s&atilde;o valores desconhecidos
e isto &eacute; tratado diferentemente dos outros valores. Para testar
NULL, voc&ecirc; n&atilde;o pode usar os operadores de compara&ccedil;&atilde;o
de aritm&eacute;tica tal como =, &lt; ou !=. Para demonstrar isto, tenta
a seguinte pergunta: </p>
<p class=\"mysql\">mysql&gt; SELECT 1 = NULL, 1 != NULL, 1 &lt; NULL, 1 &gt;
NULL;<br>
+----------+-----------+----------+----------+<br>
| 1 = NULL | 1 != NULL | 1 &lt; NULL | 1 &gt; NULL |<br>
+----------+-----------+----------+----------+<br>
| NULL &nbsp;&nbsp;&nbsp;&nbsp;| NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
NULL &nbsp;&nbsp;&nbsp;&nbsp;| NULL &nbsp;&nbsp;&nbsp;&nbsp;|<br>
+----------+-----------+----------+----------+</p>
<p>Claramente voc&ecirc; obtem nenhum resultado significativos destas compara&ccedil;&otilde;es.
<br>
Use o operadores IS NULL e IS NOT NULL: </p>
<p class=\"mysql\">mysql&gt; SELECT 1 IS NULL, 1 IS NOT NULL;<br>
+-----------+---------------+<br>
| 1 IS NULL | 1 IS NOT NULL |<br>
+-----------+---------------+<br>
| 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
+-----------+---------------+</p>
<p>No MySQL, 0 s&atilde;o valores falsos e 1 s&atilde;o valores verdadeiros.
<br>
Este tratamento especial de NULL &eacute; por que isto foi necess&aacute;rio
para determinar se os animais n&atilde;o est&atilde;o mortos, usando death
IS NOT NULL ao inv&eacute;s de death != NULL. </p>
<p></p>
<p></p>
<p class=\"negrito\"><font color=\"#003366\">Unindo Modelo</font></p>
<p>MySQL fornece um modelo do SQL padronizado unindo assim um formul&aacute;rio
de modelo baseado em express&otilde;es regulares parecidas com aquelas
utilizadas por utilit&aacute;rios de Unix tal como vi, grep e sed. <br>
Modelo do SQL permite voc&ecirc; usar &quot;_&quot; para unir qualquer
caracter &uacute;nico, e &quot;%&quot; para unir um n&uacute;mero arbitr&aacute;rio
de caracteres (incluindo zero caracteres). No MySQL, modelos do SQL s&atilde;o
caso insens&iacute;vel por default. Alguns exemplos s&atilde;o mostrados
baixo. Note que voc&ecirc; n&atilde;o usa = ou != quando voc&ecirc; usa
modelos do SQL; use o GOSTADO DE ou N&Atilde;O operadores de compara&ccedil;&atilde;o
IGUAIS ao inv&eacute;s. </p>
<p>Para encontrar nomes come&ccedil;am com &quot;b&quot;:</p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name LIKE &quot;b%&quot;;<br>
+--------+--------+---------+------+------------+------------+<br>
| name &nbsp;&nbsp;| owner &nbsp;| species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
+--------+--------+---------+------+------------+------------+<br>
| Buffy &nbsp;| Harold | dog &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1989-05-13 | NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
| Bowser | Diane &nbsp;| dog &nbsp;&nbsp;&nbsp;&nbsp;| m &nbsp;&nbsp;&nbsp;|
1989-08-31 | 1995-07-29 |<br>
+--------+--------+---------+------+------------+------------+</p>
<p>Para encontrar nomes finalizando com &quot;%fy&quot;: </p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name LIKE &quot;%fy&quot;;<br>
+--------+--------+---------+------+------------+-------+<br>
| name &nbsp;&nbsp;| owner &nbsp;| species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death |<br>
+--------+--------+---------+------+------------+-------+<br>
| Fluffy | Harold | cat &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1993-02-04 | NULL &nbsp;|<br>
| Buffy &nbsp;| Harold | dog &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1989-05-13 | NULL &nbsp;|<br>
+--------+--------+---------+------+------------+-------+</p>
<p>Para encontrar nomes contendo uns &quot;w&quot;: </p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name LIKE &quot;%w%&quot;;<br>
+----------+-------+---------+------+------------+------------+<br>
| name&nbsp;&nbsp;&nbsp;&nbsp; | owner | species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
+----------+-------+---------+------+------------+------------+<br>
| Claws &nbsp;&nbsp;&nbsp;| Gwen &nbsp;| cat &nbsp;&nbsp;&nbsp;&nbsp;|
m &nbsp;&nbsp;&nbsp;| 1994-03-17 | NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
| Bowser &nbsp;&nbsp;| Diane | dog &nbsp;&nbsp;&nbsp;&nbsp;| m &nbsp;&nbsp;&nbsp;|
1989-08-31 | 1995-07-29 |<br>
| Whistler | Gwen &nbsp;| bird &nbsp;&nbsp;&nbsp;| NULL | 1997-12-09 |
NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
+----------+-------+---------+------+------------+------------+</p>
<p>Para encontrar nomes contendo extamente cinco caracteres, usam os caracteres
de modelo &quot;_&quot;:</p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name LIKE &quot;_____&quot;;<br>
+-------+--------+---------+------+------------+-------+<br>
| name &nbsp;| owner &nbsp;| species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death |<br>
+-------+--------+---------+------+------------+-------+<br>
| Claws | Gwen &nbsp;&nbsp;| cat &nbsp;&nbsp;&nbsp;&nbsp;| m &nbsp;&nbsp;&nbsp;|
1994-03-17 | NULL &nbsp;|<br>
| Buffy | Harold | dog &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1989-05-13 | NULL &nbsp;|<br>
+-------+--------+---------+------+------------+-------+</p>
<p>O outro tipo de modelo fornecido por MySQL usa express&otilde;es regulares.
Quando voc&ecirc; testa este tipo de modelo, usa os operadores REGEXP
e NOT REGEXP (ou RLIKE e NOT RLIKE, que s&atilde;o sin&ocirc;nimos). <br>
Algumas caracter&iacute;sticas express&otilde;es regulares s&atilde;o:
<br>
* &quot;.&quot; casa qualquer caracter &uacute;nico. <br>
* Uma classe de caracter &quot;[...]&quot; une qualquer caracter dentro
dos suportes. <br>
Por exemplo, &quot;[abc]&quot; une &quot;a&quot;, &quot;b&quot; ou &quot;c&quot;.
Para especificar uma s&eacute;rie de caracteres, usam um tra&ccedil;o.
&quot;[a-z]&quot; une qualquer letra min&uacute;scula, ao passo que &quot;[0-9]&quot;
une qualquer d&iacute;gito. <br>
* &quot;*&quot; une zero ou mais solicita&ccedil;&otilde;es. Por exemplo,
&quot;x*&quot; une qualquer n&uacute;mero de &quot;x&quot; caracteres,
&quot;[0-9]*&quot; une qualquer n&uacute;mero de d&iacute;gitos, e &quot;.*&quot;
une qualquer n&uacute;mero de algo. <br>
* Express&otilde;es Regulares s&atilde;o casos sens&iacute;veis, mas voc&ecirc;
pode usar uma classe de caracter para unir ambos lettercases. Por Exemplo,
&quot;[aA]&quot; une letra min&uacute;scula ou mai&uacute;scula &quot;a&quot;
e &quot;[a-zA-Z]&quot; une qualquer letra em um caso ou outro. <br>
* O modelo ocorre em qualquer parte na exist&ecirc;ncia do valor testado
( modelos do SQL unem unicamente os valores inteiro). <br>
* Para ancorar um modelo de modo que isto deve unir o come&ccedil;o ou
t&eacute;rmino da exist&ecirc;ncia do valor testado, use &quot;^&quot;
no come&ccedil;o ou &quot;$&quot; no final do modelo. </p>
<p>Para trabalho de express&otilde;es regulares, as perguntas LIKE e REGEXP
podem ser usadas abaixo: <br>
Para encontrar nomes que come&ccedil;am com &quot;b&quot;, para unir o
come&ccedil;o do nome use &quot;^&quot; e &quot;[bB]&quot; para unir letra
min&uacute;scula com outra mai&uacute;scula &quot;b&quot;: </p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name REGEXP &quot;^[bB]&quot;;<br>
+--------+--------+---------+------+------------+------------+<br>
| name &nbsp;&nbsp;| owner &nbsp;| species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
+--------+--------+---------+------+------------+------------+<br>
| Buffy &nbsp;| Harold | dog &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1989-05-13 | NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
| Bowser | Diane &nbsp;| dog &nbsp;&nbsp;&nbsp;&nbsp;| m &nbsp;&nbsp;&nbsp;|
1989-08-31 | 1995-07-29 |<br>
+--------+--------+---------+------+------------+------------+</p>
<p>Para encontrar nomes finalizando com &quot;fy&quot; use e &quot;$&quot;
para unir no final do nome: </p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name REGEXP &quot;fy$&quot;;<br>
+--------+--------+---------+------+------------+-------+<br>
| name &nbsp;&nbsp;| owner &nbsp;| species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death |<br>
+--------+--------+---------+------+------------+-------+<br>
| Fluffy | Harold | cat &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1993-02-04 | NULL &nbsp;|<br>
| Buffy &nbsp;| Harold | dog &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1989-05-13 | NULL &nbsp;|<br>
+--------+--------+---------+------+------------+-------+</p>
<p>Para encontrar nomes contendo &quot;w&quot; use &quot;[wW]&quot; e para
unir letra min&uacute;scula com outra mai&uacute;scula &quot;w&quot;:
</p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name REGEXP &quot;[wW]&quot;;<br>
+----------+-------+---------+------+------------+------------+<br>
| name &nbsp;&nbsp;&nbsp;&nbsp;| owner | species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
+----------+-------+---------+------+------------+------------+<br>
| Claws&nbsp;&nbsp;&nbsp; | Gwen &nbsp;| cat &nbsp;&nbsp;&nbsp;&nbsp;|
m &nbsp;&nbsp;&nbsp;| 1994-03-17 | NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
| Bowser &nbsp;&nbsp;| Diane | dog &nbsp;&nbsp;&nbsp;&nbsp;| m &nbsp;&nbsp;&nbsp;|
1989-08-31 | 1995-07-29 |<br>
| Whistler | Gwen &nbsp;| bird &nbsp;&nbsp;&nbsp;| NULL | 1997-12-09 |
NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
+----------+-------+---------+------+------------+------------+</p>
<p>Um modelo de express&atilde;o regular ocorre em qualquer parte do valor,
isto n&atilde;o &eacute; necess&aacute;rio uma pergunta pr&eacute;via
para colocar um wildcard no lado um do outro para obter a uni&atilde;o
do valor inteiro, poderia ser utilizado um modelo do SQL. <br>
Para encontrar nomes contendo exatamente cinco caracteres, use &quot;^&quot;
e &quot;$&quot; para unir o come&ccedil;o e t&eacute;rmino do nome, e
cinco express&otilde;es de &quot;.&quot;: </p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name REGEXP &quot;^.....$&quot;;<br>
+-------+--------+---------+------+------------+-------+<br>
| name &nbsp;| owner &nbsp;| species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death |<br>
+-------+--------+---------+------+------------+-------+<br>
| Claws | Gwen &nbsp;&nbsp;| cat &nbsp;&nbsp;&nbsp;&nbsp;| m &nbsp;&nbsp;&nbsp;|
1994-03-17 | NULL &nbsp;|<br>
| Buffy | Harold | dog &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1989-05-13 | NULL &nbsp;|<br>
+-------+--------+---------+------+------------+-------+</p>
<p>Voc&ecirc; tamb&eacute;m podia escrever a pergunta pr&eacute;via usando
&quot;{n}&quot;: </p>
<p class=\"mysql\">mysql&gt; SELECT * FROM pet WHERE name REGEXP &quot;^.{5}$&quot;;<br>
+-------+--------+---------+------+------------+-------+<br>
| name &nbsp;| owner &nbsp;| species | sex &nbsp;| birth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
death |<br>
+-------+--------+---------+------+------------+-------+<br>
| Claws | Gwen &nbsp;&nbsp;| cat &nbsp;&nbsp;&nbsp;&nbsp;| m &nbsp;&nbsp;&nbsp;|
1994-03-17 | NULL &nbsp;|<br>
| Buffy | Harold | dog &nbsp;&nbsp;&nbsp;&nbsp;| f &nbsp;&nbsp;&nbsp;|
1989-05-13 | NULL &nbsp;|<br>
+-------+--------+---------+------+------------+-------+</p>

Comentários:

Mostrando 1 - 10 de 10 comentários
Prezado Amigo,

veja, estive lendo seu artigo aqui colocado, mas me surgiu uma dúvida.
Quando vc falar em ordem crescente DESC, mas como fazer com a ordem decrescente?
O que eu gostaria de saber se na busca SELECT eu posso fazer com que os ids mais velhos fiquem embaixo e os mais novos em cima, tipo assim:
id: 05
id: 04
id: 03
id: 02
id: 01

Como eu aplicaria este processo de busca?

Tem como me dar este help?

Abraços.
betezek@betezek.com.br
fernando
15/01/2010 11:47am (~15 anos atrás)

Onde eu encontro pra download o mysql??
09/07/2006 4:22pm (~18 anos atrás)

Instalei o MySQL na minha máquina, dizem que o usuário é 'root' e a senha é '' (em branco), mas não estou conseguindo acessar o MySQL, depois instalei o Vertrigo Serv, e nele também encontro dificuldades para usar o PHP my Admin. como resolvo este problema?
02/06/2006 7:56am (~18 anos atrás)

Instalei tudo, apache, PhP e o mysql, a luz do mysql (versao 3.23.51) está verde, digamos que tudo certo, mas como posso testar pra ver se funciona?
26/01/2006 10:13am (~19 anos atrás)

francirrenio disse:
Caro amigo, me de uma juda.
Tenho uma tabela de cadastro de alunos e tem alguns alunos duplicados.
Gostaria de saber como ver os cadastros duplicados de matricula.

Valeu...
03/12/2005 5:41am (~19 anos atrás)

GILSON SOARES disse:
AMIGOS EU NAO ESTOU CONSEGUINDO AUTENTICAR NO MYSQL ESTOU USANDO APACHE 1.3.29 EO PHP 5.0.4
GOSTARIA QUE VOCE ME AJUDEM A SABER QUANDO ESTOU CONECTADO AO MYSQL.
31/08/2005 9:25am (~19 anos atrás)

Criei um BD no MySql e inseri alguns registros onde alguns caracteres são especiais, principalmente acentos, só que estou utilizando o dreamweaver para visualizar os dados, e esse acentos nao aparecem no lugar vem outros caracteres (sujeira)o que tenho q fazer
Grato
27/10/2004 2:05pm (~20 anos atrás)

Olá João, gostaria de uma ajuda sua, se possível, estou desenvolvendo uma pagina em php, para consulta de procedimentos médicos em um bd mysql, o processo seria o seguinte, tenho uma tabela com 3 campos: contrato, mes, procedimento, queria adicionar um campo senha na tabela, que pegasse os dados do campo contrato, assim o usuario entraria com o login contrato e senha tmb os dados do contrato, só que tenho que fazer todos os meses, e mais uma dúvida, para que a nova inserção dos meses posteriores fosse feita uma inserção na tabela.

Um abraço, agradço a atenção

Kerensky
15/08/2004 8:31am (~20 anos atrás)

Tulio disse:
Belo Tutorial! Parabêns.
05/03/2004 9:06am (~21 anos atrás)

Olá estou iniciando na area de programação, gostaria de saber se este artigo é valido para MySql fo Windows??
Estou com dificuldades...
poderia me ajudar...
Obrigado
15/09/2002 2:19pm (~22 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)