oracle数据库中查找含有某列名的所有表

    最近要做一个二次开发,首先要弄清楚的当然是老项目中的上百张表和它们之间的关系。有的时候,为了弄清表之间关系,需要根据已知一个列名把所有具有该列的表查出来。我用的是oracle的sql developer,这个工具应该有可视化的查找方法,但是我不知道,只好到bing里搜了一下,很幸运,在stackoverflow上面有个人问了同样的问题并得到了答案:

SELECT * FROM ALL_TAB_COLUMNS 
WHERE COLUMN_NAME LIKE '%TASK%' 
AND owner = 'database_name';

 发现,在oracle数据库中,好像有一个名为'ALL_TAB_COLUMNS'的表,保存了所有表信息。

 这样就简单了:

SELECT a.table_name FROM ALL_TAB_COLUMNS a where a.owner like '%XXX%' and a.column_name like 'XXX';
这样就查出来了。 微笑我知道,对于懂数据库的人来说,这太低幼了,但是本人这方面基础不好,在此备注一下,自己以后用,如果能对有些童鞋有帮助那也不错。

  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验一 SQL*PLUS练习 【实验目的】 (1) 了解Oracle的工作环境和基本使用方法。 (2) 练习标准SQL的数据操作,查询命令及其查询优化。 (3) 学会使用高级SQL命令,排序、分组、自连接查询等。 (4) 学会使用SQL*PLUS命令显示报,存储到文件等。 【实验内容】 一、 准备使用SQL*PLUS 1. 进入SQL*PLUS 2. 退出SQL*PLUS 3. 显示结构命令DESCRIBE SQL>DESCRIBE emp 使用DESCRIBE(缩写DESC)可以列出指定的基本结构,包括各字段的字段名以及类型、长度、是否非空等信息。 4. 使用SQL*PLUS显示数据库EMP的内容 输入下面的查询语句: SQL>SELECT * FROM emp; 按下回车键执行查询 5. 执行命令文件 START或@命令将指定文件调入SQL缓冲区,并执行文件内容。 SQL>@ 文件名(文件后缀缺省为.SQL)或 SQL>START 文件名 文件每条SQL语句顺序装入缓冲区并执行。 二、 数据库命令——有关、视图等的操作 1. 创建employee 例1 定义一个人事信息管理系统存放职工基本信息的一张。可输入如下命令: SQL>CREATE TABLE employee (empno number(6) PRIMARY KEY, /* 职工编号 name varchar2(10) NOT NULL, /* 姓名 deptno number(2) DEFAULT 10, /* 部门号 salary number(7,2) CHECK(salarycreate table emp2 as select * from emp where 1=2; 在命令的where子句给出1=2,示条件不可能成立,因而只能复制结构,而不能复制任何数据到新去。另外,还可以复制一个的部分列定义或部分列定义及其数据。 三、 Oracle数据库数据查询 1、单查询 2、多查询 四、 SQL*PLUS常用命令 1 常用报格式化名命令 命令 定义 Btitle 为报的每一页设置底端标题 Column 设置列的标题和格式 Compute 让SQL*PLUS计算各种值 Remark 将某些字标记为注释 Set linesize 设置报的行宽字符数 Set newpage 设置报各页之间的行数 Spool 使SQL*PLUS将输出写入文件 Start 使SQL*PLUS执行一个sql文件 Ttitle 设置报每页的头标题 Break 让SQL*PLUS进行分组操作 例3 建立一个批命令文件对查询到的数据以报的形式输出并将其保存到指定的文件。 处理方法:利用SQL*PLUS语言工具(也可以使用其他文本编辑器)建立批命令的.SQL文件。在“SQL>”提示符下,使用EDIT命令在”E:\”建立SCGB.SQL文件。 SCGB.SQL文件的命令组如下: SQL>EDIT E:\ SCGB.SQL SET echo off SET pagesize 30 SET linesize 75 TTITLE’2008年4月10号’CE’公司职员基本情况登记’R’Page:’ FORMAT 99- >SQL.PNO SKIP 1 CE’===========================’ BTITLE COL 60 ’制标单位’ TAB 3 ‘人事部’ COLUMN empno heading ‘职工|编号’ COLUMN ename format a10 heading ‘姓 名’ COLUMN job heading ‘工 种’ COLUMN sal format $99,990 heading 工 资’ COLUMN comm Like sal heading ‘奖 金’ COLUMN deptno format 9999 heading ‘部门|编号’ COLUMN hiredate heading ‘参加工作时间’ SPOOL e:\sjbb /*在E盘建立格式报输出文件,默认属性为LST BREAK on deptno skip 1 COMPUTE sum of sal comm on deptno SELECT empno,ename,job,hiredate,sal,comm,deptno from emp ORDER BY deptno,sal; SPOOL off /*终止SPOOL功能,关闭其文件。注意,此命令不可省,否则将建立空文件。 五、 实验内容 1、以cs+学号为用户名创建用户,并授予用户创建数据对象的权限。 2、复制emp,复制名为emp_学号,然后将emp工资低于$2000 的职工插入到复制的。 3、对复制的emp插入一行只包含有职工号,职工名,工资与部门号四个数据 项值的记录。 4、在复制的emp将雇员ALLEN提升为经理,工资增至$2500, 奖(佣 )金增加40%。 5、删除复制的emp工资低于500的记录行。 6、列出10号部门既不是经理,也不是秘书的职工的所有信息。 7、查找出部门所在地是CHICAGO的部门的职工姓名、工资和工种。 8、统计各部门各工种的人数、工资总和及奖金总和。 9、查找出工资比其所在部门平均工资高的职工姓名、工种与工资情况。 实验3 Oracle数据库开发环境下PL/SQL编程 【实验目的】 (1)掌握 PL/SQL 的基本使用方法。 (2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用 PL/SQL 解决实际问题 【实验内容与步骤】 PL/SQL的可执行部分是由一系列语句组成的(包括对数据库进行操作的SQL语句,PL/SQL语言的各种流程控制语句等)。在块数据库查询,增、删、改等对数据的操作是由SQL命令完成的。在PL/SQL,可以使用SQL的数据查询命令,数据操纵命令和事务控制命令。可使用全部SQL函数。PL/SQLSQL语句,可使用SQL的比较操作等运算符。但不能使用数据定义语句。 在PL/SQL使用SELECT语句时注意几点: (1)SELECT语句必须含有INTO子句。 (2)INTO子句后的变量个数和位置及数据类型必须和SELECT命令后的字段名相同。 (3)INTO子句后可以是简单类型变量或组合类型变量。 (4)SELECT语句的WHERE条件可以包含PL/SQL定义的变量及达式,但变量名不要同数据库列名相同。 (5)在未使用显式游标的情况下,使用SELECT语句必须保证只有一条记录返回,否则会产生异常情况。 [例3-1] 问题:编写一个过程,求和运算。 SET SERVEROUTPUT ON; DECLARE a number:=1; BEGIN a:=a+5; DBMS_OUTPUT.PUT_LINE('和为:'||TO_CHAR(a)); END; / 【例3-2】:使用%TYPE声明变量,输出制定的相关信息。 DECLARE my_name student.sname%TYPE; BEGIN SELECT sname INTO my_name FROM student WHERE no=’01203001’; DBMS_OUTPUT.PUT_LINE(my_name); END; / 【例3-3】问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。 declare v_sal emp.sal%type; begin select sal into v_sal from emp where ename=spName; if v_sal :NEW.sal THEN DBMS_OUTPUT.PUT_LINE('工资减少'); ELSIF :OLD.sal < :NEW.sal THEN DBMS_OUTPUT.PUT_LINE('工资增加'); ELSE DBMS_OUTPUT.PUT_LINE('工资未作任何变动'); END IF; DBMS_OUTPUT.PUT_LINE('更新前工资 :' || :OLD.sal); DBMS_OUTPUT.PUT_LINE('更新后工资 :' || :NEW.sal); END; / --执行UPDATE查看效果 UPDATE emp SET sal = 3000 WHERE empno = '7788'; 6、需要对在上进行DML操作的用户进行安全检查,看是否具有合适的特权。 Create table foo(a number); Create trigger biud_foo Before insert or update or delete On foo Begin If user not in (‘DONNY’) then Raise_application_error(-20001, ‘You don’t have access to modify this table.’); End if; End; / 即使SYS,SYSTEM用户也不能修改foo。 2、 利用PL/SQL编写程序实现下列触发器 1)、编写一个数据库触发器,当任何时候某个部门从dept删除时,该触发器将从emp删除该部门的所有雇员。(要求:emp、dept均为复制后的) 2)、创建一个触发器,当客户下完订单后,自动统计该订单的所有图书的价格总额。 3)、创建一个触发器,禁止客户在非工作时间(早上8:00前,晚上17:00后)下订单。 五、实验心得
ORACLE数据库智能化管理系统2012 软件介绍 序言 ORACLE数据库管理们: 你们还在为处理日常大量数据,天天写过多的SQL语句而烦恼吗? 还在为由于没有面面具到的软件来汇制想要的日常数据报而烦恼吗? 还在为查找帐务不平的数据或数据重复,而不知是哪些数据错误或重复,造成不能继续操作,而费时费力手工查找问题所在而烦恼吗? 还在为数据要多字段大批量处理或指定满足过多条件,处理成特定数据而手工劳动烦恼吗? 还在为两数据多字段相关联,要批量修改其一多字段数据成另一数据值,而不知怎样做而烦恼吗? 还在为查找数据库安全情况,不知权限分配情况如何?查起来又费时费力,而烦恼吗? 还在为数据库安全情况,或角色权限批量授权或撤权,操作起来又费时费力,而烦恼吗? 还在为需要多数据综合计算才能求得到想要的数据结果,而书写SQL语句书写起来复杂而烦恼吗? 还在为达到求某种数据值需要多数据关联起来后得到结果重复,想去除多余行值,单独书写的SQL语句又无法解决而频繁手工操作或通过编写软件才能实现想要的结果而烦恼吗? 还在为查看数据库会话情况及死锁情况,想批量处理这些死锁及断开不必要空闲会话,一一处理而手功劳动吗? 还在为日常数据处理分析,从查询结果,求出可自定任意选择行及数字型字段数据求合,而手工一行行、一列列累加求和吗? 还在为某种数据不同类别所占总数比例及各多少?而手工累加一一计算吗?本系统使用了ABC方法计算得出结果。 查询数据条件参数,智能化字典辅助批量字段输入功能,使您的工作简单而更加轻松,用起来更加顺手。 查询或导入的数据结果智能化创建计算字段和行列分类合计,从而进一步使结果数据更加理想化,省去了您宝贵的数据计算时间。 智能化SQL历史语句保存和历史SQL智能注解查询功能,节省了您智能化重复创建和查询SQL语句的时间,提高了您的工作效率。 数据库状态及运行情况综合查看,使您了解ORACLE运行状况及空间、日志归档、数据文件等使用情况更直观,并可智能生成数据库热备份脚本和备份恢复方案,为您的数据库保驾护航,使您高枕无忧。 本系统可执行SQL分组语句后,再对结果某值代码变为相对应名称,从而提高了数据库SQL语句执行性能,减轻了因关联太多查询,造成数据库性能下降带来的负担。 本系统可对执行SQL语句的结果集批量逐行处理多字段值一起做为检索条件,从它取出想要的多字段(值或计算结果)数据对相应的目标多字段进行赋值,从而简化了SQL语句书写难度,减少查询时间,提高了综合性能。 批量数据比较功能,增加了数字型字段4种(左右两边数据加减乘除)处理方式和4种行数据处理(左右两边互移或互复制行),可从数据源复合查询结果数据与目标数据进行运算,达到想要的结果等。 数据窗口右键菜单功能整合多种处理,功能强大,简单易操;重复数据可自动处理成唯一,也可自行处理;可自定义选择从查询结果集的数行,进行数据求合及自定义图形项目分析;字段的10多种属性设置;数据窗口自创帮你省去建才能进行数据处理的麻烦;各行数据在总数据所占的比例,一目了然,省去你一一计算。 生成可定义标准化数据代码;补足不足数据代码位数; 自由SQL语句查询参数多字段批量字典输入; 外部数据批量进行赋值处理; 数据列名可汉字后,导出成xls格式。 自由选择更新数据方式,减少对数据库过多无关字段操作。 可根据查询结果自动生成IN、DECODE等多形式函数的参数,省去你查询手工输入上述函数多参数时的痛苦。 批量处理查询结果集数据去除多余前后空格,增加对多字段字符串数据标准化,替换或去除数据任意数据位数据,使其达到你想要的数据。 自动创建并可导出全数据库同义词创建语句,省去了你书写的麻烦。 您可以自由定制数据过滤、排序等条件、打印预览并可自动缩放到整张纸大小打印、打印数据行、列自己选定,打印设置自由灵活。 自动生成序列数据,切换数据库,无须退出系统。 人不在时,系统有锁定功能,防止别人动您数据! 您可以自动生成带分组小计的数据查询结果,使用你看的数据更加清晰。 分组查询条件SQL语句(带不带分组小计随您)智能化生成,只需您动几下鼠标就可完成。 交叉数据报智能化生成,省去你为了一时的数据,而劳命伤财地去开发系统。 过程、触发器、结构、同义词、视图、在线会话等查看一目了然。 给有关部分下达通知,消息框自动弹出。 。。。。。。。 本系统以智能化语句书写及批量处理数据及图形分析数据为特点,可以解决你的上述及未述后顾之忧,尽量把处理数据的主动权让给用户{本系统许多功能,只要你灵活运用,就可以得到意想不到的收获!},拥有了它,从此让你可以轻松、灵活对待日常数据库数据管理处理工作。 还等什么?赶快与我联系13856992267、QQ:23807773要求试用或购买吧?价格联系时谈! 本系统还可以根据用户需求,增加共性功能。{感谢您的支持及来电来函提出您的宝贵建议,为本系统更加地完善,贡献出您的一份力量!}
Oracle数据库设计规范建议 1 目的 本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生 的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很 好的保证。 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其 应用系统,有效存储数据,满足用户信息要求和处理要求。 2 适用范围 本规范的适用人员范围包括我司的所有应用开发人员以及在我司承接数据库应用开 发的软件人员。 本规范的适用IT范围包括数据库对象的命名规范、设计原则、SQL语句的设计和使用 、SQL语句的性能优化建议、其他与性能有关的设计原则以及设计工具的选择。 3 数据对象的命名规范 3.1 通用规范 3.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。主要目的很明确 ,让人容易明白这个对象是做什么用的; 3.1.2 一律大写,特别是名:有些数据库的命名乃至其他数据对象的命名是大小写敏感 的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写; 3.2 数据库对象命名规范 3.2.1 的命名 3.2.1.1 名的前缀:前缀_名_T。为的名称增加一个或者多个前缀,前缀名不要太长,可以 用缩写,最好用下划线与后面的单词分开;其目的有这样几个: 3.2.1.1.1 为了不与其他项目或者其他系统、子系统的重名; 3.2.1.1.2 示某种从属关系,比如明是属于某个子系统、某个模块或者某个项目等等。示这 种从属关系的一个主要目的是,从名能够大概知道如何去找相关的人员。比如以子系 统为前缀的,当看到这个的时候,就知道有问题可以去找该子系统的开发和使用人员 ; 3.2.2 视图命名:相关名_V(或者根据需要另取名字); 3.2.3 程序包命名:程序包名_PKG(用英文达程序包意义); 3.2.4 存储过程命名:存储过程名_PRO(用英文达存储过程意义); 3.2.5 函数命名:函数名称_FUN(用英文达函数作用); 3.2.6 触发器命名:触发器名称_TRI(用英文达触发器作用); 3.2.7 索引命名:名_字段名_IDX(如果存在多字段索引,取每字段前三个字符加下划线组合 ,如在 custom, cutting, curtail 上建立联合索引,命名为 名_cus_cut_cur_IDX,如果前三个截取字符相同,就从字段名称不同的字符开始取三 个字符加下划线组合,如在 custid, custom,custname上建立联合索引,就命名为_tid_tom_tna_IDX; 3.2.8 唯一索引命名:名_字段名_UNI(如果存在多字段唯一索引,取每字段前三个字符加下 划线组合,如在 custom, cutting, curtail上建立唯一索引,命名为 名_ cus_cut_cur_UNI,如果前三个截取字符相同,就从字段名称不同的字符开始取三个字 符加下划线组合,如:在 custid, custom,custname上建立唯一索引,命名:_tid_tom_tna_UNI; 3.2.9 主键命名:名_字段名_PK(如果存在多字段主键,取每字段前三个字符加下划线组合, 如在 custom, cutting, curtail上建立主键,命名为 名_cus_cut_cur_PK,如果前三个截取字符相同,就从字段名称不同的字符开始取三 个字符加下划线组合,如在 custid, custom,custname上建立主键,命名:_tid_tom_tna_PK; 3.2.10 外键命名:名_主名_字段名_FK; 3.2.11 Sequence 命名:名_列名_SEQ(或者根据需要另取名字); 3.2.12 Synonym 命名:与对应的数据库对象同名; 3.2.12 JAVA 命名:遵守公司相应的JAVA命名规范; 4 数据库对象设计原则 4.1 的设计 4.1.1 主、外键 4.1.1.1 每个,都必须要有主键。主键是每行数据的唯一标识,保证主键不可随意更新修改, 在不知道是否需要主键的时候,请加上主键,它会为你的程序以及将来查找数据的错 误等等,提供一定的帮助; 4.1.1.2 一个某列与另一有关联关系的时候,如果加得上的话,请加上外键约束。外键是 很重要的,所以要特别强调: 4.1.1.2.1 适量建外键。为了保证外键的一致性,数据库会增加一些开销,如果有确凿的并且是对 性能影响到无法满足用户需求的证据,可以考虑不建外键。否则,还是应该建外键; 4.1.1.2.2 不要以数据操作不方便为理由而不建外键。是的,加上外键以后,一些数据操作变得有 些麻烦,但是这正是对数据一致性的保护。正是因为这种保护很有效,所以最好不要拒

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值