I believe DESCRIBE does port to other DBMS's, at least Postgres. No-one can ever be sure about MSSQL or Access (::shudders:🙂.
/me breaks out old trusty SQL book... looks up DESCRIBE...
I don't see DESCRIBE as being a custom mySQL extension, and according to this list it's a reserved keyword, which usually means it's supported in the standard.
As far as your "replace" or "on duplicate key" issue, you could create a general stored procedure and have it general enough to do something like:
BEGIN;
-- other operations
SAVEPOINT sp1;
INSERT INTO wines VALUES('Chateau Lafite 2003', '24');
-- Assume the above fails because of a unique key violation,
-- so now we issue these commands:
ROLLBACK TO sp1;
UPDATE wines SET stock = stock + 24 WHERE winename = 'Chateau Lafite 2003';
-- continue with other operations, and eventually
COMMIT;
I'm not a stored proc guy, but it would give you the functionality to call your stored procedure with parameters (table name, updates, where clause, etc.) to mimick the MySQL functionality.