Eu tenho usado o mysql pela mesma quantidade de tempo que tenho usado o PHP. No entanto, me sinto 10x mais confiante em PHP; ou qualquer outra linguagem de programação. Mas eu simplesmente não consigo entender realmente o SQL. Quero dizer, posso selecionar, atualizar, inserir, excluir, ingressar, etc., mas quando se trata de coisas mais complexas, estou perdido. Como escrever uma instrução de seleção mais complicada, como usar índices adequadamente, qual mecanismo usar, etc.
Por alguma razão, eu realmente acho difícil seguir os documentos do mysql, mas os do php são fáceis de seguir.
Estou começando a pensar que talvez meu cérebro esteja conectado apenas de uma maneira que torne a programação um pouco confusa, mas que é sql. Eu não sei. A maioria das pessoas acha que o Regex é tão confuso, mas para mim faz mais sentido científico do que como construir uma instrução sql. Por favor, não me interpretem mal, não estou odiando o SQL, gosto muito, só quero entender melhor.
Qual é a melhor / mais rápida maneira de realmente dominar o MySQL?
Quando digo "mestre", não quero dizer o guru entre os gurus, quero dizer inteligente o suficiente para descobrir a maioria das perguntas que faço sobre SO sem precisar de ajuda.
Respostas:
Use-o
A internalização de como os bancos de dados relacionais funcionam é difícil para muitas pessoas - mas é muito valiosa. À medida que você trabalha mais com o SQL, ele entra no seu cérebro. Continue se esforçando.
Quando algo parecer estranho, investigue
No Chrome, configurei esse mecanismo de pesquisa, então tudo o que preciso fazer é digitar "m [consulta de pesquisa]" para pesquisar os documentos (a pesquisa do dev.mysql.com é uma porcaria): {google: baseURL} search? {Google: RLZ} {google: acceptSuggestion} {google: originalQueryForSuggestion} sourceid = chrome & ie = {inputEncoding} & q = site: dev.mysql.com/doc/refman/5.1/en+%s
Se os documentos não tiverem uma resposta, entre no #mysql no freenode e veja se alguém pode fornecer algumas dicas.
Ler!
Depois de entender como os bancos de dados relacionais funcionam, você precisará saber um pouco mais sobre o que o MySQL está fazendo com as consultas mágicas que você está escrevendo. Eu recomendo o MySQL de alto desempenho - vale muito a pena.
fonte
Em primeiro lugar, obtenha um entendimento completo das junções. Não apenas as junções interna e esquerda também. Saiba o que uma junção cruzada faz e uma junção externa completa. Conheça as circunstâncias que o levariam a escolher um tipo específico de associação. Entenda que eles não são intercambiáveis e que a consulta que usa uma junção esquerda pode retornar resultados diferentes daquele que usa uma junção interna. (Alguém poderia pensar que isso seria óbvio, mas eu já li muitas perguntas em que as pessoas, ao descreverem o problema, tentam aleatoriamente diferentes associações).
A seguir, realmente entenda os agregados e como eles funcionam. O Mysql permitirá que você se livre de não fazer agrupamentos de maneira padrão. Mas tenha a disciplina para definir completamente o grupo por cláusula corretamente. Isso ajudará você a entender o que está fazendo e tornará seu conhecimento mais facilmente transferível para outros bancos de dados.
Aprenda o que a declaração do caso faz.
Ao fazer consultas complexas, aprenda a trabalhar em partes. Verifique em cada parte que você tem os resultados esperados. Por exemplo, suponha que você precise escrever uma consulta de relatórios sobre pedidos que foram devolvidos nos últimos 3 meses e o motivo da devolução, bem como as informações de contato do cliente. O primeiro passo é obter os pedidos devolvidos nos últimos três meses. Depois de saber que possui esse sólido, você pode adicionar as informações sobre o motivo da devolução. Depois de ter esse sólido, você pode adicionar o cliente que o devolveu. Depois de ter esse sólido, adicione as informações de contato da pessoa. Em cada estágio, verifique seus resultados e veja se eles fazem sentido. Nesse caso, provavelmente quero terminar com apenas um registro por pedido devolvido. Se, em qualquer estágio intermediário, o número de resultados aumentar ou diminuir, você sabe que tem um problema com a consulta. Às vezes, nos blocos de construção, você deseja ver campos adicionais apenas para verificar se as informações estão corretas. Coloco-os em uma linha separada e comento-os à medida que passo na próxima etapa (removendo-os no final quando souber que estou certo), para que fiquem disponíveis para ver novamente com facilidade se adicionar outra ruga tornar a consulta engraçada. Você não pode fazer consultas complexas corretamente sem entender completamente como devem ser os resultados. Pensar que parece bom porque retornou alguns resultados quase garantirá que você tenha resultados errados uma boa parte do tempo. m à direita), para que fiquem disponíveis para visualização fácil novamente, se a adição de outra ruga tiver tornado a consulta engraçada. Você não pode fazer consultas complexas corretamente sem entender completamente como devem ser os resultados. Pensar que parece bom porque retornou alguns resultados quase garantirá que você tenha resultados errados uma boa parte do tempo. m à direita), para que fiquem disponíveis para visualização fácil novamente, se a adição de outra ruga tiver tornado a consulta engraçada. Você não pode fazer consultas complexas corretamente sem entender completamente como devem ser os resultados. Pensar que parece bom porque retornou alguns resultados quase garantirá que você tenha resultados errados uma boa parte do tempo.
Aqui está uma lista de algumas coisas básicas que você deve poder fazer no SQL sem precisar pensar nisso:
Depois de se sentir confortável com seu conhecimento básico de SQL, conheça a estrutura do banco de dados. Posso escrever consultas complexas em relação aos dbs muito complicados que dou suporte muito mais rápido que outras pessoas, porque entendo a estrutura e não preciso pensar em onde as coisas estão armazenadas. Se você entender a estrutura da tabela e os relacionamentos de chave estrangeira e onde os valores de pesquisa são armazenados e o que as colunas significam (não apenas o nome, mas quais dados são mantidos nelas), você pode ser especialista em consultar esse banco de dados. A primeira coisa que faço em qualquer novo trabalho é entender completamente a estrutura do banco de dados.
fonte
Na minha opinião, para aprender SQL (e isso é realmente o que você está perguntando, os detalhes específicos do MySQL podem vir mais tarde), você deve se remover do fluxo de controle da programação no estilo PHP. Pense especificamente no paradigma das linguagens declarativas:
SQL define o que você deseja, não como fazê-lo. Se você pode tentar remover mentalmente o último, o primeiro seguirá a tempo. Abstraia essa camada em sua mente e deixe o MySQL (ou Oracle ou o que seja) se preocupar com como .
A lógica do aplicativo pode ocorrer no SQL versus código OO / procedural no PHP. Por exemplo, ao fazer consultas ao banco de dados para alguma coisa, você pode ingressar consistentemente em uma tabela de usuários e talvez uma tabela de permissões para garantir os direitos adequados, em vez de fazer várias pré-consultas. A inserção pode ser feita através de uma seleção semelhante (
insert into ... select ...
) em vez de valores nomeados para garantir a validação dos dados.De qualquer forma, recomendo enfatizar as primitivas do Codd e entender a seleção, projeção, união, união e diferença. No final do dia, os conceitos são diretos e você provavelmente pode realizar 80% do que deseja fazer através deles. O resto pode seguir.
fonte
A maneira mais rápida que encontrei para "dominar" qualquer coisa foi me desafiar com isso. Pegue um conjunto de dados e anote de oito a dez coisas diferentes que você gostaria de consultar. Um grupo de alunos em que você pode encontrar a idade média de todos os agrupados pela média da nota arredondada para o número inteiro mais próximo. Em seguida, escreva as consultas para eles. Comece com uma tabela e adicione mais. Pratique junções de dados e funções internas.
fonte