This directory contains sample databases for practicing and learning MySQL.
A comprehensive database with departments, employees, titles, and salaries.
Tables:
- employees
- departments
- dept_emp
- dept_manager
- titles
- salaries
Use cases:
- Complex JOINs
- Aggregate functions
- Date operations
- Performance optimization
A DVD rental database (official MySQL sample database).
Tables:
- film
- actor
- customer
- rental
- payment
- store
- And more...
Use cases:
- Many-to-many relationships
- Full-text search
- Views and triggers
- Stored procedures
Geographical data about countries, cities, and languages.
Tables:
- country
- city
- countrylanguage
Use cases:
- Simple queries
- Grouping and aggregation
- Filtering
- Sorting
- Open phpMyAdmin
- Create new database
- Click "Import" tab
- Choose .sql file
- Click "Go"
# Create database
mysql -u root -p -e "CREATE DATABASE sample_db;"
# Import SQL file
mysql -u root -p sample_db < sample_database.sqlWAMP:
cd C:\wamp64\bin\mysql\mysql[version]\bin
mysql -u root -p sample_db < C:\path\to\sample_database.sqlXAMPP:
cd C:\xampp\mysql\bin
mysql -u root -p sample_db < C:\path\to\sample_database.sql- Mockaroo - Generate realistic test data
- Generatedata - Random data generator
- SQL Generator - SQL INSERT generator
-- Create sample users
INSERT INTO users (username, email, created_at)
SELECT
CONCAT('user', num),
CONCAT('user', num, '@example.com'),
DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 365) DAY)
FROM (
SELECT @row := @row + 1 AS num
FROM information_schema.TABLES t1,
information_schema.TABLES t2,
(SELECT @row := 0) r
LIMIT 1000
) AS numbers;- Sakila: https://dev.mysql.com/doc/sakila/en/
- World: https://dev.mysql.com/doc/world-setup/en/
- Employees: https://github.com/datacharmer/test_db
Follow the instructions provided with each database for installation.
Each sample database includes:
- Schema documentation
- Sample queries
- Practice exercises
- Solutions
Have a great sample database to share? See CONTRIBUTING.md for guidelines.