Diretório do artigo
Este artigo apresenta os princípios básicos e detalhados padrões de codificação de codificação SQL.
coding Guidelines
código SQL codificação princípio da seguinte forma:
- Código é totalmente funcional e robusto.
- Limpar linha de código, puro, pode ter certeza ornamental.
- O código escrito para ter plenamente em conta o princípio da velocidade de execução ideal.
- Linhas de código como um todo, estruturado, forte estruturado.
- Código deve ter as observações necessárias para melhorar a legibilidade do código.
- código de código compatível com não-obrigatória do desenvolvedor restrição de conduta escrito, desvio compreensível permitido em sem violar os requisitos gerais para a aplicação prática desta especificação também será ao mesmo tempo desempenhar um papel orientador no trabalho diário do desenvolvimento de código melhoria e adições contínua.
- código SQL aplicam-se a todas as palavras-chave, palavras reservadas são minúsculas, como selecionar, a partir de onde, e, ou, união, insert, delete, o grupo, tendo, contar e assim por diante.
- código SQL, além de palavras-chave aplicadas para manter a palavra de código de fora, também usam minúsculas, como nomes de campo, aliases de tabela.
- Recuar uma quatro espaços, todos travessão são todos os múltiplos inteiros de um valor de retracção, nível alinhadas de acordo com o código. Proibir o uso de operação de seleção *, todas as operações devem especificar explicitamente o nome da coluna.
- Parêntese requisitos na mesma posição da coluna correspondente.
SQL padrões de codificação
Codificação código SQL padrão é a seguinte:
- Código Chefe
Código Chefe adicionar um assunto, descrição funcional, autor e data, e reserve modificar o registro ea barra de título, de modo que modificações subseqüentes aos estudantes para adicionar registros modificar. Note que cada linha não exceda 80 caracteres. modelo abaixo
-- MaxCompute(ODPS) SQL
--**************************************************************************
-- ** 所属主题: 交易
-- ** 功能描述: 交易退款分析
-- ** 创建者 : 有码
-- ** 创建日期: 20170616
-- ** 修改日志:
-- ** 修改日期 修改人 修改内容
-- yyyymmdd name comment
-- 20170831 无码 增加对biz_type=1234交易的判断
--**************************************************************************
arranjo campo requer
- Campo layout para cada linha um seleto modo de campo declaração selecionado.
- Depois de selecionar uma palavra para trás travessão diretamente com a primeira seleção de campos, ou seja, a partir do campo desde que os dois primeiro travessão.
- Outros campos de dois líder travessão, em seguida, coloque uma vírgula após o nome do campo.
- Delimitado por vírgulas entre os dois campos é definido imediatamente em frente do segundo campo.
- como declarações devem ser tratados com os campos apropriados na mesma. como recomendado para uma pluralidade de campos alinhadas na mesma coluna.
- arranjo cláusula INSERIR requer
cláusula de inserção na mesma linha, não enrole. - arranjo cláusula SELECT exige
de instrução select é usado, onde, pelo grupo, tendo, a fim de, se juntar, união , etc. cláusula, necessidade de seguir os seguintes requisitos:
- Escrever uma nova linha.
- layout com a instrução select correspondente alinhado à esquerda.
- cláusula de código subseqüente ion Sentença dois travessões da gravação volume.
- Analisando o operador lógico e o onde cláusula, ou o arranjo em que o alinhamento à esquerda como.
- Após a preparação do comprimento de código sucessiva de mais do que duas cláusulas para recuar um espaço, tal como a ordem por, por grupo semelhantes.
- Operadoras de todo os requisitos de espaçamento operadores aritméticos, operadores lógicos querer manter em torno de um espaço, a menos que o limite de comprimento de 80 caracteres por linha do que, ou estão na mesma linha.
- instrução CASE preparado por
operar a instrução SELECT para valores de campo será usado para determinar o valor da exposição do caso, a declaração caso redação coreografia correta para fortalecer linhas de legibilidade do código também é uma parte fundamental.
Demonstrações do programa de remessas caso da seguinte forma:
- quando o idioma secundário na mesma linha recuar uma instrução case e começar a escrever depois do travessão.
- Cada linguagem infantil ao escrever uma linha, é claro, se a instrução é mais longo pode envolver coreografia.
- caso declaração deve conter sub-idioma mais, cláusula else ea cláusula quando alinhados.
- Elaboração de especificações aninhado consulta
subconsulta aninhados no desenvolvimento ETL sistema de data warehouse é frequentemente utilizado, arranjo de modo hierárquico de código é muito importante. Exemplos são como se segue:
- Tabela convenção definições de alias
- Todas as tabelas além de um alias. Porque uma vez que a mesa de operação em uma instrução SELECT define um alias em todo o declaração sobre esta tabela deve ser usada para fazer referência o alias em vez. Tendo em conta a conveniência de escrever código, concordou alias como simples, concisa, evitando o uso de palavras-chave.
- Simples nome de alias tabela de caracteres, com o nome recomendado por a, b, c, da ordem de D .......
- Multi-nível sub consultas aninhados para reflectir antes hierarquia aliás, instruções SQL, nome alternativo, nomeação hierárquica, a partir do primeiro nível para o quarto nível, respectivamente, P, S, L, D representa, destina-se à parte, Segmento unidade, Detail. Ele também pode ser a, b, c, d para representar um primeiro nível para o quarto nível, o mesmo nível de uma pluralidade de cláusulas, após a adição de 1,2,3,4 ...... distinguir as letras. Acrescentar um comentário a um alias de tabela quando necessário circunstâncias.
- comentário SQL
- Cada instrução SQL deve adicionar notas explicativas.
- Nota linha separada para cada instrução SQL, a declaração na frente.
- Notas de campo imediatamente após o campo.
- Para lidar com difícil entender ramo de expressões condicionais adicionar comentários.
- Para cálculos importantes devem indicar a sua função.
- Funções para muito tempo, ele deve ser implementado segmentado por instrução de função a ser descrição geral.
- Quando a constante e comentário variável, o comentário deve ser significado (must), intervalo legal de valores (opcional) salvo valores.
--**************************************************************************
-- step1 清理当天的数据分区
--**************************************************************************
Código de exemplo
insert overwrite table dw_ckd_ocr_data
select coalesce(a.record_id,b.record_id) as record_id
,coalesce(a.type,b.type) as type
,coalesce(a.name,b.name) as name
,coalesce(a.createtime,b.createtime) as createtime
,coalesce(a.updatetime,b.updatetime) as updatetime
,a.`入院日期`
,a.`出院日期`
,a.`出院记录/出院小结`
,b.`氯吡格雷用药信息`
from (
select record_id
,type
,name
,to_char(updatetime, 'yyyy-mm-dd HH:MM') as updatetime
,to_char(createtime, 'yyyy-mm-dd HH:MM') as createtime
,WM_CONCAT(',',get_json_object(ocr_data,'$.data[0].入院日期')) as `入院日期`
,WM_CONCAT(',',get_json_object(ocr_data,'$.data[0].出院日期')) as `出院日期`
,WM_CONCAT('',get_json_object(ocr_data,'$.data[0].出院记录/出院小结')) as `出院记录/出院小结`
from ods_ocr_imgs
where name = '上传出院小结'
and status=2
and uid in (
select trans_array(0,",",replace(replace(ocr_imgs,'[',''),']','')) as (ocr_imgs)
from ods_ocr_records
where project_id = '580f7eb5-7462-4755-80d9-70d25ac8be23'
and valid = true
and ocr_imgs != "[]"
)
group by record_id
,type,name
,status
,to_char(updatetime, 'yyyy-mm-dd HH:MM')
,to_char(createtime, 'yyyy-mm-dd HH:MM')
) a
full outer join (
select record_id
,type
,name
,to_char(updatetime, 'yyyy-mm-dd HH:MM') as updatetime
,to_char(createtime, 'yyyy-mm-dd HH:MM') as createtime
,get_json_object(ocr_data,'$.data[0].氯吡格雷用药信息') as `氯吡格雷用药信息`
from ods_ocr_imgs
where name = '上传处方'
and status=2
and uid in (
select trans_array(0,",",replace(replace(ocr_imgs,'[',''),']','')) as (ocr_imgs)
from ods_ocr_records
where project_id = '580f7eb5-7462-4755-80d9-70d25ac8be23'
and valid = true
and ocr_imgs != "[]"
)
) b
on a.record_id=b.record_id;