web-dev-qa-db-fra.com

Qu'est-ce que rowID et rowNum (ROWID vs ROWNUM)

Je voudrais connaître la différence entre rowID et rowNUM

Et comment voir les deux dans notre tableau.

quand j'exécute ceci:

SELECT * FROM emp WHERE rownum=1

Il renvoie une requête mais quand je fais la même chose pour rowid, il dit

types de données incohérents: ROWID attendu a obtenu NUMBER

Et même dans certaines tables, rownum renvoie null. Pourquoi

Veuillez clarifier ceci: rowid vs rownum? (Requête de démonstration)

Merci

EDIT: nécessite d'utiliser un alias pour afficher ROWID et ROWNUM (car ils sont pseudocolonnes) comme:

SELECT rownum r1, rowid r2 FROM emp

11
inityk

Rownum et rowed sont des pseudo-colonnes.

Rowid

Pour chaque ligne de la base de données, la pseudocolonne ROWID renvoie l'adresse de la ligne.

Un exemple de requête serait:

SELECT ROWID, last_name  
   FROM employees
   WHERE department_id = 20;

Plus d'informations sur rowid ici: https://docs.Oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm

Rownum

Pour chaque ligne renvoyée par une requête, la pseudocolonne ROWNUM renvoie un nombre indiquant l'ordre dans lequel Oracle sélectionne la ligne dans une table ou un ensemble de lignes jointes. La première ligne sélectionnée a un ROWNUM de 1, la seconde a 2, et ainsi de suite.

Vous pouvez limiter la quantité de résultats avec rownum comme ceci:

SELECT * FROM employees WHERE ROWNUM < 10;

Plus d'informations sur rownum ici: https://docs.Oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm

Différence

La différence réelle entre rowid et rownum est que ce rowid est un identifiant unique permanent pour cette ligne. Cependant, le rownum est temporaire. Si vous modifiez votre requête, le numéro de rownum fera référence à une autre ligne, le rowid non.

Ainsi, le ROWNUM est un nombre consécutif qui ne s'applique qu'à une instruction SQL spécifique. Au contraire, le ROWID, qui est un ID unique pour une ligne.

15
blckbird

Rownum (numérique) = Numéro de séquence généré de votre sortie.
Rowid (hexadécimal) = Généré automatiquement au moment de l'insertion de la ligne.

SELECT rowid,rownum fROM EMP


ROWID ROWNUM                 
----- ---------------------- 
AAAR4AAAFAAGzg7AAA, 1                      
AAAR4AAAFAAGzg7AAB, 2                      
AAAR4AAAFAAGzg7AAC, 3                      
AAAR4AAAFAAGzg7AAD, 4                      
AAAR4AAAFAAGzg7AAE, 5      
2
Ruelos Joel
  1. Rowid donne l'adresse des lignes ou des enregistrements. Rownum donne un nombre d'enregistrements
  2. Rowid est stocké en permanence dans la base de données. Rownum n'est pas stocké dans la base de données de façon permanente
  3. Rowid est automatiquement attribué à chaque insertion dans une table. Rownum est une valeur dynamique récupérée automatiquement avec la sortie de l'instruction select.
  4. C'est uniquement à des fins d'affichage.
0
Shiv Ratan Kumar