espanso/match/sql.yml
2026-05-19 00:33:39 +08:00

161 lines
3.4 KiB
YAML

# SQL Snippets for Espanso
matches:
# Basic SELECT statement
- trigger: "}sqls"
replace: |
SELECT
[columns]
FROM
[table]
[WHERE conditions]
[ORDER BY column]
[LIMIT n];
# SELECT with common clauses
- trigger: "}sqlsel"
replace: |
SELECT
$1$ -- columns
FROM
$2$ -- table
$3$ -- optional: WHERE, GROUP BY, etc.
$4$; -- optional: semicolon or other ending
# INSERT statement
- trigger: "}sqli"
replace: |
INSERT INTO
[table] ([columns])
VALUES
([values]);
# UPDATE statement
- trigger: "}sqlu"
replace: |
UPDATE
[table]
SET
[column] = [value]
[WHERE conditions];
# DELETE statement
- trigger: "}sqld"
replace: |
DELETE FROM
[table]
[WHERE conditions];
# CREATE TABLE
- trigger: "}sqlct"
replace: |
CREATE TABLE [table] (
[column1] [type] [constraints],
[column2] [type] [constraints],
...
);
# Common WHERE clauses
- trigger: "}sqlw"
replace: |
WHERE
[conditions]
# JOIN patterns
- trigger: "}sqlj"
replace: |
[table1]
[JOIN_TYPE] JOIN [table2]
ON [table1].[key] = [table2].[key]
# Aggregate functions
- trigger: "}sqlagg"
replace: |
SELECT
[GROUP_BY_COLUMN],
COUNT(*) as count,
SUM([numeric_column]) as total,
AVG([numeric_column]) as average,
MAX([column]) as max_value,
MIN([column]) as min_value
FROM
[table]
GROUP BY
[GROUP_BY_COLUMN]
# Subquery pattern
- trigger: "}sqlsub"
replace: |
SELECT
[columns]
FROM
[table1]
WHERE [column] IN (
SELECT [column]
FROM [table2]
WHERE [conditions]
)
# Common SQL comments
- trigger: "}sqlc"
replace: "-- $|$"
- trigger: "}sqlcb"
replace: "/* $|$ */"
# Transaction wrapper
- trigger: "}sqltr"
replace: |
BEGIN TRANSACTION;
$|$
COMMIT;
-- ROLLBACK; -- uncomment to rollback instead
# CTE (Common Table Expression)
- trigger: "}sqlcte"
replace: |
WITH [cte_name] AS (
SELECT
[columns]
FROM
[table]
WHERE
[conditions]
)
SELECT
[columns]
FROM
[cte_name];
# CASE statement
- trigger: "}sqlcase"
replace: |
CASE
WHEN [condition1] THEN [result1]
WHEN [condition2] THEN [result2]
ELSE [default_result]
END as [alias]
# Window functions pattern
- trigger: "}sqlwin"
replace: |
SELECT
[columns],
[function]() OVER (
PARTITION BY [partition_column]
ORDER BY [order_column]
[ROWS/RANGE frame]
) as [alias]
FROM
[table]
# Placeholders guide (use these in your templates):
# [columns] - list of columns (comma-separated or *)
# [table] - table name(s)
# [conditions] - WHERE clause conditions
# [JOIN_TYPE] - INNER, LEFT, RIGHT, FULL, CROSS
# [numeric_column] - column with numeric values for aggregates
# [GROUP_BY_COLUMN] - column to group by
# $1$, $2$ etc. - tab stops (use Tab to navigate)
# $|$ - final cursor position