Query Command¶
Run SQL queries against your database.
Options¶
--tenant TENANT
- Target specific tenant (default: main)--format FORMAT
- Output astable
,json
, orcsv
--limit N
- Limit result rows
Examples¶
Basic Queries¶
# Select data
cinch query "SELECT * FROM users WHERE active = true"
# Note: query command is for SELECT statements only
# For INSERT, UPDATE, DELETE operations, use dedicated commands:
# cinch insert users --data '{"name": "John", "email": "john@company.com"}'
# cinch update users user-123 --data '{"active": false}'
# cinch delete users user-123
With Parameters¶
Always use parameterized queries in your application code:
From CLI, escape quotes:
Output Formats¶
# Table (default) - pretty formatted
cinch query "SELECT name, email FROM users"
# JSON - for scripts
cinch query "SELECT * FROM users" --format json
# CSV - for exports
cinch query "SELECT * FROM users" --format csv
Multi-Tenant¶
# Query specific tenant
cinch query "SELECT * FROM users" --tenant customer_a
# Insert for specific tenant
cinch insert products --tenant customer_b --data '{"name": "Widget"}'
Advanced Queries¶
# Aggregations
cinch query "SELECT category, COUNT(*), AVG(price) FROM products GROUP BY category"
# Joins
cinch query "SELECT u.name, COUNT(o.id) FROM users u LEFT JOIN orders o ON u.id = o.user_id GROUP BY u.id"
# Pagination
cinch query "SELECT * FROM products ORDER BY created_at DESC LIMIT 20 OFFSET 40"
Tips¶
- Use
--limit
for large tables to avoid overwhelming output - Use JSON format when piping to other tools:
cinch query "..." --format json | jq
- For safety, test queries on development branches first
- SQLite supports all standard functions
Common Errors¶
no such table
- Table doesn't exist in current branchno such column
- Wrong column nameUNIQUE constraint failed
- Trying to insert duplicate valuessyntax error
- Check your SQL syntax
Next Steps¶
- Table Commands - Create tables to query
- Python SDK Queries - Query from code