Gradient descent types

I have heard about gradient descent , stochastic gradient descent and batch gradient descent .Are they all same or is there any difference ?