TL;DR: the wavelet appears at the end of the synthesis filter bank, iterated infinitely.
Theoretically founded, practical and fast DSP tools are often derived from continuous theory: think about how the DFT is derived from the continuous Fourier transform, by discretizing both in time (like the Discrete-time Fourier transform) and frequency (like Fourier series), which are dual variables.
For a function $\psi(t)$ to be a wavelet, very few conditions (admissibility) are required. However, discretizing the complementary shift and scale parameters $(a,b)$ of $\psi\left(\frac{t-b}{a}\right)$ is more complicated if one want to remain invertible. And even more complicated to obtain a discrete orthogonal basis.
In other words: apart from a handful of well-known cases (Haar, Shannon, Meyer wavelets), if one have a closed-form formula of a nice admissible continuous wavelet, it is VERY unlikely that it can be discretized as a discrete orthogonal wavelet.
The filter bank structure does the job the other way around. If we assume an orthogonal multiresolution framework, we see that an iterated bank of carefully-designed filters can produce a wavelet analysis. Which wavelet? Theoretically, from a two-scale equation, which generally has no closed-form solution.
You can obtain a good approximation of the wavelet shape with the following procedure. Pick a level $L$. In the deepest detail subband (near the approximation), put a one, and zero elsewhere. Then, do the inverse wavelet transform. The highest the level, the better the approximation.Here is an example with a very q&d code.

dwtmode per
nSample = 1024;
data = zeros(nSample,1);
waveletName = 'db3';
for iLevel = 2:7
[C,L]=wavedec(data,iLevel,waveletName);
C(L(1)+(L(2)+L(3))/2) = 1;
% C((L(1))/2) = 1;
waveletAtLevel = waverec(C,L,waveletName);
subplot(2,3,iLevel-1)
plot(waveletAtLevel(find(waveletAtLevel)));axis tight;grid on ;
xlabel(['At level ',num2str(iLevel)])
end