Alguns Comandos SQL
Autor: ѕєgяє∂σѕ ∂α ηєт | Publicado: 2011-02-02T09:22:00-08:00

Conheça melhor a linguagem do SQL e faça voce mesmo seus comandos !Segue um manual para download bem completo!SQL e Alguns Comandos
Bom Galera venho trazer algumas expecificações e siginficados de alguns comandos em SQL para um melhor entendimento para todos...Para aquela galera que fica postando em foruns Preciso de tal query ou preciso que faça isso ou aquilo, issso pode ajudar a voces mesmos criar seus proprios comandos e executar querys personalizadas que so tem em seu servidor...Vamos ao que importa realmente...Podemos através do SQL executar as mais diversas tarefas diretamente em nosso banco de dados, e lembrando que mesmo que mude a plataforma os comandos em SQL sao universais nao irão mudar nunca!Por exemplo se quiser destruir a tabela:Drop Table Nome_da_tabela&nbsp;&nbsp;onde DROP é destruir e table é o objeto a ser destruido e na frente o nome da tabelaALTER TABLE Nome_tabela drop Nome_campoonde ALTER significa ALTERAR Table Tabela Drop Destruir o nome do campo, ou seja traduzindo:Alterar a tabela Nome_tabela destruindo o campo DROP Nome do campo... para caso queria destruir um campo dentro de uam tabela mesmo caso se desejar alterar o tipo do mesmo... Como por exemplo:ALTER TABLE NOME_TABELA&nbsp; ALTER NOME_CAMPO INT NOT NULL DEFAULT VALUE (0)&nbsp; ou seja estou alterando o o campo da tabela de um tipo para int do tipo inteiro nao podendo ser nulo e valor padrao Zero.Outro exemplo muito utilizado SELECT *FROM TABLE&nbsp;&nbsp;ou SELECT NOME_CAMPO FROM TABLEQual a diferença entre os dois?O select *from table , serve para Selecionar todos os campos de determinada tabelaja o Select Nome_campo fom table, Serve para selecionar determinado campo de uma tabela, muito utilizado na area de muonline para a montagen de rankings!Exemplo:SELECT RESETS,NAME FROM CHARACTER&nbsp;ORDER BY RESETS DESCEsse select selecionara os campos resete e nome do personagem que sao colunas criadas na tabela Character dentro do banco MuOnline e pra que serve o que esta em vermelho!Simples para toda seleção precisamos definir um aordem de exibição ORDER BY RESETS ordenaria nossa seleçãoem ordem Crecente ou seja quem tivesse menos resetes em primeiro e quem tivesse mais poR ultimo!Ai voces dizem mais porra ai o ranking fica doido! Fica sim ai que entra o DESC ( decrecente) ele ordenara o selectde resetes e nomes por orden decrecente de resetes!Mas ai caimos em outra situação, e se dois personagens estivessem com o mesmo tanto de resete quem fica em primeiro? Ai ele entra por ordem alfabetica! Mas da pra mudar?Da sim! Vamos supor que dois noobs empatem nos qual seria uma boa alternativa de desempate? Level por exemplo!Ficaria assim:&nbsp; SELECT RESETS,NAME FROM CHARACTER&nbsp;ORDER BY LEVEL,RESETS DESCSacaram? E so definir o campo e separar por virgula! ele trara a seleção por ordem de quem tem mais resets e por segundo quem tem mais level... E assim por diante!
Acabamos de ver algumas coisas sobre seleção de dados! Agora vamos falar um pouco sobre alteração e inserção!Dois comandos utilizados sao o&nbsp;UPDATE&nbsp; e o INSERTAi vem a pergunta quando utilizo um ou quando utilizo outro!?Simples pessoal, o INSERT so será utilizado para inserir uma infromação no banco de dados em um campo que nunca foi utilizado, ou seja quando o cara realiza um cadastro no site! O sistema ser utilizado é o INSERT.E o UPDATE uso quando? Voce utiliza quando precisa alterar alguma informação que ja contenha no banco de dados.um exemplo quando for alterar a senha do cadastro, o sistema faz um UPDATE pois no ato do cadastro ja foi feito o insert no mesmo, ou seja voce so pode fazer UPDATE para alterar algo que ja exista!Uma definição simples e ao mesmo tempo grotesca mas tras bem a ideia de quando uzar um e outro é a seguinte:UPDATE : Alteração de registroINSERT: inserção de RegistroExemplo de utilização dos doisINSERT:&nbsp;&nbsp;&nbsp;&nbsp;INSERT MEMB_INFO(nome,senha) Values ('Douglas','123')&nbsp;CADASTROonde VALUES sao os valores a seres inseridos nos campos nome e senha!UPDATE:&nbsp;&nbsp;UPDATE MEMB_INFO SET SENHA='321' WHERE NOME='Douglas'&nbsp;ALTERAÇÂO DE SENHAonde set é onde sera alterada a informação ou seja set senha estaremos alterando o campo senhaWHERE que significa Onde o campo Nome for igual ao nome Douglas!Tipo ai podemos fazer Varias Comparações existem alguns comandos como exemplo:OR siginificado OUAND siginificado ENOT significado NAO&lt; menor&gt; maior&lt;= menor ou igual&gt;= maior ou igual&lt;&gt; diferenteAi varia as situações , por exemplo quero selecionar a tabela muonline onde os vips nao sejam Free!podemos utilizar de duas formas:SELECT *FROM MEMB_INFO WHERE VIP &gt; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(selecione onde vip&nbsp;for maior que ZERO)&nbsp; OUSELECT&nbsp; *FROM MEMB_INFO WHERE VIP &lt;&gt; 0 (selecione VIP onde for diferente de ZERO)Outro exemplo quero trazer so os VIps que sao 0 e que sao 2SELECT *FROM MEMB_INFO WHERE VIP=0 OR VIP=2 (Selione onde o VIP for igual a ZERO OU DOIS)
Claro que existem varios outros comandos mas pra inicio de voces mesmos fazerem sua comparações para edição de querys é legal, por exemplo eu cansei de utilizar uma query que dava golds quando o cara criava a conta, oq ue acontecia o pessoal criava conta so pra pegar os golds, e fico um server cheio de conta inativa!Criei duas querys que davam gold quando o cara dava 50 resetes e dava de novo quando chegava aos 100 resetes!Ou seja ai vai da sua criatividade... Vo postar o exemplo que fiz das querys que criei...No banco character eu criei dois campos ganhacash e ganhacsh1 ou seja vamos utilizar via comando em SQLALTER TABLE CHARACTER ADD GANHACASH INT NOT NULL DEFAULT&nbsp; 0ALTER TABLE CHARACTER ADD GANHACASH1 INT NOT NULL DEFAULT 0Ou seja acabamos de criar dois campos em character...QUERY dos 50 resetesUPDATE MEMB_INFO
SET Credits=Credits+250FROM CharacterJOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_ASWHERE Resets &gt;= 50 AND ganhacash = 0
UPDATE Character
SET ganhacash = 1
FROM CharacterJOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_ASWHERE Resets &gt;= 50
AND ganhacash = 0

e a dos 100 RESETES
UPDATE MEMB_INFO
SET Credits=Credits+250FROM CharacterJOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_ASWHERE Resets &gt;= 100 AND ganhacash = 1 and ganhacash1 = 0
UPDATE Character
SET ganhacash1 = 1
FROM CharacterJOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_ASWHERE Resets &gt;= 100
AND ganhacash = 1
AND ganhacash1 = 0
Com a query montada criei duas JOBS que rodam a cada 5 minutos, mas criação de JOBS posto mais pra frentepois o topico do assunto não é este!Bom pessoal é isso ai vo postar aqui pra download uma apostila que achei interessante pra voces que tem curiosidade e nao gostam de ficar pedindo e dependendo dos outros rs principalmente.. Tipo não é facil mas tamen não e dificil , basta ter um pouco de logica!
Download abaixo:
Creditos:&nbsp; Apostilando pela apostila&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DouglaSDeV pelo tutorial&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Criando Portais pelo espaço cedido!