Many times I forget things about my application. I don't memorize the table names or what a query did and I search to get what I want. My team leader told me I'm supposed to memorize the table names that I use. 

Is the developer required to memorize the table names in the database, the classes names etc? And if the answer is "Yes, all the time," what should I do to remember those things?

You shouldn't need to explicitly memorise these things. By that I mean sit down and learn them as you would a list of words for a spelling test. In the first instance the names should be memorable and discoverable so you can find them again without too much effort.

You should also have access to tools that help you out here with auto-completion and the like.

In a large system of over 100 tables there's no way you can really be expected to remember every table name and every column name, however, with memorable, discoverable names and regular use you should find yourself remembering the most important details and those you use every day.
