# Database Cheatsheet ## Quick Reference | Key | Action | |-----|--------| | `Du` | Toggle DBUI | | `Da` | Add connection | | `Df` | Find DB buffer | ## Opening DBUI ``` Du Toggle database UI Da Add new connection ``` ## Connection Strings ### PostgreSQL ``` postgresql://user:password@localhost:5432/dbname postgres://user:password@localhost/dbname # With SSL postgresql://user:password@host:5432/dbname?sslmode=require ``` ### SQLite ``` sqlite:path/to/database.db sqlite:./local.db sqlite::memory: ``` ## DBUI Navigation ``` Toggle node / Execute query o Open node R Refresh d Delete r Rename S Sort by H Toggle help q Close ``` ## Writing Queries 1. `Du` - Open DBUI 2. Navigate to database 3. Press `` on "New Query" 4. Write SQL 5. `Rs` or `` to execute ## Query Execution In a `.sql` buffer connected to DBUI: ``` Execute query under cursor Rs Execute query (visual: selected) ``` ## Table Helpers Right-click or press `` on a table for quick actions: ### PostgreSQL - Count: `SELECT COUNT(*) FROM table` - First10: `SELECT * FROM table LIMIT 10` - Schema: `\d+ table` ### SQLite - Count: `SELECT COUNT(*) FROM table` - First10: `SELECT * FROM table LIMIT 10` - Schema: `.schema table` ## Buffer Management ``` Df Find DB buffer Dr Rename DB buffer Dl Last query info ``` ## Common Workflows ### Connect to Database 1. `Da` - Add connection 2. Enter connection string 3. Give it a name 4. Connection saved for future sessions ### Explore Schema 1. `Du` - Open DBUI 2. Expand database node 3. Expand "Tables" node 4. `` on table for helpers ### Run Ad-hoc Query 1. `Du` - Open DBUI 2. Navigate to database 3. New Query 4. Write SQL: ```sql SELECT * FROM users WHERE active = true LIMIT 10; ``` 5. Execute with `` ### Export Results After running query: 1. Results appear in split 2. `:w filename.csv` to save ## Tips ### Multiple Databases - Add multiple connections - Switch by selecting in DBUI - Each buffer tracks its connection ### Environment Variables Connection strings can use env vars: ``` postgresql://$DB_USER:$DB_PASS@$DB_HOST/$DB_NAME ``` ### SSH Tunnels For remote databases, set up SSH tunnel first: ```bash ssh -L 5432:localhost:5432 user@server ``` Then connect to `localhost:5432`. ## Troubleshooting ### Connection Failed - Check credentials - Verify database is running - Check firewall/network ### Missing Adapter Run `:checkhealth` and verify: - `vim-dadbod` installed - Database client available (psql, sqlite3) ### Slow Queries - Add `LIMIT` to large tables - Use `EXPLAIN` to analyze