Ir para conteúdo
Entre para seguir isso  
Bogos

SQL (Strutured Query Language)

Recommended Posts

Bogos    0
Bogos

[center:e6e3f47c67]SQL (Structured Query Language)</span>

 

 

Quando os Banco de Dados Relacionais estavam em desenvolvimento, foram criadas

 

linguagens destinadas à sua manipulação. O departamento de Pesquisa da IBM

 

desenvolveu a SQL como forma de interface para o sistema de BD Relacional

 

denominado SYSREM R. Em 1986 o American National Standard Institute (ANSI),

 

publicou um padrão SQL. A SQL estabeleceu-se como linguagem padrão de Banco de

 

Dados Relacional.

 

SQL representa uma série de comandos que permitem a definição dos dados,

 

chamada de DDL (Data Definition Language), DML (Data Manipulation Language) e

 

DCL (Data Control Lanaguage).

 

Segue abaixo uma tabela com comandos SQL:

 

------------------------------------------------------------

SELECT - Recupera dados do Banco de Dados (Consulta)

------------------------------------------------------------

Comandos DML (Data Manipulation Language)

INSERT - Insere novas linhas de tabelas do banco de dados

UPDATE - Altera linhas de tabelas

DELETE - Remove linhas de tabelas

------------------------------------------------------------

Comandos DDL (Data Definition Language)

CREATE - Cria objetos no banco de dados (como tabelas por ex.)

ALTER - Altera objetos no banco

DROP - Remover objetos do banco

RENAME -Renomeia objetos do banco

TRUNCATE-Trunca objetos do banco

------------------------------------------------------------

 

 

Bom existem mais comandos comos os de DCL e os gerenciadores de comandos DML, mas não vou abordar eles aqui. Os mais usados e importantes são os citados acima.

Darei agora alguns exemplos de como usar os comandos acima.

 

Temos as tabelas conforme figura:

 

Imagem Postada

Tabelas e seus relacionamentos

 

 

<span style=\'color:blue\'>Comando SELECT

 

Vamos supor que nós temos que ter uma lista dos players que são level 100. Para isso usamos o comando de consulta, o SELECT.

Certo vamos intão pesquisar os players que são level 100, mostrando apenas seus nomes:

 

SELECT nome FROM player WHERE level=100
Foi usado no ex. acima 2 subcomandos do Select. São eles FROM e o WHERE.

Bom o SQL tem uma coisa interessante, se você sabe razoavelmente inglês, tem facilidade pois os comandos são todos frases.

From = da, a partir, daquilo

Where = onde

Intão vamos "traduzir" o comando:

SELECIONE nome (lembre que queremos ver só o nome) DA (da tabela) player ONDE (condição) level=100

Note que nome e level são campos da tabela player.

Tá ai! Feita!

Vamos a outro exemplo. Queremos os players level 100 ou maior mostrando todas as informações do player.

Temos intão:

 

SELECT * FROM player WHERE level > 99
SELECIONE * (tudo) DA player ONDE level > 99 (level maior que 99 (100, 101, 102..))

 

Fácil? Só questão de prática.

 

Bom um exemplo bem "tosco" e simples. Vamos supor que queremos todos os registros da tabela account, mas só queremos ver os campos que contém o número da account e os dias de premium. Certo, vamos lá:

 

SELECT acc, premium_days FROM account
Temos aí a lista de todas as accounts, mostranu apenas a account e os dias de premium. Vamos simular o resultado:

 

Acc ------ premium_days

123 ------------ 10

321 -------------- 0

9040 ------------ 29

2121 ------------ 92

 

Seria algo desse tipo.

Fácil não? =)

 

Algumas obs.:

no WHERE quando vamos usar strings (textos) colocamos ' '

Por ex. queremos ver se existe algum player chamado Bogos:

 

SELECT * FROM player WHERE nome='Bogos'
Se quisermos saber os players que começam com a letra A, temos:

 

SELECT * FROM player WHERE nome LIKE 'A%'
LIKE significa algo como contendo, 'A%' onde temos ' ' porque é uma string (texto) e A (queremos os que começam por A) e % representa nenhum ou muitos caracteres.

 

E quando preciamos contar, ou tirar uma média, ou ver o valor maior ou menor da tabela...

Certo, SELECT nos salva =)

Os comandos para fazer tais malícias são:

 

COUNT() - Contar

AVG() - Calcular média

MAX() - Ver maior valor

MIN() - Ver menor valor

 

Agora vamos à prática.

Queremos contar a quantidade de players no nosso banco. Vamos lá:

 

SELECT COUNT(*) from player
Prontinho! Fácil né?!

 

Agora vamos tirar uma média das skills de axe.

 

SELECT AVG(axe) FROM skill
Muito fácil...

 

Pra fexar, vamos ver qual é o top sword e o pior player de distance.

 

SELECT MAX(sword) FROM skill
SELECT MIN(distance) FROM skill
Puts...quem diria, mais fácil que isso, só dois disso 8)

 

Vamos dar uma complicadinha, coisa poca. Vamos ver quem é top shielding MAS que seja paladino =D

Vamos à lógica antes da query. Queremos o top shielding, então vamos usar MAX(shielding) da tabela skill. Certo, fácil. Mas tem que ser paladino, então temos que verificar o player que é paladino. Para isso vamos utilizar 2 tabelas, e temos que falar ao programa quais campos se interligam entre as tabelas. Vamos lá.

 

SELECT MAX(skill.shielding) FROM skill, player WHERE player.voc=3 AND skill.codigo=player.cod_skill
Hahá! Que fácil...

Vamos a explicação agora.

 

Selecionamos o maior valor de shield. Porque skill.shielding e não só shielding?? Bom note que estamos trabalhando com 2 tabelas, e se as duas tivessem um campo com o mesmo nome? Por ex. se a tabela de players tivesse um campo codigo, dai você monta a query assim:

SELECT codigo FROM player, skill WHERE codigo=cod_skill

Maravilha selecione o codigo mas....de que tabela???????

Ele retornaria erro à você, e com razão. Sendo assim define-se primeiro o nome da tabela PONTO (.) o nome do campo. Temos skill.shielding onde skill é o nome da tabela e shielding o nome do campo. Depois indicamos as tabelas da pesquisa, skill e player. Em seguida a condição (players paladinos) WHERE (onde) player.voc (tabela player campo voc) =3 (paladin) AND (em inglês "E") skill.codigo=player.cod_skill (temos que indicar a ligação das 2 tabelas).

 

Pronto. Basta ler a explicação acima e ver o exemplo por algumas vezes e você vai começar a entender :wink:

 

Parece complicado mas não é não

 

Não, eu não continuei e talvez iriei demorar a continuar, tive uns problemas pessoais e estou sem tempo =/

 

 

Sorry ae galera! http://forum.otserv.com.br/style_emoticons/<#EMO_DIR#>/sad.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sayfor    0
Sayfor

Eu tenho mysql no meu curso e eu odeio [Palavrão Censurado] q p*** .. mt tosco :S

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fox-    0
Fox-

Começei a odiar quando profesor apareceu com uma lista de 100 exercicos.. num quero ve sql denovo por um bom tempo!Otimo Tutosql Very Isi

Compartilhar este post


Link para o post
Compartilhar em outros sites
Boleta    1
Boleta

Excelente mano!!

 

Abordou muito bem a manipulação de tabelas SQL!

Lembrado que estes "comandos" podem ser usados em tabelas do Access!

 

Abraços,

//Bol~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bogos    0
Bogos

@BoletaBoa, vou realçar isso no tuto =)@FoxVery isi is tesão but with moderation =P

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sollos    0
Sollos

Bem legal, mas esqueceu de explanar as SubQueries, Grant/Revoke(DDL)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Convidado Eclipse   
Convidado Eclipse

Nao mexo com SQL mas gostaria de saber, apenas por curiosidade, aonde eu pego o 'output', ou melhor, a resposta do que eu codiei para procurar?Por exemplo, eu ponho um botao para contar quantos players eu tenho no meu banco de dados. Okay, mas e dai? Onde que o programa me da a resposta da minha pergunta? Ou melhor, qual a funcao que me permite puxar a resposta de tal pergunta e adicionar em um textbox ou algo semelhante???Cya

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bogos    0
Bogos

um exemplo se vc utiliza conexão ADO onde rs eh a variável de recordset e stringcon eh a variavel que cntem a lnha de conexão:

 

dim rs As New ADODB.Recordsetdim stringcon As Stringrs.open "select count(codigo) from players", stringcon, adOpenKeyset, adLockOptimistictext1.text=rs

Sinceramente eu não tenho certeza absoluta de que text1.text=rs ira retornar o valor, mas acredito q seja.

Se por um acaso você faça outro tipo de pesquisa e quer mostrar 2 valores dessa pesquisa, eh dessa maneira

 

rs.open "select * from players where nome='Bogos'", stringcon, adOpenKeyset, adLockOptimistictext1.text = rs![nome]text2.text = rs![level]

no exemplo temos 2 textbox, uma recebe o nome e a outra o lvl do player consltado

 

Enjoy!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×