TCP and UDP both are transport layer protocols, both provides a process to process delivery (client to server), but they are very different from each other in the way they provide their services.
the main difference between UDP and TCP is; UDP provides a connection-less service whereas TCP provides connection oriented services.
that's why TCP is reliable, now why we called TCP a stream oriented protocol?
As we all know TCP protocol keeps track of the segments being transmitted or received that's why it is reliable but still if you see TCP segment header, there is no field for a segment number value in the segment header. Instead, there are two fields called the sequence number and the acknowledgment number. These two fields refer to a byte number and not a segment number.
Byte Number:
TCP numbers all data bytes (octets) that are transmitted in a connection. Numbering is
independent in each direction. When TCP receives bytes of data from a process, TCP
stores them in the sending buffer and numbers them. The numbering does not necessarily
start from 0. Instead, TCP chooses an arbitrary number between 0 and ((2)**32)− 1 for
the number of the first byte. For example, if the number happens to be 1,057 and the
total data to be sent is 6,000 bytes, the bytes are numbered from 1,057 to 7,056.
Sequence Number:
After the bytes have been numbered, TCP assigns a sequence number to each segment
that is being sent. The sequence number for each segment is the number of the first byte
of data carried in that segment.
Suppose a TCP connection is transferring a file of 5,000 bytes. The first byte is numbered 10,001. What are the sequence numbers for each segment if data are sent in five segments, each carrying 1,000 bytes?

Segment 1 → Sequence Number: 10,001 Range: 10,001 to 11,000
Segment 2 → Sequence Number: 11,001 Range: 11,001 to 12,000
Segment 3 → Sequence Number: 12,001 Range: 12,001 to 13,000
Segment 4 → Sequence Number: 13,001 Range: 13,001 to 14,000
Segment 5 → Sequence Number: 14,001 Range: 14,001 to 15,000
this is the reason we called TCP a stream controlled protocol because it keeps track of every bytes send or received and acknowledges every segments.
whereas why we called UDP a message orientated protocol?
UDP provides a connection-less service, it means each user data-grams (UDP packet) are independent and keeps no relationship from each other even though if their source is same and going to same destination.
One of the ramifications of being connection-less is that the process that uses UDP cannot send a stream of data to UDP and expect UDP to chop them into different related user data-grams (like TCP does). Instead each request must be small enough to fit into one user data-gram.
so the each data-gram has boundary and message are self contained that can have meaning.
that's why UDP is also called as message-oriented protocol.
for more detail please read TCP/IP protocol suite chapter #14 and #15 from Behrouz A. Forouzan
Hope this helps!