Home
PHP
Tech Tube
MySQL
Linux
CSS&HTML
JavaScript

Useful queries

The post will contain some queries that may provide some useful actions or information on the database. Get the size of all databases:
SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;
Search for tables with specific names in a given database:
SELECT table_name FROM information_schema.tables where table_schema='<your_database_name>' AND table_name LIKE '%_example';
Copy a table. Please keep in mind that the table may be locked during such query so make sure that no I/O is expected:
CREATE TABLE your_new_db_name.your_new_table_name SELECT * FROM your_db_name.your_old_table_name;
Dump only the structure of a database:
mysqldump -d -h localhost -u root -pmypassword databasename > dumpfile.sql;
Get all column names that contain a given string:
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME LIKE '%<search_term>%'
        AND TABLE_SCHEMA='<your_database_name>';
Search table by name:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%token%'
Calculate percent of all records:
SELECT 
	COUNT(*) AS Total, 
	(SELECT COUNT(*) FROM table_name WHERE column_name = 1) AS `Column Name Total`, 
	(((SELECT COUNT(*) FROM table_name WHERE column_name = 1) * 100) / COUNT(*)) AS `Percent`
FROM 
	table_name
Get value from JSON column:
SELECT invoice,  JSON_UNQUOTE(JSON_EXTRACT(invoice, "$.userName")) FROM purchases p LIMIT 10
Select values that are missing from the database
SELECT missing_values.value
FROM (
    SELECT 'Potentially missing value 1' AS value UNION ALL
    SELECT 'Potentially missing value 2' UNION ALL
    SELECT 'Potentially missing value 3'
    -- Add more values here if needed
) AS missing_values
LEFT JOIN existing_values ON missing_values.value = value_id
WHERE value_id IS NULL;