In Scrum, the purpose of a Sprint is to deliver a potentially releasable increment of value. That's more important than just delivering all of the items in a Sprint Backlog. The Sprint Backlog must be revised and updated on an ongoing basis so that the Sprint Goal can be met and a satisfactory increment delivered.
The Sprint Backlog has the implementation details and/or the plan to meet the Sprint Goal. The plan to meet the goal can change but the goal itself should not change.
For example there was a team I coached where their Sprint Goal is: to implement full text search. Some implementation maybe using Lucene, use mysql fulltext search or use mongodb. As a self-organising development team, they have the flexibility to choose how to implement the Sprint Goal.