Wow I answered a similar question a year ago.
Nevertheless, your question is unique.
Here it goes:
If you are renaming all tables in the database mydb
, here is the query you need:
SELECT
CONCAT('ALTER TABLE ',db,'.',old_tblname,' RENAME ',db,'.',new_tblname,';')
FROM
(
SELECT
table_schema db,
table_name old_tblname,
substr(table_name,4) new_tblname
FROM
information_schema.tables
WHERE
SUBSTR(table_name,1,3)='dr_'
AND table_schema = 'mydb'
) A;
Run this in the OS and capture it to a SQL file. Then, execute the SQL file.
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',db,'.',old_tblname,' RENAME ',db,'.',new_tblname,';') FROM (SELECT table_schema db,table_name old_tblname,substr(table_name,4) FROM information_schema.tables WHERE SUBSTR(table_name,1,3)='dr_' AND table_schema = 'mydb') A" > BigRename.sql
mysql -u... -p... < BigRename.sql
If you are renaming all tables in all databases, here is the query you need:
SELECT
CONCAT('ALTER TABLE ',db,'.',old_tblname,' RENAME ',db,'.',new_tblname,';')
FROM
(
SELECT
table_schema db,
table_name old_tblname,
substr(table_name,4) new_tblname
FROM
information_schema.tables
WHERE
SUBSTR(table_name,1,3)='dr_'
) A;
Run this in the OS and capture it to a SQL file. Then, execute the SQL file.
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',db,'.',old_tblname,' RENAME ',db,'.',new_tblname,';') FROM (SELECT table_schema db,table_name old_tblname,substr(table_name,4) FROM information_schema.tables WHERE SUBSTR(table_name,1,3)='dr_') A" > BigRename.sql
mysql -u... -p... < BigRename.sql