Database
 sql >> Database >  >> RDS >> Database

Cheat Sheet di SQL:cos'è SQL, comandi SQL e SQL injection

L'uso del linguaggio di query strutturato (SQL) può sembrare complicato all'inizio, ma inoltre diventerà più semplice e molto più conveniente. Hai solo bisogno di pratica.

Se stai cercando modi migliori per gestire i dati nel tuo database o se sei semplicemente curioso delle possibilità che SQL ti offre, allora sei nel posto giusto!

Perché SQL?

La maggior parte delle persone ha sentito parlare di SQL ma potrebbe non avere familiarità con il suo lavoro. Puoi pensare a SQL come a un linguaggio speciale per parlare con i database. Dal momento che i computer non capiscono le lingue naturali come l'inglese, hai bisogno di un modo per tradurre. E qui abbiamo SQ per comandare ai database di presentare alcuni dati o di archiviare nuovi dati. Lo usano vari database, come Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, ecc.

SQL ci consente di recuperare, inserire, aggiornare ed eliminare dati dai database con l'aiuto di query SQL. Una query SQL utilizza parole chiamate Clausole. Le clausole sono costituite da diversi elementi che lavorano insieme per eseguire alcune azioni sul database. Le tre clausole più comuni sono SELECT, UPDATE e DELETE. Li troverai in quasi tutte le istruzioni SQL.

Prendiamo la sintassi della query più semplice:

SELECT * FROM table_name;

Questa query selezionerà tutti i dati memorizzati nella tabella particolare. L'asterisco (*) indica che devono essere restituite tutte le colonne di quella tabella, indipendentemente dal numero di colonne presenti nella tabella.

Cheat sheet per le query SQL:quali comandi ci sono?

Qui ti presentiamo una selezione dei comandi e delle clausole SQL più comunemente usati di cui avrai bisogno mentre lavori con i database. Iniziamo.

SQL CREA DATABASE

Non puoi fare molto in SQL senza un database, quindi è meglio toglierlo di mezzo prima.

CREA DATABASE è un comando per creare nuovi database sul tuo server. Ad esempio, si desidera un nuovo inizio senza tabelle o dati esistenti. La sintassi è la seguente:

CREATE DATABASE testDB;

SQL CREATE TABLE

I database relazionali memorizzano i dati nelle tabelle. Pertanto, per utilizzare i nostri database, dobbiamo creare tabelle in essi. Questa operazione è strettamente correlata alla modifica delle strutture delle tabelle, ad esempio, rinominare le colonne, aggiungere nuove colonne, eliminare colonne, ecc.

Ma la modifica della tabella è possibile solo per una esistente. Pertanto, dovrai prima CREATE TABLE. Un altro comando correlato è AGGIUNGI COLONNA che ti consentirà di aggiungere colonne aggiuntive a una tabella esistente.

CREATE TABLE [dbo].[Students](
	[Name] [nvarchar](100) NOT NULL,
	[Bio] [ntext] NULL,
	[DateOfBirth] [datetime] NOT NULL,
);

TABELLA DROP SQL

C'è un tempo e un luogo per eliminare le tabelle e non è mai una buona idea farlo per capriccio. DROP TABLE rimuove un'intera tabella con tutti i relativi record, indici e vincoli dal database.

Non c'è modo di recuperare un tavolo dopo averlo lasciato cadere. Assicurati di aver bisogno e di voler rimuovere questa tabella particolare. In caso contrario, l'unica opzione per recuperare i dati è ripristinarli dal backup.

DROP TABLE [dbo].[Students];

SELEZIONE SQL

Forse la funzione più comunemente usata in SQL è Select. Il suo scopo è recuperare i dati da una o più tabelle per ulteriori manipolazioni e analisi. Questa funzionalità consente agli utenti di isolare e analizzare sottoinsiemi di dati (tabelle) specificando vari attributi (filtri).

Per selezionare un gruppo di righe, scrivi una query che identifica quali righe devono essere restituite, in base a uno o più filtri. I filtri sono specificati da un numero qualsiasi di diverse funzioni o espressioni combinate con altre operazioni in base ai tuoi obiettivi.

SELECT TOP (1000) [Name]
      ,[Phone]
      ,[Website]
      ,[Address]
      ,[City]
      ,[State]
      ,[Country]
      ,[Description]
      ,[Employees]
FROM [test].[dbo].[company]

INSERIMENTO SQL

La funzione INSERT inserisce righe di dati in una tabella in SQL. La struttura di base di questa istruzione specifica la tabella per aggiungere dati e le colonne per includere quei dati. Successivamente, definisce ogni valore che dovrebbe essere posizionato in ogni colonna all'interno di quella riga. Se stai solo imparando a usare SQL può sembrare fonte di confusione, ma con un po' di pratica diventa molto più semplice.

INSERT INTO [dbo].[company]
           ([Name]
           ,[Phone]
           ,[Website]
           ,[Address]
           ,[City]
           ,[State]
           ,[Country]
           ,[Description]
           ,[Employees])
     VALUES(
           'NameValue'
           ,'PhoneValue'
           ,'WebsiteValue'
           , 'AddressValue'
           , 'CityValue'
           , 'StateValue'
           , 'CountryValue'
           , 'DescriptionValue'
           , 2 ) 

AGGIORNAMENTO SQL

L'istruzione UPDATE è necessaria quando si vogliono modificare i dati memorizzati nelle tabelle. È anche una delle istruzioni SQL più comunemente utilizzate applicabile sia a una riga semplice che a più record.

La sintassi predefinita include i componenti SET e WHERE. IMPOSTA definisce come aggiornare i record e WHERE determina quali record devono essere aggiornati. Senza la clausola WHERE, il comando aggiornerà tutti i record nella tabella.

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 MEDIA

La funzione AVG restituisce la media dei valori numerici in una colonna come numero intero oa virgola mobile. Come con la maggior parte delle funzioni SQL, può essere parte di un'istruzione SELECT o di un'istruzione INSERT. Se utilizzato all'interno dell'istruzione SELECT, deve essere racchiuso tra parentesi. Di seguito puoi vedere l'esempio di query con AVG() che deve restituire l'età media di tutti i dipendenti:

SELECT avg(age) FROM employee;

SOMMA SQL

La funzione SOMMA restituisce la somma di tutti i valori in una colonna. Questo è molto utile quando hai a che fare con più colonne. Il risultato sarebbe una panoramica di quella tabella che somma tutti i dati in essa contenuti.

SELECT  Sum(Employees) as Sum, 
		AVG(Employees) as AVG,
		MAX(Employees) as Max, 
		MIN(Employees) as Min
FROM [test].[dbo].[company]

ORDINA SQL PER

SQL ha molti operatori, ma uno di quelli più comunemente usati è ORDER BY. Ordina i dati in base all'espressione specificata. Pertanto, se il tuo set di dati contiene più record con valori simili, verranno ordinati in base alle tue preferenze.

In altre parole, l'operatore ORDER BY in SQL è un operatore di confronto. Ti consente di confrontare i valori di una colonna con i valori di un'altra colonna e restituire i risultati così come sono ordinati in base a questo confronto.

La sintassi è ORDER BY nome-colonna . Può essere utile se hai bisogno di trovare le informazioni in modo ordinato. Ad esempio, quando cerchi righe con lo stesso valore o quando determini quali righe sono le più popolari.

SELECT * FROM Readers
ORDER BY City;

GRUPPO SQL PER

L'operatore GROUP BY è uno strumento molto importante e utile in SQL. Può essere utilizzato per raggruppare le righe di dati che condividono qualche tipo di caratteristica o proprietà comune. Pertanto, ordina le righe in base a una o più colonne specificate nella query. Questa clausola viene in genere inserita alla fine dell'istruzione SQL dopo l'esecuzione di tutte le altre clausole.

Un caso tipico è l'utilizzo di GROUP BY per riepilogare i dati nel database. L'istruzione SELECT utilizza la clausola WHERE per filtrare i record indesiderati dal set di risultati, quindi utilizza la clausola GROUP BY per raggruppare i record correlati in base ad alcune caratteristiche specificate.

SELECT * FROM Readers
GROUP BY Country;

Iniezione SQL

Qualsiasi programmatore web ha sentito parlare di attacchi SQL injection. Sono il flagello di Internet, lasciando ferite profonde in molti siti Web e applicazioni popolari che possono richiedere anni per guarire. Se vuoi evitare di cadere vittima di questi attacchi, è importante capire cosa sono, come funzionano e cosa puoi fare per proteggerti da loro in futuro.

Se non hai familiarità con gli attacchi SQL injection, la tua applicazione web potrebbe essere vulnerabile ad essi. La minaccia è abbastanza grave da attivare una nuova tecnologia per rilevare tali attacchi. Tuttavia, affidarsi alla tecnologia non è sufficiente. Per aiutare i professionisti della sicurezza, abbiamo messo insieme un pratico cheat sheet che spiega come funziona un'iniezione SQL in un inglese semplice.

Gli aggressori eseguono query non autorizzate per ottenere l'accesso a dati sensibili, modificare un database esistente o eliminare dati. In questo modo, SQL injection è una tecnica di code injection che attacca le applicazioni basate sui dati in cui le istruzioni SQL dannose vengono inserite in un campo di immissione per l'esecuzione (di solito tramite una richiesta HTTP).

Un attacco riuscito consente all'attaccante di accedere a tutti i server di database di quel sito Web. Una volta all'interno, un utente malintenzionato può recuperare i contenuti dei database, modificarli o addirittura distruggerli. Questo è il motivo per cui è così fondamentale per gli sviluppatori Web capire in che modo il loro linguaggio di programmazione rende le iniezioni SQL più facili o difficili per i potenziali aggressori.

Esistono due tipi principali di attacchi SQL injection:basati su errori e cieco .

Un attacco basato su errori si verifica quando uno sviluppatore non disinfetta l'input dell'utente. Ciò si traduce nel passare dati non validi a un interprete e causare errori (o comportamenti imprevisti) per utenti legittimi. La causa dell'attacco basato sull'errore è spesso facile da vedere. Verrà registrato nei registri degli errori o verrà visualizzato come bug durante il test.

Questo tipo di attacchi si verifica anche a causa di un processo di revisione del codice scadente:se un programmatore lascia il codice di debug nello script, altri lo eseguirebbero senza essere a conoscenza di possibili problemi.

Se noti errori di database o altri comportamenti strani sul tuo sito web, potresti avere un problema di SQL injection!

Conclusione

Ovviamente, qualsiasi specialista di database che utilizzi SQL nel lavoro dovrebbe conoscere tutti questi comandi a memoria. Tuttavia, è anche utile averli come un semplice cheat sheet a portata di mano. Sentiti libero di condividere le tue considerazioni e i tuoi trucchi professionali nella sezione Commenti qui sotto!