数据库DDL语句书写规范

1.SQL语句编写说明
编写SQL语句应遵循统一的规范,包括大小写、空格、换行、缩进等等,只有完全一样的SQL才能在数据库中共享,从而减少硬解析。

字段类型、长度:根据数据情况定义合适的字段数据类型及长度。
对于无法确认字段长度的情况,采用变长的数据类型,比如使用varchar2代替char。char类型为固定长度,对于长度不足的数据会用空格补齐,这种情况下会造成空间浪费。对于日期时间数据,使用date数据类型,避免使用number、varchar2等数据类型存储转换后的日期,因为数据库优化器在分析该字段时无法知道这是日期、时间,按数字、字符类型分析出的结果可能与实际情况有较大偏差,从而造成执行计划选择不正确,影响性能。避免不必要的数据类型变换,比如字符类型的字段也可以用来存储数字类型数据,但数据库要做数据类型转换,因而增加了数据库负担。

分区表:对于较大的表应考虑使用分区。

2.新增数据库对象2.1创建数据表

-- Create table

create table MUB2C.PUBSALE_INFO
(
  ID      NUMBER(18) not null,
  PUB_ID NUMBER(18),
  FFP_NO VARCHAR2(20),
  PRICE  NUMBER(10,2),
  PUB_DT DATE
) tablespace MUB2C_DAT;

注意点:

①创建表时,应在表名前加上schema,表名和字段长度都不能超过30个字符。②number类型默认情况下,精度为38位,取值范围1-38之间。

③应为新建表指定数据表空间,生产库上数据表空间一般为:SCHEMA_DAT。schema:模式是一个数据库对象(如表、约束、索引、视图、序列等)的集合。

-- Add comments

COMMENT ON TABLE  MUB2C.PUBSALE_INFO
  IS '拍卖出价信息表';
COMMENT ON COLUMN MUB2C.PUBSALE_INFO.PUB_ID
  IS '拍卖产品ID';
COMMENT ON COLUMN MUB2C.PUBSALE_INFO.FFP_NO
  IS '竞拍用户编号';
COMMENT ON COLUMN MUB2C.PUBSALE_INFO.PRICE
  IS '出价';
COMMENT ON COLUMN MUB2C.PUBSALE_INFO.PUB_DT
  IS '竞拍日期';

注意点:
注释:创建表时,应同时对表和字段添加comment注释,表名前一定要加上schema。

-- Grant/Revoke object privileges 
GRANT SELECT ON MUB2C.PUBSALE_INFO TO R_SELMUB2C;
GRANT INSERT,UPDATE,DELETE ON MUB2C.PUBSALE_INFO TO R_UPDMUB2C;

注意点:
①表名前一定要加上schema。
②数据表创建后,需添加授权:
SELECT——将查看的权限授权给角色R_SELSCHEMA
INSERT,UPDATE,DELETE——将增删改的权限授权给角色R_UPDSCHEMA

2.2创建约束

-- Create/Recreate primary, unique and foreign key constraints

alter table MUB2C.PUBSALE_INFO
  add constraint PK_PUBSALE_INFO primary key (ID)
  using index 
  tablespace MUB2C_IDX;

alter table MUB2C.PUBSALE_INFO
  add constraint UK_PUBSALE_INFO unique (PUB_ID, FFP_NO)
  using index 
  tablespace MUB2C_IDX;

注意点:

①建表语句和建主键约束/唯一性约束语句要分开写,主键约束/唯一性约束一定不要写在建表中语句中。

②在创建主键约束/唯一性约束时,Oracle会自动为所使用的字段创建一个索引,因此无需再为该字段创建索引。

③应为新建约束指定索引表空间,生产库上索引表空间一般为:SCHEMA_IDX。

④为便于查找和区分,主键约束名称命名:PK_+主键约束名称,唯一性约束名称命名:UK_+唯一性约束名称,约束名称长度不能超过30个字符。

⑤表名前一定要加上schema。

alter table MUB2C.PUBSALE_INFO
  add constraint FK_PUBSALE_INFO_REF_PRODUCT foreign key (PUB_ID)
  references MUB2C.PUBSALE_PRODUCT (ID);

注意点:

①一般的外键约束会使用两个表进行关联(也存在同一个表自连接的情况)。外键是指“当前表”(即外键表)引用“另外一个表”(即被引用表)的某个列或某几个列,而“另外一个表”中被引用的列必须具有主键约束或者唯一性约束。

②外键约束名称命名:FK_…_REF_…,约束名称长度不能超过30个字符。

③外键表和被引用表的表名前一定要加上schema。

2.3创建索引
-- Create/Recreate indexes
create index MUB2C.IDX_PNR_INFO on MUB2C.PNR_INFO (PNR_NAME, PNR_CODE)tablespace MUB2C_IDX;

注意点:
①根据查询条件,选择选择性好的字段建立索引,对于多个字段的联合索引,将选择性好的字段放在前面。避免同一字段出现在多个索引中。
②索引名称命名:IDX_+索引名称,索引名长度不能超过30个字符。索引名称前一定要加上schema。
③应为新建索引指定索引表空间,生产库上索引表空间一般为:SCHEMA_IDX。
④表名前一定要加上schema。

2.4创建序列
--Create sequence
create sequence MUB2C.SEQ_CITYCUSS_ALL
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;

注意点:
①序列名称命名:SEQ_+序列名称,序列名长度不能超过30个字符。序列名前一定要加上schema。
②序列最大值为18个9。
③不建议在一个schema下创建多个序列,一般为2-3个。

-- Grant/Revoke object privileges 
GRANT SELECT ON MUB2C.SEQ_CITYCUSS_ALL TO R_SELMUB2C;

注意点:
数据表创建后,需添加授权:
SELECT——将查看的权限授权给角色R_SELSCHEMA

3.修改数据库对象
--重命名字段
ALTER TABLE EBSVRF.POINT_TASK_TRACK RENAME COLUMN PNRD_VERIFIED_NUM TO ET_VERIFIED_NUM;
comment on column EBSVRF.POINT_TASK_TRACK.ET_VERIFIED_NUM is '通过ET验证成行的旅客人数';
--增加字段
ALTER TABLE MUB2C.DS_INFO ADD DS_RANK NUMBER(18);
comment on column MUB2C.DS_INFO.DS_RANK is '记录点杀的名次';

--修改字段添加默认值

ALTER TABLE MUB2C.DS_INFO MODIFY CRT_DT DEFAULT SYSDATE;

--修改字段类型

);

--删除某个字段

ALTER TABLE MUB2C.DS_INFO DROP COLUMN TEST_DT;

注意点:
①修改数据库对象,在表名前一定要加上schema。
②如有重命名字段或增加字段,需为该字段添加注释。

 
 

数据库DDL语句书写规范的更多相关文章

  1. 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式

    孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...

  2. 数据库操作语句类型(DQL、DML、DDL、DCL)

    数据库操作语句类型(DQL.DML.DDL.DCL)简介 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语言DQL 数据查询语 ...

  3. oracle之DML和DDL语句的其他用法

    DML和DDL语句的其他用法 17.1 DML语句-MERGE 作用:把数据从一个表复制到另一个表,插入新数据或替换掉老数据. Oracle 10g中MERGE有如下一些改进: 1.UPDATE或IN ...

  4. SQL Server性能优化(4)命名和书写规范

    命名规范是一个老生常谈的问题,好的命名规范对于团队程序开发,对bug定位.处理,项目延续有很重要的作用. 一. 列举现在的问题:     1.名称首字母不大写     2. 用中文名字         ...

  5. 数据库 SQL语句优化

    温馨提示:本篇内容均来自网上,本人只做了稍微处理,未进行细致研究,仅当做以后不备之需,如若你喜欢可尽情转走. 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图 ...

  6. (转)Java代码书写规范

    0. 安装阿里代码规范的eclipse插件 https://www.cnblogs.com/caer/p/7753522.html 1.基本原则 强制性原则:     1.字符串的拼加操作,必须使用S ...

  7. Mysql数据库操作语句总结

    简单复习下: 增insert into -- 删 delete from  -- 改 update table名字 set -- 查 select * from  -- 一.SQL定义 SQL(Str ...

  8. 数据库SQL语句性能优化

    选择最有效率的表名顺序 ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下 ...

  9. oracle过程书写规范

    ORACLE存储过程编码规范 1.1         变量规范 Ø        变量名全部采用小写,局部变量名使用“v_”开头,输入参数以“i_开头,输出参数以“o_”开头,输入输出参数用io_开头 ...

随机推荐

  1. java归并排序,单线程vs多线程

    一.什么是归并排序 归并排序又称合并排序,它是成功应用分治技术的一个完美例子.对于一个需要排序的数组A[0..n-1],归并排序把它一分为二:A[0..n/2-1]和A[n/2..n-1],并对每个子 ...

  2. Android TabHost使用

    TabHost是Android中自带的选项卡控件,效果图如下: 主布局文件 <RelativeLayout xmlns:android="http://schemas.android. ...

  3. iOS CommonCrypto 对称加密 AES ecb,cbc

    CommonCrypto 为苹果提供的系统加密接口,支持iOS 和 mac 开发: 不仅限于AES加密,提供的接口还支持其他DES,3DES,RC4,BLOWFISH等算法, 本文章主要讨论AES在i ...

  4. Windows下搭建NodeJS绿色版开发环境

    文章最初发布于szhshp的第三边境研究所, 转载请注明 开发背景 博客一直用的是Jekyll, 突然想玩玩NodeJS和Hexo, 于是就试着搭建一下 绿色环境, 基于Window8, 不需要管理员 ...

  5. 比CMD更强大的命令行WMIC

    先决条件:a. 启动Windows Management Instrumentation服务,开放TCP135端口.b. 本地安全策略的“网络访问: 本地帐户的共享和安全模式”应设为“经典-本地用户以 ...

  6. Thinkphp 3.2.2 利用phpexcel完成excel导出功能

    首先百度搜索phpexcel  包,放到项目的这个目录下 接下来  是controller里的导出代码 /**导出预定产品用户信息 * 大白驴 675835721 *2016-12-12 **/pub ...

  7. CSS轮廓outline

    http://www.cnblogs.com/xiaohuochai/p/5277416.html

  8. ASCII表

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...

  9. RPM

    1.安装RPM 使用-ivh选项即可,能查看安装信息和进度. 例如: #RPM -ivh XXX.rpm RPM升级与更新,使用-Uvh选项或者-Fvh选项,两者略有区别. -Uvh选项:后面接的软件 ...

  10. canvas学习笔记:canvas对图片的像素级处理--ImageData的应用

    学习了canvas的基本绘图功能后,惊喜的发现canvas对图片数据也有相当强大的处理功能,能够从像素级别操作位图,当然[lte ie8]不支持. 主要的函数有三个: ctx.createImageD ...