Bogos 0 #1 Postado 25 Novembro, 2006 [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: 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 #2 Postado 25 Novembro, 2006 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 #3 Postado 25 Novembro, 2006 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 #4 Postado 25 Novembro, 2006 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 #5 Postado 25 Novembro, 2006 @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 #6 Postado 26 Novembro, 2006 Bem legal, mas esqueceu de explanar as SubQueries, Grant/Revoke(DDL) Compartilhar este post Link para o post Compartilhar em outros sites
Convidado Eclipse #7 Postado 30 Novembro, 2006 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 #8 Postado 30 Novembro, 2006 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