Embedded SQL allows SQL statements to be embedded within host languages like C/C++/Java. Embedded SQL statements are distinguished by being enclosed between EXEC SQL and END-EXEC. Variables shared between SQL and the host language are prefixed with a colon in SQL. Dynamic SQL constructs SQL statements at runtime, allowing for flexibility, while static SQL has statements hardcoded at compile time, providing better performance.