|
Constructed composite type
|
Inexistant dans SyBAse
|
Array
|
Array[maximum cardinality]
|
Acces au tableau par index – renvoi 'null' pour les éléments vides
|
Row
|
Nom ROW (fld1,fld2...fldn)
|
Collection de 1 ou plusieurs éléments (par ex-champs) un champ à un nom et un data type (idem colonnes de table).adresse Row(rue CHAR(20) ville CHAR(20))
Attribut composite.
|
|
Data Retrieval
|
|
Select
|
SELECT colonne_cible FROM Table_cible
|
Not case sensitive, une ou plusieurs lignes mais les mots-clés ne peuvent pas être splittés.
|
|
SELECT * FROM Table_cible.
|
Affiche tout les data de la table.
|
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible
|
Affiche les colonne_cible1 & colonne_cible2 de la table
|
|
SELECT colonne_cible as nom_de_colonne (alias) FROM Table_cible
|
Change le nom de la colonne.Entre « » donne des espace vide
Alias crée une colonne virtuelle par ex: Select Firstname, Year_result,(year_result/20)*100 as New_result crée une 3ième colonne new_result
|
|
Opérateur arithmétiques
|
|
|
+ - / *
|
|
|
Opérateur de concatenation
|
|
|
||
|
On ne peut pas concaténer autre chose que des caractères -> il faut convertir les données en varchar s'il faut concaténer des variables numériques ou date.
|
|
« + »
|
Sur Microsoft SQL Server
|
Convert
|
Convert (varchar,Nom_de_colonne)Convert,nom_colonne,style
|
Voir en fin de texte les fonctions spécifiques de Convert pour avoir les dates sous un format spécifique et immuable en SQL Server.
|
Distinct
|
Select DISTICNT colonne_cible from Table_cible
|
Retire les lignes identiques du résultat par ex s'il y a plusieurs fois le même nom -> il n'apparaîtra qu'une fois, supprime les redondances.
|
|
Select délimité & ordonné
|
|
Where
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx
|
Affiche la colonne_cible1, colonne_cible2 mais uniquement avec le filtre spécifié dans la condition where peut être utilisé avec<, <=, > >=, =,<>
|
Between
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible BETWEEN nn AND nn
|
Affiche la colonne_cible1, colonne_cible2 mais uniquement avec le filtre spécifié.
nn and nn spécifié après between sont deux chiffres précisant la portée. Nn & nn peuvent aussi être des dates à utiliser pour tout intervalle de valeur.
|
In
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible IN (na,nb,nc)
|
La condition IN peut être utilisée avec n'importe quel types de data.
Signifie est égal à na OU égal à nb OU égal à nc
|
Like
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible LIKE 'xyz'
|
Recherche effectuée avec des caractères et de chiffres. % Remplace plusieurs caractères,_ remplace un caractère.
|
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible1 LIKE 'xyz' AND [OR] colonne_cible2
|
AND retourne vrai lorsque les deux conditions sont vraies.
OR retourne vrai lorsque une des deux conditions est vraie.
|
Not
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible1 NOT LIKE 'xyz'
|
Affiche le résultat s'il n'est pas équivalent à xyz, Peut-être mis devant Like, between, and, or & in
|
|
Rôle de préséance.
|
|
|
1
|
Opérateurs arithmétiques.
|
|
2
|
Opérateurs de concaténation.
|
|
3
|
Conditions de comparaison.
|
|
4
|
IS [NOT] NULL,LIKE, [NOT] IN
|
|
5
|
[NOT] BETWEEN
|
|
6
|
NOT condition logique.
|
|
7
|
AND condition logique.
|
|
8
|
OR condition logique.
|
Order by.
|
SELECT SELECT colonne_cible FROM Table_cible
ORDER BY colonne_cible DESC [ASC]
|
Affiche les colonnes selon un ordre ASCendant ou DESCendant par rapport à la colonne_cible spécifié après order by,
Peut-être ordonné sur un alias.
|
|
SELECT SELECT colonne_cible1,colonne_cible2,colonne_cible3 FROM Table_cible
ORDER BY colonne_cible1 DESC [ASC],colonne_cible2 DESC [ASC]
|
Affiche les colonnes selon un ordre ASCendant ou DESCendant par rapport aux colonne_cible1, colonne_cible2 spécifié après order by.
Triées 1ere sur la colonne_cible1 ensuite sur la colonne_cible2.
Toujours en fin d'écriture.
|
|
Numeric value functions
|
|
Position
|
POSITION(expression_chaine_1 IN expression_chaine2)
|
Retourne la position d'une chaîne dans une autre ou expression_chaîne1 est la chaîne à rechercher et expression_chaine2 et la chaîne dans laquelle il faut chercher
|
Extract
Datepart (sql server)
|
EXTRACT (champs_datetime FROM valeur_datetime)
(champs_datetime FROM valeur_interval)
(Champs_timezone FROM valeur_datetime)
|
Isole un simple champ d'un datetime ou d'un interval et le converti en nombre. Les paramètres sont : YEAR, MONTH, DAY, HOUR, MINUTE, SECONDE, FRACTION.
Ex:extract (year from date '08/12/1953') retourne 1953
Avec datepart – yyyy – mm – dd
(yyyy, champs_datetime)
|
|
datepart(champs_datetime,valeur_datetime)
|
|
|
CHAR_length(chaine_de caratère) ou character_length(chaine_de caratère) ou
Octet_length(chaine_de caratère)
|
Retourne le nombre de caractères d'octet.ex: select char_length('kim bassinger') retourne 12
un espace = 1 caractère.
|
Cardinality
|
Cardinality (collection_value)
|
Retourne le nombre d'éléments dans un tableau.
Select CARDINALITY (colone_cible) from table_cible
|
ABS
|
Abs (valeur_numérique)
|
Retourne la valeur absolue d'une expression
|
|
Mod(dividende, diviseur)
Nom_de_colone %diviseur
|
Retourne le reste de la division.
Select MOD (27,4) retourne 3
|
|
String value function
|
|
Substring
|
Substring(chaine from start [for lenght]
|
Retourne une sous chaîne (bit ou caractère) d'une source
select SUBSTRING ('kim FROM 2 FOR 2) retourne im
|
Left
|
Left(chaine,Nbr_Caractère)
|
Retourne le nbr_de_caractère d'une Chaîne dans une sous-chaîne (bit ou caractère).left(kim,2) retourne ki
|
Right
|
Right(chaine,Nbr_Caractère)
|
Retourne le nbr_de_caractère d'une Chaîne dans une sous-chaîne (bit ou caractère).right (kim,2) retourne im
|
Upper
|
Upper(chaîne_de_caractères)
|
Retourne la chaîne en majuscule
|
Lower.
|
Lower(chaîne_de_caractères)
|
Retourne la chaîne en minuscule.
|
Trim
|
TRIM ([both|leading|trailing] caractères FROM chaine_de_caratères)
|
Retourne la chaîne amputée du caractère.
Both : supprime tous les caractères désignés.Leading: supprime tout les caractères désignés a gauche de la chaîne
Trailing : supprime tous les caractères désignés à droite de la chaîne.
|
|
Date & time value function
|
|
Current
Getdate()
(SQL server)
|
CURRENT_DATE or CURRENT_TIME[(precision)] or CURRENT_TIMESTAMP[(precision)]
|
Retourne la date, time (heure), ou timestamp (date & heure) courant.
|
|
LOCALTIME[(precision)] ou LOCALTIMESTAMP[(precision)]
|
Retourne time, ou timestamp courant de la zone horaire
|
|
Aggregate function
|
|
Count
|
COUNT(*|[distnct|all] nom_de_colonne)
|
Retourne le total du nbr. de ligne ou de valeurs d'une colonne qui ne contient pas null.distinct : sans les doublons
all (défaut): tout.* tout avec les null
|
Max
|
MAX(nom_de_colonne)
|
Retourne la valeur maximale à l'intérieur d'une colonne spécifique.
|
Min
|
MIN(nom_de_colonne)
|
Retourne la valeur minimum à l'intérieur d'une colonne spécifique
|
Sum
|
SUM(nom_de_colonne)
|
Retourne la somme des valeurs à l'intérieur d'une colonne spécifique.
|
Avg
|
AVG(nom_de_colonne)
|
Retourne la moyenne des valeurs à l'intérieur d'une colonne spécifique.
|
|
Condition de recherche
|
|
|
CASE
WHEN Condition de recherche1 THEN résultat1
WHEN Condition de recherche THEN résultat2
[ELSE résultatx]
END
|
Permets de faire une recherche si la condition when est vraie alors résultat.si aucune condition alors sortie de la boucle ou passage par Else s'il est spécifié.
|
Nullif
|
NULLIF(valeur-t,valeur X)
|
Retourne NULL si valeur-t égale valeur X.
|
Coalesce
|
COALESCE(valeur-1,valeur-2,valeur-3)
|
Retourne une valeur dans coalesce si ce n'est pas NULL.
Retourne la première valeur trouvée.
|
|
Clause avancée Group by
|
|
Group BY
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx
GROUP BY
|
Fait un regroupement, spécifie comment les rangées devront être groupées dans la table.
Les colonnes spécifiées dans le SELECT qui ne sont pas dans la ‘’group function’’ doivent être dans la clause GROUP BY
Les différents groupes sont :
colonne simple, colonnes multiples, nested, having
|
Colonne simple
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx
GROUP BY colonne_cible1
|
Divise la table en sets
Souvent combiné avec des fonctions d'agrégat
Pas de Texte, Byte, Clob,Blob dans une clause
|
Colonne multiple
|
SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx
GROUP BY colonne_cible1, colonne_cible2
|
Groupe sur plus d'une colonne.
|
|
SELECT Nom_de_colonne1,max(avg(nom_de_colonnenumérique)) FROM table_cible GROUP BY nom_de_colonne1
|
Retourne la ligne avec la moyenne maximale.
Se fait en deux phases :
1. Calcule le résultat moyen.
2. sélectionne le résultat moyen le plus haut
|
|
|
|
Having
|
SELECT ...... FROM ......
GROUP BY ....... HAVING (nom_de_colonne) condition
|
Affiche un set de colonnes restrain. Fait une nouvelle sélection de type where. Filtre le regroupement.
|
Rollup
Group by.... With Rollup
(sql server)
|
SELECT nom_colonne1,[nom_colonne2] SUM[MAX][AVG...] nom_colonne WHERE....GROUP BY ROLLUP.......
|
Obtient un tableau avec tous les sous totaux possibles.Utilisé pour produire des ensembles de cumul comme les sous totaux
|
Cube
|
|
Utilisé pour produire des valeurs résultantes de cross tabulation, S'applique dans les dataware House. Permets de gérer des données grâce aux calculs matriciels.Crée virtuellement un cube
|
|
Ensemble de Table
|
|
Equi-Join
|
SELECT table1,colonne1,table2.colonne1 FROM table1,table2
Where table1.colonne1= table2.colonne1
|
Les conditions de jointure sont dans la clause where. Évite les ambiguïtés en préfixant le nom des colonnes avec le nom des tables, permet l'utilisation d'alias pour simplifier les recherches.
|
Equi-join n tables
|
|
Joindre n tables requière au moins n-1 conditions par exemple: joindre 3tables requière au moins deux jointures.
|
Self-join
|
SELECT t1.colonne1, t2.colonne2 FROM table1 as t1, table1 as t2 WHERE t1.colonne = t2.colonne
|
Joint la table avec elle-même match les informations de la même table. Requière l'utilisation d'alias dans la clause FROM.
|
Nonequi-join
|
SELECT s.name,s.year,g.grade
FROM Grade g, Student s
WHERE s.year BETWEEN
g.lower-bound AND g.upper_bound
|
Fonction inverse a Equi Join
|
Cross join
(Pas supporté par SQL server)
|
SELECT course.course_id, professor.professor_id, FROM course CROSS JOIN professor
|
Très rarement utilisé.
Retourne un produit cartésien comme résultat
|
Natural join
(Pas supporté par SQL server)
|
SELECT * FROM t1 NATURAL JOIN t2
|
Jointure basée sur les colonnes des tables partageant le même nom.
Les valeurs non-identiques sont éliminées
|
Condition join
|
SELECT * FROM t1 JOIN t2 on t1.c1= t2.c3
|
La condition join du natural join est basiquement un equi-join de toutes les colonnes ayant le même nom.
|
|
SELECT * FROM t1 join (t2 join t3 on t2.c3 = t3.c2) on t1.c1=t2 .c2
SELECT * FROM t1 INNER JOIN t2 on t1.c1= t2.c2
|
Jointure entre 3 tables la t2 est une table de liaison avec les FK comprenant les PK de T1 et T3.
Affiche les données des champs qui sont dans l'intersection des deux bases.
|
|
|
|
Left outer join
|
SELECT * FROM t1 LEFT OUTER JOIN t2 on t1.c1= t2.c3
|
Permets de récupérer l'entièreté de la table T1 et la partie commune de la table T2.
|
|
|
|
Rigth outer join
|
SELECT * FROM t1 RIGHT OUTER JOIN t2 on t1.c1= t2.c3
|
Permets de récupérer la partie commune de la table T1 et l'entièreté de la table T2.
|
|
|
|
Full outer join
|
SELECT * FROM t1 FULL OUTER JOIN t2 on t1.c1= t2.c3
|
Full outer join agit comme une combinaison des left et right outer joins
|
|
|
|
Union
|
SELECT * from T1
UNION
SELECT * FROM T2
|
Combine le résultat de plusieurs select en un seul résultat. Les opérateurs sont ALL & DISTINCT (défaut)
|
|
|
|
Union All
|
SELECT * from T1
UNION ALL
SELECT * FROM T2
|
Affiche toutes les occurrences des deux tables.
|
Union distinct
|
SELECT * from T1
UNION ALL
SELECT * FROM T2
|
Affiche qu’une seule fois les tuples se trouvant dans la t1 et dans la t2
|
Intersect
|
SELECT * from T1
INTERSECT
SELECT * FROM T2
|
Retourne les rangs existant dans l'intersection des deux tables.
|
|
|
|
Except
|
SELECT * from T1
EXCEPT
SELECT * FROM T2
|
Retourne les rangs qui sont dans la première table excepté de ceux qui apparaissent aussi dans la deuxième table. Peuvent être utilisés avec ALL & DISTINCT
|
|
Subqueries
|
|
|
|
Est une requête qui est évaluée avant le process de la recherche principale
|
|
SELECT select_list
From table
WHERE expr operator
(SELECT select_list FROM table)
|
Scellé dans la clause d'un autre select.
Peuvent être utilisé dans WHERE, HAVING, FROM.
Toujours entre parenthèse.Désigné sous outer query
|
Type de subqueries
|
|
Atomic (single row subquery)
Row - Table value (multiple row subquery)
|
|
|
|
Single-Row
|
SELECT last_name FROM student WHERE Year_result>(SELECT year_result FROM student WHERE last_name='bacon'
|
Retourne seulement une valeur & utilise les opérateurs de comparaison habituel.
|
Group Functions
|
SELECT last_name,year_result FROM student WHERE Year_result>(SELECT AVG(year_result) FROM student)
|
Affiche le résultat des étudiants qui ont un résultat supérieur a la moyenne de l’année.
|
Having clause
|
SELECT section_id,AVG(year_result) as Moyenne FROM student
GROUP BY section_id
HAVING AVG( Year_result) = (SELECT AVG(year_result) FROM student)
|
|
Multiple Row
|
|
Requête à cardinalité multiple
|
Multiple-row IN
Multiple-row ANY
|
SELECT last_name,year_result FROM student
WHERE Year_result IN (SELECT MAX(year_result)
FROM student)
GROUP BY section_id
SELECT last_name,year_result FROM student
WHERE Year_result <= ANY (SELECT MAX(year_result)
FROM student)
GROUP BY section_id
|
IN égale à un des membres présent dans la liste
ANY compare la valeur à chaque valeur retournée dans la liste.
Donne comme résultat tout les étudiants qui ont au minimum la valeur la plus petite de la liste
|
Multiple-row ALL
|
SELECT last_name,year_result FROM student
WHERE Year_result >= ALL (SELECT MAX(year_result)
FROM student)
GROUP BY section_id
|
ALL compare la valeur avec toutes les valeurs de la liste et retourne la valeur maximum de la liste
|
Correlated
|
|
Utilisé pour les recherches de ligne à ligne.
Chaque sous-recherche est exécutée pour chaque ligne de la OUTER query.
Les informations retournées dépendent des data qui ont été traitées dans la OUTER query
|
|
SELECT last_name,section_id year_result FROM student AS OUTER
WHERE Year_result >
(SELECT AVG(year_result) FROM student WHERE section_id = OUTER,section_id)
|
Cherche tous les étudiants qui ont plus que le résultat moyen de leur section.Chaque fois qu'une ligne de la Outer query est traitée la inner query est évaluée,
|
|
Ordre d’exécution :
|
|
|
From
Where
Group By
Having
Select
Order By
|
|
Limit (mySQL)
TOP(access)
|
SELECT * from table LIMIT x
SELECT * from table LIMIT x,y
Select top x from table
|
Affiche les x premiers résultats d’une table.Affiche les y résultats d’une table en commencant par x
Affiche les x premiers résultats d’une table en acces
|