In MySQL, SCHEMA and DATABASE are synonyms. They refer to the same thing. You can use statements like CREATE SCHEMA or CREATE DATABASE. You can SHOW SCHEMAS or SHOW DATABASES.
This is a structural namespace for tables, so you can have two tables with the same name as long as they are in different schemas.
mysql> create table test.mytable( ... );
mysql> create table test2.mytable( ... );
Internally, MySQL Server implements schemas simply as subdirectories under the server's data directory. MySQL supports only one level of subdirectory in this way.
It has been said that you can't have inter-schema transactions. This is not true. You can reference tables of different schemas in a single transaction. You can even reference tables from different schemas in the same query:
SELECT * FROM test.mytable JOIN test2.mytable ON ...
You can make a table with a foreign key referencing another table in a different schema. It's just a kind of namespace for the tables, so you need to reference tables with the schema qualifier if the table isn't in your current default database. Read about qualified table names here: https://dev.mysql.com/doc/refman/8.0/en/identifier-qualifiers.html
MySQL also supports schema-level privileges in GRANT statements:
GRANT SELECT ON test2.* TO 'user'@'%';
Other SQL implementations like Microsoft's have further levels of namespacing. I've seen terms "schema," "database," and "catalog" used differently in some brands of SQL database. These things are not implemented in a consistent manner, so you need to learn how the product you are using treats them.
MySQL does not have any implementation for a "catalog", but you still see references to catalog in INFORMATION_SCHEMA tables, because the columns of those tables are standardized in the SQL spec. In MySQL, the catalog is always NULL in the info-schema tables.