First, two issues with the example data. The datalines end with a semicolon on a row by itself. If you have the semicolon on a row with data that record will not be in the output data set. Second, you did not have Name as the same type.
data one;
input name$ variable car$;
datalines;
Anne 1 Acura
Bill 2 Buick
Carol 4 Cadillac
David 5 Dodge
Erik 5 Equus
; run;
data two;
input name $ variable;
datalines;
Carol 3
David 4
; run;
/* if not sorted by variables that uniquely identify records do so*/
data want;
update one two;
by name;
run;
The Update statement will replace values and add records from Two to the data set One. Match By variables that uniquely identify records in data set one. If the By variables duplicate in One this will fail.
The default behavior for Update is that missing values in the second set will not replace values in the first. If you want that behavior you would add the option UPDATEMODE=NOMISSINGCHECK.
Suggestion: You can replace the first the data set but I would create a new data set until you are very familiar with the behavior the update statement.