Lors de l'insertion de plusieurs lignes ce qui ne l'instruction "select 1 from dual'?
Lors de l'insertion de plusieurs lignes dans une table en utilisant le style suivant :
insert all
into ghazal_current (GhazalName,Rating) values('Ajab Apna Haal Hota Jo Visaal-e-Yaar Hota',5)
into ghazal_current (GhazalName,Rating) values('Apne Hothon Par Sajana Chahta Hun',4)
into ghazal_current (GhazalName,Rating) values('Shaam Se Aankh Mein Nami Si Hai',4)
into ghazal_current (GhazalName,Rating) values('Tumhe Yaad Ho Ke Na Yaad Ho',3)
select 1 from dual;
Que fait la déclaration select 1 from dual
veux dire ? De quoi s'agit-il ici ?
Rien d'autre que de sélectionner 1, que la déclaration des états.
Utile, et brillant choix de gazelles 🙂
Utile, et brillant choix de gazelles 🙂
OriginalL'auteur Y.E.P | 2013-03-13
Vous devez vous connecter pour publier un commentaire.
DOUBLE est un construit-dans le tableau, utile, car il est garanti à retour une seule ligne. Cela signifie
DUAL
peut être utilisé pour obtenir des pseudo-colonnes commeuser
ousysdate
, les résultats des calculs et la comme. Le propriétaire de la DOUBLE estSYS
mais il peut être consulté par tous les utilisateurs. Le DOUBLE est bien dans la documentation. En savoir plus.Dans votre cas,
SELECT 1 FROM DUAL;
sera renvoie simplement1
. Vous en avez besoin parce que l'INSERTION TOUTE la syntaxe exige une clause SELECT, mais vous n'êtes pas à l'interrogation de la saisie des valeurs d'une table.Cet article décrit comme spécial. Ce n'est pas le même que temporaire. C'est une table permanente.
Non, c'est un argument.
Non, vous êtes venu ici pour un argument... youtube.com/watch?v=JkzjBfTDH20
OriginalL'auteur Roney Michael
Bref re-introduction à une rangée de tables
Certaines bases de données SQL exiger que toutes les valeurs à venir DE une table ou d'une table-comme l'objet, tandis que d'autres acceptent les requêtes de construire des valeurs ex nihilo:
Ici la cardinalité de la DOUBLE est important. Si elle avait plus d'une ligne, vos résultats en aurait plus d'une ligne. Ce qui se passe, par exemple, lorsque vous
SELECT 1 FROM A_Table_With_Ten_Rows
?Pourquoi DUAL est utilisé ici
SQL construire
VALUES (<row-value-expression>)
est une valeur de ligne du constructeur.VALUES (1, 2, 3)
"crée" une ligne de valeurs commeSELECT 1, 2, 3
.Oracle, bien sûr, il faut que ces valeurs sont DE quelque part.
Comme une démonstration, au lieu de choisir à partir de la DOUBLE à la fin de la plaquette, tentez d'une table avec N lignes, et vous verrez que chaque
VALUES()
ligne est insérée N fois.SELECT 1 FROM dual;
peut être utilisé dans MySQL, trop. Postgres a aussi:VALUES (1);
(oui, pas deFROM
!) et cela fonctionne dans Postgresql et SQL-Server:SELECT y FROM (VALUES (1)) AS x (y);
Oh,SELECT 1
fonctionne dans SQL-Server.oui. Le point est que ora il faut pour SÉLECTIONNER et VALEURS, alors que mon/pg/h/lite/etc. ne l'exigent pas, même s'ils peuvent se le permettre. Je vais préciser dans la réponse.
Mon point de vue (que je n'ai pas fait comprendre) que Postgres permet une syntaxe même sans
SELECT
!oui, c' (un nu VALEURS) est une fonctionnalité intéressante. (pg fait beaucoup de choses à droite!)
OriginalL'auteur pilcrow
Il y a quelques exemples sur l'utilisation de deux dans les Requêtes:
OriginalL'auteur Fariba