sql >> Databáze >  >> RDS >> Database

SQL Cheat Sheet:Co je SQL, SQL příkazy a SQL Injection

Používání strukturovaného dotazovacího jazyka (SQL) se může na první pohled zdát složité, ale později bude jednodušší a mnohem pohodlnější. Potřebujete pouze praxi.

Pokud hledáte lepší způsoby, jak spravovat data ve vaší databázi nebo jste prostě zvědaví na možnosti, které vám SQL otevírá, pak jste na správném místě!

Proč SQL?

Většina lidí slyšela o SQL, ale nemusí být zcela obeznámeni s jeho prací. SQL si můžete představit jako speciální jazyk pro komunikaci s databázemi. Protože počítače nerozumí přirozeným jazykům, jako je angličtina, potřebujete způsob, jak překládat. A zde máme SQ, které přikazuje databázím prezentovat nějaká data nebo ukládat nová data. Používají jej různé databáze, jako je Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL atd.

SQL nám umožňuje získávat, vkládat, aktualizovat a mazat data z databází pomocí SQL dotazů. SQL dotaz používá slova nazývaná klauzule. Klauzule se skládají z několika prvků, které spolupracují na provedení nějaké akce v databázi. Tři nejběžnější klauzule jsou SELECT, UPDATE a DELETE. Najdete je téměř v každém příkazu SQL.

Vezměme si nejzákladnější syntaxi dotazu:

SELECT * FROM table_name;

Tento dotaz vybere všechna data uložená v konkrétní tabulce. Hvězdička (*) označuje, že by měly být vráceny všechny sloupce v této tabulce, bez ohledu na to, kolik jich tabulka obsahuje.

Cheat Sheet pro SQL Query:Jaké příkazy existují?

Zde vám představujeme výběr nejčastěji používaných SQL příkazů a klauzulí, které budete při práci s databázemi potřebovat. Začněme.

SQL VYTVOŘTE DATABÁZI

Bez databáze toho v SQL moc nezmůžete, takže je nejlepší to nejprve odstranit.

VYTVOŘIT DATABÁZI je příkaz pro vytváření nových databází na vašem serveru. Například chcete nový začátek bez existujících tabulek nebo dat. Syntaxe je níže:

CREATE DATABASE testDB;

SQL CREATE TABLE

Relační databáze ukládají data do tabulek. Abychom mohli využívat naše databáze, musíme v nich vytvářet tabulky. Tato operace úzce souvisí se změnou struktury tabulky, např. přejmenováním sloupců, přidáním nových sloupců, vypuštěním sloupců atd.

Ale změna tabulky je možná pouze pro existující. Nejprve tedy budete muset VYTVOŘIT TABULKU. Dalším souvisejícím příkazem je ADD COLUMN, který vám umožní přidat další sloupce do existující tabulky.

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

SQL DROP TABLE

Existuje čas a místo pro mazání tabulek a nikdy není dobrý nápad dělat to z rozmaru. DROP TABLE odstraní z databáze celou tabulku se všemi jejími záznamy, indexy a omezeními.

Neexistuje žádný způsob, jak obnovit tabulku, jakmile ji upustíte. Ujistěte se, že tuto konkrétní tabulku potřebujete a chcete odstranit. V opačném případě je jedinou možností, jak získat data zpět, obnovit je ze zálohy.

DROP TABLE [dbo].[Students];

Výběr SQL

Snad nejčastěji používanou funkcí v SQL je Select. Jeho účelem je získat data z jedné nebo více tabulek pro další manipulaci a analýzu. Tato funkce umožňuje uživatelům izolovat a analyzovat podmnožiny dat (tabulky) zadáním různých atributů (filtrů).

Chcete-li vybrat skupinu řádků, napíšete dotaz, který na základě jednoho nebo více filtrů identifikuje, které řádky by měly být vráceny. Filtry jsou specifikovány libovolným počtem různých funkcí nebo výrazů kombinovaných s dalšími operacemi podle vašich cílů.

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

VLOŽENÍ SQL

Funkce INSERT vloží řádky dat do tabulky v SQL. Základní struktura tohoto příkazu určuje tabulku pro přidání dat do a sloupců zahrnout tato data. Dále definuje každou hodnotu který by měl být umístěn do každého sloupce v tomto řádku. Pokud se teprve učíte používat SQL, může se to zdát matoucí, ale s trochou cviku to bude mnohem jednodušší.

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

AKTUALIZACE SQL

Příkaz UPDATE je nutný, když chceme změnit data uložená v tabulkách. Je to také jeden z nejčastěji používaných příkazů SQL, který lze použít jak pro jednoduchý řádek, tak pro více záznamů.

Výchozí syntaxe zahrnuje komponenty SET a WHERE. SET definuje, jak mají být záznamy aktualizovány, a KDE určuje, které záznamy musí být aktualizovány. Bez klauzule WHERE příkaz aktualizuje všechny záznamy v tabulce.

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

Funkce AVG vrací průměr číselných hodnot ve sloupci jako celé číslo nebo číslo s plovoucí desetinnou čárkou. Jako u většiny funkcí SQL může být součástí příkazu SELECT nebo příkazu INSERT. Při použití v rámci příkazu SELECT musí být v závorkách. Níže vidíte příklad dotazu s AVG(), který musí vrátit průměrný věk všech zaměstnanců:

SELECT avg(age) FROM employee;

SOUČET SQL

Funkce SUM vrací součet všech hodnot ve sloupci. To je velmi užitečné, když pracujete s více sloupci. Výsledkem by byl přehled této tabulky, který sečte všechna data v ní.

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

POŘADÍ SQL PODLE

SQL má mnoho operátorů, ale jedním z nejpoužívanějších je ORDER BY. Seřadí data podle zadaného výrazu. Pokud tedy vaše datová sada obsahuje více záznamů s podobnými hodnotami, budou seřazeny podle vašich preferencí.

Jinými slovy, operátor ORDER BY v SQL je operátor porovnání. Umožňuje porovnat hodnoty z jednoho sloupce s hodnotami z jiného sloupce a vrátit výsledky tak, jak jsou podle tohoto srovnání seřazeny.

Syntaxe je ORDER BY column-name . Může být užitečné, pokud potřebujete najít informace seřazeným způsobem. Například když hledáte řádky, které mají stejnou hodnotu, nebo když určujete, které řádky jsou nejoblíbenější.

SELECT * FROM Readers
ORDER BY City;

SQL GROUP BY

Operátor GROUP BY je velmi důležitým a užitečným nástrojem v SQL. Lze jej použít k seskupení řádků dat, které sdílejí nějaký druh společné charakteristiky nebo vlastnosti. Proto seřadí řádky podle jednoho nebo více sloupců zadaných v dotazu. Tato klauzule je obvykle umístěna na konec příkazu SQL poté, co jsou provedeny všechny ostatní klauzule.

Typickým případem je použití GROUP BY k sumarizaci dat ve vaší databázi. Příkaz SELECT používá klauzuli WHERE k odfiltrování nežádoucích záznamů ze sady výsledků a poté používá klauzuli GROUP BY k seskupení souvisejících záznamů na základě nějaké charakteristiky, kterou určíte.

SELECT * FROM Readers
GROUP BY Country;

Injekce SQL

Každý webový programátor slyšel o útocích SQL injection. Jsou pohromou internetu a zanechávají na mnoha populárních webech a aplikacích hluboké rány, jejichž léčení může trvat roky. Pokud se chcete vyhnout tomu, abyste se stali obětí těchto útoků, je důležité porozumět tomu, co to je, jak fungují a co můžete udělat, abyste se proti nim v budoucnu ochránili.

Pokud neznáte útoky SQL injection, vaše webová aplikace může být vůči nim zranitelná. Hrozba je dostatečně závažná, aby vyvolala novou technologii k detekci takových útoků. Spoléhat se na technologie však nestačí. Abychom pomohli bezpečnostním profesionálům, sestavili jsme praktický cheat sheet, který vysvětluje, jak funguje SQL injection v jednoduché angličtině.

Útočníci provádějí neautorizované dotazy, aby získali přístup k citlivým datům, upravili existující databázi nebo odstranili data. Tímto způsobem je SQL injection technika vkládání kódu, která útočí na datově řízené aplikace, kde jsou škodlivé příkazy SQL vloženy do vstupního pole pro provedení (obvykle prostřednictvím požadavku HTTP).

Úspěšný útok poskytne útočníkovi přístup ke všem databázovým serverům daného webu. Jakmile je útočník uvnitř, může získat obsah databází, změnit je nebo dokonce zničit. To je důvod, proč je pro vývojáře webu tak důležité, aby pochopili, jak jejich programovací jazyk usnadňuje nebo ztěžuje vkládání SQL potenciálním útočníkům.

Existují dva hlavní typy útoků SQL injection:založené na chybě a slepý .

K útoku založenému na chybě dochází, když vývojář nevyčistí uživatelský vstup. To má za následek předávání špatných dat interpretu a způsobující chyby (nebo neočekávané chování) pro legitimní uživatele. Příčina útoku na základě chyb je často snadno zjistitelná. Bude zaregistrován v protokolech chyb nebo se během testování zobrazí jako chyba.

K těmto druhům útoků dochází také kvůli špatnému procesu kontroly kódu – pokud jeden kodér ponechá ladící kód ve skriptu, ostatní by jej spustili, aniž by věděli o možných problémech.

Pokud si na svém webu všimnete chyb databáze nebo jiného podivného chování, můžete mít problém s injekcí SQL!

Závěr

Každý databázový specialista, který používá SQL v práci, by samozřejmě měl znát všechny tyto příkazy nazpaměť. Přesto je také užitečné mít je jako jednoduchý cheat po ruce. Neváhejte se podělit o své úvahy a profesionální triky v sekci Komentáře níže!


  1. Jak správně vložit nový řádek do nvarchar

  2. Funkce RTRIM() v Oracle

  3. Přehled komprese dat v SQL Server

  4. Získávání zadaných výsledků z ActiveRecord raw SQL