Just a wild guess: MySQL is incorrectly interpreting MIN() and MAX() as booleans here.
Your question isn't entirely clear, but I'm guessing you simply want an order by clause:
SELECT nome AS mais_caro
FROM equipamento
ORDER BY preço DESC limit 1
If not, look into subqueries, e.g.:
SELECT nome AS mais_caro
FROM equipamento
WHERE preço = (SELECT MAX(preço) FROM equipamento);
Btw, to learn SQL, you really ought to look into PostgreSQL. The manual is beyond excellent, and it's extremely strict, unforgiving, and informative, when it comes to errors such as the one you did:
denis=# create table test (id serial);
CREATE TABLE
denis=# select id from test having min(id);
ERROR: argument of HAVING must be type boolean, not type integer
LINE 1: select id from test having min(id);
^
MySQL, in contrast and as you've found out, accepts a lot of garbage in unless you enable strict mode.