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

SQL-Spickzettel:Was ist SQL, SQL-Befehle und SQL-Injection

Die Verwendung von Structured Query Language (SQL) kann zunächst kompliziert erscheinen, wird aber später einfacher und viel bequemer. Du brauchst nur Übung.

Wenn Sie nach besseren Möglichkeiten suchen, Daten in Ihrer Datenbank zu verwalten, oder wenn Sie einfach nur neugierig auf die Möglichkeiten sind, die Ihnen SQL eröffnet, dann sind Sie hier genau richtig!

Warum SQL?

Die meisten Leute haben von SQL gehört, sind aber möglicherweise nicht vollständig mit seiner Arbeit vertraut. Sie können sich SQL als eine spezielle Sprache für die Kommunikation mit Datenbanken vorstellen. Da Computer natürliche Sprachen wie Englisch nicht verstehen, brauchen Sie eine Möglichkeit zum Übersetzen. Und hier haben wir SQ, um den Datenbanken zu befehlen, einige Daten zu präsentieren oder neue Daten zu speichern. Verschiedene Datenbanken wie Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL usw. verwenden es.

SQL ermöglicht es uns, Daten aus Datenbanken mit Hilfe von SQL-Abfragen abzurufen, einzufügen, zu aktualisieren und zu löschen. Eine SQL-Abfrage verwendet Wörter, die als Klauseln bezeichnet werden. Klauseln bestehen aus mehreren Elementen, die zusammenarbeiten, um eine Aktion in der Datenbank auszuführen. Die drei häufigsten Klauseln sind SELECT, UPDATE und DELETE. Sie finden sie in fast jeder SQL-Anweisung.

Nehmen wir die grundlegendste Abfragesyntax:

SELECT * FROM table_name;

Diese Abfrage wählt alle in der jeweiligen Tabelle gespeicherten Daten aus. Das Sternchen (*) gibt an, dass alle Spalten in dieser Tabelle zurückgegeben werden sollen, egal wie viele davon die Tabelle hat.

Spickzettel für SQL-Abfragen:Welche Befehle gibt es?

Hier präsentieren wir Ihnen eine Auswahl der am häufigsten verwendeten SQL-Befehle und -Klauseln, die Sie bei der Arbeit mit Datenbanken benötigen. Fangen wir an.

SQL DATENBANK ERSTELLEN

Sie können in SQL ohne eine Datenbank nicht viel tun, also ist es am besten, das zuerst aus dem Weg zu räumen.

DATENBANK ERSTELLEN ist ein Befehl zum Erstellen neuer Datenbanken auf Ihrem Server. Sie möchten beispielsweise einen Neuanfang ohne vorhandene Tabellen oder Daten. Die Syntax ist unten:

CREATE DATABASE testDB;

SQL-TABELLE ERSTELLEN

Relationale Datenbanken speichern die Daten in Tabellen. Um unsere Datenbanken nutzen zu können, müssen wir also Tabellen darin erstellen. Diese Operation steht in engem Zusammenhang mit dem Ändern von Tabellenstrukturen, z. B. Umbenennen von Spalten, Hinzufügen neuer Spalten, Löschen von Spalten usw.

Das Ändern der Tabelle ist jedoch nur für eine vorhandene Tabelle möglich. Daher müssen Sie zuerst eine Tabelle erstellen. Ein weiterer verwandter Befehl ist ADD COLUMN, mit dem Sie einer vorhandenen Tabelle zusätzliche Spalten hinzufügen können.

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

SQL-DROP-TABELLE

Es gibt eine Zeit und einen Ort, um Tische zu löschen, und es ist nie eine gute Idee, dies aus einer Laune heraus zu tun. DROP TABLE entfernt eine komplette Tabelle mit all ihren Datensätzen, Indizes und Constraints aus der Datenbank.

Es gibt keine Möglichkeit, eine Tabelle wiederherzustellen, nachdem Sie sie gelöscht haben. Stellen Sie sicher, dass Sie diese bestimmte Tabelle entfernen müssen und möchten. Andernfalls besteht die einzige Möglichkeit, die Daten wiederherzustellen, darin, sie aus der Sicherung wiederherzustellen.

DROP TABLE [dbo].[Students];

SQL-SELECT

Die vielleicht am häufigsten verwendete Funktion in SQL ist Select. Sein Zweck besteht darin, Daten aus einer oder mehreren Tabellen zur weiteren Bearbeitung und Analyse abzurufen. Diese Funktion ermöglicht es Benutzern, Teilmengen von Daten (Tabellen) zu isolieren und zu analysieren, indem sie verschiedene Attribute (Filter) angeben.

Um eine Gruppe von Zeilen auszuwählen, schreiben Sie eine Abfrage, die basierend auf einem oder mehreren Filtern identifiziert, welche Zeilen zurückgegeben werden sollen. Filter werden durch eine beliebige Anzahl verschiedener Funktionen oder Ausdrücke in Kombination mit anderen Operationen gemäß Ihren Zielen angegeben.

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

SQL-INSERT

Die INSERT-Funktion fügt Datenzeilen in eine Tabelle in SQL ein. Die Grundstruktur dieser Anweisung spezifiziert die Tabelle zum Hinzufügen von Daten und den Spalten um diese Daten aufzunehmen. Als nächstes definiert es jeden Wert die in jeder Spalte innerhalb dieser Zeile platziert werden sollte. Wenn Sie gerade lernen, wie man SQL verwendet, kann es verwirrend erscheinen, aber mit etwas Übung wird es viel einfacher.

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

SQL-AKTUALISIERUNG

Die UPDATE-Anweisung ist notwendig, wenn wir die in Tabellen gespeicherten Daten ändern möchten. Es ist auch eine der am häufigsten verwendeten SQL-Anweisungen, die sowohl auf eine einfache Zeile als auch auf mehrere Datensätze anwendbar ist.

Die Standard-Syntax enthält die SET- und WHERE-Komponenten. EINSTELLEN definiert, wie die Datensätze aktualisiert werden sollen, und WO bestimmt, welche Datensätze aktualisiert werden müssen. Ohne die WHERE-Klausel aktualisiert der Befehl alle Datensätze in der Tabelle.

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-Durchschnitt

Die AVG-Funktion gibt den Durchschnitt numerischer Werte in einer Spalte als Ganzzahl oder Gleitkommazahl zurück. Wie die meisten SQL-Funktionen kann sie Teil einer SELECT-Anweisung oder einer INSERT-Anweisung sein. Wenn es innerhalb der SELECT-Anweisung verwendet wird, muss es in Klammern stehen. Unten sehen Sie das Abfragebeispiel mit AVG(), das das Durchschnittsalter aller Mitarbeiter zurückgeben muss:

SELECT avg(age) FROM employee;

SQL-SUMME

Die SUM-Funktion gibt die Summe aller Werte in einer Spalte zurück. Dies ist sehr hilfreich, wenn Sie mit mehreren Spalten arbeiten. Das Ergebnis wäre eine Übersicht dieser Tabelle, die alle darin enthaltenen Daten aufsummiert.

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

SQL ORDER BY

SQL hat viele Operatoren, aber einer der am häufigsten verwendeten ist ORDER BY. Es sortiert Daten nach dem angegebenen Ausdruck. Wenn Ihr Datensatz also mehrere Datensätze mit ähnlichen Werten enthält, werden diese gemäß Ihren Einstellungen sortiert.

Mit anderen Worten, der ORDER BY-Operator in SQL ist ein Vergleichsoperator. Es ermöglicht Ihnen, Werte aus einer Spalte mit Werten aus einer anderen Spalte zu vergleichen und die Ergebnisse so zurückzugeben, wie sie durch diesen Vergleich geordnet sind.

Die Syntax ist ORDER BY Spaltenname . Es kann hilfreich sein, wenn Sie Informationen sortiert finden müssen. Zum Beispiel, wenn Sie nach Zeilen suchen, die den gleichen Wert haben, oder wenn Sie bestimmen, welche Zeilen am beliebtesten sind.

SELECT * FROM Readers
ORDER BY City;

SQL GROUP BY

Der GROUP BY-Operator ist ein sehr wichtiges und nützliches Werkzeug in SQL. Es kann verwendet werden, um die Datenzeilen zu gruppieren, die ein gemeinsames Merkmal oder eine gemeinsame Eigenschaft aufweisen. Daher werden die Zeilen nach einer oder mehreren in der Abfrage angegebenen Spalten sortiert. Diese Klausel wird normalerweise am Ende der SQL-Anweisung platziert, nachdem alle anderen Klauseln ausgeführt wurden.

Ein typischer Fall ist die Verwendung von GROUP BY, um Daten in Ihrer Datenbank zusammenzufassen. Die SELECT-Anweisung verwendet die WHERE-Klausel, um unerwünschte Datensätze aus der Ergebnismenge herauszufiltern, und verwendet dann die GROUP BY-Klausel, um zusammengehörige Datensätze basierend auf einem von Ihnen angegebenen Merkmal zu gruppieren.

SELECT * FROM Readers
GROUP BY Country;

SQL-Injection

Jeder Webprogrammierer hat von SQL-Injection-Angriffen gehört. Sie sind die Geißel des Internets und hinterlassen in vielen beliebten Websites und Anwendungen tiefe Wunden, deren Heilung Jahre dauern kann. Wenn Sie vermeiden möchten, Opfer dieser Angriffe zu werden, ist es wichtig zu verstehen, was sie sind, wie sie funktionieren und was Sie tun können, um sich in Zukunft davor zu schützen.

Wenn Sie mit SQL-Injection-Angriffen nicht vertraut sind, ist Ihre Webanwendung möglicherweise anfällig dafür. Die Bedrohung ist ernst genug, um eine neue Technologie zur Erkennung solcher Angriffe zu entwickeln. Es reicht jedoch nicht aus, sich auf die Technologie zu verlassen. Um Sicherheitsexperten zu helfen, haben wir einen praktischen Spickzettel zusammengestellt, der in einfachem Englisch erklärt, wie eine SQL-Injection funktioniert.

Angreifer führen nicht autorisierte Abfragen aus, um Zugriff auf vertrauliche Daten zu erhalten, eine vorhandene Datenbank zu ändern oder Daten zu löschen. Auf diese Weise ist SQL-Injection eine Code-Injection-Technik, die datengesteuerte Anwendungen angreift, bei denen schädliche SQL-Anweisungen zur Ausführung in ein Eingabefeld eingefügt werden (normalerweise über eine HTTP-Anfrage).

Bei einem erfolgreichen Angriff erhält der Angreifer Zugriff auf alle Datenbankserver dieser Website. Einmal drinnen, kann ein Angreifer Datenbankinhalte abrufen, verändern oder sogar zerstören. Aus diesem Grund ist es für Webentwickler so wichtig zu verstehen, wie ihre Programmiersprache SQL-Injections für potenzielle Angreifer einfacher oder schwieriger macht.

Es gibt zwei Haupttypen von SQL-Injection-Angriffen:fehlerbasiert und blind .

Ein fehlerbasierter Angriff tritt auf, wenn ein Entwickler Benutzereingaben nicht bereinigt. Dies führt dazu, dass fehlerhafte Daten an einen Interpreter übergeben werden und bei legitimen Benutzern Fehler (oder unerwartetes Verhalten) verursacht werden. Die Ursache des fehlerbasierten Angriffs ist oft leicht zu erkennen. Es wird in Fehlerprotokollen registriert oder beim Testen als Fehler angezeigt.

Diese Art von Angriffen geschieht auch aufgrund eines schlechten Codeüberprüfungsprozesses – wenn ein Programmierer Debugging-Code im Skript belässt, würden andere ihn ausführen, ohne von möglichen Problemen zu wissen.

Wenn Sie Datenbankfehler oder anderes seltsames Verhalten auf Ihrer Website bemerken, liegt möglicherweise ein SQL-Injection-Problem vor!

Schlussfolgerung

Natürlich sollte jeder Datenbankspezialist, der beruflich mit SQL arbeitet, all diese Befehle auswendig kennen. Es ist jedoch auch hilfreich, sie als einfachen Spickzettel zur Hand zu haben. Fühlen Sie sich frei, Ihre Überlegungen und professionellen Tricks im Kommentarbereich unten mitzuteilen!