Database
 sql >> Base de Dados >  >> RDS >> Database

SQL Cheat Sheet:O que é SQL, Comandos SQL e SQL Injection


Usar a Linguagem de Consulta Estruturada (SQL) pode parecer complicado no começo, mas depois se tornará mais fácil e muito mais conveniente. Você só precisa de prática.

Se você está procurando maneiras melhores de gerenciar dados em seu banco de dados ou se está simplesmente curioso sobre as possibilidades que o SQL abre para você, então você veio ao lugar certo!

Por que SQL?


A maioria das pessoas já ouviu falar do SQL, mas pode não estar completamente familiarizada com seu trabalho. Você pode pensar no SQL como uma linguagem especial para se comunicar com bancos de dados. Como os computadores não entendem idiomas naturais como o inglês, você precisa de uma maneira de traduzir. E aqui temos SQ para comandar os bancos de dados a apresentar alguns dados ou armazenar novos dados. Vários bancos de dados, como Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, etc. o utilizam.

SQL nos permite recuperar, inserir, atualizar e excluir dados de bancos de dados com a ajuda de consultas SQL. Uma consulta SQL usa palavras chamadas Cláusulas. As cláusulas consistem em vários elementos que trabalham juntos para realizar alguma ação no banco de dados. As três cláusulas mais comuns são SELECT, UPDATE e DELETE. Você os encontrará em quase todas as instruções SQL.

Vamos pegar a sintaxe de consulta mais básica:
SELECT * FROM table_name;

Essa consulta selecionará todos os dados armazenados na tabela específica. O asterisco (*) indica que todas as colunas dessa tabela devem ser retornadas, não importa quantas delas a tabela tenha.

Folha de consulta de consulta SQL:quais comandos existem?


Aqui apresentamos uma seleção dos comandos e cláusulas SQL mais usados ​​que você precisará ao trabalhar com bancos de dados. Vamos começar.

SQL CRIAR BANCO DE DADOS


Você não pode fazer muito em SQL sem um banco de dados, então é melhor tirar isso do caminho primeiro.

CRIAR BANCO DE DADOS é um comando para criar novos bancos de dados em seu servidor. Por exemplo, você deseja um novo começo sem tabelas ou dados existentes. A sintaxe está abaixo:
CREATE DATABASE testDB;

SQL CRIAR TABELA


Os bancos de dados relacionais armazenam os dados em tabelas. Assim, para fazer uso de nossos bancos de dados, precisamos criar tabelas neles. Essa operação está intimamente relacionada à alteração das estruturas da tabela, por exemplo, renomear colunas, adicionar novas colunas, descartar colunas etc.

Mas alterar a tabela é possível apenas para uma existente. Assim, você terá que CREATE TABLE primeiro. Outro comando relacionado é ADD COLUMN, que permitirá adicionar colunas adicionais a uma tabela existente.
CREATE TABLE [dbo].[Students](
	[Name] [nvarchar](100) NOT NULL,
	[Bio] [ntext] NULL,
	[DateOfBirth] [datetime] NOT NULL,
);

SQL DROP TABLE


Há uma hora e um lugar para excluir tabelas, e nunca é uma boa ideia fazer isso por capricho. DROP TABLE remove uma tabela inteira com todos os seus registros, índices e restrições do banco de dados.

Não há como recuperar uma mesa depois de derrubá-la. Certifique-se de que você precisa e deseja remover essa tabela específica. Caso contrário, a única opção para recuperar os dados é restaurá-los do backup.
DROP TABLE [dbo].[Students];

SELEÇÃO SQL


Talvez a função mais usada em SQL seja Select. Sua finalidade é recuperar dados de uma ou mais tabelas para posterior manipulação e análise. Essa funcionalidade permite que os usuários isolem e analisem subconjuntos de dados (tabelas) especificando vários atributos (filtros).

Para selecionar um grupo de linhas, você escreve uma consulta que identifica quais linhas devem ser retornadas, com base em um ou mais filtros. Os filtros são especificados por qualquer número de funções ou expressões diferentes combinadas com outras operações de acordo com seus objetivos.
SELECT TOP (1000) [Name]
      ,[Phone]
      ,[Website]
      ,[Address]
      ,[City]
      ,[State]
      ,[Country]
      ,[Description]
      ,[Employees]
FROM [test].[dbo].[company]

INSERÇÃO SQL


A função INSERT insere linhas de dados em uma tabela em SQL. A estrutura básica desta instrução especifica a tabela para adicionar dados e as colunas para incluir esses dados. Em seguida, ele define cada valor que deve ser colocado em cada coluna dentro dessa linha. Se você está apenas aprendendo a usar SQL pode parecer confuso, mas com alguma prática, fica muito mais fácil.
INSERT INTO [dbo].[company]
           ([Name]
           ,[Phone]
           ,[Website]
           ,[Address]
           ,[City]
           ,[State]
           ,[Country]
           ,[Description]
           ,[Employees])
     VALUES(
           'NameValue'
           ,'PhoneValue'
           ,'WebsiteValue'
           , 'AddressValue'
           , 'CityValue'
           , 'StateValue'
           , 'CountryValue'
           , 'DescriptionValue'
           , 2 ) 

ATUALIZAÇÃO SQL


A instrução UPDATE é necessária quando queremos alterar os dados armazenados em tabelas. É também uma das instruções SQL mais comumente usadas aplicáveis ​​a uma linha simples e a vários registros.

A sintaxe padrão inclui os componentes SET e WHERE. CONFIGURAR define como os registros devem ser atualizados e ONDE determina quais registros devem ser atualizados. Sem a cláusula WHERE, o comando atualizará todos os registros da tabela.
UPDATE [dbo].[company]
   SET [Name] = <Name, nvarchar(max),>
      ,[Phone] = <Phone, nvarchar(max),>
      ,[Website] = <Website, nvarchar(max),>
      ,[Address] = <Address, nvarchar(max),>
      ,[City] = <City, nvarchar(max),>
      ,[State] = <State, nvarchar(max),>
      ,[Country] = <Country, nvarchar(max),>
      ,[Description] = <Description, nvarchar(max),>
      ,[Employees] = <Employees, int,>
 WHERE <Search Conditions,,>

SQL AVG


A função AVG retorna a média dos valores numéricos em uma coluna como um número inteiro ou um número de ponto flutuante. Tal como acontece com a maioria das funções SQL, pode ser parte de uma instrução SELECT ou uma instrução INSERT. Quando usado dentro da instrução SELECT, deve estar entre parênteses. Abaixo você pode ver o exemplo de consulta com AVG() que deve retornar a idade média de todos os funcionários:
SELECT avg(age) FROM employee;

SOMA SQL


A função SUM retorna a soma de todos os valores em uma coluna. Isso é muito útil quando você está lidando com várias colunas. O resultado seria uma visão geral dessa tabela que soma todos os dados nela.
SELECT  Sum(Employees) as Sum, 
		AVG(Employees) as AVG,
		MAX(Employees) as Max, 
		MIN(Employees) as Min
FROM [test].[dbo].[company]

SQL ORDER POR


SQL tem muitos operadores, mas um dos mais usados ​​é ORDER BY. Ele classifica os dados de acordo com a expressão especificada. Portanto, se seu conjunto de dados contiver vários registros com valores semelhantes, eles serão classificados de acordo com suas preferências.

Em outras palavras, o operador ORDER BY em SQL é um operador de comparação. Ele permite comparar valores de uma coluna com valores de outra coluna e retornar os resultados conforme ordenados por essa comparação.

A sintaxe é ORDER BY nome da coluna . Pode ser útil se você precisar encontrar informações de maneira ordenada. Por exemplo, ao pesquisar linhas que tenham o mesmo valor ou ao determinar quais linhas são as mais populares.
SELECT * FROM Readers
ORDER BY City;

SQL GROUP BY


O operador GROUP BY é uma ferramenta muito importante e útil em SQL. Ele pode ser usado para agrupar as linhas de dados que compartilham algum tipo de característica ou propriedade comum. Portanto, ele classifica as linhas por uma ou mais colunas especificadas na consulta. Essa cláusula normalmente é colocada no final da instrução SQL depois que todas as outras cláusulas são executadas.

Um caso típico é usar GROUP BY para resumir dados em seu banco de dados. A instrução SELECT usa a cláusula WHERE para filtrar registros indesejados do conjunto de resultados e, em seguida, usa a cláusula GROUP BY para agrupar registros relacionados com base em alguma característica que você especificar.
SELECT * FROM Readers
GROUP BY Country;

Injeção de SQL


Qualquer programador web já ouviu falar de ataques de injeção de SQL. Eles são o flagelo da Internet, deixando feridas profundas em muitos sites e aplicativos populares que podem levar anos para cicatrizar. Se você quiser evitar ser vítima desses ataques, é importante entender o que são, como funcionam e o que você pode fazer para se proteger contra eles no futuro.

Se você não estiver familiarizado com ataques de injeção de SQL, seu aplicativo da Web pode estar vulnerável a eles. A ameaça é séria o suficiente para desencadear uma nova tecnologia para detectar esses ataques. No entanto, confiar na tecnologia não é suficiente. Para ajudar os profissionais de segurança, reunimos uma folha de dicas útil que explica como uma injeção de SQL funciona em inglês simples.

Os invasores executam consultas não autorizadas para obter acesso a dados confidenciais, modificar um banco de dados existente ou excluir dados. Dessa forma, a injeção de SQL é uma técnica de injeção de código que ataca aplicativos orientados a dados onde instruções SQL maliciosas são inseridas em um campo de entrada para execução (geralmente por meio de uma solicitação HTTP).

Um ataque bem-sucedido dá ao invasor acesso a todos os servidores de banco de dados desse site. Uma vez dentro, um invasor pode recuperar o conteúdo do banco de dados, alterá-lo ou até mesmo destruí-lo. É por isso que é tão importante que os desenvolvedores da Web entendam como sua linguagem de programação facilita ou dificulta as injeções de SQL para possíveis invasores.

Existem dois tipos principais de ataques de injeção de SQL:baseados em erros e cegos .

Um ataque baseado em erro ocorre quando um desenvolvedor não limpa a entrada do usuário. Isso resulta na transmissão de dados incorretos para um intérprete e causa erros (ou comportamento inesperado) para usuários legítimos. A causa do ataque baseado em erro geralmente é fácil de ver. Ele será registrado em logs de erros ou aparecerá como um bug durante o teste.

Esses tipos de ataques também acontecem devido a um processo de revisão de código ruim - se um codificador deixa código de depuração no script, outros o executam sem saber sobre possíveis problemas.

Se você notar erros de banco de dados ou outro comportamento estranho em seu site, você pode ter um problema de injeção de SQL!

Conclusão


É claro que qualquer especialista em banco de dados que usa SQL no trabalho deve conhecer todos esses comandos de cor. Ainda assim, tê-los como uma simples folha de dicas à mão também é útil. Sinta-se à vontade para compartilhar suas considerações e truques profissionais na seção de comentários abaixo!