There are two models of variables: the value model (e.g. variables in C) and the reference model (e.g. variables in Python).
There is also a distinction between static typing and dynamic typing.
Can the value model only be used together with static typing, not with dynamic typing? Or how can the value model and dynamic typing work together, and maybe some example languages?
Can the reference model for variables work with either static typing or dynamic typing?
Whether all variables contain references or values is completely independent of static vs. dynamic typing.
There are dynamically typed languages with value semantics (e.g. Perl, PHP) and statically typed languages with reference semantics (e.g. Java, C# (except structs), OCaml). There are also languages where the distinction plain does not matter because there is no mutability or observable object identity (e.g. Haskell).