One place for hosting & domains

      Entendendo Bancos de Dados Gerenciados


      Introdução

      Armazenamento de dados seguro e confiável é uma necessidade para quase todas as aplicações modernas. No entanto, a infraestrutura necessária para um banco de dados local autogerenciado pode ser proibitivamente cara para muitas equipes. Da mesma forma, funcionários que possuem as habilidades e a experiência necessárias para manter um banco de dados de produção com eficiência podem ser difíceis de contratar.

      A disseminação dos serviços de computação em nuvem reduziu as barreiras de entrada associadas ao provisionamento de um banco de dados, mas muitos desenvolvedores ainda não têm tempo nem conhecimento necessários para gerenciar e ajustar um banco de dados para atender às suas necessidades. Por esse motivo, muitas empresas estão recorrendo aos serviços de banco de dados gerenciados para ajudá-las a criar e dimensionar seus bancos de dados de acordo com seu crescimento.

      Neste artigo conceitual, veremos o que são bancos de dados gerenciados e como eles podem ser benéficos para muitas empresas. Também abordaremos algumas considerações práticas que devem ser feitas antes de criar sua próxima aplicação em cima de uma solução de banco de dados gerenciada.

      Bancos de Dados Gerenciados em Poucas Palavras

      Um banco de dados gerenciado é um serviço de computação em nuvem no qual o usuário final paga um provedor de serviços em nuvem para acessar um banco de dados. Ao contrário de um banco de dados típico, os usuários não precisam configurar ou manter um banco de dados gerenciado por conta própria; em vez disso, é responsabilidade do provedor supervisionar a infraestrutura do banco de dados. Isso permite que o usuário se concentre em criar sua aplicação, em vez de gastar tempo configurando seu banco de dados e mantê-lo atualizado.

      O processo de provisionamento de um banco de dados gerenciado varia de acordo com o provedor, mas, em geral, é semelhante ao de qualquer outro serviço baseado em nuvem. Depois de registrar uma conta e fazer login no painel, o usuário revisa as opções de banco de dados disponíveis – como o engine do banco de dados e o tamanho do cluster – e escolhe a configuração certa para elas. Depois de provisionar o banco de dados gerenciado, você pode se conectar a ele por meio de uma GUI ou de um cliente e, em seguida, pode começar a carregar dados e a integrar o banco de dados à sua aplicação.

      As soluções de dados gerenciadas simplificam o processo de provisionamento e manutenção de um banco de dados. Em vez de executar comandos a partir de um terminal para instalar e configurar, você pode implantar um banco de dados pronto para produção com apenas alguns cliques no navegador. Ao simplificar e automatizar o gerenciamento de banco de dados, os provedores de nuvem facilitam para todos, até mesmo os usuários de bancos de dados iniciantes, a criação de aplicações e websites orientados a dados. Esse foi o resultado de uma tendência de décadas para simplificar, automatizar e abstrair várias tarefas de gerenciamento de banco de dados, que por si só era uma resposta à aflição sentida pelos administradores de banco de dados.

      Pontos Críticos dos Bancos de Dados Locais e Auto-Gerenciados

      Antes do surgimento do modelo de computação em nuvem, qualquer empresa que necessitasse de um data center precisava fornecer todo o tempo, espaço e recursos necessários para configurar um. Uma vez que seu banco de dados estava funcionando, elas também precisavam manter o hardware, manter seu software atualizado, contratar uma equipe para gerenciar o banco de dados e treinar seus funcionários sobre como usá-lo.

      Como os serviços de computação em nuvem cresceram em popularidade nos anos 2000, tornou-se mais fácil e mais acessível provisionar a infraestrutura do servidor, já que o hardware e o espaço necessário para ele não precisavam mais ser de propriedade da empresa ou gerenciados por aqueles que o usavam. Da mesma forma, configurar um banco de dados inteiramente dentro da nuvem tornou-se muito menos difícil; um empresa ou desenvolvedor precisaria apenas requisitar um servidor, instalar e configurar o sistema de gerenciamento de banco de dados escolhido e começar a armazenar dados.

      Embora a computação em nuvem tenha facilitado o processo de configuração de um banco de dados tradicional, ela não resolveu todos os seus problemas. Por exemplo, na nuvem, ainda pode ser difícil identificar o tamanho ideal da área de cobertura da infraestrutura de um banco de dados antes de começar a coletar dados. Isso é importante porque os consumidores de nuvem são cobrados com base nos recursos que consomem e correm o risco de pagar mais do que o necessário, se o servidor que eles provisionam for maior que o necessário. Além disso, como ocorre com os bancos de dados locais tradicionais, o gerenciamento do banco de dados na nuvem pode ser um esforço dispendioso. Dependendo de suas necessidades, você ainda pode precisar contratar um administrador de banco de dados experiente ou gastar uma quantidade significativa de tempo e dinheiro treinando sua equipe atual para gerenciar seu banco de dados de forma eficaz.

      Muitos desses problemas são agravados para empresas menores e desenvolvedores independentes. Enquanto uma grande empresa geralmente pode contratar funcionários com um conhecimento profundo de bancos de dados, equipes menores geralmente têm menos recursos disponíveis, deixando-as apenas com o conhecimento institucional existente. Isso torna tarefas como replicação, migrações e backups ainda mais difíceis e demoradas, pois podem exigir muito aprendizado no trabalho, além de tentativa e erro.

      Os bancos de dados gerenciados ajudam a resolver esses pontos problemáticos com uma série de benefícios para empresas e desenvolvedores. Vamos examinar alguns desses benefícios e ver como eles podem impactar as equipes de desenvolvimento.

      Benefícios dos Bancos de Dados Gerenciados

      Os serviços de banco de dados gerenciados podem ajudar a reduzir muitas das dores de cabeça associadas ao provisionamento e ao gerenciamento de um banco de dados. Os desenvolvedores criam aplicações sobre os serviços de banco de dados gerenciados para acelerar drasticamente o processo de provisionamento de um servidor. Com uma solução autogerenciada, você deve obter um servidor (local ou na nuvem), conectar-se a ele a partir de um cliente ou terminal, configurá-lo e protegê-lo e, em seguida, instalar e configurar o software de gerenciamento de banco de dados antes de poder iniciar o armazenamento de dados. Com um banco de dados gerenciado, você só precisa decidir sobre o tamanho inicial do servidor, configurar opções adicionais específicas do provedor e terá um novo banco de dados pronto para ser integrado à sua aplicação ou website. Isso geralmente pode ser feito em apenas alguns minutos através da interface de usuário do provedor.

      Outro apelo de bancos de dados gerenciados é a automação. Bancos de dados autogerenciados podem consumir uma grande quantidade de recursos de uma organização porque seus funcionários precisam executar todas as tarefas administrativas — do dimensionamento até a execução de atualizações, executar migrações e criar backups — manualmente. Com um banco de dados gerenciado, no entanto, essas e outras tarefas são executadas automaticamente ou sob demanda, o que reduz drasticamente o risco de erro humano.

      Isso está relacionado ao fato de que os serviços de banco de dados gerenciados ajudam a simplificar o processo de escalonamento do banco de dados. Escalar um banco de dados autogerenciado pode consumir muito tempo e recursos. Quer você escolha sharding, replicação, balanceamento de carga ou qualquer outra coisa como estratégia de dimensionamento, se você gerenciar a infraestrutura por conta própria, será responsável por garantir que nenhum dado seja perdido no processo e que a aplicação continue funcionando corretamente. No entanto, se você integrar sua aplicação a um serviço de banco de dados gerenciado, poderá escalonar o cluster de banco de dados sob demanda. Em vez de precisar trabalhar de antemão com o tamanho ideal do servidor ou o uso da CPU, você pode provisionar rapidamente mais recursos dinamicamente. Isso ajuda a evitar o uso de recursos desnecessários, o que significa que você também não pagará pelo que não precisa.

      Soluções gerenciadas tendem a ter alta disponibilidade integrada. No contexto da computação em nuvem, um serviço é considerado de alta disponibilidade se for estável e passível de ser executado sem falhas por longos períodos de tempo. A maioria dos produtos de provedores de nuvem respeitáveis vem com um contrato de nível de serviço (SLA), um compromisso entre o provedor e seus clientes que garante a disponibilidade e a confiabilidade de seus serviços. Um SLA típico especificará quanto tempo de inatividade o cliente deve esperar e muitos também definirão a compensação para os clientes se esses níveis de serviço não forem atingidos. Isso fornece garantia para o cliente de que o banco de dados não irá falhar e, se isso acontecer, poderá pelo menos esperar algum tipo de reparação do provedor.

      Em geral, os bancos de dados gerenciados simplificam as tarefas associadas ao provisionamento e à manutenção de um banco de dados. Dependendo do provedor, você ou sua equipe ainda precisarão de algum nível de experiência ao trabalhar com bancos de dados para provisionar um banco e interagir com ele à medida que você cria e escala sua aplicação. Por fim, a experiência específica em banco de dados necessária para administrar um banco de dados gerenciado será muito menor do que com a solução autogerenciada.

      É claro que os bancos de dados gerenciados não são capazes de resolver todos os problemas e podem não ser a opção ideal para alguns. Em seguida, examinaremos algumas das possíveis desvantagens que devemos considerar antes de provisionar um banco de dados gerenciado.

      Considerações Práticas

      Um serviço de banco de dados gerenciado pode aliviar o estresse de implantar e manter um banco de dados, mas ainda há algumas coisas a serem consideradas antes de se comprometer com um. Lembre-se de que o principal atrativo dos bancos de dados gerenciados é que eles abstraem a maioria dos aspectos mais tediosos da administração do banco de dados. Para este fim, um provedor de banco de dados gerenciado tem como objetivo fornecer um banco de dados rudimentar que satisfaça os casos de uso mais comuns. Assim, essas ofertas de banco de dados não apresentam muitas opções de personalização ou recursos exclusivos incluídos em softwares de banco de dados mais especializados. Por causa disso, você não terá tanta liberdade para adaptar seu banco de dados e estará limitado ao que o provedor de nuvem tiver a oferecer.

      Um banco de dados gerenciado é quase sempre mais caro do que um autogerenciado. Isso faz sentido, já que você está pagando ao provedor de nuvem para dar suporte a você no gerenciamento do banco de dados, mas pode ser um motivo de preocupação para equipes com recursos limitados. Além disso, o preço para bancos de dados gerenciados é geralmente baseado em quanto armazenamento e RAM o banco de dados usa, quantas leituras ele manipula e quantos backups do banco de dados o usuário cria. Da mesma forma, qualquer aplicativo que utilize um serviço de banco de dados gerenciado que manipule grandes quantidades de dados ou tráfego, será mais caro do que se fosse usado um banco de dados autogerenciado na nuvem.

      Deve-se também refletir sobre o impacto que a mudança para um banco de dados gerenciado terá em seus fluxos de trabalho internos e se eles poderão ou não se ajustar a essas mudanças. Um provedor é diferente de outro e, dependendo do seu SLA, pode assumir a responsabilidade por apenas algumas tarefas de administração, o que seria problemático para os desenvolvedores que procuram uma solução de serviço completo. Por outro lado, alguns provedores podem ter um SLA proibitivo ou tornar o cliente totalmente dependente do provedor em questão, uma situação conhecida como vendor lock-in.

      Por último, e talvez mais importante, deve-se considerar cuidadosamente se algum serviço de banco de dados gerenciado que você está considerando usar atenderá ou não às suas necessidades de segurança. Todos os bancos de dados, incluindo bancos de dados locais, são propensos a determinadas ameaças de segurança, como ataques de injeção de SQL ou vazamentos de dados. No entanto, a dinâmica de segurança é muito diferente para bancos de dados hospedados na nuvem. Usuários de banco de dados gerenciados não podem controlar a localização física de seus dados ou quem tem acesso a eles, nem podem garantir a conformidade com padrões de segurança específicos. Isso pode ser especialmente problemático se o seu cliente tiver necessidades de segurança elevadas.

      Para ilustrar, imagine que você é contratado por um banco para criar uma aplicação em que seus clientes possam acessar registros financeiros e efetuar pagamentos. O banco pode estipular que o aplicativo deve ter criptografia de dados em repouso e permissões de usuário com escopo adequado, e que devem estar em conformidade com determinados padrões de regulamentação, como PCI DSS. Nem todos os provedores de bancos de dados gerenciados aderem aos mesmos padrões regulatórios ou mantêm as mesmas práticas de segurança, e é improvável que adotem novos padrões ou práticas para apenas um de seus clientes. Por esse motivo, é essencial garantir que qualquer provedor de banco de dados gerenciado do qual você dependa para tal aplicação seja capaz de atender às suas necessidades de segurança, bem como às necessidades de seus clientes.

      Conclusão

      Os bancos de dados gerenciados têm muitos recursos que atraem uma ampla variedade de empresas e desenvolvedores, mas um banco de dados gerenciado pode não resolver todos os problemas ou atender às necessidades de todos. Alguns podem achar que o conjunto limitado de recursos e as opções de configuração de um banco de dados gerenciado, o aumento de custos e a flexibilidade reduzida superam qualquer uma de suas possíveis vantagens. No entanto, benefícios atraentes como facilidade de uso, escalabilidade, backups e upgrades automatizados e alta disponibilidade levaram a uma maior adoção de soluções de banco de dados gerenciado em vários setores.

      Se você estiver interessado em aprender mais sobre os Bancos de Dados Gerenciados da DigitalOcean, recomendamos que você confira nossa documentação de produto.



      Source link

      Configuration initiale de serveur avec Ubuntu 18.04


      Introduction

      Lorsque vous installez un nouveau serveur Ubuntu 18.04, il y a quelques étapes de configuration que vous devriez effectuer au sein de votre paramétrage initial. Cela renforcera la sécurité et l’ergonomie de votre serveur et vous procurera une base solide pour vos actions futures.

      Note: Le guide ci-dessous montre comment compléter manuellement les étapes que nous recommandons de suivre pour les nouveaux serveurs Ubuntu 18.04. Suivre cette procédure manuellement peut être pratique afin d’apprendre des techniques d’administration de système de base et pour bien comprendre les actions entreprises sur votre serveur. De manière alternative, si vous désirez être en mesure de débuter plus rapidement, vous pouvez suivre ce guide [run our initial server setup script] (en Anglais) (https://www.digitalocean.com/community/tutorials/automating-initial-server-setup-with-ubuntu-18-04) qui automatise ces étapes.

      Étape 1 — Se connecter en tant que Root

      Afin de vous connecter à votre serveur, vous aurez besoin de connaître votre « adresse IP publique ». Vous aurez également besoin du mot de passe, ou si vous avez installé une clé d’identification SSH, la clé privée de votre compte d’utilisateur root. Si vous ne vous êtes pas encore connecté à votre serveur, vous devriez penser à suivre notre guide [how to connect to your Droplet with SSH] (en anglais) (https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-ssh), qui couvre ce processus en détail.

      Si vous n’êtes pas encore connecté à votre serveur, vous pouvez aller de l’avant et vous connecter en tant qu’utilisateur root à l’aide de la commande suivante : (substituer la partie surlignée de la commande avec l’adresse IP publique de votre serveur)

      Acceptez l’avertissement concernant l’authenticité de l’hôte si elle apparaît. Si vous utilisez l’authentification avec mot de passe, entrez votre mot de passe root afin de vous connecter. Si vous utilisez une clé SSH qui est protégée à l’aide d’une phrase de sécurité, il est possible que vous soyez invité à entrer la phrase de sécurité la première fois que vous utilisez la clé chaque session. S’il s’agit de la première fois que vous vous connectez sur le serveur à l’aide d’un mot de passe, il est possible que vous soyez également invité à changer votre mot de passe root.

      À propos de Root

      L’utilisateur root est l’utilisateur administratif dans un environnement Linux qui bénéficie d’une large gamme de privilèges. Dû aux privilèges accrus du compte root, vous êtes déconseillé de l’utiliser sur une base régulière. Cela est dû au fait qu’une partie du pouvoir propre au compte root est sa capacité à faire des modifications très destructives, même par accident.

      La prochaine étape consiste à configurer un compte d’utilisateur alternatif avec un champ d’influence limité pour le travail de tous les jours. Nous vous enseignerons comment accéder à des privilèges accrus pour les moments où vous en aurez besoin.

      Étape 2 — Créer un nouvel utilisateur

      Une fois connectés en tant que root, nous sommes prêts à ajouter le nouveau compte d’utilisateur que nous utiliserons toujours dorénavant pour nous connecter.

      Cet exemple créer un utilisateur nommé sammy, mais vous devriez le replacer par un nom d’utilisateur que vous aimez :

      On vous posera quelques questions, commençant par le mot de passe de votre compte.

      Entrez un mot de passe robuste et, si vous le désirez, remplissez quelconque information supplémentaire. Ceci n’est pas obligatoire et vous pouvez simplement pesez ENTER au sein de n’importe quel champ que vous désirez sauter.

      Étape 3 — Octroyer les privilèges d’administration

      Présentement, nous avons un nouveau compte d’utilisateur avec des privilèges de compte régulier. Cependant, il se peut que nous ayons besoin d’effectuer des tâches administratives de temps à autre.

      Afin d’éviter de devoir se déconnecter de notre utilisateur normal pour ensuite se reconnecter à notre compte root, nous pouvons régler ce qu’on appelle le "superuser" ou les privilèges root pour notre compte normal. Cela permettra à notre utilisateur normal d’exécuter des commandes avec des privilèges administratifs en inscrivant le mot sudo avant chaque commande.

      Afin d’ajouter ces privilèges à notre nouvel utilisateur, nous devons ajouter le nouvel utilisateur au groupe sudo. Par défaut, sur Ubuntu 18.04, les utilisateurs appartenant au groupe sudo sont autorisés à utiliser la commande sudo.

      En tant que root, effectuez cette commande afin d’ajouter votre nouvel utilisateur au groupe sudo (substituer le mot surligné avec votre nouvel utilisateur) :

      Maintenant, une fois connecté avec votre utilisateur régulier, vous pouvez tapez sudo avant chaque commande pour effectuer des actions avec des privilèges "superuser".

      Étape 4 —Régler un pare-feu de base

      Les serveurs Ubuntu 18.04 peuvent faire appel à un pare-feu UFW afin de s’assurer que seules les connexions à certains services soient autorisées. Nous pouvons régler un pare-feu de base très facilement en utilisant cette application.

      Note: Si vos serveurs fonctionnent avec DigitalOcean, vous pouvez de manière facultative utiliser [DigitalOcean Cloud Firewalls] (en Anglais) (https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-cloud-firewalls) au lieu du pare-feu UFW. Nous vous recommandons d’utiliser seulement un pare-feu à la fois afin d’éviter d’avoir des règles conflictuelles qui pourraient prendre du temps à déboguer.

      Différentes applications peuvent inscrire leurs profils avec UFW au moment de l’installation. Ces profils permettent à UFW de gérer ces applications selon leur nom. OpenSSH, le service nous permettant maintenant de nous connecter à notre serveur possède un profil inscrit avec UFW.

      Vous pouvez voir cela en tapant:

      Output

      Available applications: OpenSSH

      Nous devons s’assurer que le pare-feu permette les connexions SSH afin que nous puissions nous connecter la prochaine fois. Nous pouvons autoriser ces connexions en tapant :

      Ensuite, nous pouvons activer le pare-feu en tapant:

      Tapez "y" et pesez sur ENTER afin de procéder. Vous pouvez voir si les connexions SSH sont toujours autorisées en tapant :

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

      Alors que le pare-feu bloque présentement toutes les connexions mises à part celle SSH, si vous installez et configurez des services additionnels, vous devrez régler les paramètres du pare-feu afin de permettre un trafic entrant acceptable. Vous pouvez lire davantage sur les opérations courantes UFW [this guide] (en Anglais) (https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands).

      Étape 5 — Autoriser l’accès externe à votre utilisateur régulier

      Maintenant que nous possédons un utilisateur régulier pour une utilisation quotidienne, nous devons s’assurer que nous pouvons SSH directement au sein de notre compte.

      Note:Avant d’avoir pu vérifier que vous pouvez bien vous connecté et utilisé sudo avec votre nouvel utilisateur, nous vous recommandons de rester connecté en tant que root. De cette manière, si vous avez des problèmes, vous pourrez diagnostiquer le problème et le résoudre ainsi que faire les modifications nécessaires en tant que root. Si vous utilisez DigitalOcean Droplet et vous rencontrez des problèmes avec votre connexion SSH root, vous pouvez suivre ce guide [log into the Droplet using the DigitalOcean Console] (en Anglais) (https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-console-to-access-your-droplet).

      Le processus pour configurer l’accès SSH pour votre nouvel utilisateur dépendra si le compte root de votre serveur utilise un mot de passe ou des clés SSH pour l’authentification.

      Si le compte Root utilise l’authentification par mot de passe

      Si vous vous êtes connecté à votre compte root à l’aide d’un mot de passe, alors l’authentification par mot de passe est activée pour SSH. Vous pouvez SSH à votre nouveau compte d’utilisateur en ouvrant une nouvelle session terminale et utilisez SSH avec votre nouveau nom d’utilisateur :

      Après avoir entré votre mot de passe d’utilisateur régulier, vous serez connecté. Rappelez-vous, si vous avez besoin d’exécuter une commande avec des privilèges administratifs, tapez sudo avant comme ceci :

      Vous serez invité à entrer votre mot de passe régulier d’utilisateur lorsque vous utilisez sudo pour la première fois chaque session (et de manière périodique par la suite).

      Afin de renforcer la sécurité de votre serveur, nous suggérons fortement de mettre en place des clés SSH plutôt que d’utiliser l’authentification par mot de passe. Suivez notre guide sur [setting up SSH keys on Ubuntu 18.04] (en Anglais) (https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-1804) afin de savoir comment configurer une authentification par clé.

      Si le compte “Root” utilise l’authentification par clé SSH.

      Si vous vous êtes connecté à votre compte root en utilisant des clés SSH, alors l’authentification par mot de passe est désactivée pour SSH. Vous devrez ajouter une copie de votre clé locale publique à votre nouveau fichier d’utilisateur ~/.ssh/authorized_keys afin de vous connecter.

      Étant donné que votre clé publique figure déjà au sein du fichier ~/.ssh/authorized_keys de votre compte root sur le serveur, nous pouvons copier ce fichier et la structure de répertoires au sein de notre nouveau compte d’utilisateur dans notre session préexistante.

      La manière la plus simple de copier les fichiers avec les droits et permissions appropriés est par la commande rsync. Cela copiera le répertoire .ssh de l’utilisateur root, préserver les permissions et modifier les propriétaires de fichier, le tout au sein d’une seule commande. Assurez-vous de modifier les parties surlignées de la commande ci-dessous afin qu’elles concordent avec votre nom d’utilisateur régulier :

      Note: La commande rsync traite différemment les sources et destinations qui terminent avec une barre oblique que celles-ci terminant sans barre oblique. En utilisant la commande rsync ci-dessous, assurez-vous que la source du répertoire (~/.ssh) n’inclut pas de barre oblique (vérifiez pour vous assurer que vous n’utilisez pas ~/.ssh/).

      Si vous ajoutez une barre oblique par mégarde à la commande, rsync copiera le contenu du répertoire ~/.ssh du compte root au répertoire d’origine de l’utilisateur au lieu de copier la structure complète du répertoire ~/.ssh. Les fichiers se situeront à la mauvaise destination et SSH ne serait pas en mesure de les trouver et les utiliser.

      • rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

      Maintenant, ouvrez une nouvelle session terminale et utilisez SSH avec votre nouveau nom d’utilisateur :

      Vous devriez être connecté avec votre nouveau compte d’utilisateur sans devoir utiliser de mot de passe. N’oubliez pas, si vous devez exécuter une commande avec des privilèges administratifs, tapez sudo avant comme ceci :

      Vous serez invité à entrer votre mot de passe régulier lorsque vous utilisez sudo pour la première fois à chaque session (et de manière périodique par la suite).

      Que pouvons-nous faire ensuite ?

      À ce stade, vous avez une base solide pour votre serveur. Vous pouvez à présent installer quelconque logiciel dont vous avez besoin sur votre serveur.



      Source link

      Como Gerenciar um Banco de Dados SQL


      Um Guia de Consulta Rápida SQL

      Introdução

      Os bancos de dados SQL vêm instalados com todos os comandos necessários para adicionar, modificar, excluir e consultar seus dados. Este guia de consulta rápida fornece uma referência para alguns dos comandos SQL mais usados.

      Como Utilizar Este Guia:

      • Este guia está no formato de consulta rápida com trechos de linha de comando independentes

      • Salte para qualquer seção que seja relevante para a tarefa que você está tentando concluir

      • Quando você vir texto destacado nos comandos deste guia, tenha em mente que este texto deve se referir às colunas, tabelas e dados em seu próprio banco de dados.

      • Em todo este guia, os valores de dados de exemplo fornecidos são todos agrupados em apóstrofos ('). No SQL, é necessário envolver quaisquer valores de dados que consistam em strings em apóstrofos. Isso não é necessário para dados numéricos, mas também não causará problemas se você incluir apóstrofos.

      Por favor, observe que, embora o SQL seja reconhecido como padrão, a maioria dos programas de banco de dados SQL possui suas próprias extensões proprietárias. Este guia utiliza o MySQL como exemplo de sistema gerenciador de banco de dados relacional (SGBD), mas os comandos executados irão funcionar com outros programs de banco de dados relacionais, incluindo PostgreSQL, MariaDB, and SQLite. Onde existem diferenças significativas entre os SGDBs, incluímos os comandos alternativos.

      Abrindo o Prompt do Banco de Dados (usando Autenticação Socket/Trust)

      Por padrão no Ubuntu 18.04, o usuário root do MySQL pode se autenticar sem uma senha utilizando o seguinte comando:

      Para abrir um prompt no PostgreSQL, use o seguinte comando. Este exemplo irá logar você como o usuário postgres, que é a função de superusuário incluída, mas você pode substituir isso por qualquer função já criada:

      Abrindo o Prompt do Banco de Dados (usando Autenticação por Senha)

      Se seu usuário root do MySQL está configurado para se autenticar com uma senha, você pode fazer isso com o seguinte comando:

      Se você já tiver configurado uma conta de usuário não-root para seu banco de dados, você também poderá usar esse método para efetuar login como esse usuário:

      O comando acima irá solicitar a sua senha após executá-lo. Se voce gostaria de fornecer sua senha como parte do comando, siga imediatamente a opção -p com a sua senha, sem espaço entre elas:

      Criando um Banco de Dados

      O seguinte comando cria um banco de dados com configurações padrão.

      • CREATE DATABASE nome_do_banco_de_dados;

      Se você quer que seu banco de dados utilize um conjunto de caracteres e collation diferentes do padrão, você pode especificá-los usando esta sintaxe:

      • CREATE DATABASE nome_do_banco_de_dados CHARACTER SET character_set COLLATE collation;

      Listando Bancos de Dados

      Para ver quais bancos de dados existem em sua instalação de MySQL ou MariaDB, execute o seguinte comando:

      No PostgreSQL, você pode ver quais bancos de dados foram criados com o seguinte comando:

      Excluindo um Banco de Dados

      Para excluir um banco de dados, incluindo quaisquer tabelas e dados contidos nele, execute um comando que segue esta estrutura:

      • DROP DATABASE IF EXISTS banco_de_dados;

      Criando um Usuário

      Para criar um perfil de usuário para o seu banco de dados sem especificar nenhum privilégio para ele, execute o seguinte comando:

      • CREATE USER nome_do_usuário IDENTIFIED BY 'senha';

      O PostgreSQL usa uma sintaxe similar, mas ligeiramente diferente:

      • CREATE USER nome_do_usuário WITH PASSWORD 'senha';

      Se você quiser criar um novo usuário e conceder-lhe privilégios em um comando, você pode fazer isso usando um comando GRANT. O seguinte comando cria um novo usuário e concede a ele privilégios totais em todos os bancos de dados e tabelas do SGBD:

      • GRANT ALL PRIVILEGES ON *.* TO 'nome_do_usuário'@'localhost' IDENTIFIED BY 'senha';

      Observe a palavra-chave PRIVILEGES no comando GRANT anterior. na maioria dos SGBDs, esta palavra-chave é opcional, e esse comando pode ser escrito equivalentemente como:

      • GRANT ALL ON *.* TO 'nome_do_usuário'@'localhost' IDENTIFIED BY 'senha';

      Esteja ciente, porém, que a palavra-chave PRIVILEGES é necessária para a concessão de privilégios como este, quando o modo Strict SQL está ligado.

      Excluindo um Usuário

      Utilize a seguinte sintaxe para excluir um perfil de usuário do banco de dados:

      • DROP USER IF EXISTS nome_do_usuário;

      Observe que esse comando não excluirá por padrão nenhuma tabela criada pelo usuário excluído, e tentativas de acessar essas tabelas podem resultar em erros.

      Selecionando um Banco de Dados

      Antes de poder criar uma tabela, primeiro você precisa informar ao SGBD o banco de dados no qual você gostaria de criá-la. No MySQL e MariaDB, faça isto com a seguinte sintaxe:

      No PostgreSQL, você deve utilizar o seguinte comando para selecionar seu banco de dados desejado:

      Criando uma Tabela

      A seguinte estrutura de comando cria uma nova tabela com o nome tabela, e inclui duas colunas, cada uma com seu tipo de dado específico:

      • CREATE TABLE tabela ( coluna_1 coluna_1_tipo_de_dado, coluna_2 coluna_2_tipo_de_dado );

      Excluindo uma Tabela

      Para excluir uma tabela inteira, incluindo todos os seus dados, execute o seguinte:

      • DROP TABLE IF EXISTS tabela

      Inserindo Dados em uma Tabela

      Utilize a seguinte sintaxe para popular uma tabela com uma linha de dados:

      • INSERT INTO tabela ( coluna_A, coluna_B, coluna_C ) VALUES ( 'dado_A', 'dado_B', 'dado_C' );

      Você pode também popular uma tabela com várias linhas de dados usando um único comando, assim:

      • INSERT INTO tabela ( coluna_A, coluna_B, coluna_C ) VALUES ( 'dado_1A', 'dado_1B', 'dado_1C' ), ( 'dado_2A', 'dado_2B', 'dado_2C' ), ( 'dado_3A', 'dado_3B', 'dado_3C' );

      Excluindo Dados de uma Tabela

      Para excluir uma linha de dados de uma tabela, utilize a seguinte estrutura de comando. Observe que valor deve ser o valor contido na coluna especificada na linha que você quer excluir:

      • DELETE FROM tabela WHERE coluna='valor';

      Nota: Se você não incluir uma cláusula WHERE em um comando DELETE como no exemplo seguinte, ele excluirá todos os dados contidos em uma tabela, mas não as colunas ou a própria tabela:

      Alterando Dados em uma Tabela

      Use a seguinte sintaxe para atualizar os dados contidos em uma dada linha. Observe que a cláusula WHERE no final do comando informa ao SQL qual linha atualizar. valor é o valor contido na coluna_A que se alinha com a linha que você deseja alterar.

      Nota: Se você deixar de incluir uma cláusula WHERE em um comando UPDATE, o comando substituirá os dados contidos em todas as linhas da tabela.

      • UPDATE tabela SET coluna_1 = valor_1, coluna_2 = valor_2 WHERE coluna_A=valor;

      Inserindo uma Coluna

      A seguinte sintaxe de comando adicionará uma nova coluna a uma tabela:

      • ALTER TABLE tabela ADD COLUMN tipo_de_dado coluna;

      Excluindo uma Coluna

      Um comando seguindo essa estrutura excluirá uma coluna de uma tabela:

      • ALTER TABLE tabela DROP COLUMN coluna;

      Realizando Consultas Básicas

      Para visualizar todos os dados de uma única coluna em uma tabela, use a seguinte sintaxe:

      • SELECT coluna FROM tabela;

      Para consultar várias colunas da mesma tabela, separe os nomes das colunas com uma vírgula:

      • SELECT coluna_1, coluna_2 FROM tabela;

      Você também pode consultar todas as colunas de uma tabela, substituindo os nomes das colunas por um asterisco (*). No SQL, asteriscos agem como um curinga para representar "todos":

      Usando Cláusulas WHERE

      Você pode restringir os resultados de uma consulta adicionando a cláusula WHERE ao comando SELECT, assim:

      • SELECT coluna FROM tabela WHERE condições_que_se_aplicam;

      Por exemplo, você pode consultar todos os dados de uma única linha com uma sintaxe como a seguinte. Observe que valor deve ser um valor contido tanto na coluna especificada quanto na linha que você quer consultar:

      • SELECT * FROM tabela WHERE coluna = valor;

      Um operador de comparação em uma cláusula WHERE define como a coluna especificada deve ser comparada com o valor. Aqui estão alguns operadores comuns de comparação SQL:

      Operador O que ele faz
      = testa a igualdade
      != testa a desigualdade
      < testa menor que
      > testa maior que
      <= testa menor que ou igual a
      >= testa maior que ou igual a
      BETWEEN testa se um valor está dentro de um determinado intervalo
      IN testa se o valor de uma linha está contido em um conjunto de valores especificados
      EXISTS testa se existem linhas, dadas as condições especificadas
      LIKE testa se um valor corresponde a uma string especificada
      IS NULL testa valores NULL
      IS NOT NULL testa todos os valores que não sejam NULL

      O SQL permite o uso de caracteres curinga. Eles são úteis se você estiver tentando encontrar uma entrada específica em uma tabela, mas não tiver certeza de qual é exatamente essa entrada.

      Asteriscos (*) são marcadores que representam “todos”. Isso irá consultar todas as colunas de uma tabela:

      O símbolo de porcentagem (%) representa zero ou mais caracteres desconhecidos.

      • SELECT * FROM tabela WHERE coluna LIKE val%;

      Os underscores (_) são usados para representar um único caractere desconhecido:

      • SELECT * FROM tabela WHERE coluna LIKE v_lue;

      Contando Entradas em uma Coluna

      A função COUNT é utilizada para encontrar o número de entradas em uma determinada coluna. A seguinte sintaxe retornará o número total de valores contidos em coluna:

      • SELECT COUNT(coluna) FROM tabela;

      Você pode restringir os resultados de uma função COUNT adicionando a cláusula WHERE, assim:

      • SELECT COUNT(coluna) FROM table WHERE coluna=valor;

      Encontrando o Valor Médio em uma Coluna

      A função AVG é usada para encontrar o valor médio (nesse caso, a média) entre os valores contidos em uma coluna específica. Observe que a função AVG só funcionará com colunas contendo valores numéricos; quando usada em uma coluna contendo valores de string, pode retornar um erro ou 0:

      • SELECT AVG(coluna) FROM tabela;

      Encontrando a Soma de Valores em uma Coluna

      A função SUM é usado para encontrar a soma total de todos os valores numéricos contidos em uma coluna:

      • SELECT SUM(coluna) FROM tabela;

      Assim como na função AVG, se você executar a função SUM em uma coluna contendo valores de string, ela pode retornar um erro ou apenas 0, dependendo do seu SGBD.

      Encontrando o Maior Valor em uma Coluna

      Para encontrar o maior valor numérico em uma coluna ou o último valor em ordem alfabética, utilize a função MAX:

      • SELECT MAX(coluna) FROM tabela;

      Encontrando o Menor Valor em uma Coluna

      Para encontrar o menor valor numérico em uma coluna ou o primeiro valor em ordem alfabética, use a função MIN:

      • SELECT MIN(coluna) FROM tabela;

      Uma cláusula ORDER BY é usada para ordenar os resultados da consulta. A seguinte sintaxe de consulta retorna os valores de coluna1 e coluna2 e ordena os resultados pelos valores contidos em coluna_1 em ordem crescente ou, para valores de string, em ordem alfabética:

      • SELECT coluna_1, coluna_2 FROM tabela ORDER BY coluna_1;

      Para realizar a mesma ação, mas ordenar os resultados em ordem alfabética decrescente ou reversa, anexe a consulta com DESC:

      • SELECT coluna_1, coluna_2 FROM tabela ORDER BY coluna_1 DESC;

      A cláusula GROUP BY é semelhante à cláusula ORDER BY, mas é usada para ordenar os resultados de uma consulta que inclui uma função de agregação, como COUNT, MAX, MIN, ou SUM. Sozinhas, as funções de agregação descritas na seção anterior retornarão apenas um único valor. No entanto, você pode visualizar os resultados de uma função de agregação executada em cada valor correspondente em uma coluna, ao incluir uma cláusula GROUP BY.

      A seguinte sintaxe contará o número de valores correspondentes em coluna_2 e os agrupará em ordem crescente ou alfabética:

      • SELECT COUNT(coluna_1), coluna_2 FROM tabela GROUP BY coluna_2;

      Para realizar a mesma ação, mas ordenar os resultados em ordem alfabética decrescente ou reversa, adicione DESC à consulta:

      • SELECT COUNT(coluna_1), coluna_2 FROM tabela GROUP BY coluna_2 DESC;

      As cláusulas JOIN são usadas para criar result-sets ou conjuntos de resultados que combinam linhas de duas ou mais tabelas. Uma cláusula JOIN só funcionará se as duas tabelas tiverem uma coluna com nome e tipo de dados idênticos, como neste exemplo:

      • SELECT tabela_1.coluna_1, tabela_2.coluna_2 FROM tabela_1 JOIN tabela_2 ON tabela_1.coluna_comum=tabela_2.coluna_comum;

      Este é um exemplo de uma cláusula INNER JOIN. Um INNER JOIN retornará todos os registros que tiverem valores correspondentes nas duas tabelas, mas não mostrará registros que não tenham valores correspondentes.

      É possível retornar todos os registros de uma das duas tabelas, incluindo valores que não têm ocorrência correspondente na outra tabela, utilizando uma cláusula outer JOIN. As cláusulas outer JOIN são escritas ou como LEFT JOIN ou RIGHT JOIN.

      Uma cláusula LEFT JOIN retorna todos os registros da tabela da "esquerda" e apenas os registros correspondentes da tabela da "direita". No contexto das cláusulas outer JOIN, a tabela da esquerda é aquela referenciada na cláusula FROM, e a tabela da direita é qualquer outra tabela referenciada após a declaração JOIN. A consulta seguinte mostrará todos os registros de tabela_1 e apenas os valores correspondentes de tabela_2. Quaisquer valores que não tenham uma correspondência em tabela_2 aparecerão como NULL no result-set:

      • SELECT tabela_1.coluna_1, tabela_2.coluna_2 FROM tabela_1 LEFT JOIN tabela_2 ON tabela_1.coluna_comum=tabela_2.coluna_comum;

      Uma cláusula RIGHT JOIN funciona da mesma forma que um LEFT JOIN, mas imprime todos os resultados da tabela da direita e apenas os valores correspondentes da tabela da esquerda:

      • SELECT tabela_1.coluna_1, tabela_2.coluna_2 FROM tabela_1 RIGHT JOIN tabela_2 ON tabela_1.coluna_comum=tabela_2.coluna_comum;

      Um operador UNION é útil para combinar os resultados de dois (ou mais) comandos SELECT em um único result-set:

      • SELECT coluna_1 FROM tabela UNION SELECT coluna_2 FROM tabela;

      Além disso, a cláusula UNION pode combinar dois (ou mais) comandos SELECT consultando diferentes tabelas em um mesmo result-set:

      • SELECT coluna FROM tabela_1 UNION SELECT coluna FROM tabela_2;

      Conclusão

      Este guia aborda alguns dos comandos mais comuns no SQL usados para gerenciar bancos de dados, usuários e tabelas e consultar o conteúdo contido nessas tabelas. No entanto, existem muitas combinações de cláusulas e operadores que produzem result-set exclusivos. Se você está procurando um guia mais abrangente para trabalhar com SQL, recomendamos que você confira a Referência de SQL do Banco de Dados Oracle.

      Além disso, se houver comandos SQL comuns que você gostaria de ver neste guia, pergunte ou faça sugestões nos comentários abaixo.

      Por Mark Drake



      Source link