Loading...
Loading...
MySQL relational database. Covers queries, indexes, and optimization. Use when working with MySQL databases. USE WHEN: user mentions "mysql", "mariadb", asks about "AUTO_INCREMENT", "ON DUPLICATE KEY UPDATE", "GROUP_CONCAT", "mysql specific syntax" DO NOT USE FOR: PostgreSQL - use `postgresql` instead, MongoDB - use `mongodb` instead, Oracle - use `oracle` instead, SQL Server - use `sqlserver` instead
npx skill4agent add claude-dev-suite/claude-dev-suite mysqlDeep Knowledge: Usewith technology:mcp__documentation__fetch_docsfor comprehensive documentation.mysql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE,
INDEX idx_email (email),
INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- Pagination
SELECT * FROM users
WHERE is_active = TRUE
ORDER BY created_at DESC
LIMIT 20 OFFSET 0;
-- Join
SELECT u.*, COUNT(p.id) as post_count
FROM users u
LEFT JOIN posts p ON p.user_id = u.id
GROUP BY u.id;
-- Upsert
INSERT INTO users (email, name)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE name = VALUES(name);| Feature | MySQL | PostgreSQL |
|---|---|---|
| Auto ID | | |
| Boolean | | |
| Upsert | | |
| JSON | | |
postgresqlmongodbredisoraclesqlserver| Anti-Pattern | Issue | Solution |
|---|---|---|
| Transfers unnecessary data, performance impact | Specify needed columns explicitly |
Missing | Modifies all rows unintentionally | Always include WHERE clause |
| Missing indexes on JOIN/WHERE columns | Full table scans, slow queries | Add indexes on frequently queried columns |
| MyISAM for transactional data | No transaction support, table-level locking | Use InnoDB engine |
| Cannot use index, full scan | Use |
Missing | Can crash application | Always paginate results |
Using | Requires ALTER TABLE to add values | Use lookup table instead |
| Missing foreign keys | Data integrity issues | Define proper FK constraints |
| N+1 query problem | One query per row in loop | Use JOINs or batch queries |
| Not using prepared statements | SQL injection risk, slower performance | Use parameterized queries |
| Problem | Diagnostic | Fix |
|---|---|---|
| Slow queries | | Add indexes, rewrite query, analyze execution plan |
| High CPU usage | | Optimize top queries, add indexes |
| Connection limit reached | | Increase max_connections, use connection pooling |
| Lock wait timeout | Check | Reduce transaction time, optimize queries |
| Disk space full | | Archive old data, optimize tables |
| Replication lag | | Increase resources, tune binlog settings |
| Table corruption | | Run |
| Deadlocks | Check error log and | Reduce transaction scope, access tables in same order |