# TablePlus Database GUI: Universal Database Tool

# TablePlus Database GUI: Universal Database Tool

## Hook
Tired of juggling multiple database clients? TablePlus is the sleek, native database management tool that connects to virtually any database—MySQL, PostgreSQL, SQLite, Redis, and more—all from one beautiful interface. Fast, intuitive, and built for modern developers.

## Table of Contents
1. [What is TablePlus?](#what)
2. [Setup & Installation](#setup)
3. [Code Examples](#code)
4. [Feature Comparison Table](#table)
5. [FAQ](#faq)

## <a name="what"></a>What is TablePlus?

TablePlus is a modern, native database management GUI that supports multiple relational and NoSQL databases. It provides a clean, intuitive interface for database operations without sacrificing power or flexibility.

**Key Features:**
- **Multi-database support**: MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Redis, Cassandra, MongoDB, and more
- **Native performance**: Built with native code for macOS, Windows, and Linux
- **Inline editing**: Edit data directly in the table view with spreadsheet-like experience
- **Advanced filters**: Query builder with visual interface
- **SSH & TLS support**: Secure connections to remote databases
- **Code review**: SQL syntax highlighting and auto-completion
- **Multiple tabs & windows**: Work with multiple databases simultaneously

## <a name="setup"></a>Setup & Installation

### Installation

**macOS:**
```bash
# Using Homebrew
brew install --cask tableplus

# Or download from website
# Visit: https://tableplus.com/
```

**Windows:**
```bash
# Using Chocolatey
choco install tableplus

# Or download installer from tableplus.com
```

**Linux:**
```bash
# Debian/Ubuntu
wget -qO - https://deb.tableplus.com/apt.tableplus.com.gpg.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/tableplus-archive.gpg > /dev/null
sudo add-apt-repository "deb [arch=amd64] https://deb.tableplus.com/debian/22 tableplus main"
sudo apt update
sudo apt install tableplus

# Snap
sudo snap install tableplus
```

### First Connection Setup

1. **Launch TablePlus** and click "Create a new connection"
2. **Select database type** (e.g., PostgreSQL, MySQL)
3. **Enter connection details**:
   - Name: My Database
   - Host: localhost
   - Port: 5432 (PostgreSQL) or 3306 (MySQL)
   - User: your_username
   - Password: your_password
   - Database: your_database_name
4. **Test connection** and click "Connect"

## <a name="code"></a>5 Code Examples

### Example 1: Basic Query Execution
```sql
-- Select all users created in the last 30 days
SELECT 
    id,
    username,
    email,
    created_at
FROM users
WHERE created_at >= NOW() - INTERVAL '30 days'
ORDER BY created_at DESC
LIMIT 100;

-- TablePlus displays results in an editable grid
-- Double-click any cell to edit inline
```

### Example 2: Using Query Parameters (Safe from SQL Injection)
```sql
-- In TablePlus, use $1, $2 for PostgreSQL or ? for MySQL
-- PostgreSQL parameterized query
SELECT * FROM products
WHERE category = $1
  AND price BETWEEN $2 AND $3
ORDER BY price ASC;

-- TablePlus will prompt for parameters:
-- $1: 'Electronics'
-- $2: 100
-- $3: 1000
```

### Example 3: Complex JOIN with Aggregation
```sql
-- Analyze customer orders with product details
SELECT 
    c.customer_name,
    c.email,
    COUNT(DISTINCT o.order_id) as total_orders,
    SUM(oi.quantity * oi.unit_price) as total_spent,
    AVG(oi.unit_price) as avg_item_price,
    MAX(o.order_date) as last_order_date
FROM customers c
INNER JOIN orders o ON c.customer_id = o.customer_id
INNER JOIN order_items oi ON o.order_id = oi.order_id
WHERE o.order_date >= '2024-01-01'
GROUP BY c.customer_id, c.customer_name, c.email
HAVING SUM(oi.quantity * oi.unit_price) > 500
ORDER BY total_spent DESC;

-- Use TablePlus's "Export" feature to save results as CSV, JSON, or SQL
```

### Example 4: Database Schema Exploration
```sql
-- PostgreSQL: View all tables with row counts
SELECT 
    schemaname,
    tablename,
    pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size,
    (SELECT COUNT(*) FROM information_schema.columns 
     WHERE table_schema = schemaname AND table_name = tablename) as column_count
FROM pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;

-- MySQL equivalent
SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    TABLE_ROWS,
    ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2) AS size_mb
FROM information_schema.TABLES
WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema')
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
```

### Example 5: Batch Data Update with Transaction
```sql
-- Update product prices with a 10% discount for specific category
-- TablePlus auto-wraps in transaction when using the GUI editor

BEGIN;

-- Create backup of current prices
CREATE TEMP TABLE price_backup AS
SELECT product_id, price, updated_at
FROM products
WHERE category = 'Winter Collection';

-- Apply discount
UPDATE products
SET 
    price = price * 0.90,
    updated_at = NOW(),
    discount_applied = true
WHERE category = 'Winter Collection'
  AND price > 50;

-- Verify changes
SELECT 
    p.product_id,
    p.product_name,
    pb.price as old_price,
    p.price as new_price,
    ROUND((pb.price - p.price), 2) as discount_amount
FROM products p
JOIN price_backup pb ON p.product_id = pb.product_id;

-- If satisfied, COMMIT; otherwise ROLLBACK;
COMMIT;
```

## <a name="table"></a>Feature Comparison Table

| Feature | TablePlus | MySQL Workbench | pgAdmin | DBeaver | DataGrip |
|---------|-----------|-----------------|---------|---------|----------|
| **Price** | $89 (lifetime) | Free | Free | Free/Paid | $199/year |
| **Native Performance** | ✅ Excellent | ⚠️ Moderate | ⚠️ Moderate | ⚠️ Moderate | ✅ Good |
| **Multi-DB Support** | ✅ 15+ databases | ❌ MySQL only | ❌ PostgreSQL only | ✅ 20+ databases | ✅ 15+ databases |
| **Inline Editing** | ✅ Spreadsheet-like | ⚠️ Limited | ⚠️ Limited | ✅ Yes | ✅ Yes |
| **SSH Tunneling** | ✅ Built-in | ✅ Built-in | ✅ Built-in | ✅ Built-in | ✅ Built-in |
| **Query Auto-complete** | ✅ Intelligent | ✅ Basic | ✅ Basic | ✅ Good | ✅ Excellent |
| **Dark Mode** | ✅ Native | ⚠️ Partial | ✅ Yes | ✅ Yes | ✅ Yes |
| **Mobile App** | ✅ iOS | ❌ No | ❌ No | ❌ No | ❌ No |
| **Code Review** | ✅ Yes | ⚠️ Limited | ⚠️ Limited | ✅ Yes | ✅ Excellent |
| **Data Export Formats** | 7+ formats | 4 formats | 3 formats | 10+ formats | 8+ formats |
| **Learning Curve** | ⭐ Easy | ⭐⭐ Moderate | ⭐⭐⭐ Steep | ⭐⭐ Moderate | ⭐⭐ Moderate |

## <a name="faq"></a>FAQ

### General Questions

**Q: Is TablePlus free?**  
A: TablePlus offers a free trial with full features but limited to 2 opened tabs and 2 opened windows. The full license costs $89 (one-time payment) for lifetime updates on a single platform, or $149 for all platforms.

**Q: Which databases does TablePlus support?**  
A: TablePlus supports MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Amazon Redshift, Redis, Cassandra, MongoDB, CockroachDB, Vertica, Oracle, and more. Check their website for the complete list.

**Q: Can I use TablePlus on multiple computers?**  
A: Yes, a single license can be activated on up to 2 computers simultaneously. You can deactivate and reactivate on different machines as needed.

### Technical Questions

**Q: How do I connect to a remote database through SSH?**  
A: When creating a connection, enable "Over SSH" option, then provide SSH host, port, user, and authentication method (password or private key). TablePlus will tunnel your database connection through SSH automatically.

**Q: Can I import/export data in bulk?**  
A: Yes, TablePlus supports importing from CSV, SQL, and JSON files. For export, you can choose from CSV, JSON, SQL, XML, Markdown, and more. Right-click on a table and select "Import" or "Export".

**Q: Does TablePlus support database version control?**  
A: TablePlus doesn't have built-in version control, but it can export schema as SQL files which you can commit to Git. For advanced version control, consider using migration tools like Flyway or Liquibase alongside TablePlus.

**Q: How do I execute multiple queries at once?**  
A: Write multiple queries separated by semicolons. Select the specific query you want to run (or select all with Cmd/Ctrl+A) and press Cmd/Ctrl+Enter. TablePlus will execute them sequentially.

**Q: Can I customize keyboard shortcuts?**  
A: Yes, go to Preferences → Shortcuts to customize keyboard shortcuts for common operations like running queries, formatting SQL, switching tabs, etc.

### Troubleshooting

**Q: Connection timeout errors - what should I check?**  
A: Verify: (1) Database server is running, (2) Firewall allows connections on the database port, (3) Credentials are correct, (4) If remote, check if SSH tunnel is configured properly, (5) Database allows remote connections (check `bind-address` in MySQL or `listen_addresses` in PostgreSQL).

**Q: Why is TablePlus slow with large result sets?**  
A: TablePlus loads results in batches. For very large datasets, use LIMIT clauses or filters to reduce result size. You can also adjust the "Rows per page" setting in Preferences → Data.

**Q: How do I recover unsaved queries?**  
A: TablePlus auto-saves query tabs. If it crashes, reopen TablePlus and your queries should be restored. You can also check Preferences → General → "Restore tabs on startup".

---

## <a name="end"></a>Conclusion

TablePlus strikes an excellent balance between simplicity and power, making it ideal for developers who work with multiple databases and value a clean, native experience. While it's not free, the one-time payment model and lifetime updates make it a worthwhile investment for database professionals.

**Best for:** Full-stack developers, DevOps engineers, and teams working with multiple database systems  
**Not ideal for:** Users needing only basic database access or those requiring advanced enterprise features like team collaboration and audit logs

**Get Started:** Download the free trial at [tableplus.com](https://tableplus.com) and experience the difference a well-designed database tool can make.
