>>> it is declared as uuid. But how does it occupy only 16 bytes? >> Because a UUID is internally simply a 128bit number - the dashes you see are >> just formatting.
> Sorry if this is silly but if it is a 128 bit number, why do we need 32 > characters to represent it? The 36 (or 32 without the dashes) characters are just the default hex representation. If you wanted to, you could convert it to a bigint (or a numeric). See e.g. here for an example: https://stackoverflow.com/a/27286610