Your proof does not work. Indeed, subtracting $1$ from $\frac p q$ will give you a rational number, but it will be negative by assumption, so this doesn't help you (since it doesn't give you a contradiction).
A simpler approach: Explicitly state what the infinitely-many positive rationals less than $x$ are.
Hint: If $y$ is a positive rational, what can you say about $\frac{y}2$? About $\frac{y}4$? $\frac{y}8$? ...
You are completely right in that the notion of holes depends on what you can put between your numbers. There is always a bigger set. The integers are contained in the rationals, which are contained in the real numbers, but those themselves can be viewed to have many holes, called non-standard real numbers (e.g. infinitesimals).
In order to give the ideas of “holes” and “being without holes” a meaning, you have to define what the total set of your numbers should be. If you say you want all rationals, that is fine. But there are properties which are only fulfilled by bigger sets of numbers.
For example you can easily construct a right triangle with legs of length $1$. Then the length of the hypotenuse will not be a natural number like $1$ nor even a rational number. It is $\sqrt2$, a hole in the rational numbers. The same happens if you want to measure the circumference of a circle with rational radius.
As for the statement in your book, $\sqrt2$ and $π$ are probably numbers they want on their number line. However what exactly the set of numbers on the number line is, depends on how you define it. There is not a right or wrong way. Just more and less useful ones for doing math with.
In analysis now, there are still more things you would like to describe by numbers. For example you want to find zeros of a function. For the real numbers the following property holds:
Let $f: ℝ→ℝ$ be a continuous function and $a<b$ real numbers such that $f(a) < 0 < f(b)$. Then there is a $x$ between $a$ and $b$ such that $f(x) = 0$.
This is not true for the rational numbers. The reason is, you can always make your interval $(a, b)$ smaller and smaller, keeping $f(a) < 0 < f(b)$, thereby closing in on the zero of $f$. That way you get a sequence of (rational or real) numbers $(a_n)_{n\inℕ}$ which is Cauchy (meaning the distance $\vert a_m-a_n\vert$ gets arbitrary small for $m$ and $n$ big enough). But only in the real numbers there will always be some limit $x$ contained in all the intervals $(a_n, b_n)$. This property is called completeness.
Best Answer
Hint: can you see a pattern here? $$ 0,1,4,9,\dotsc $$