oracle 之 COMMENT 分类: H2_ORACLE 2014-04-24 15:30 386人阅读 评论(0) 收藏
http://blog.csdn.net/liguihan88/article/details/3002403
无疑注释现在都被大家接受和认可,在大家编程用的IDE中都提供或有第三方插件来支持提取注释内容实现
快速了解结构的功能。但在数据库的脚本编写方面我也是经历了百般折磨后总结了一些东西发来与大家切磋。
下面来看一个Oracle建表的方式。
create table ctable_name
(
field1 varchar2(20), --注释的内容1
field2 number, --注释的内容2
field3 char(2), --注释的内容3
field4 date /*注释的内容4*/
)
之前一直都是这样来建表,觉得快速也好理解,其实数据库结构不复杂的情况下我也喜欢这种方式,但当数据库结构很复杂的时候维护起来就很头疼,一个SQL几百K,看的你眼都花了,而且有N个这样的SQL文件,那么在对不了解的复杂的数据库结构实现快速编程方面,为了了解结构查找注释的工作量也很大。
尤其公司项目已经做了5年了,好多SQL脚本都没了,那么数据结构只能问老的同事,但对于人员更替频繁的公司当老程同事都换了几批,都不在了,没人可问,那么维护人员或后续开发人员就掉进了无尽的痛苦中,好多问题都是出在这上面。后期投入成本也是很巨大的。如果数据库结构命名什么的比较规范还好,可以凭字面意思确定大概用途,反之真实苦不堪言。而且知识的传递当中是有人为因素导致的缺失的。举例来说就是一般员工离开公司之前会用一个月的时间来交接,但大部分都是用
一周左右的时间来交接工作,那么交接的自然会有意识的忽略一些小的或掩盖一些有问题的地方只说主要好使的地方,如果交接的是一个对结构了解的同事还好,根据相应的经验,承接不是问题,但如果交接给新的同事,新同事接起来很费劲,而要走的同事要进的公司还催他速度办离职,那么缺失的部分就要新同事来弥补,当然如果他是个负责的人当他发现虽然项目可以进行或说程序可以跑起来但有些东西,一般是细节的东西他还不了解需要打电话给原来的同事来弄清楚,那么也不会有什么问题,但我说的是如果,一般的人在看到项目能够进行(程序能跑起来)是不会去弄那些东西的,这样循环下去,最后维护这个程序或后续开发的倒霉蛋就有的苦吃了,我体会过这样的痛苦,所以我深有体会,估计别的公司一定也会有这种现象。
那么总结下可能出现的情况:
1.SQL脚本内容很多,格式不规范,阅读不方便,连带查找也不是很高效。
2.SQL脚本很多,且每个都存在1的问题,仍然不效率。
3.数据库工作交接中存在的细节遗失。
4.出现3的问题而且数据库对象命名不规范,后续维护人员对数据库对象含义存在歧义性,连带产生的问题趋近与无穷大,
精神折磨趋近与无穷大,导致不想干下去跳槽走人的概率趋近于1。
那么总结后当然要提出一个我认为好的解决方案,用comment关键字来解决这个问题,看看下面的方式
create table ctable_name
(
field1 varchar2(20), --注释的内容1
field2 number, --注释的内容2
field3 char(2), --注释的内容3
field4 date /*注释的内容4*/
)
--select * from ctable_name;
comment on table ctable_name is '对表注释的内容';/*给表添加注释的方式*/
select * from user_tab_comments where table_name = 'CTABLE_NAME';/*查询某表的注释*/
comment on column ctable_name.field1 is '对field1列注释的内容';/*给列添加注释内容的方式,有多少个列应该写多少个*/
select * from user_col_comments where table_name = 'CTABLE_NAME' and column_name = 'FIELD1';/*查询某表下某列的注释*/
上面解决方案把我上面提到的问题都解决了,本质是利用ORACLE中的数据字典的功能,那么虽然在编写脚本的时候可能会多一些工作量,但他能达到的效果远大于那一点工作量。
这里的编辑器真烂,截图就不传了,到时候你在数据库里执行上面的语句自己看吧。下面说说他的好处。
1.可以通过SQL语句快速查询,只要知道表名和字段名定位注释极方便快速。
2.注释内容是存储在字典表里的,只要表结构还在,那么SQL脚本即使没有了也可以定位查询。
3.不需要猜字段是什么意思,因为在简表的时候已经给了没有二意的注释,后期承接明确。
4.可以编写自己的小工具来加速数据结构的学习过程,方便新员工。
5.极力推荐大家这么做,同事也可以现在对原库表结构填补注释。
匆匆写了一点,很多地方没说的清楚,欢迎的大家来一起切磋。我已经在我后续的项目中这么做了,确实好处颇多,最后套用赵本山的话来结束“谁用谁知道”。
http://blog.sina.com.cn/s/blog_6b7c2750010174oc.html
二、comment关键字用于对表,字段添加注释,有利于用户对表结构以及数据库对象含义的理解。
三、用户可以通过数据字典视图来查询表或字段的数据信息,可查询的相应视图为:
1. 访问自己用户的注释信息要查询的数据字典视图(the date directory views)
user_tab_comments;表注释:有三个字段TABLE_NAME,TABLE_TPYE,COMMENTS
user_col_comments;表字段注释:有三个字段TABLE_NAME,CLUMN_NAME,COMMENTS
2. 访问其他用户的注释信息要查询的数据字典视图(the date directory views)
all_tab_comments;表注释:有四个字段OWNER,TABLE_NAME,TABLE_TPYE,COMMENTS
all_col_comments;表字段注释:有四个字段OWNER,TABLE_NAME,CLUMN_NAME,COMMENTS
3. DBA权限用户可访问所有用户的注释信息要查询的数据字典视图(the date directory views):
dba_tab_comments;表注释:有四个字段OWNER,TABLE_NAME,TABLE_TPYE,COMMENTS
dba_col_comments;表字段注释:有四个字段OWNER,TABLE_NAME,CLUMN_NAME,COMMENTS
四、comment的使用实例:
create table OB_CALL_DATE_LOG
(
CALL_ID VARCHAR2(60);
PROJECT_ID VARCHAR2(30);
COMMENTS VARCHAR2(200)
)
则在sql脚本中可以写:
select * from OB_CALL_DATE_LOG;
comment on table OB_CALL_DATE_LOG is ‘该表是话单信息表’
select * from user_tab_comments where TABLE_NAME=’OB_CALL_DATE_LOG’
comment on columm OB_CALL_DATE_LOG.PROJECT_ID is ‘项目标识’
select * from user_col_comments where TABLE_NAME=’OB_CALL_DATE_LOG’ and column_name=‘PROJECT_ID’
这样就对数据库表,表的各个字段有了了解。
oracle 之 COMMENT 分类: H2_ORACLE 2014-04-24 15:30 386人阅读 评论(0) 收藏的更多相关文章
- 动态链接库(DLL) 分类: c/c++ 2015-01-04 23:30 423人阅读 评论(0) 收藏
动态链接库:我们经常把常用的代码制作成一个可执行模块供其他可执行文件调用,这样的模块称为链接库,分为动态链接库和静态链接库. 对于静态链接库,LIB包含具体实现代码且会被包含进EXE中,导致文件过大, ...
- 周赛-DZY Loves Chessboard 分类: 比赛 搜索 2015-08-08 15:48 4人阅读 评论(0) 收藏
DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input standard ...
- PIE(二分) 分类: 二分查找 2015-06-07 15:46 9人阅读 评论(0) 收藏
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissio ...
- Find The Multiple 分类: 搜索 POJ 2015-08-09 15:19 3人阅读 评论(0) 收藏
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21851 Accepted: 8984 Sp ...
- Ultra-QuickSort 分类: POJ 排序 2015-08-03 15:39 2人阅读 评论(0) 收藏
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 48111 Accepted: 17549 ...
- Drainage Ditches 分类: POJ 图论 2015-07-29 15:01 7人阅读 评论(0) 收藏
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62016 Accepted: 23808 De ...
- cf 61E. Enemy is weak 树状数组求逆序数(WA) 分类: Brush Mode 2014-10-19 15:16 104人阅读 评论(0) 收藏
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...
- max_flow(Dinic) 分类: ACM TYPE 2014-09-02 15:42 94人阅读 评论(0) 收藏
#include <cstdio> #include <iostream> #include <cstring> #include<queue> #in ...
- short-path problem (Spfa) 分类: ACM TYPE 2014-09-02 00:30 103人阅读 评论(0) 收藏
#include <cstdio> #include <iostream> #include <cstring> #include <queue> #i ...
随机推荐
- _00018 Hadoop-2.2.0 + Hbase-0.96.2 + Hive-0.13.1 分布式环境整合,Hadoop-2.X使用HA方式
博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最 ...
- 【UWP通用应用开发】控件、应用栏
控件的属性.事件与样式资源 怎样加入控件 加入控件的方式有多种,大家更喜欢以下哪一种呢? 1)使用诸如Blend for Visual Studio或Microsoft Visual Studio X ...
- emacs 为什么找不到运行程序?
我记得前段时间有个朋友问我为什么在emacs中打不开matlab程序?明明在terminal下是能打开的,却在emacs中不行. 今天自己最终遇到了相似的问题,我今天安装racket 6.0.安装好后 ...
- [分享]ip地址爬取过滤的shell
http://www.hbbzy.me/分享ip地址爬取过滤的shell #!/bin/base #ip zhi地址匹配 #获取最新的ip地址 #author:haifeng #wget ftp:// ...
- react实战项目-很适合进阶
前言 前段时间学习完了React的基础,自己网上找了一些实战项目,做了几个感觉项目不是很全面,就想做一个完整的项目来提升自己的React水平.以前学习Vue的时候,就看过bailicangdu大神的v ...
- BZOJ3277: 串(后缀自动机,Parent树,Dfs序)
Description 字符串是oi界常考的问题.现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中 至少k个字符串的子串(注意包括本身). Input 第一行两个整数n, ...
- 五、Docker+Sqlserver
原文:五.Docker+Sqlserver sqlserver现在支持linux了.所以可以运行在docker内 一.下载镜像: docker pull microsoft/mssql-server- ...
- 【2017百度之星程序设计大赛 - 复赛】Valley Numer
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6148 [题意] 在这里写题意 [题解] 先把1..N里面的山峰数字个数算出来->x 然后用N减去这 ...
- PHP版本 D-Link 动态域名客户端
<?php /* * D-Link 动态域名客户端.主域名www.dlinkddns.com 和 www.dlinkddns.com.cn * 首先获取外网IP,若IP没有变化,则结束运行:否则 ...
- PHP: php_ldap.dll不能加载解决方案
PHP: php_ldap.dll不能加载解决方案 php.ini中开启 ldap的扩展后,重启服务:phpinfo();中没有ldap apache_error.log 提示:PHP Warning ...