重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
PL/SQL是 非标准的SQL语句
成都网站制作、成都做网站介绍好的网站是理念、设计和技术的结合。成都创新互联公司拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。
Oracle同样也支持标准的SQL语句写法,
写SQL的时候,注意尽量不要 使用Oracle特有的 函数,关键字 如:start with ,connect by,|| ,(+)等
以前做过,用专业的话叫做数据清洗。这样的数据往往是不同人员/在不同时间录入的。
我的思路是这样:
第一步、去掉非关键字,保留关键字。
拿“中国工商银行xxx支行”来说录入的名称可能存在很多情况比如“工商银行xxx支行”/“工行xxx支行”等,
针对这些情况我们要排除非关键字对数据的干扰,以”中国“开始的去掉”中国“二字,以”支行“结尾的去掉”支行“二字。
第二步、同义词转换。比如”工商银行“=”工行“,”农业银行“=”农行“等。
第三步、数据标准化。将不标准的名称更改成标准的名称。
在清洗过程中,可以一边做一边,使用group by语句统计名称的个数,观察数据。
这个是一个体力活,其中还可能存在错别字等情况,反正很烦。
设计规范
规范约定
1. 遵守数据的设计规范3NF 规定
· 表内的每一个值都只能被表达一次。
· 表内的每一行都应该被唯一的标识(有唯一键)。
· 表内不应该存储依赖于其他键的非键信息。
2. 实体表都必须包含四个字段:编号(ID)、代码(Code)、创建人(Created By)、创建时间(Creation Time)、修改人(Modified By)、修改时间(Modification Time)、删除标志(Delete Status)。其含义如下:
ü 编号是系统内的唯一标识
ü 代码是客户为这个实体的编码,这个字段看需要确定是否保留
ü 创建人是是指数据库记录创建人
ü 创建时间是指数据库记录创建时间,默认为SYSDATE
ü 修改人是是指数据库记录修改人
ü 修改时间是指数据库记录修改时间,默认为SYSDATE
ü 删除标志是本条记录是否已删除的标志(0:没有删除;1:已经删除),数据中的数据不做真正删除,只设置这个标志
这五个字段的命名规则如下
ü 实体名+字段名称,如user_id、user_code、created_by、creation_time、modified_by 、modification_time 、delete_status。
ü 这五个字段的类型和长度规则如下
n 编号 INTEGER
n 代码 VARCHAR2(30)
n 创建人 INTEGER
n 创建时间DATE
n 修改人 INTEGER
n 修改时间DATE
n 删除标志 CHAR(1)
2字段规范
一行记录必须表内唯一,表必须有主键。
枚举类型使用 NUMBER,且需要说明枚举类型的各个不同取值的含义
ID结尾的字段为仅由数字组成,Code结尾的字段为仅由字母或数字组成
用CHAR(1)表示布尔值的取大写:“Y”,“N”。
应尽量使用VARCHAR2代替CHAR类型;
VARCHAR(2)最多4000字符;
DATE精确到秒,而非天;
使用CLOB代替LONG,BLOB代替LONG RAW;
使用NUMBER数据类型时请给定长度,例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位;
使用规范
1综合
如果开发过程中需要建立索引,需要提交书面的更改请求,说明所需索引的定义(名称、字段列表、顺序、索引类型)以及建立的理由。数据库管理员统一维护索引并将提交的请求更改。
数据库各表的初始数据(包含各代码表、配置表)需要提交给数据库管理员。
不得使用触发器。
涉及到数据库多表数据的更改(Insert/Delete/Update)必须使用数据库事务进行控制,并且必须有完整事务开始和提交/回滚机制。不能使用范围事务
尽量避免Union操作的使用,需要使用时,请向数据库管理员咨询使用Union操作的影响。
SQL语句和存储过程,尽量使用PL/SQL Develper的代码美化器美化。
属于ORACLE的关键字大小,表名、列名等小写。
2查询
在表查询中,一律不要使用* 作为查询的字段列表,需要哪些字段必须显式写明
在表查询中,必须有Where条件,除非此表为非增长表
在表查询中,一次最多返回的记录条数不要超过1000条或记录内容不要大于1MB的数据。
在表查询中,作Order By排序时,优先使用主键列,索引列
多表关联查询时,优先使用Where条件,再作表关联,并且需要保证被关联的字段需要有索引。
避免在WHERE字句中对列施以函数:
错误:
SELECT service_id,service_name
FROM service_promotion
WHERE TO_CHAR(gmt_modified,’yyyy-mm-dd’) = ‘20001-09-01’;
正确:
SELECT service_id,service_name
FROM service_promotion
WHERE gmt_modified
= TO_DATE(‘2001-9-01’,’yyyy-mm-dd’)
AND gmt_modified
TO_DATE(‘2001-9-02’,’yyyy-mm-dd’);
避免使用数据库的类型自动转换功能:
错误:
SELECT category_id, category_name FROM category
WHERE category_id = ‘123’; -- id’s type is number
正确:
SELECT category_id, category_name FROM category
WHERE category_id = 123; -- id’s type is number
4删除
删除记录时,必须有Where唯一条件
当有主从表时,要先删除从表记录,在删除主表记录
5修改
修改记录时,必须有Where唯一条件
以下内容为固定写法,可以修改数据库编码格式。
第一步:通过系统管理员权限登录数据库。
sql conn / as sysdba;
第二步:关闭数据库和实例连接。
sql shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
第三步:启动数据库实例连接。
sql startup mount;
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
第四步:限制其它用户连接数据库使用资源。
sql alter system enable restricted session;
system altered.
第五步:设置作业进行为0个。
sql alter system set job_queue_processes=0;
system altered.
第六步:设置启动时间管理器的数量为0
sql alter system set aq_tm_processes=0;
system altered.
第七步:打开数据库连接
sql alter database open;
database altered.
第八步:修改需要的编码格式
sql alter database character set internal_use GBK;
第九步:关闭连接。
sql shutdown immediate;
第十步:启动oracle进程。
sql startup;
备注:常用的有:UTF-8,GBK 。
UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。