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

SQL-snydeark:Hvad er SQL, SQL-kommandoer og SQL-injektion

Brug af Structured Query Language (SQL) kan virke kompliceret i starten, men yderligere bliver det nemmere og meget mere bekvemt. Du behøver kun øvelse.

Hvis du leder efter bedre måder at administrere data i din database på, eller hvis du blot er nysgerrig efter de muligheder, som SQL åbner op for dig, så er du kommet til det rigtige sted!

Hvorfor SQL?

De fleste mennesker har hørt om SQL, men er måske ikke helt fortrolige med dets arbejde. Du kan tænke på SQL som et særligt sprog til at tale med databaser. Da computere ikke forstår naturlige sprog som engelsk, har du brug for en måde at oversætte på. Og her har vi SQ til at kommandere databaserne til at præsentere nogle data eller til at gemme nye data. Forskellige databaser, såsom Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL osv. bruger det.

SQL giver os mulighed for at hente, indsætte, opdatere og slette data fra databaser ved hjælp af SQL-forespørgsler. En SQL-forespørgsel bruger ord kaldet klausuler. Klausuler består af flere elementer, der arbejder sammen for at udføre en handling på databasen. De tre mest almindelige klausuler er SELECT, UPDATE og DELETE. Du finder dem i næsten alle SQL-sætninger.

Lad os tage den mest grundlæggende forespørgselssyntaks:

SELECT * FROM table_name;

Denne forespørgsel vil vælge alle data, der er gemt i den pågældende tabel. Stjernen (*) angiver, at alle kolonner i denne tabel skal returneres, uanset hvor mange af dem tabellen har.

SQL-forespørgselssnydeark:Hvilke kommandoer er der?

Her præsenterer vi dig et udvalg af de mest brugte SQL-kommandoer og -klausuler, som du skal bruge, mens du arbejder med databaser. Lad os starte.

SQL OPRET DATABASE

Du kan ikke gøre meget i SQL uden en database, så det er bedst at få det af vejen først.

OPRET DATABASE er en kommando til at oprette nye databaser på din server. For eksempel vil du have en frisk start uden eksisterende tabeller eller data. Syntaksen er nedenfor:

CREATE DATABASE testDB;

SQL OPRET TABEL

Relationelle databaser gemmer dataene i tabeller. For at gøre brug af vores databaser skal vi derfor oprette tabeller i dem. Denne operation er tæt forbundet med at ændre tabelstrukturer, f.eks. omdøbe kolonner, tilføje nye kolonner, slette kolonner osv.

Men det er kun muligt at ændre bordet for en eksisterende. Derfor skal du først OPRET TABEL. En anden relateret kommando er ADD COLUMN, som giver dig mulighed for at tilføje yderligere kolonner til en eksisterende tabel.

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

SQL DROP-TABEL

Der er tid og sted til at slette borde, og det er aldrig en god idé at gøre det på et indfald. DROP TABLE fjerner en hel tabel med alle dens poster, indekser og begrænsninger fra databasen.

Der er ingen måde at gendanne et bord, når du først har droppet det. Vær sikker på, at du har brug for og ønsker at fjerne denne særlige tabel. Ellers er den eneste mulighed for at få data tilbage at gendanne dem fra backup.

DROP TABLE [dbo].[Students];

SQL SELECT

Den måske mest brugte funktion i SQL er Select. Dens formål er at hente data fra en eller flere tabeller til yderligere manipulation og analyse. Denne funktionalitet giver brugerne mulighed for at isolere og analysere delmængder af data (tabeller) ved at specificere forskellige attributter (filtre).

For at vælge en gruppe af rækker, skriver du en forespørgsel, der identificerer, hvilke rækker der skal returneres, baseret på et eller flere filtre. Filtre er specificeret af et vilkårligt antal forskellige funktioner eller udtryk kombineret med andre operationer i henhold til dine mål.

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

SQL INSERT

Funktionen INSERT indsætter rækker af data i en tabel i SQL. Den grundlæggende struktur af denne erklæring specificerer tabellen for at tilføje data til og kolonnerne at inkludere disse data. Dernæst definerer den hver værdi der skal placeres i hver kolonne i den pågældende række. Hvis du bare skal lære at bruge SQL, kan det virke forvirrende, men med lidt øvelse bliver det meget nemmere.

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

SQL-OPDATERING

UPDATE-sætningen er nødvendig, når vi ønsker at ændre de data, der er gemt i tabeller. Det er også en af ​​de mest almindeligt anvendte SQL-sætninger, der gælder for både en simpel række og flere poster.

Standardsyntaksen inkluderer komponenterne SET og WHERE. SET definerer, hvordan posterne skal opdateres, og HVOR bestemmer hvilken eller hvilke poster der skal opdateres. Uden WHERE-sætningen vil kommandoen opdatere alle 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 returnerer gennemsnittet af numeriske værdier i en kolonne som et heltal eller et flydende deal. Som med de fleste SQL-funktioner kan det være en del af en SELECT-sætning eller en INSERT-sætning. Når det bruges i SELECT-sætningen, skal det være inden for parentes. Nedenfor kan du se forespørgselseksemplet med AVG(), der skal returnere gennemsnitsalderen på tværs af alle medarbejdere:

SELECT avg(age) FROM employee;

SQL SUM

SUM-funktionen returnerer summen af ​​alle værdier i en kolonne. Dette er meget nyttigt, når du har at gøre med flere kolonner. Resultatet ville være en oversigt over den tabel, der sammenlægger alle dataene i den.

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

SQL BESTIL EFTER

SQL har mange operatorer, men en af ​​de mest brugte er ORDER BY. Den sorterer data i henhold til det angivne udtryk. Derfor, hvis dit datasæt indeholder flere poster med lignende værdier, vil de blive sorteret efter dine præferencer.

Med andre ord er ORDER BY-operatoren i SQL en sammenligningsoperator. Det giver dig mulighed for at sammenligne værdier fra en kolonne med værdier fra en anden kolonne og returnere resultaterne, som de er sorteret efter denne sammenligning.

Syntaksen er ORDER BY kolonnenavn . Det kan være en hjælp, hvis du skal finde information på en sorteret måde. For eksempel når du søger efter rækker, der har samme værdi, eller når du skal afgøre, hvilke rækker der er mest populære.

SELECT * FROM Readers
ORDER BY City;

SQL GROUP BY

GROUP BY-operatoren er et meget vigtigt og nyttigt værktøj i SQL. Det kan bruges til at gruppere rækker af data, der deler en slags fælles karakteristik eller egenskab. Derfor sorterer den rækkerne efter en eller flere kolonner angivet i forespørgslen. Denne sætning er typisk placeret i slutningen af ​​SQL-sætningen, efter at alle andre sætninger er udført.

Et typisk tilfælde er at bruge GROUP BY til at opsummere data i din database. SELECT-sætningen bruger WHERE-sætningen til at bortfiltrere uønskede poster fra resultatsættet, og derefter bruger den GROUP BY-sætningen til at gruppere relaterede poster sammen baseret på en karakteristik, som du angiver.

SELECT * FROM Readers
GROUP BY Country;

SQL-injektion

Enhver webprogrammør har hørt om SQL-injektionsangreb. De er internettets svøbe og efterlader dybe sår på mange populære websteder og applikationer, som det kan tage år at hele. Hvis du vil undgå at blive offer for disse angreb, er det vigtigt at forstå, hvad de er, hvordan de virker, og hvad du kan gøre for at beskytte dig selv mod dem i fremtiden.

Hvis du ikke er bekendt med SQL-injektionsangreb, kan din webapplikation være sårbar over for dem. Truslen er alvorlig nok til at udløse en ny teknologi til at opdage sådanne angreb. Det er dog ikke nok at stole på teknologi. For at hjælpe sikkerhedsprofessionelle har vi sammensat et praktisk snydeark, der forklarer, hvordan en SQL-injektion fungerer på almindeligt engelsk.

Angribere udfører uautoriserede forespørgsler for at få adgang til følsomme data, ændre en eksisterende database eller slette data. På denne måde er SQL-injektion en kodeinjektionsteknik, der angriber datadrevne applikationer, hvor ondsindede SQL-sætninger indsættes i et indtastningsfelt til udførelse (normalt via en HTTP-anmodning).

Et vellykket angreb giver angriberen adgang til alle databaseservere på det pågældende websted. Når en angriber først er inde, kan den hente databasers indhold, ændre dem eller endda ødelægge dem. Det er derfor, det er så vigtigt for webudviklere at forstå, hvordan deres programmeringssprog gør SQL-injektioner nemmere eller sværere for potentielle angribere.

Der er to hovedtyper af SQL-injektionsangreb:fejlbaseret og blind .

Et fejlbaseret angreb opstår, når en udvikler ikke renser brugerinput. Dette resulterer i at videregive dårlige data til en tolk og forårsage fejl (eller uventet adfærd) for legitime brugere. Den fejlbaserede angrebsårsag er ofte let at se. Det vil blive registreret i fejllogfiler eller vil dukke op som en fejl under test.

Disse former for angreb sker også på grund af dårlig kodegennemgangsproces - hvis en koder efterlader fejlfindingskode i scriptet, ville andre køre den uden at vide om mulige problemer.

Hvis du bemærker databasefejl eller anden mærkelig adfærd på dit websted, har du muligvis et SQL-injektionsproblem!

Konklusion

Selvfølgelig bør enhver databasespecialist, der bruger SQL i arbejdet, kende alle disse kommandoer udenad. Alligevel er det også nyttigt at have dem som et simpelt snydeark ved hånden. Del gerne dine overvejelser og professionelle tricks i kommentarsektionen nedenfor!


  1. Sådan filtreres poster med aggregatfunktion AVG

  2. 4 funktioner til at returnere måneden fra en dato i MariaDB

  3. Ugyldig standardværdi for 'dateAdded'

  4. Søg efter "hele ord match" med SQL Server LIKE-mønster