For the first issue, "O" is the SMILES code for water, this is why it is listed as an alternate name for water in the database. You can see here that all of these names signify water in ChemicalData
ChemicalData[#, "StandardName"] & /@ {"CAS7732-18-5", "CID962",
"dihydrogen oxide", "EGEC231-791-2", "H2O", "InChI=1/H2O/h1H2",
"IsomericSMILES:O", "MFCD00011332", "O", "water"}
(* {"Water", "Water", "Water", "Water", "Water", "Water", Water", "Water", "Water", "Water"} *)
If you want the molar mass of oxygen, then you would use "O2" or "molecular oxygen" or the standard name "MolecularOxygen"
ChemicalData["O2", "MolarMass"]
(* Quantity[31.9988, ("Grams")/("Moles")] *)
You can also get to this result by typing Ctrl =
and typing "oxygen molar mass". If you want the mass for the element oxygen, then you need to query ElementData["O", "AtomicMass"]
As to the molar mass of silver bromate - that does seem to be an error in our data. You can verify it via
#2 ElementData[#1, "AtomicMass"] & @@@
ChemicalData["SilverBromate", "ElementTally"] // Total
(* Quantity[235.770, "AtomicMassUnit"] *)
which matches the data you find elsewhere. You can also check the "mono-isotopic mass" via
Function[{element, number},
number (ElementData[element, "IsotopeAbundances"][[1, 1]] //
IsotopeData[element <> IntegerString[#], "AtomicMass"] &)] @@@
ChemicalData["SilverBromate", "ElementTally"] // Total
(* Quantity[233.80817777, "AtomicMassUnit"] *)
which matches what you find on ChemSpider. Where did the wrong value in our database come from? I'm not sure, but I'm working on a way to find and fix errors in the data right now.
You should file a bug report on this here and it should get fixed.
Thanks for finding that.