sql >> Database >  >> RDS >> Database

SQL Cheat Sheet:wat is SQL, SQL-opdrachten en SQL-injectie?

Het gebruik van Structured Query Language (SQL) kan op het eerste gezicht ingewikkeld lijken, maar verder wordt het eenvoudiger en veel handiger. Je hoeft alleen maar te oefenen.

Als u op zoek bent naar betere manieren om gegevens in uw database te beheren of als u gewoon nieuwsgierig bent naar de mogelijkheden die SQL voor u biedt, dan bent u hier aan het juiste adres!

Waarom SQL?

De meeste mensen hebben wel van SQL gehoord, maar zijn misschien niet helemaal bekend met het werk ervan. U kunt SQL zien als een speciale taal om met databases te praten. Omdat computers natuurlijke talen zoals Engels niet begrijpen, heb je een manier nodig om te vertalen. En hier hebben we SQ om de databases te bevelen om wat gegevens te presenteren of om nieuwe gegevens op te slaan. Verschillende databases, zoals Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, enz. gebruiken het.

Met SQL kunnen we gegevens ophalen, invoegen, bijwerken en verwijderen uit databases met behulp van SQL-query's. Een SQL-query gebruikt woorden die Clausules worden genoemd. Clausules bestaan ​​uit verschillende elementen die samenwerken om een ​​bepaalde actie op de database uit te voeren. De drie meest voorkomende clausules zijn SELECT, UPDATE en DELETE. Je vindt ze in bijna elk SQL-statement.

Laten we de meest elementaire query-syntaxis nemen:

SELECT * FROM table_name;

Deze query selecteert alle gegevens die in de betreffende tabel zijn opgeslagen. De asterisk (*) geeft aan dat alle kolommen in die tabel moeten worden geretourneerd, ongeacht het aantal van de tabel.

SQL Query Cheat Sheet:welke commando's zijn er?

Hier presenteren we u een selectie van de meest gebruikte SQL-commando's en -clausules die u nodig hebt bij het werken met databases. Laten we beginnen.

SQL DATABASE MAKEN

Je kunt niet veel in SQL doen zonder een database, dus het is het beste om dat eerst uit de weg te ruimen.

DATABASE MAKEN is een opdracht voor het maken van nieuwe databases op uw server. U wilt bijvoorbeeld een nieuwe start zonder bestaande tabellen of gegevens. De syntaxis is hieronder:

CREATE DATABASE testDB;

SQL MAAK TABEL

Relationele databases slaan de gegevens op in tabellen. Dus om gebruik te maken van onze databases, moeten we er tabellen in maken. Deze bewerking hangt nauw samen met het wijzigen van tabelstructuren, bijv. kolommen hernoemen, nieuwe kolommen toevoegen, kolommen verwijderen, enz.

Maar het wijzigen van de tabel is alleen mogelijk voor een bestaande. U moet dus eerst TABEL MAKEN. Een andere verwante opdracht is ADD COLUMN waarmee u extra kolommen aan een bestaande tabel kunt toevoegen.

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

SQL DROP-TABEL

Er is een tijd en plaats voor het verwijderen van tabellen, en het is nooit een goed idee om het in een opwelling te doen. DROP TABLE verwijdert een volledige tabel met alle records, indexen en beperkingen uit de database.

Er is geen manier om een ​​tafel te herstellen als je hem eenmaal hebt laten vallen. Zorg ervoor dat u deze specifieke tabel nodig heeft en wilt verwijderen. Anders is de enige optie om de gegevens terug te krijgen, deze te herstellen vanaf een back-up.

DROP TABLE [dbo].[Students];

SQL SELECTEREN

Misschien wel de meest gebruikte functie in SQL is Select. Het doel is om gegevens uit een of meer tabellen op te halen voor verdere manipulatie en analyse. Met deze functionaliteit kunnen gebruikers subsets van gegevens (tabellen) isoleren en analyseren door verschillende attributen (filters) op te geven.

Om een ​​groep rijen te selecteren, schrijft u een query die op basis van een of meer filters identificeert welke rijen moeten worden geretourneerd. Filters worden gespecificeerd door een willekeurig aantal verschillende functies of uitdrukkingen in combinatie met andere bewerkingen volgens uw doelen.

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

SQL INSERT

De INSERT-functie voegt rijen met gegevens in een tabel in SQL in. De basisstructuur van deze verklaring specificeert de tabel om gegevens toe te voegen aan en de kolommen om die gegevens op te nemen. Vervolgens definieert het elke waarde die in elke kolom binnen die rij moet worden geplaatst. Als je net leert hoe je SQL moet gebruiken, kan het verwarrend lijken, maar met wat oefening wordt het veel gemakkelijker.

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

SQL-UPDATE

De UPDATE-instructie is nodig wanneer we de gegevens die in tabellen zijn opgeslagen, willen wijzigen. Het is ook een van de meest gebruikte SQL-instructies die van toepassing is op zowel een eenvoudige rij als meerdere records.

De standaardsyntaxis omvat de componenten SET en WHERE. SET definieert hoe de records moeten worden bijgewerkt, en WAAR bepaalt welke record(s) moeten worden bijgewerkt. Zonder de WHERE-component zal de opdracht alle records in de tabel bijwerken.

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

De functie AVG retourneert het gemiddelde van numerieke waarden in een kolom als een geheel getal of een getal met drijvende komma. Zoals met de meeste SQL-functies, kan het een onderdeel zijn van een SELECT-instructie of een INSERT-instructie. Wanneer gebruikt in de SELECT-instructie, moet deze tussen haakjes staan. Hieronder ziet u het voorbeeld van een zoekopdracht met AVG() die de gemiddelde leeftijd van alle werknemers moet retourneren:

SELECT avg(age) FROM employee;

SQL SOM

De functie SOM retourneert de som van alle waarden in een kolom. Dit is erg handig wanneer u met meerdere kolommen te maken heeft. Het resultaat zou een overzicht zijn van die tabel die alle gegevens erin optelt.

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

SQL BESTELLEN DOOR

SQL heeft veel operators, maar een van de meest gebruikte is ORDER BY. Het sorteert gegevens volgens de opgegeven uitdrukking. Als uw dataset dus meerdere records met vergelijkbare waarden bevat, worden deze gesorteerd volgens uw voorkeuren.

Met andere woorden, de ORDER BY-operator in SQL is een vergelijkingsoperator. Hiermee kunt u waarden uit de ene kolom vergelijken met waarden uit een andere kolom en de resultaten retourneren zoals ze door deze vergelijking zijn gerangschikt.

De syntaxis is ORDER BY kolomnaam . Het kan handig zijn als u informatie op een gesorteerde manier moet vinden. Bijvoorbeeld wanneer u zoekt naar rijen die dezelfde waarde hebben of wanneer u bepaalt welke rijen het populairst zijn.

SELECT * FROM Readers
ORDER BY City;

SQL GROEP OP

De operator GROUP BY is een zeer belangrijk en handig hulpmiddel in SQL. Het kan worden gebruikt om de rijen gegevens te groeperen die een soort gemeenschappelijk kenmerk of eigenschap delen. Daarom worden de rijen gesorteerd op een of meer kolommen die in de query zijn opgegeven. Deze clausule wordt meestal aan het einde van de SQL-instructie geplaatst nadat alle andere clausules zijn uitgevoerd.

Een typisch geval is het gebruik van GROUP BY om gegevens in uw database samen te vatten. De SELECT-instructie gebruikt de WHERE-component om ongewenste records uit de resultatenset te filteren en gebruikt vervolgens de GROUP BY-component om gerelateerde records te groeperen op basis van een kenmerk dat u opgeeft.

SELECT * FROM Readers
GROUP BY Country;

SQL-injectie

Elke webprogrammeur heeft wel eens gehoord van SQL-injectieaanvallen. Ze zijn de plaag van internet en laten diepe wonden achter in veel populaire websites en applicaties die jaren kunnen duren om te genezen. Als u wilt voorkomen dat u het slachtoffer wordt van deze aanvallen, is het belangrijk om te begrijpen wat ze zijn, hoe ze werken en wat u kunt doen om uzelf er in de toekomst tegen te beschermen.

Als u niet bekend bent met SQL-injectieaanvallen, kan uw webtoepassing er kwetsbaar voor zijn. De dreiging is ernstig genoeg om een ​​nieuwe technologie aan te wakkeren om dergelijke aanvallen te detecteren. Vertrouwen op technologie is echter niet genoeg. Om beveiligingsprofessionals te helpen, hebben we een handig spiekbriefje samengesteld waarin in gewoon Engels wordt uitgelegd hoe een SQL-injectie werkt.

Aanvallers voeren ongeautoriseerde zoekopdrachten uit om toegang te krijgen tot gevoelige gegevens, een bestaande database aan te passen of gegevens te verwijderen. Op deze manier is SQL-injectie een code-injectietechniek die gegevensgestuurde toepassingen aanvalt waarbij kwaadaardige SQL-instructies in een invoerveld worden ingevoegd voor uitvoering (meestal via een HTTP-verzoek).

Een succesvolle aanval geeft de aanvaller toegang tot alle databaseservers van die website. Eenmaal binnen kan een aanvaller de inhoud van databases ophalen, wijzigen of zelfs vernietigen. Daarom is het zo belangrijk voor webontwikkelaars om te begrijpen hoe hun programmeertaal SQL-injecties gemakkelijker of moeilijker maakt voor potentiële aanvallers.

Er zijn twee hoofdtypen SQL-injectie-aanvallen:op fouten gebaseerd en blind .

Een op fouten gebaseerde aanval vindt plaats wanneer een ontwikkelaar gebruikersinvoer niet opschoont. Dit resulteert in het doorgeven van slechte gegevens aan een tolk en het veroorzaken van fouten (of onverwacht gedrag) voor legitieme gebruikers. De oorzaak van de op fouten gebaseerde aanval is vaak gemakkelijk te zien. Het wordt geregistreerd in foutenlogboeken of verschijnt als een bug tijdens het testen.

Dit soort aanvallen vindt ook plaats als gevolg van een slecht codebeoordelingsproces:als een programmeur foutopsporingscode in het script achterlaat, zouden anderen het uitvoeren zonder op de hoogte te zijn van mogelijke problemen.

Als u databasefouten of ander vreemd gedrag op uw website opmerkt, heeft u mogelijk een SQL-injectieprobleem!

Conclusie

Natuurlijk moet elke databasespecialist die SQL in zijn werk gebruikt, al deze commando's uit het hoofd kennen. Toch is het ook handig om ze als een eenvoudig spiekbriefje bij de hand te hebben. Deel gerust uw overwegingen en professionele trucs in het gedeelte Opmerkingen hieronder!


  1. mysqli_stmt::bind_result():Het aantal bindvariabelen komt niet overeen met het aantal velden in de voorbereide instructie

  2. oracle SQL hoe de tijd van de datum te verwijderen

  3. De geheimen van Domino's, of een Domino-spelgegevensmodel

  4. Is mysql_real_escape_string() kapot?