数据库技术规范
XXXXXX公司
二零一六年十月
文档控制页
微机原理及应用
编号 | 章节 | 修订说明 | 修订日期 | 修订前版本号 | 修订后版本号 | 修改人 | 审批人 |
目录
数据库技术规范 4
1 建表规范 4
2 使用范围 4
3 概述 4
4 书写 4
5 注释 5
6 Oracle、MySQL、SQL Sever差异 5
7 优化 7
eclipse安装springboot插件8 索引创建原则 7
9 函数、表达式使用 8
IN/OR子句使用 8
!=或<>操作符子句使用 8
不要对索引字段进行运算 8
不要对索引字段进行格式转换 8
不要对索引字段使用函数 9
不要对索引字段进行多字段连接 9
Like的使用 9
10 设计 10
数据库逻辑设计的规范化 10
合理的冗余 10
主键的设计 10
外键的设计 10
字段的设计 11
索引的设计 11
数据库技术规范
1 建表规范
表名:表的命名使用【模块名_子模块】的方式命名,全部大写。
字段名:字段名包含多个单词的,使用下划线分开,全部大写。
日期一律使用varchar。
外键一律不设,交由程序处理控制。
2 使用范围
所有需要与数据库交互的应用系统。
3 概述
大部分业务系统需要与数据库进行交互,与数据库交互的主要方式就是SQL语句,编写规范的SQL语句不但利于阅读,而且被数据库重复使用的几率也较大,执行效率相对较高,编写的好的SQL与编写的差的SQL在执行性能上可能会差几倍甚至几千几万倍,因此养成好的SQL编写规范对于提高项目质量及提高开发人员自身素质有着潜在的极大的影响。
4 书写
SQL书写遵守如下规范:
◆ 在同一个项目中,为了最大限度实现SQL的共享,要求书写sql语句时大小写要一致,为了阅读方便和统一起见,所有SQL语句全部小写(如SQL谓词,字段名,表名等),常量除外,常量可以按需要书写。
举例:下面两个相同的语句除常量外都要统一起来。
1)select name from emp;
2)select ‘NAME’fromemp where emp_no=’QD001’
◆ SQL语句尽可能放在一行,若SQL太长放在一行中影响阅读时可分多行,但要保持缩进一致,缩进可用TAB或者空格,但TAB数和空格数最好一致。
◆ SQL语句中,各谓词之间以空格分割的,尽量保持空格数量一致,即若用一个空格分割,则全部都用一个空格分割,便于数据库能够共享。
◆ 能使用绑定变量的,尽量使用绑定变量,尤其是在前台程序中.
◆ 对下面列出的情况,慎重使用绑定变量:程序设计基础课后题答案
1) 列值倾斜严重,如:某一状态列大部分值是‘1’,只有极少数值为’2’,这种情况不宜用绑定变量,而应该用常量,便于数据库使用柱状图统计信息。
2) 日期时间列。
总之:书写SQL的目标是若sql的用途是一样的,则sql应该完全一致,包括空格,大小写。
5 注释
1) 对较为复杂的SQL语句加上注释,说明算法、功能。注释风格:注释单独成行、放在语句前面。
2) 应对不易理解的分支条件表达式加注释。
3) 对重要的计算应说明其功能。
4) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明。
5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选)。
6) 可采用单行/多行注释。(-- 或 /* */ 方式)。
6 Oracle、MySQL、SQL Sever差异
1.类型转换
--Oracle
Selectto_number('123') from dual; --123;
Selecto_char(33) from dual; --33;
Select to_date('2004-11-27','yyyy/mm/dd') from dual; --2004-11-27
--Mysql
Select cast('123' as signed integer); --123
Select cast(33 as char(2)); --33;
Selectto_days('2000-01-01'); --730485
--SqlServer
Select cast('123' as decimal(30,2)); --123.00
select cast(33 as char(2)); --33;
select convert(varchar(12) , getdate(), 120)
2.四舍五入函数区别
--Oracle select round(12.86*10)/10 from dual; --12.9
--Mysql select format(12.89,1); --12.9
--SqlServer select round(12.89,1); --12.9
3.日期时间函数
tablet talk--Oracle select sysdate from dual; --日期时间
--Mysql select sysdate(); --日期时间 select current_date(); --日期 getelementbyid(id)
--SqlServer select getdate(); mysql语句转oracle --日期时间
select datediff(day,'2010-01-01',cast(getdate() as varchar(10))); --日期相差天数
4.Decode函数
--Oracle select decode(sign(12),1,1,0,0,-1) from dual;--1
--Mysql/SqlServer
select case when sign(12)=1 then 1 when sign(12)=0 then 0 else -1 end;--1
5.判空函数
--Oracle select nvl(1,0) from dual; --1
--Mysql select ifnull(1,0); --1
--SqlServer select isnull(1,0); --1
6.字符串连接函数
--Oracle select '1'||'2' from dual; --12
select concat('1','2'); --12
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论