From a4546ff4d2aad3a86e0836d2819edcc81ac7e536 Mon Sep 17 00:00:00 2001 From: Ambily <10282550+ambilykk@users.noreply.github.com> Date: Wed, 9 Jul 2025 07:45:00 +0530 Subject: [PATCH] Add SQL development guidelines and best practices to instructions (#49) * Add SQL development guidelines and best practices to instructions * Update instructions/sql-sp-generation.instructions.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Aaron Powell Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- README.md | 1 + .../sql-sp-generation.instructions.md | 74 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 instructions/sql-sp-generation.instructions.md diff --git a/README.md b/README.md index 286a903..58213fc 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ Team and project-specific instructions to enhance GitHub Copilot's behavior for | [Ruby on Rails](instructions/ruby-on-rails.instructions.md) | Ruby on Rails coding conventions and guidelines | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fruby-on-rails.instructions.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fruby-on-rails.instructions.md) | | [Secure Coding and OWASP Guidelines](instructions/security-and-owasp.instructions.md) | Comprehensive secure coding instructions for all languages and frameworks, based on OWASP Top 10 and industry best practices. | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fsecurity-and-owasp.instructions.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fsecurity-and-owasp.instructions.md) | | [Spring Boot Development](instructions/springboot.instructions.md) | Guidelines for building Spring Boot base applications | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fspringboot.instructions.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fspringboot.instructions.md) | +| [SQL Development](instructions/sql-sp-generation.instructions.md) | Guidelines for generating SQL statements and stored procedures | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fsql-sp-generation.instructions.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fsql-sp-generation.instructions.md) | | [Taming Copilot](instructions/taming-copilot.instructions.md) | Prevent Copilot from wreaking havoc across your codebase, keeping it under control. | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Ftaming-copilot.instructions.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Ftaming-copilot.instructions.md) | | [TanStack Start with Shadcn/ui Development Guide](instructions/tanstack-start-shadcn-tailwind.md) | Guidelines for building TanStack Start applications | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Ftanstack-start-shadcn-tailwind.md) [![Install in VS Code](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Ftanstack-start-shadcn-tailwind.md) | diff --git a/instructions/sql-sp-generation.instructions.md b/instructions/sql-sp-generation.instructions.md new file mode 100644 index 0000000..086c599 --- /dev/null +++ b/instructions/sql-sp-generation.instructions.md @@ -0,0 +1,74 @@ +--- +description: 'Guidelines for generating SQL statements and stored procedures' +applyTo: '**/*.sql' +--- + +# SQL Development + +## Database schema generation +- all table names should be in singular form +- all column names should be in singular form +- all tables should have a primary key column named `id` +- all tables should have a column named `created_at` to store the creation timestamp +- all tables should have a column named `updated_at` to store the last update timestamp + +## Database schema design +- all tables should have a primary key constraint +- all foreign key constraints should have a name +- all foreign key constraints should be defined inline +- all foreign key constraints should have `ON DELETE CASCADE` option +- all foreign key constraints should have `ON UPDATE CASCADE` option +- all foreign key constraints should reference the primary key of the parent table + +## SQL Coding Style +- use uppercase for SQL keywords (SELECT, FROM, WHERE) +- use consistent indentation for nested queries and conditions +- include comments to explain complex logic +- break long queries into multiple lines for readability +- organize clauses consistently (SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY) + +## SQL Query Structure +- use explicit column names in SELECT statements instead of SELECT * +- qualify column names with table name or alias when using multiple tables +- limit the use of subqueries when joins can be used instead +- include LIMIT/TOP clauses to restrict result sets +- use appropriate indexing for frequently queried columns +- avoid using functions on indexed columns in WHERE clauses + +## Stored Procedure Naming Conventions +- prefix stored procedure names with 'sp_' +- use PascalCase for stored procedure names +- use descriptive names that indicate purpose (e.g., sp_GetCustomerOrders) +- include plural noun when returning multiple records (e.g., sp_GetProducts) +- include singular noun when returning single record (e.g., sp_GetProduct) + +## Parameter Handling +- prefix parameters with '@' +- use camelCase for parameter names +- provide default values for optional parameters +- validate parameter values before use +- document parameters with comments +- arrange parameters consistently (required first, optional later) + + +## Stored Procedure Structure +- include header comment block with description, parameters, and return values +- return standardized error codes/messages +- return result sets with consistent column order +- use OUTPUT parameters for returning status information +- prefix temporary tables with 'tmp_' + + +## SQL Security Best Practices +- parameterize all queries to prevent SQL injection +- use prepared statements when executing dynamic SQL +- avoid embedding credentials in SQL scripts +- implement proper error handling without exposing system details +- avoid using dynamic SQL within stored procedures + +## Transaction Management +- explicitly begin and commit transactions +- use appropriate isolation levels based on requirements +- avoid long-running transactions that lock tables +- use batch processing for large data operations +- include SET NOCOUNT ON for stored procedures that modify data