Database
 sql >> Base de données >  >> RDS >> Database

Aide-mémoire SQL :qu'est-ce que SQL, les commandes SQL et l'injection SQL

L'utilisation du langage de requête structuré (SQL) peut sembler compliquée au début, mais plus tard, cela deviendra plus facile et beaucoup plus pratique. Vous n'avez besoin que de pratique.

Si vous cherchez de meilleures façons de gérer les données de votre base de données ou si vous êtes simplement curieux des possibilités que SQL vous offre, alors vous êtes au bon endroit !

Pourquoi SQL ?

La plupart des gens ont entendu parler de SQL mais ne sont peut-être pas complètement familiarisés avec son fonctionnement. Vous pouvez considérer SQL comme un langage spécial pour parler aux bases de données. Étant donné que les ordinateurs ne comprennent pas les langues naturelles comme l'anglais, vous avez besoin d'un moyen de traduire. Et ici, nous avons SQ pour commander aux bases de données de présenter certaines données ou de stocker de nouvelles données. Diverses bases de données, telles qu'Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, etc. l'utilisent.

SQL nous permet de récupérer, insérer, mettre à jour et supprimer des données de bases de données à l'aide de requêtes SQL. Une requête SQL utilise des mots appelés Clauses. Les clauses se composent de plusieurs éléments qui fonctionnent ensemble pour effectuer une action sur la base de données. Les trois clauses les plus courantes sont SELECT, UPDATE et DELETE. Vous les trouverez dans presque toutes les instructions SQL.

Prenons la syntaxe de requête la plus basique :

SELECT * FROM table_name;

Cette requête sélectionnera toutes les données stockées dans la table particulière. L'astérisque (*) indique que toutes les colonnes de cette table doivent être renvoyées, quel que soit leur nombre.

Aide-mémoire sur les requêtes SQL :quelles sont les commandes ?

Nous vous présentons ici une sélection des commandes et clauses SQL les plus couramment utilisées dont vous aurez besoin lorsque vous travaillez avec des bases de données. Commençons.

SQL CRÉER UNE BASE DE DONNÉES

Vous ne pouvez pas faire grand-chose en SQL sans base de données, il est donc préférable de s'en débarrasser d'abord.

CRÉER UNE BASE DE DONNÉES est une commande pour créer de nouvelles bases de données sur votre serveur. Par exemple, vous voulez un nouveau départ sans tables ni données existantes. La syntaxe est ci-dessous :

CREATE DATABASE testDB;

SQL CREER TABLE

Les bases de données relationnelles stockent les données dans des tables. Ainsi, pour utiliser nos bases de données, nous devons y créer des tables. Cette opération est étroitement liée à la modification des structures de table, par exemple, renommer des colonnes, ajouter de nouvelles colonnes, supprimer des colonnes, etc.

Mais modifier la table n'est possible que pour une table existante. Ainsi, vous devrez d'abord CREATE TABLE. Une autre commande connexe est ADD COLUMN qui vous permettra d'ajouter des colonnes supplémentaires à une table existante.

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

TABLEAU SUPPRESSION SQL

Il y a un moment et un endroit pour supprimer des tables, et ce n'est jamais une bonne idée de le faire sur un coup de tête. DROP TABLE supprime une table entière avec tous ses enregistrements, index et contraintes de la base de données.

Il n'y a aucun moyen de récupérer une table une fois que vous l'avez supprimée. Assurez-vous que vous avez besoin et que vous souhaitez supprimer cette table particulière. Sinon, la seule option pour récupérer les données est de les restaurer à partir d'une sauvegarde.

DROP TABLE [dbo].[Students];

SÉLECTION SQL

La fonction la plus couramment utilisée dans SQL est peut-être Select. Son but est de récupérer des données d'une ou plusieurs tables pour une manipulation et une analyse ultérieures. Cette fonctionnalité permet aux utilisateurs d'isoler et d'analyser des sous-ensembles de données (tableaux) en spécifiant divers attributs (filtres).

Pour sélectionner un groupe de lignes, vous écrivez une requête qui identifie les lignes à renvoyer, en fonction d'un ou de plusieurs filtres. Les filtres sont spécifiés par un certain nombre de fonctions ou d'expressions différentes combinées avec d'autres opérations en fonction de vos objectifs.

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

SQL INSÉRER

La fonction INSERT insère des lignes de données dans une table en SQL. La structure de base de cette instruction spécifie la table pour ajouter des données et les colonnes pour inclure ces données. Ensuite, il définit chaque valeur qui doit être placé dans chaque colonne de cette ligne. Si vous venez d'apprendre à utiliser SQL, cela peut sembler déroutant, mais avec un peu de pratique, cela devient beaucoup plus facile.

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

MISE À JOUR SQL

L'instruction UPDATE est nécessaire lorsque nous voulons modifier les données stockées dans les tables. C'est également l'une des instructions SQL les plus couramment utilisées, applicable à la fois à une simple ligne et à plusieurs enregistrements.

La syntaxe par défaut inclut les composants SET et WHERE. RÉGLER définit comment les enregistrements doivent être mis à jour et détermine quel(s) enregistrement(s) doivent être mis à jour. Sans la clause WHERE, la commande mettra à jour tous les enregistrements de la table.

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

Moyenne SQL

La fonction AVG renvoie la moyenne des valeurs numériques d'une colonne sous la forme d'un entier ou d'un nombre à virgule flottante. Comme avec la plupart des fonctions SQL, il peut faire partie d'une instruction SELECT ou d'une instruction INSERT. Lorsqu'il est utilisé dans l'instruction SELECT, il doit être entre parenthèses. Ci-dessous, vous pouvez voir l'exemple de requête avec AVG() qui doit renvoyer l'âge moyen de tous les employés :

SELECT avg(age) FROM employee;

SOMME SQL

La fonction SOMME renvoie la somme de toutes les valeurs d'une colonne. Ceci est très utile lorsque vous avez affaire à plusieurs colonnes. Le résultat serait un aperçu de ce tableau qui additionne toutes les données qu'il contient.

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

ORDRE SQL PAR

SQL a de nombreux opérateurs, mais l'un des plus couramment utilisés est ORDER BY. Il trie les données en fonction de l'expression spécifiée. Par conséquent, si votre ensemble de données contient plusieurs enregistrements avec des valeurs similaires, ils seront triés selon vos préférences.

En d'autres termes, l'opérateur ORDER BY en SQL est un opérateur de comparaison. Il vous permet de comparer les valeurs d'une colonne avec les valeurs d'une autre colonne et de renvoyer les résultats tels qu'ils sont triés par cette comparaison.

La syntaxe est ORDER BY nom-colonne . Cela peut être utile si vous avez besoin de trouver des informations de manière triée. Par exemple, lorsque vous recherchez des lignes qui ont la même valeur ou lorsque vous déterminez quelles lignes sont les plus populaires.

SELECT * FROM Readers
ORDER BY City;

SQL GROUPER PAR

L'opérateur GROUP BY est un outil très important et utile en SQL. Il peut être utilisé pour regrouper les lignes de données qui partagent une sorte de caractéristique ou de propriété commune. Par conséquent, il trie les lignes selon une ou plusieurs colonnes spécifiées dans la requête. Cette clause est généralement placée à la fin de l'instruction SQL après l'exécution de toutes les autres clauses.

Un cas typique consiste à utiliser GROUP BY pour résumer les données de votre base de données. L'instruction SELECT utilise la clause WHERE pour filtrer les enregistrements indésirables du jeu de résultats, puis elle utilise la clause GROUP BY pour regrouper les enregistrements liés en fonction d'une caractéristique que vous spécifiez.

SELECT * FROM Readers
GROUP BY Country;

Injection SQL

Tout programmeur Web a entendu parler des attaques par injection SQL. Ils sont le fléau d'Internet, laissant de profondes blessures dans de nombreux sites Web et applications populaires qui peuvent prendre des années à guérir. Si vous voulez éviter d'être victime de ces attaques, il est important de comprendre ce qu'elles sont, comment elles fonctionnent et ce que vous pouvez faire pour vous protéger contre elles à l'avenir.

Si vous n'êtes pas familier avec les attaques par injection SQL, votre application Web peut y être vulnérable. La menace est suffisamment sérieuse pour déclencher une nouvelle technologie permettant de détecter de telles attaques. Cependant, compter sur la technologie ne suffit pas. Pour aider les professionnels de la sécurité, nous avons élaboré une feuille de triche pratique qui explique comment une injection SQL fonctionne en langage clair.

Les attaquants exécutent des requêtes non autorisées pour accéder à des données sensibles, modifier une base de données existante ou supprimer des données. Ainsi, l'injection SQL est une technique d'injection de code qui attaque les applications pilotées par les données dans lesquelles des instructions SQL malveillantes sont insérées dans un champ de saisie pour exécution (généralement via une requête HTTP).

Une attaque réussie donne à l'attaquant l'accès à tous les serveurs de base de données de ce site Web. Une fois à l'intérieur, un attaquant peut récupérer le contenu des bases de données, les modifier ou même les détruire. C'est pourquoi il est si important pour les développeurs Web de comprendre comment leur langage de programmation facilite ou complique les injections SQL pour les attaquants potentiels.

Il existe deux principaux types d'attaques par injection SQL :basées sur les erreurs et aveugle .

Une attaque basée sur une erreur se produit lorsqu'un développeur ne nettoie pas l'entrée de l'utilisateur. Cela se traduit par la transmission de mauvaises données à un interpréteur et provoque des erreurs (ou un comportement inattendu) pour les utilisateurs légitimes. La cause de l'attaque basée sur les erreurs est souvent facile à voir. Il sera enregistré dans les journaux d'erreurs ou apparaîtra comme un bogue lors des tests.

Ces types d'attaques se produisent également en raison d'un processus de révision de code médiocre :si un codeur laisse du code de débogage dans le script, d'autres l'exécuteront sans connaître les problèmes éventuels.

Si vous remarquez des erreurs de base de données ou d'autres comportements étranges sur votre site Web, vous pourriez avoir un problème d'injection SQL !

Conclusion

Bien sûr, tout spécialiste des bases de données qui utilise SQL au travail doit connaître toutes ces commandes par cœur. Pourtant, les avoir comme une simple feuille de triche à portée de main est également utile. N'hésitez pas à partager vos considérations et astuces professionnelles dans la section Commentaires ci-dessous !