0% ont trouvé ce document utile (0 vote)
21 vues8 pages

Langage SQL

Le document présente des instructions sur la création et la gestion de tables SQL, y compris la création de tables, l'insertion et la suppression de données, ainsi que l'utilisation de jointures et d'agrégations. Il explique également comment effectuer des sélections, filtrer des résultats, trier des données et manipuler des chaînes de caractères. Enfin, il aborde des concepts avancés comme les jointures externes et l'union de tables.

Transféré par

9qgjwycs7c
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues8 pages

Langage SQL

Le document présente des instructions sur la création et la gestion de tables SQL, y compris la création de tables, l'insertion et la suppression de données, ainsi que l'utilisation de jointures et d'agrégations. Il explique également comment effectuer des sélections, filtrer des résultats, trier des données et manipuler des chaînes de caractères. Enfin, il aborde des concepts avancés comme les jointures externes et l'union de tables.

Transféré par

9qgjwycs7c
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Langage SQL

• Créer votre première table :

CREATE TABLE entity2 (


id INTEGER,
name TEXT NOT NULL,
jurisdiction TEXT,
jurisdiction_description TEXT,
incorporation_date DATE,
status TEXT,
service_provider TEXT,
id_address INTEGER,
source TEXT,
telephone TEXT,
end_date DATE,
url TEXT,
lifetime INTEGER,
PRIMARY KEY(id)
)

• Ajouter des données dans la table :

INSERT INTO
entity2 (id, name, jurisdiction, jurisdiction_description, incorporation_date)
VALUES
(1, 'Une société', 'IMG', 'Le Pays Imaginaire', '2024-01-01'),
(2, 'Une autre société', 'IMG', 'Le Pays Imaginaire', '2025-01-01'),
(3, 'Encore une société', 'IMG', 'Le Pays Imaginaire', '2026-01-01');

• Supprimer une table : DROP TABLE entity2

• Créer du lien entre vos tables :

FOREIGN KEY ( <colonnes clés étrangères> ) REFERENCES <table référencée> ( <clé


primaire de la table référencée> )

Exemple
CREATE TABLE entity2 (
id INTEGER,
name TEXT NOT NULL,
jurisdiction TEXT,
jurisdiction_description TEXT,
incorporation_date DATE,
status TEXT,
service_provider TEXT,
id_address INTEGER,
source TEXT,
note TEXT,
end_date DATE,
url TEXT,
lifetime INTEGER,
PRIMARY KEY(id),
FOREIGN KEY (id_address) REFERENCES address (id_address)
)

• Pour spécifier une table : FROM tableName

• Pour spécifier plusieurs tables : FROM tableName1, tableName2

• Pour sélectionner une colonne ou un groupe de colonnes : SELECT columnName

• Pour sélectionner plusieurs colonnes : SELECT column1, column2 FROM tableName

• Pour sélectionner toutes les colonnes d’une table : SELECT * FROM tableName

• Éliminer les doublons dans la réponse attendue :

SELECT DISTINCT columnName FROM tableName

• Fonction upper qui passe les minuscules en MAJUSCULES :

SELECT upper('Bonjour')
®BONJOUR

• Fonction lower qui passe les MAJUSCULES en minuscules :

SELECT lower('BONJOUR')
®bonjour

• Fonction random renvoie un nombre choisi au hasard : SELECT random()

• Fonction round(x, n) va nous renvoyer l’arrondi d’un nombre x avec n décimal :


SELECT round(3.1416, 2)
® 3.14
• Fonction date renvoie la date actuelle :

SELECT date() SQLite


SELECT current_date() MySQL

• Renommer une colonne :

SELECT
ABS( (- id) *2 ) AS calcul_bizarre,
name,
status
FROM entity ;

• Concaténer les lignes d’une colonne :


SQLite
SELECT
name || ‘(‘ || status || ‘)’ AS name_and_status
FROM entity ;

MySQL
SELECT
concat( name, ‘(‘ , status, ‘)’ ) AS name_and_status
FROM entity ;

• Utiliser un opérateur de comparaison :

SELECT
date() > incorporation_date
FROM entity
Renvoie une colonne avec des valeurs booléennes
® TRUE (ou 1)
® FALSE (ou 0)

• Pour filtrer les lignes de cette table et trouver la ou les lignes souhaitées : WHERE

• Pour obtenir la ligne recherchée :

SELECT *
FROM entity
WHERE name = ‘dataName’;

• Pour donner des « surnoms » aux tables :


SELECT
e.id AS id_entity,
e.name AS nom_societe,
a.id_address,
a.address,
a.countries
FROM
entity e, address a;

• Pour compter le nombre de lignes d’une requête :

SELECT count(*)
FROM (requête)
r;

• Effectuer une jointure interne :


Option 1
SELECT
e.id_address AS 'e.id_address',
a.id_address AS 'a.id_address',
FROM
entity e, address a
WHERE
e.id_address = a.id_address;

Option 2 (préférable)
SELECT *
FROM entity
JOIN address ON entity.id_address = address.id_address;

• Effectuer une jointure interne sur plusieurs colonnes :


Option 1
SELECT *
FROM t1, t2
WHERE
(t1.fk1 = t2.pk1 AND t1.pk2 = t2.pk2);

Option 2 (préférable)
SELECT *
FROM t1
JOIN t2 ON (t1.fk1 = t2.pk1 AND t1.pk2 = t2.pk2);

• Effectuer deux jointures internes :


Exemple
SELECT
i.id AS intermediary_id,
i.name AS intermediary_name,
e.id AS entity_id,
e.name AS entity_name,
e.status AS entity_status
FROM
entity e,
assoc_inter_entity a,
intermediary i
WHERE
e.id = a.entity
AND i.id = a.inter
AND e.name = 'Big Data Crunchers Ltd.';

• Effectuer une jointure externe :


A gauche
SELECT
e.id AS id_entity,
e.name AS nom_societe,
e.id_address AS 'e.id_address',
a.id_address AS 'a.id_address',
a.address,
a.countries
FROM entity e
LEFT OUTER JOIN address a ON e.id_address = a.id_address;

A droite
RIGHT OUTER JOIN

Entière
FULL OUTER JOIN

• Effectuer une jointure naturelle :

SELECT
e.id AS id_entity,
e.name AS nom_societe,
e.id_address AS 'e.id_address',
a.id_address AS 'a.id_address',
a.address,
a.countries
FROM entity e
NATURAL JOIN address a;

• Effectuer une agrégation :

SELECT
colonne_partitionnement, (Optionnel)
fonctionAgregation(colonne)
FROM tableName
GROUP BY colonne_partitionnement

Attention : dans le SELECT se trouve uniquement les colonnes de partitionnement et


les fonctions d’agrégation sinon ERROR.

Exemple
SELECT
jurisdiction,
status,
avg(lifetime),
count(*) //compter le nombre de lignes dans l’agrégat
FROM entity
GROUP BY jurisdiction, status;

• Effectuer un filtrage après une agrégation :

SELECT
colonne_partitionnement, (Optionnel)
fonctionAgregation(colonne)
FROM tableName
GROUP BY colonne_partitionnement
HAVING fonctionAgregation(colonne) OpérateurComparaison ValeurComparaison ;

Exemple
SELECT
i.id AS intermediary_id,
i.name AS intermediary_name,
count(*) AS nb_societes
FROM
intermediary i,
assoc_inter_entity a,
entity e
WHERE
a.entity = e.id AND
a.inter = i.id AND
(i.id = 5000 OR i.id = 5001)
GROUP BY
i.id, i.name
HAVING
count(*) > 50 ;

• Trier les lignes d’une table du plus petit au plus grand (par défaut) :

SELECT * FROM entity ORDER BY lifetime ; //Classe les entity selon la colonne lifetime
SELECT * FROM entity ORDER BY incorporation_date ASC ;
• Trier les lignes d’une table du plus grand au plus petit :

SELECT * FROM entity ORDER BY incorporation_date DESC ;

Exemple

SELECT
i.id AS intermediary_id,
i.name AS intermediary_name,
count(*) AS nb_societes
FROM
intermediary i,
assoc_inter_entity a,
entity e
WHERE
a.entity = e.id AND
a.inter = i.id AND
(i.id = 5000 OR i.id = 5001)
GROUP BY
i.id, i.name
ORDER BY
nb_societes DESC
LIMIT
5 ; //Affiche les 5 premiers résultats

• Effectuer une recherche dans des chaînes de caractères :

% remplace 0, 1 ou plusieurs caractères inconnus (ou aucun)


SELECT * FROM entity WHERE name LIKE 'A%' ;

_ remplace UN caractère inconnu


SELECT * FROM fruit WHERE name LIKE 'Ban_ne' ;

Astuce : Utiliser la function LOWER pour convertir en minuscule avant la recherche


SELECT * FROM entity WHERE lower(name) LIKE 'a%' ;

• Unir des tables :

SELECT "Adresse" AS type, address AS recherche, NULL AS url, id_address AS


identifiant FROM address
UNION
SELECT "Société (entité)" AS type, name AS recherche, url AS url, id AS identifiant
FROM entity

• Effectuer une recherche dans des chaînes de caractères après une union :

SELECT *
FROM
("Adresse" AS type, address AS recherche, NULL AS url, id_address AS
identifiant FROM address
UNION
SELECT "Société (entité)" AS type, name AS recherche, url AS url, id AS identifiant
FROM entity ) AS table_union
WHERE lower(recherche) LIKE ‘%abou%’ ;

Vous aimerez peut-être aussi