梁敬彬梁敬弘兄弟出品
1. SQL编写规范
1.1 书写规范
- 关键字使用大写:SELECT, FROM, WHERE, AND, OR等
- 表和字段使用有意义的别名:提高可读性
- 采用一致的缩进风格:使用空格保持格式一致
- 子句分行显示:每个主要子句另起新行
✓ 推荐写法:
SELECT e.employee_id,
e.first_name,
e.last_name
FROM employees e
WHERE e.salary > 5000
AND e.hire_date > SYSDATE - 365;
1.2 SQL中直接使用表名
- 避免直接引用其他用户下的表:使用同义词(synonym)代替
- 创建同义词时在设计文档中记录:保持项目文档完整性
✓ 推荐写法:
-- 创建同义词
CREATE SYNONYM my_employees FOR hr.employees;
-- 使用同义词
SELECT employee_id, first_name
FROM my_employees
WHERE department_id = 10;
1.3 SELECT *语句及INSERT语句中的字段名
- 避免使用SELECT *,尽量明确指定需要的字段列表
- INSERT语句必须指定字段列表:防止表结构变更导致错误
✓ 推荐写法:
SELECT col_1,col_2,col_3
FROM t_name;
INSERT INTO t_name
(
user_id,
login_name
)
VALUES
(
v_user_id,
v_login_name
);
1.4 INSERT…SELECT语句书写方法
- 字段一一对应:保持源表和目标表字段对应关系
- 每行保持固定字段数:提高可读性
- 使用一致的缩进:左括号与关键字对齐,内容缩进
✓ 推荐写法:
INSERT INTO employees_backup
(
employee_id, first_name, last_name, email,
phone_number, hire_date, job_id, salary
)
SELECT
employee_id, first_name, last_name, email,
phone_number, hire_date, job_id, salary
FROM employees
WHERE department_id = 80;
1.5 避免隐式数据类型转换及字段操作
- 确保条件两侧数据类型匹配:避免Oracle进行隐式转换
- 避免在索引字段上使用函数或运算:保持索引有效性
✓ 正确的数据类型匹配:
-- 表t_name中的col_1为VARCHAR2(10)类型
SELECT col_1, col_2
FROM t_name
WHERE col_1 = '1'; -- 使用字符串匹配VARCHAR2类型
✗ 不正确的数据类型匹配:
-- col_1为VARCHAR2类型,使用数字会导致隐式转换
SELECT col_1, col_2
FROM t_name
WHERE col_1 = 1; -- 错误:隐式将数字1转为字符串'1'
1.6 NULL的使用
- 使用IS NULL/IS NOT NULL:NULL不能用=或!=比较
- 考虑使用NVL函数:将NULL转换为有意义的默认值
✓ 推荐写法:
SELECT col_1, col_2, col_3
FROM t_name
WHERE col_1 IS NOT NULL;
-- 使用NVL处理NULL值
SELECT col_1, col_2, NVL(col_3, 0) as col_3_value
FROM t_name
WHERE NVL(col_3, 0) < 100;
✗ 不推荐写法:
-- 错误:NULL不能用等号比较
SELECT col_1, col_2, col_3
FROM t_name
WHERE col_3 = NULL; -- 永远返回空结果
1.7 LIKE子句
- 优先使用前缀匹配:'xxx%'格式可以利用索引
- 避免前导通配符:'%xxx’模式会导致索引失效,引发全表扫描
✓ 推荐写法(可使用索引):
-- 前缀匹配,可使用索引
SELECT employee_id, first_name
FROM employees
WHERE last_name LIKE 'King%';
✗ 不推荐写法(索引失效):
-- 后缀匹配,通常导致全表扫描
SELECT employee_id, first_name
FROM employees
WHERE last_name LIKE '%son';
总结
遵循本文提出的Oracle SQL编写规范,能够显著提高代码可读性、可维护性和执行效率。这些规范涵盖了SQL书写风格、表名引用、字段使用、数据类型处理、NULL值处理和LIKE子句使用等方面,是确保SQL代码质量的基础。
在实际开发中,团队应形成统一的SQL编码风格指南,并通过代码审查确保这些规范的执行。通过持续应用这些最佳实践,可以有效减少SQL编写不规范带来的性能问题和维护困难。
未完待续…
Oracle数据库开发规范篇「②」——SQL编写规范【下】(绑定变量、动态SQL、SQL嵌套、排序、HINT、并行)
系列回顾
“大白话人工智能” 系列
“数据库拍案惊奇” 系列
“世事洞明皆学问” 系列
三分钟讲述个人感悟——感恩,回馈