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 <me@aaron-powell.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
parent
b46a12821e
commit
a4546ff4d2
@ -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 | [](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) [](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. | [](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) [](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 | [](https://vscode.dev/redirect?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fspringboot.instructions.md) [](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 | [](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) [](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. | [](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) [](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 | [](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) [](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) |
|
||||
|
||||
|
||||
74
instructions/sql-sp-generation.instructions.md
Normal file
74
instructions/sql-sp-generation.instructions.md
Normal file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user