sql >> Databasteknik >  >> RDS >> Database

SQL Cheat Sheet:Vad är SQL, SQL-kommandon och SQL Injection

Att använda Structured Query Language (SQL) kan verka komplicerat till en början, men vidare kommer det att bli enklare och mycket bekvämare. Du behöver bara träna.

Om du letar efter bättre sätt att hantera data i din databas eller om du helt enkelt är nyfiken på de möjligheter som SQL öppnar upp för dig, då har du kommit till rätt plats!

Varför SQL?

De flesta har hört talas om SQL men kanske inte är helt bekanta med dess arbete. Du kan tänka på SQL som ett speciellt språk för att prata med databaser. Eftersom datorer inte förstår naturliga språk som engelska behöver du ett sätt att översätta. Och här har vi SQ för att beordra databaserna att presentera vissa data eller att lagra nya data. Olika databaser, såsom Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, etc. använder den.

SQL tillåter oss att hämta, infoga, uppdatera och radera data från databaser med hjälp av SQL-frågor. En SQL-fråga använder ord som kallas klausuler. Klausuler består av flera element som samverkar för att utföra någon åtgärd på databasen. De tre vanligaste satserna är SELECT, UPDATE och DELETE. Du hittar dem i nästan alla SQL-satser.

Låt oss ta den mest grundläggande frågesyntaxen:

SELECT * FROM table_name;

Denna fråga kommer att välja all data som lagras i den specifika tabellen. Asterisken (*) anger att alla kolumner i den tabellen ska returneras, oavsett hur många av dem tabellen har.

SQL Query Cheat Sheet:Vilka kommandon finns det?

Här presenterar vi ett urval av de vanligaste SQL-kommandon och -satser som du behöver när du arbetar med databaser. Låt oss börja.

SQL SKAPA DATABAS

Du kan inte göra mycket i SQL utan en databas, så det är bäst att få det ur vägen först.

SKAPA DATABAS är ett kommando för att skapa nya databaser på din server. Till exempel vill du ha en nystart utan befintliga tabeller eller data. Syntaxen är nedan:

CREATE DATABASE testDB;

SQL SKAPA TABELL

Relationsdatabaser lagrar data i tabeller. För att kunna använda våra databaser måste vi alltså skapa tabeller i dem. Denna operation är nära relaterad till att ändra tabellstrukturer, t.ex. byta namn på kolumner, lägga till nya kolumner, ta bort kolumner, etc.

Men att ändra tabellen är endast möjligt för en befintlig. Därför måste du SKAPA TABELL först. Ett annat relaterat kommando är ADD COLUMN som låter dig lägga till ytterligare kolumner i en befintlig tabell.

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

SQL DROP TABELL

Det finns en tid och plats för att ta bort tabeller, och det är aldrig en bra idé att göra det på ett infall. DROP TABLE tar bort en hel tabell med alla dess poster, index och begränsningar från databasen.

Det finns inget sätt att återställa ett bord när du har tappat det. Var säker på att du behöver och vill ta bort just den här tabellen. Annars är det enda alternativet för att få tillbaka data att återställa den från säkerhetskopian.

DROP TABLE [dbo].[Students];

SQL SELECT

Den kanske vanligaste funktionen i SQL är Select. Dess syfte är att hämta data från en eller flera tabeller för vidare manipulation och analys. Denna funktion tillåter användare att isolera och analysera delmängder av data (tabeller) genom att specificera olika attribut (filter).

För att välja en grupp rader skriver du en fråga som identifierar vilka rader som ska returneras, baserat på ett eller flera filter. Filter specificeras av valfritt antal olika funktioner eller uttryck i kombination med andra operationer enligt dina mål.

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

SQL INSERT

Funktionen INSERT infogar rader med data i en tabell i SQL. Grundstrukturen för detta uttalande specificerar tabellen för att lägga till data till och kolumnerna att inkludera dessa uppgifter. Därefter definierar den varje värde som ska placeras i varje kolumn inom den raden. Om du bara lär dig hur man använder SQL kan det verka förvirrande, men med lite övning blir det mycket lättare.

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

SQL-UPPDATERING

UPDATE-satsen är nödvändig när vi vill ändra data som lagras i tabeller. Det är också en av de vanligaste SQL-satserna som är tillämpliga på både en enkel rad och flera poster.

Standardsyntaxen inkluderar komponenterna SET och WHERE. SET definierar hur posterna ska uppdateras och VAR bestämmer vilken eller vilka poster som måste uppdateras. Utan WHERE-satsen kommer kommandot att uppdatera alla poster i tabellen.

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

AVG-funktionen returnerar medelvärdet av numeriska värden i en kolumn som ett heltal eller ett flyttal. Som med de flesta SQL-funktioner kan den vara en del av en SELECT-sats eller en INSERT-sats. När den används inom SELECT-satsen måste den vara inom parentes. Nedan kan du se frågeexemplet med AVG() som måste returnera medelåldern för alla anställda:

SELECT avg(age) FROM employee;

SQL SUMMA

Funktionen SUMMA returnerar summan av alla värden i en kolumn. Detta är mycket användbart när du har att göra med flera kolumner. Resultatet skulle bli en översikt över den tabellen som lägger ihop all data i den.

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

SQL BESTÄLL AV

SQL har många operatorer, men en av de vanligaste är ORDER BY. Den sorterar data enligt det angivna uttrycket. Därför, om din datamängd innehåller flera poster med liknande värden, kommer de att sorteras enligt dina preferenser.

Med andra ord, operatorn ORDER BY i SQL är en jämförelseoperator. Det låter dig jämföra värden från en kolumn med värden från en annan kolumn och returnera resultaten som de sorteras efter den här jämförelsen.

Syntaxen är ORDER BY kolumnnamn . Det kan vara till hjälp om du behöver hitta information på ett sorterat sätt. Till exempel när du söker efter rader som har samma värde eller när du avgör vilka rader som är mest populära.

SELECT * FROM Readers
ORDER BY City;

SQL GROUP BY

GROUP BY-operatorn är ett mycket viktigt och användbart verktyg i SQL. Den kan användas för att gruppera rader med data som delar någon slags gemensam egenskap eller egenskap. Därför sorterar den raderna efter en eller flera kolumner som anges i frågan. Denna sats placeras vanligtvis i slutet av SQL-satsen efter att alla andra satser har körts.

Ett typiskt fall är att använda GROUP BY för att sammanfatta data i din databas. SELECT-satsen använder WHERE-satsen för att filtrera bort oönskade poster från resultatuppsättningen, och sedan använder den GROUP BY-satsen för att gruppera relaterade poster tillsammans baserat på någon egenskap som du anger.

SELECT * FROM Readers
GROUP BY Country;

SQL-injektion

Alla webbprogrammerare har hört talas om SQL-injektionsattacker. De är Internets gissel och lämnar djupa sår på många populära webbplatser och applikationer som kan ta år att läka. Om du vill undvika att falla offer för dessa attacker är det viktigt att förstå vad de är, hur de fungerar och vad du kan göra för att skydda dig mot dem i framtiden.

Om du inte är bekant med SQL-injektionsattacker kan din webbapplikation vara sårbar för dem. Hotet är tillräckligt allvarligt för att utlösa en ny teknik för att upptäcka sådana attacker. Det räcker dock inte att lita på teknik. För att hjälpa säkerhetsproffs har vi satt ihop ett praktiskt fuskblad som förklarar hur en SQL-injektion fungerar på vanlig engelska.

Angripare utför obehöriga förfrågningar för att få tillgång till känslig data, modifiera en befintlig databas eller radera data. På så sätt är SQL-injektion en kodinjektionsteknik som attackerar datadrivna applikationer där skadliga SQL-satser infogas i ett inmatningsfält för exekvering (vanligtvis via en HTTP-begäran).

En framgångsrik attack ger angriparen tillgång till alla databasservrar på den webbplatsen. Väl inne kan en angripare hämta databasens innehåll, ändra dem eller till och med förstöra dem. Det är därför det är så viktigt för webbutvecklare att förstå hur deras programmeringsspråk gör SQL-injektioner enklare eller svårare för potentiella angripare.

Det finns två huvudtyper av SQL-injektionsattacker:felbaserade och blind .

En felbaserad attack inträffar när en utvecklare inte sanerar användarinmatning. Detta resulterar i att dålig data skickas till en tolk och orsakar fel (eller oväntat beteende) för legitima användare. Den felbaserade attackorsaken är ofta lätt att se. Det kommer att registreras i felloggar eller kommer att dyka upp som en bugg under testning.

Den här typen av attacker inträffar också på grund av dålig kodgranskning – om en kodare lämnar felsökningskod i skriptet, skulle andra köra den utan att veta om eventuella problem.

Om du märker databasfel eller annat konstigt beteende på din webbplats kan du ha ett SQL-injektionsproblem!

Slutsats

Naturligtvis bör alla databasspecialister som använder SQL i arbetet kunna alla dessa kommandon utantill. Ändå är det också bra att ha dem som ett enkelt fuskblad till hands. Dela gärna med dig av dina funderingar och professionella knep i kommentarsektionen nedan!


  1. Nytt i PostgreSQL 12:Genererade kolumner

  2. Hur skapar jag ett steg i mitt SQL Server Agent Job som kör mitt SSIS-paket?

  3. Hur man får flera räkningar med en enda fråga i MySQL

  4. pg_dump postgres-databas från fjärrserver när port 5432 är blockerad