Recette
#7: |
|
Février 2011 |
Jusqu'à maintenant nous avons vu uniquement comment interroger
une table. |
CREATE
TABLE test_geom ( SELECT
AddGeometryColumn('test_geom', 'the_geom', |
Rien de bien nouveau: il s'agit de la même table traitée dans l'exemple précédent.
INSERT
INTO test_geom INSERT
INTO test_geom INSERT
INTO test_geom INSERT
INTO test_geom INSERT INTO
test_geom |
La syntaxe INSERT INTO (...) VALUES (...) permet d'insérer des valeurs dans une table:
la première liste contient les noms des colonnes
et la seconde liste contient les valeurs à insérer: les correspondances entre colonnes et valeurs à insérer sont établies par leur position.
vous pouvez aussi simplement
omettre la liste des colonnes (regardez le deuxième
exemple):
mais ce n'est pas recommandé, car cette syntaxe
s'appuie implicitement sur l'ordre par défaut des colonnes et est
susceptible d'être une source d'erreur.
un autre point important; cette table possède une PRIMARY KEY AUTOINCREMENT:
en règle générale, on propose la valeur NULL , afin de spécifier à SQLite d'attribuer automatiquement une valeur unique.
mais dans le troisième exemple avec INSERT , on a mis une valeur explicite.
SELECT * |
id |
name |
measured_value |
the_geom |
1 |
first point |
1.234560 |
BLOB sz=60 GEOMETRY |
2 |
second point |
2.345670 |
BLOB sz=60 GEOMETRY |
10 |
tenth point |
10.123457 |
BLOB sz=60 GEOMETRY |
11 |
eleventh point |
11.123457 |
BLOB sz=60 GEOMETRY |
12 |
twelfth point |
12.123457 |
NULL |
Juste un petit coup d'oeil avant d'aller plus loin ...
INSERT INTO
test_geom |
cette requête INSERT
va échouer, aboutissant à une erreur: constraint failed.
Pourquoi? une PRIMARY KEY
(clé primaire) est obligatoirement unique.
or id = 2
existe déjà dans cette table.
INSERT OR IGNORE INTO
test_geom |
En spécifiant la clause OR IGNORE la requête va maintenant échouer en silence (pour les mêmes raisons).
INSERT OR REPLACE INTO
test_geom |
Il existe une variante i.e. spécifier la clause OR REPLACE va permettre de mettre à jour la colonne (un peu comme UPDATE).
REPLACE
INTO test_geom REPLACE INTO
test_geom |
Une autre alternative est possible, i.e. en utilisant REPLACE
INTO:
mais il s'agit simplement d'un alias pour
INSERT OR REPLACE.
SELECT * |
id |
name |
measured_value |
the_geom |
1 |
first point |
1.234560 |
BLOB sz=60 GEOMETRY |
2 |
POINT #2 |
2.200000 |
BLOB sz=60 GEOMETRY |
3 |
POINT #3 |
3.300000 |
BLOB sz=60 GEOMETRY |
10 |
tenth point |
10.123457 |
BLOB sz=60 GEOMETRY |
11 |
POINT #11 |
11.110000 |
BLOB sz=60 GEOMETRY |
12 |
twelfth point |
12.123457 |
NULL |
Un autre petit coup d'oeil ...
UPDATE
test_geom SET UPDATE test_geom
SET |
Mettre à jour des valeurs n'est pas plus complexe ...
DELETE FROM
test_geom |
Il en va de même pour la suppression de lignes.
i.e. la clause
DELETE va affecter
toutes les lignes ayant un id pair.
SELECT * |
id |
name |
measured_value |
the_geom |
1 |
first point |
1.234560 |
BLOB sz=60 GEOMETRY |
3 |
point-3 |
0.003000 |
BLOB sz=60 GEOMETRY |
11 |
POINT #11 |
1000011.110000 |
BLOB sz=60 GEOMETRY |
Un dernier coup d'oeil ...
important Attention: appeler les clauses UPDATE
or DELETE sans
spécifier de condition après WHERE
est tout à fait autorisé en SQL. |
|
Author: Alessandro Furieri a.furieri@lqt.it |
This work is licensed under the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license. |
|
|
|
Permission is granted to copy, distribute and/or modify this
document under the terms of the |