You can make the face used for math and the so-called sedate face used for macro names inherit from fixed-pitch, and activate variable-pitch-mode in the LaTeX mode hook:
(set-face-attribute 'font-latex-sedate-face nil :inherit 'fixed-pitch)
(set-face-attribute 'font-latex-math-face nil :inherit 'fixed-pitch)
(add-hook 'LaTeX-mode-hook #'variable-pitch-mode)
After reading the sql-mode source, I discovered what I think is the issue. Here's a workaround in case anyone else has this (or when I have the same issue 6 months from now...)
sql-mode apparently has different dialects of SQL that it can recognize. When it loads at startup it defaults to ANSI mode. But if you run it via M-x sql-mode it doesn't do that and ...
Looking at plsql.el I suspect the problem is in:
(defun plsql-mode ()
"Programming support mode for PL/SQL code."
(setq sql-mode-font-lock-keywords ...)
(setq font-lock-mark-block-function 'mark-visible)
since when we call sql-mode, it will re-set sql-mode-font-lock-keywords, so the call ...
Emacs provides a general-purpose highlight mechanism which might work here. See Interactive Highlighting in the Emacs manual.
The relevant commands are highlight-phrase or highlight-regexp to define what you want to highlight (and in what color). You can ask Hi Lock mode to save the highlight instructions in the file itself using hi-lock-write-interactive-...