Escolar Documentos
Profissional Documentos
Cultura Documentos
aspectos de autorizao de dados e licenas de usurios para controlar quem tem acesso
para ver ou
manipular dados dentro do banco de dados.
Duas palavras-chaves da DCL:
GRANT - autoriza ao usurio executar ou setar operaes;
REVOKE - remove ou restringe a capacidade de um usurio de executar operaes.
No primeiro exemplo foi criada a tabela cliente. Como a chave primria era simples, a
informao primary key foi colocada ao lado do respectivo campo. Quando a chave composta, deve
ser definida em separado, como pode ser observado no exemplo da criao da tabela filme.
Repare que tambm foi utilizado o atributo not null na criao de alguns campos, ele usado
quando queremos forar o usurio a colocar o dado.
No segundo exemplo, utilizado a clusula check, ela usada para determinar uma condio
ao campo. No caso do exemplo, ele define que o gnero do filme s pode ser Romance, Ao, Drama,
Terror ou Comdia.
CONSULTAS: SELECT
Sintaxe bsica:
SELECT [DISTINCT] expressao [AS nome-campo]
[FROM nome das tabelas]
[WHERE condicao]
[ORDER BY attr_name1 [ASC | DESC ]]
O comando select utilizado para realizar consultas. Suponha que deseja encontrar o nome de todos
os associados de uma locadora que morassem na cidade de Braslia. A estrutura bsica dessa
consulta seria:
select nome from associado where cidade = "Braslia"
No select, se coloca o campo que se quer pesquisar e no from de que tabela que a pesquisa. A
clusula where utilizada quando se deseja colocar alguma restrio na pesquisa. Na SQL permitida
a existncia de tuplas duplicadas. Quando se quer no resultado de uma pesquisa apenas valores
diferentes usa-se a palavra distinct da seguinte forma:
select distinct nome from associado
Se voc quiser deixar explcito de que a duplicao ser aceita, pode-se usar all no lugar de distinct.
Quando se deseja mostrar todos os campos de uma tabela usa-se a seguinte configurao:
select * from cliente
Esse exemplo mostra todos os campos de cliente. Outra caracterstica importante da clusula select
que pode-se realizar operaes nela, como mostrado logo abaixo:
select idade*10 from filme
Essa operao no alterar o campo na tabela, mas apenas mostrar como resultado da pesquisa a
idade do filme vezes 10.
FROM
Na clusula from, como foi dito anteriormente, coloca-se as tabelas que foram usadas.
importante ressaltar que mais de uma tabela pode ser utilizada. No exemplo a seguir, realizada uma
pesquisa para saber quais so os clientes que esto com filmes:
select cliente.nome from cliente, aluguel where cliente.codigo = aluguel.codigo_cliente
Observe que informada de que tabela cada campo ao usar, por exemplo, ao selecionar
cliente.nome. Essa construo s necessria se os campos de diferentes tabelas tiverem nomes
iguais, caso contrrio essa construo se torna opcional. Costuma-se utiliz-la para deixar claro de
que tabela o campo.
WHERE
Na clusula where, coloca-se restries para a pesquisa. No exemplo anterior foi feita uma pesquisa
onde o cdigo do cliente fosse igual ao cdigo do cliente que alugou um determinado filme, assim
poderamos saber o nome de quem aluguel o filme, pois na tabela de aluguel no existe o nome do
cliente, apenas o cdigo. Algumas palavras-chave podem ser usadas junto com a clusula where, elas
so: between, and, not e or como nos exemplos a seguir, assim como operadores de comparao
como <, >, = e <>.
select nome from cliente where codigo between 1000 and 1005
select aluguel.nome from cliente, aluguel where (cliente.nome = Maria Aparecida or cliente.nome
= Joo da Silva) and cliente.codigo = aluguel.codigo_cliente
No primeiro exemplo seleciona-se o nome dos clientes que tem cdigo entre 1000 e 1005. No
segundo, o nome do filme que foi alugado pelo cliente com nome de Maria Aparecida ou Joo da Silva.
Para verificar se um valor nulo, usa-se por exemplo:
Select ... where preco is null
Para ordenar o resultado da pesquisa, utiliza-se o comando order by, que ordena, por padro, de
modo ascendente. Caso seja necessrio ordenar de modo descendente acrescenta-se o desc.
select * from cliente order by nome
select * from cliente order by nome desc, codigo asc
No primeiro exemplo, ordena-se pelo nome de modo ascendente e no segundo descendente e
ascendente. possvel ordenar duas colunas como mostrado no segundo exemplo, ordenando na
ordem em que forem apresentadas.
OUTRAS CONSULTAS
select nome, telefone, CURDATE() AS Data atual, DATEDIFF(CURDATE(), data_locacao) as
Tempo decorrido from Cliente;
Demais funes: http://dev.mysql.com/doc/refman/4.1/pt/date-and-time-functions.html
FUNES
A SQL permite o uso de funes pr-definidas para realizar operaes de soma(sum),
mnimo(min), Mximo(max), mdia(avg) e contagem(count). As funes avg e sum impem que a
entrada da funo sejam nmeros, j as outras funes aceitam strings como entrada. As funes
podem ser usadas de diferentes formas. Vamos citar um exemplo onde soma-se o preo de todos os
aluguis realizados por um cliente.
select nome,sum(preco) from cliente, aluguel where codigo = codigo_cliente group by nome
Quando deseja-se aplicar condies a grupos usa-se a clusula having. Por exemplo, vamos reunir
todos os clientes que possuem uma conta maior que 50 reais.
select nome,sum(preco) from cliente, aluguel where codigo = codigo_cliente group by nome
having sum(preco) > 50
Remove registros de uma ou mais tabelas listadas na clusula FROM que satisfazem a clusula
WHERE.
Sintaxe:
DELETE FROM tabela WHERE critrio
Onde:
- tabela: O nome da tabela de onde os registros so excludos.
- critrio: Uma expresso que determina qual registro deve ser excludo.
O comando DELETE exclui registros inteiros e no apenas dados em campos especficos. Se a inteno
alterar ou excluir valores em campos especficos, deve ser utilizado o comando UPDATE.
No exemplo a seguir, sero removidos todos os filmes cadastrados no banco que tenham durao
maior que 120 minutos.
delete from filme where duracao>120
Como no insert, possvel utilizar uma clusula select embutida ao delete. Vamos excluir todos os
filmes que foram alugados por clientes e que tinham como data de devoluo o dia 12/10/2006.
delete from filme where nome in (select nome_filme from aluguel where data_devolucao =
"12/10/2006")
========================================================
==================================
Arquivo: conectar.php
<?PHP
$ligacao = mysql_connect("localhost","aluno","aluno");
If(!$ligacao)
{
Echo("No foi possvel estabelecer a ligao com o Mysql");
Return 0;
}
$ok = mysql_select_db("agenda");
If(!$ok) {
Echo("No foi possvel estabelecer a conexo com a base de dados");
Return 0;
}
?>
Arquivo: gravar.php
<?PHP
$nome = $_POST["nome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
$sexo = $_POST["sexo"];
$obs = $_POST["obs"];
require("conectar.php");
$consulta = "select *from livro where email='$email'";
$rst = mysql_query($consulta);
$qtd = mysql_num_rows($rst);
If($qtd>0)
{
echo "Email j cadastrado!!!<br>";
}
else
{
$insere
=
"INSERT
INTO
livro
nome='$nome',email='$email',telefone='$telefone',sexo='$sexo',obs='$obs'";
mysql_query($insere);
SET
If(mysql_affected_rows( )>0)
{
Echo("cadastro efetuado com sucesso...");
}
else
{
Echo("No foi possvel inserir os dados na tabela...");
}
}
mysql_close($ligacao);
?>
Arquivo: pesquisar.php
<?PHP
$email = $_POST["email"];
require("conectar.php");
$consulta = "select *from livro where email='$email'";
$rst = mysql_query($consulta);
$qtd = mysql_num_rows($rst);
If($qtd>0)
{
$nome = mysql_result($rst,0,"nome");
$email = mysql_result($rst,0,"email");
$telefone = mysql_result($rst,0,"telefone");
$sexo = mysql_result($rst,0,"sexo");
$obs = mysql_result($rst,0,"obs");
echo("<pre>
<form action='alterar.php' method='POST'>
Nome....: <input type='text' value='$nome' name='nome' size='50' maxlenght='50'
readonly> <br>
value='excluir'
mysql_close($ligacao);
?>
Arquivo: alterar.php
<?PHP
$nome = $_POST["nome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
$sexo = $_POST["sexo"];
$obs = $_POST["obs"];
require("conectar.php");
$alterar
=
"update
livro
nome='$nome',email='$email',telefone='$telefone',sexo='$sexo',obs='$obs'
email='$email'";
mysql_query($alterar);
If(mysql_affected_rows( )>0)
{
Echo("Alterao efetuada com sucesso...");
}
else
{
Echo("No foi possvel alterar os dados na tabela...");
}
set
where
mysql_close($ligacao);
?>
Arquivo: excluir.php
<?PHP
$email = $_GET["email"];
require("conectar.php");
$excluir = "delete from livro where email='$email'";
mysql_query($excluir);
If(mysql_affected_rows( )>0)
{
Echo("cadastro excluido com sucesso...");
}
else
{
Echo("No foi possvel localizar os dados na tabela...");
}
mysql_close($ligacao);
?>