59 * L'opérateur `=` est l'opérateur par défaut |
59 * L'opérateur `=` est l'opérateur par défaut |
60 |
60 |
61 * L'opérateur `LIKE` / `~=` permet d'utiliser le caractère `%` dans une chaine |
61 * L'opérateur `LIKE` / `~=` permet d'utiliser le caractère `%` dans une chaine |
62 de caractère pour indiquer que la chaîne doit commencer ou terminer par un |
62 de caractère pour indiquer que la chaîne doit commencer ou terminer par un |
63 préfix/suffixe :: |
63 préfix/suffixe :: |
64 |
64 |
65 Any X WHERE X nom ~= 'Th%' |
65 Any X WHERE X nom ~= 'Th%' |
66 Any X WHERE X nom LIKE '%lt' |
66 Any X WHERE X nom LIKE '%lt' |
67 |
67 |
68 * L'opérateur `IN` permet de donner une liste de valeurs possibles :: |
68 * L'opérateur `IN` permet de donner une liste de valeurs possibles :: |
69 |
69 |
73 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
73 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
74 :: |
74 :: |
75 |
75 |
76 [DISTINCT] <type d'entité> V1(, V2)* |
76 [DISTINCT] <type d'entité> V1(, V2)* |
77 [GROUPBY V1(, V2)*] [ORDERBY <orderterms>] |
77 [GROUPBY V1(, V2)*] [ORDERBY <orderterms>] |
78 [WHERE <restriction>] |
78 [WHERE <restriction>] |
79 [LIMIT <value>] [OFFSET <value>] |
79 [LIMIT <value>] [OFFSET <value>] |
80 |
80 |
81 :type d'entité: |
81 :type d'entité: |
82 Type de la ou des variables séléctionnées. |
82 Type de la ou des variables séléctionnées. |
83 Le type spécial `Any`, revient à ne pas spécifier de type. |
83 Le type spécial `Any`, revient à ne pas spécifier de type. |
84 :restriction: |
84 :restriction: |
85 liste des relations à parcourir sous la forme |
85 liste des relations à parcourir sous la forme |
86 `V1 relation V2|<valeur constante>` |
86 `V1 relation V2|<valeur constante>` |
87 :orderterms: |
87 :orderterms: |
88 Définition de l'ordre de sélection : variable ou n° de colonne suivie de la |
88 Définition de l'ordre de sélection : variable ou n° de colonne suivie de la |
89 méthode de tri (`ASC`, `DESC`), ASC étant la valeur par défaut |
89 méthode de tri (`ASC`, `DESC`), ASC étant la valeur par défaut |
90 |
90 |
100 le suivant. Les différentes entités disponibles sont : |
100 le suivant. Les différentes entités disponibles sont : |
101 |
101 |
102 :Personne: |
102 :Personne: |
103 :: |
103 :: |
104 |
104 |
105 nom (String, obligatoire) |
105 nom (String, obligatoire) |
106 datenaiss (Date) |
106 datenaiss (Date) |
107 |
107 |
108 |
108 |
109 :Societe: |
109 :Societe: |
110 :: |
110 :: |
111 |
111 |
112 nom (String) |
112 nom (String) |
113 |
113 |
114 |
114 |
115 :Note: |
115 :Note: |
116 :: |
116 :: |
117 |
117 |
118 diem (Date) |
118 diem (Date) |
119 type (String) |
119 type (String) |
120 |
120 |
121 |
121 |
122 Et les relations entre elles : :: |
122 Et les relations entre elles : :: |
123 |
123 |
124 Person travaille_pour Societe |
124 Person travaille_pour Societe |
125 Person evaluee_par Note |
125 Person evaluee_par Note |
126 Societe evaluee_par Note |
126 Societe evaluee_par Note |
127 |
127 |
128 |
128 |
129 Méta-données |
129 Méta-données |
130 ~~~~~~~~~~~~ |
130 ~~~~~~~~~~~~ |
131 Tous les types d'entités ont les métadonnées suivantes : |
131 Tous les types d'entités ont les métadonnées suivantes : |
134 * `creation_date (Datetime)`, date de création de l'entité |
134 * `creation_date (Datetime)`, date de création de l'entité |
135 * `modification_date (Datetime)`, date de dernière modification de l'entité |
135 * `modification_date (Datetime)`, date de dernière modification de l'entité |
136 |
136 |
137 * `created_by (CWUser)`, relation vers l'utilisateur ayant créé l'entité |
137 * `created_by (CWUser)`, relation vers l'utilisateur ayant créé l'entité |
138 |
138 |
139 * `owned_by (CWUser)`, relation vers le où les utilisateurs considérés comme |
139 * `owned_by (CWUser)`, relation vers le où les utilisateurs considérés comme |
140 propriétaire de l'entité, par défaut le créateur de l'entité |
140 propriétaire de l'entité, par défaut le créateur de l'entité |
141 |
141 |
142 * `is (Eetype)`, relation spéciale permettant de spécifier le |
142 * `is (Eetype)`, relation spéciale permettant de spécifier le |
143 type d'une variable. |
143 type d'une variable. |
144 |
144 |
145 Enfin, le schéma standard d'un utilisateur est le suivant : |
145 Enfin, le schéma standard d'un utilisateur est le suivant : |
146 |
146 |
147 :CWUser: |
147 :CWUser: |
148 :: |
148 :: |
149 |
149 |
150 login (String, obligatoire) |
150 login (String, obligatoire) |
151 password (Password) |
151 password (Password) |
152 firstname (String) |
152 firstname (String) |
153 surname (String) |
153 surname (String) |
154 |
154 |
155 |
155 |
156 L'essentiel |
156 L'essentiel |
157 ----------- |
157 ----------- |
158 0. *Toutes les personnes* :: |
158 0. *Toutes les personnes* :: |
159 |
159 |
160 Personne X |
160 Personne X |
161 |
161 |
162 ou :: |
162 ou :: |
163 |
163 |
164 Any X WHERE X is Personne |
164 Any X WHERE X is Personne |
212 |
212 |
213 Any X WHERE X evaluee_par N, N eid 43 |
213 Any X WHERE X evaluee_par N, N eid 43 |
214 |
214 |
215 |
215 |
216 7. *Toutes les personnes triés par date de naissance dans l'ordre antechronologique* :: |
216 7. *Toutes les personnes triés par date de naissance dans l'ordre antechronologique* :: |
217 |
217 |
218 Personne X ORDERBY D DESC WHERE X datenaiss D |
218 Personne X ORDERBY D DESC WHERE X datenaiss D |
219 |
219 |
220 On note qu'il faut définir une variable et la séléctionner pour s'en |
220 On note qu'il faut définir une variable et la séléctionner pour s'en |
221 servir pour le tri. |
221 servir pour le tri. |
222 |
222 |
223 |
223 |
224 8. *Nombre de personne travaillant pour chaque société* :: |
224 8. *Nombre de personne travaillant pour chaque société* :: |
225 |
225 |
226 Any S, COUNT(X) GROUPBY S WHERE X travaille_pour S |
226 Any S, COUNT(X) GROUPBY S WHERE X travaille_pour S |
227 |
227 |
228 On note qu'il faut définir une variable pour s'en servir pour le |
228 On note qu'il faut définir une variable pour s'en servir pour le |
229 groupage. De plus les variables séléctionnée doivent être groupée |
229 groupage. De plus les variables séléctionnée doivent être groupée |
230 (mais les variables groupées ne doivent pas forcément être sélectionnées). |
230 (mais les variables groupées ne doivent pas forcément être sélectionnées). |
231 |
231 |
232 |
232 |
233 |
233 |
234 Exemples avancés |
234 Exemples avancés |
235 ---------------- |
235 ---------------- |
236 0. *Toutes les personnes dont le champ nom n'est pas spécifié (i.e NULL)* :: |
236 0. *Toutes les personnes dont le champ nom n'est pas spécifié (i.e NULL)* :: |
237 |
237 |
238 Personne P WHERE P nom NULL |
238 Personne P WHERE P nom NULL |