¿Existen pautas de estilo de codificación publicadas para SQL?

A menudo termino con declaraciones SQL muy complejas y me preguntaba si había una guía de estilo que dictara una forma común de establecer varios aspectos de una consulta.

Busco algo descriptivo en la línea de PEP8 de Python or Pautas de Zend Frameworks y no codificar con el ejemplo.

La mayoría de mis consultas están escritas para MySQL.

Entonces, ¿conoces una guía de estilo universal? Quizás haya escrito uno usted mismo. Comparta sus pautas.

preguntado el 10 de mayo de 11 a las 14:05

@JNK He leído la mayor parte de esa pregunta antes de hacer la mía. En realidad, no es lo que estoy buscando. Busco una guía de estilo publicada adecuada que el resto del equipo de desarrollo y yo podamos adoptar. Por eso mencioné algo parecido a PEP8. -

@Treffynnon - La última sección es lo que me hizo enlazar a esa pregunta - Perhaps you have written one yourself. Please share your guidelines. -

@JNK Bastante justo. Sin embargo, esa pregunta tiene una lista de ejemplos adjunta y no pautas realmente descriptivas como las que he vinculado en mi pregunta. -

@Treffynnon - Bueno, no puedo eliminar mi voto para cerrar, pero si otros no están de acuerdo conmigo, entonces no será un problema :) -

@JNK, el posible enlace de dupe también es útil para otros que también puedan encontrar esta pregunta :-) ¡Probablemente debería haber incluido un enlace en mi pregunta! -

6 Respuestas

Desde que hice esta pregunta, he escrito una guía de estilo SQL pública que es compatible con el libro Estilo de programación SQL de Joe Celko bajo la licencia Creative Commons Attribution-ShareAlike.

Está disponible en www.sqlstyle.guide o como Markdown directamente desde el repositorio de GitHub.

Respondido 23 Jul 15, 11:07

Dos guías que conozco son Estilo de programación SQL de Joe Celko y el venerable Código completo.

También está el Estándar SQL-92. No contiene una sección de estilo, pero podría considerar que su estilo es implícitamente canónico.

contestado el 10 de mayo de 11 a las 19:05

Aquí hay algunas pautas de programación de SQL y las mejores prácticas que recopilamos:

  • No utilice SELECT * en sus consultas.
  • Utilice siempre alias de tabla cuando su declaración SQL involucre más de una fuente.
  • Utilice las cláusulas de unión estándar ANSI más legibles en lugar de las combinaciones de estilo antiguo.
  • No utilice números de columna en la cláusula ORDER BY.
  • Utilice siempre una lista de columnas en sus declaraciones INSERT.
  • Nunca use comillas dobles en su código T-SQL.
  • No coloque el prefijo "sp_" en los nombres de sus procedimientos almacenados.
  • Utilice siempre un formateador SQL para formatear su SQL como Formateador SQL instantáneo (gratis y en línea)

Puede consultar la explicación detallada de esas mejores prácticas en esta entrada del blog.

Respondido 27 Feb 12, 14:02

Esto no responde a la pregunta que se hizo. - Escotilla

MySQL tiene una breve descripción de sus reglas más o menos estrictas:

https://dev.mysql.com/doc/internals/en/coding-style.html

Estilo de codificación más común para MySQL por Simon Holywell:

http://www.sqlstyle.guide/

Vea también esta pregunta: ¿Existe una convención de nomenclatura para MySQL?

contestado el 23 de mayo de 17 a las 13:05

Kickstarter tiene una guía de estilo aquí. Tengo una versión modificada de eso para las personas que prefieren SQL en minúsculas y El "río" de Celko.

Mi guia de estilo esta aqui. Aquí hay una muestra:

-- basic select example
select p.Name as ProductName
     , p.ProductNumber
     , pm.Name as ProductModelName
     , p.Color
     , p.ListPrice
  from Production.Product as p
  join Production.ProductModel as pm
    on p.ProductModelID = pm.ProductModelID
 where p.Color in ('Blue', 'Red')
   and p.ListPrice < 800.00
   and pm.Name like '%frame%'
 order by p.Name

-- basic insert example
insert into Sales.Currency (
    CurrencyCode
    ,Name
    ,ModifiedDate
)
values (
    'XBT'
    ,'Bitcoin'
    ,getutcdate()
)

-- basic update example
update p
   set p.ListPrice = p.ListPrice * 1.05
     , p.ModifiedDate = getutcdate()
  from Production.Product as p
 where p.SellEndDate is null
   and p.SellStartDate is not null

-- basic delete example
delete cc
  from Sales.CreditCard as cc
 where cc.ExpYear < '2003'
   and cc.ModifiedDate < dateadd(year, -1, getutcdate())

Respondido 13 Feb 19, 20:02

Para alguien a quien le gusta usar tabulaciones para sangrar, no creo que pueda lograr la columna de espacios en blanco entre las palabras clave y los nombres de las columnas. Sin embargo, aprecio el uso de las comas iniciales, me encantan las comas iniciales. - ADJenks

¿Ha pensado en hacer que su equipo use una herramienta con capacidades de formato integradas? Toad for MySql tiene esto. No va a ser una guía como tal, pero al menos traerá consistencia.

contestado el 10 de mayo de 11 a las 18:05

Esto podría ser una posibilidad, pero tenemos gente en MacOS, Linux y Windows, por lo que tendría que ser multiplataforma. Algunos de nosotros también necesitamos las habilidades de edición / atajos que proporciona Vim. Pero definitivamente una alternativa ya que muchos de nosotros usamos actualmente SQLYog (bajo WINE en algunos casos). - Treffynnon

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.