Want to know about application testing techniques

I am learning software testing techniques on internet.I want to know that what is the difference between white box,black box and grey box testing technique? Do a tester always needs to test the application using more than one technique? And in which type of testing do we check the overall functionality of application?
