"있다 and 가지다"
They can both mean "have" in some contexts but are not exactly the same in meaning and usage.
* 있다: (adjective or intransitive verb) There exists/is; to be there, stay.
있다 is what corresponds to the "to exist" sense of the "be" verb in English.
It can mean "have" by way of the "~는 ~가 있다", or "~한테는[에게는] ~가 있다" forms.
- 저기에 학교가 있다: There is a school over there.
- 어느 소년이 있었다: There was one boy.
- 내 곁에 있어 줘: Stay by my side please.
- 나는 [나에게는] 개가 두 마리 있다: For me, there are two dogs => I have two dogs.
* 가지다: (transitive verb) have, own.
This is similar to "have/own" in English. It is often used as "가지고 [갖고] 있다", "가지고 가다/오다/놀다/etc" .
- 이거 너 가져: You keep this (I give you this).
- 비가가 오니까 우산을 갖고 가거라: It is raining, so take your umbrella with you.
- 나는 개를 두 마리 가지고 있다: I have [own] two dogs.
* Examples of how the two can be used similarly
- 그는 [그한테는] 재산이 많이 있다 == 그는 재산을 많이 가지고 있다.
- 나에게는 병이 있다 (I have an ailment) / 내게 있는 병 (the ailment I have) == 나는 병을 가졌다 [갖고 있다] / 내가 가진 병.