mysql – InnoDB engine lock tables higher than tables used

I am running the SQL statement

CREATE OR REPLACE TEMPORARY TABLE my_schema.tmpx_test AS 
SELECT col1 
     , SUBSTR(col2, 1, 5) AS col3
FROM my_schema.my_table
WHERE col4 = 'my_string'
AND POSITION('val:' IN col5) != 0
AND date_col > '2020-10-11'

While the query is running, I am executing

SHOW ENGINE INNODB STATUS

and the transaction details for the query are

mysql tables in use 2, locked 3
397195 lock struct(s), heap size 41721976, 18721097 row lock(s), undo log entries 396
MySQL thread id 17, OS thread handle 139896414131968, query id 413 my_ip my_user Sending data

Am I right in assuming that the two tables in use in the tempx_test and my_table? Also, how come the number of tables locked is higher than the number of tables in use?

Isolation level is repeatable-read.