java 数据库外键查询_oracle中查询所有外键引用到某张表的记录
其实查找这篇文章 我主要用的sql 是这句 select * from user_cons_columns t where t.constraint_name like 'FK_CTS_CONT_REINS__CRR';
起因:
系统测试的时候发现如果某条记录已经被引用了,这个时候删除这条记录会引起数据不一致,系统会报错。比如警员信息,在考勤记录表里会引用警员ID,如果考勤记录表中已经存在这个警员ID了,这时从警员表中删除该警员,就会引起数据不一致,前台报错。所以,这个时候我就想查找数据库中所有引用这个ID的表
一:约束类型简介
约束用于确保数据库数据满足特定的商业逻辑或者企业规则,如果定义了约束,并且数据不符
合约束,那么DML操作(INSERT、UPDATE、DELETE)将不能成功执行。约束包括NOT NULL、UNIQUE、PRIMARY KEY、FOREING KEY 以及CHECK等五种类型
NOT NULL约束:
NOT NULL 约束强制列不接受 NULL 值。
UNIQUE约束:
UNIQUE 约束唯一标识数据库表中的每条记录。
PRIMARY KEY 约束:
PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。
每个表应该都一个主键,并且每个表只能有一个主键。主键列不能包含 NULL 值。
FOREING KEY约束:
外部键列的数据必须在主表的主键列(或惟一列)中存在,或者为NULL,
CHECK约束:
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
二:Oracle数据字典中查看约束信息
1、我们创建的对象可以从"USER_"开通的视图中查看。如果在模式中创建了10张表,那么从USER_TABLES中查询将返回10行,每一行是关于一张表的特性信息
USER_TABLES不能查看非当前用户模式下创建的表。
ALL_TABLES视图不但显示当前用户模式下创建的表,而且显示授权能够访问的表信息
我们关心的视图以下列前缀命名:
·USER_ 当前用户模式下创建的对象
·ALL_ 当前用户模式下创建的对象加上当前用户能访问的其他用户创建的对象。ALL视图常常包含一个"OWNER"列,反映出能够访问的对象的所有者。在USER_TABLES表中不能看到OWNER列是因为你就是在这个视图中所有表的所有者;在ALL_TABLES中有一个OWNER字段。
·DBA_ 它提供了整个数据库的信息。包括数据库中所有表的名字和拥有者——包括SYS模式下的基本表
这些前缀在限制我们想看到的、需要看到的、应当被允许看到的范围上是一个帮助。查看当前模式下创建的表,查询USER_TABLES;
查看所有我们创建的表以及被授权可以从其他用户模式下访问的表,查询ALL_TABLES;
具有DBA或SELECT_CATALOG_ROLE角色的用户可以查询DBA_TABLES来查询数据库中所有表的列表;
不是所有视图下都有一个USER、ALL、和DBA前缀,有一些视图仅存在于dba视图范围。比如:DBA_DATA_FILES。
在开发环境中有时会访问DBA视图,允许开发人员探究Oracle数据字典是没有害处的。你可以在不拥有DBA角色的情况下获得这个权限。一般,把CONNECT和RESOURCE角色给应用开发者,他不能访问这些,你可以把SELECT ANY TABLE权限或SELECT_CATALOG角色赋给一个用户,这样他将被允许访问整个数据字典。
一个人对数据字典理解的越多,越能接触到数据库中复杂的操作,越能对SQL语句优化敏感。
2、数据字典视图:概要
在数据字典视图中有一些隐含的关系。发现这些关系常常是使用SQL查询对数据字典验证的结果,幸运的是,在数据字典中有许多使用名称的特征。
例如:USER_TABLES表中每一个表包含一个单独的行。每一行包含一张表的详细信息,比如表的物理存储参数。这些数据提供的扩展信息告诉你表是怎么增长的。
USER_TAB_COLUMNS视图中在USER_TABLES表中的每一张表的每一行包含一条记录。如果一张表有10个字段,那么,你将在USER_TAB_COLUMNS表中找到10行记录,是关于每一字段的详细信息。比如字段数据类型。字段名TABLE_NAME在USER_TABLE 和USER_TAB_COLUMNS表中都有,因此可以很容易的把他们连接起来。
USER_OBJECTS 用户对象视图
ALL_OBJECTS 所有对象视图
DBA_OBJECTS DBA对象视图
USER_SEQUENCES 用户序列对象视图,在USER_SEQUENCES的记录也会出现在USER_OBJECTS表中
3、约束视图
有两个数据字典视图提供了约束的详细信息。USER_CONSTRAINTS和USER_CONS_COLUMNS.
一张表可能有也可能没有约束,对于一张表的每一个约束在USER_CONSTRAINTS中都有一条记录描述这个约束。包括约束应用到的表名称。如果你知道约束名想知道约束类型,查询USER_CONSTRAINTS表。这个视图描述了约束的定义。它不提供约束定义在哪些字段名称上。USER_CONSTRAINTS中CONSTRAINT_NAME中表示约束名,如果建立表的时候没有指定约束名,系统默认的约束名类似“SYS_C006274”这样的一串字母。R_CONSTRAINT_NAME是外键引用表主键的约束名。CONSTRAINT_TYPE字段中P:表示主键,R:表示外键,C表示NOT NULL或CHECK,U表示UNIQUE
在USER_CONS_COLUMNS视图中显示约束的字段名称。如果主键是个联合主键,这个视图中将有这个约束的两条记录。联合主键的每一个字段对应一条记录。每一条记录通过POSITION(在联合主键中的位置)来区别。可以根据CONSTRAINT_NAME字段将USER_CONSTRAINTS和USER_CONS_COLUMNS关联起来。
三:得到想要的结果
分为两步:
//查询表的主键约束名
select * from user_constraints e where e.table_name=’’—-处输入表名
//查询所有引用到该主键的记录
select b.table_name,b.column_name from user_constraints a
inner join user_cons_columns b
on a.constraint_name = b.constraint_name
where a.r_constraint_name=''—此处输入刚才查询出来的表主键的约束名
java 数据库外键查询_oracle中查询所有外键引用到某张表的记录相关推荐
- mysql查询某张表的所有外键_oracle中查询所有外键引用到某张表的记录
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 oracle中查询所有外键引用到某张表的记录 //查询表的主键约束名 select * from user_constr ...
- mysql 不在另一张表_mysql查询在一张表不在另外一张表的记录
mysql查询在一张表不在另外一张表的记录 问题: 查询一个表(tb1)的字段记录不在另一个表(tb2)中 条件:tb1的字段key的值不在tbl2表中 ---------------------- ...
- 查询在一张表不在另外一张表的记录
题目 假如要查询在a表中存在,但是在b表中不存在的记录,应该如何查询.为了便于说明,我们假设a表和b表都只有一个字段id,a表中的记录为{1,2,3,4,5},b表中的记录为{2,4},那么我们需要通 ...
- excel比较两个表中数据 提取相同列 合并到同一张表中
比较两个表中数据 提取相同列 合并到同一张表中 =VLOOKUP(A2,Sheet3!A:B,1,0) A2:表示 被查找的值 Sheet3!:表示哪张表 A:B:表示查找区域 1:表示提取哪列的值 ...
- oracle中join另一个表后会查询不出一些数据_阿里规定超过3张表,禁止JOIN,为何?
一. 问题提出 <阿里巴巴JAVA开发手册>里面写超过三张表禁止join,这是为什么? 二.问题分析 对这个结论,你是否有怀疑呢?也不知道是哪位先哲说的不要人云亦云,今天我设计sql,来验 ...
- mysql和oracle模糊查询_oracle模糊查询mysql的区别
oracle与使用mysql的区别 1.Like模糊查询有字符串拼接 所有用 str1||str2 拼接的字符串都要改成CONCAT(str1,str2) '%'||#{zbmc}||'%'改成CON ...
- oracle中如何取消外键的,ORACLE中添加删除主键、外键
1.创建表的同时创建主键约束 (1)无命名 create table student ( studentid int primary key not null, studentname varchar ...
- oracle 主键 删除表_ORACLE中添加删除主键
1.创建表的同时创建主键约束 (1)无命名 create table student ( studentid int primary key not null, studentname varchar ...
- mysql复合主键优缺点_MySQL中的复合主键性能缺陷
INSERT 和 UPDATE 性能变化很小: (INT) 和 (INT, INT) 键几乎相同 . SELECT 复合 PRIMARY KEY 的性能取决于很多因素 . 如果您的表是 InnoDB ...
最新文章
- Ubuntu 查看磁盘空间大小命令转
- 核磁共振波谱分析_实验室各种仪器原理动图剖析,这么多分析仪器原理,1次搞清楚了...
- 如何制作python代码_如何使用50行Python代码制作一个计算器
- apollo修改配置刷新bean_技术文档丨Apollo软件概述
- JavaScript异步基础
- 【C++深度剖析教程22】继承的概念和意义
- phpcmsV9 自定义分页函数与调用 - 不影响后台SQL分页
- SpringBoot App Registers UNKNOWN with Eureka in Brixton SR3
- html中的坐标从哪里开始,HTML+CSS入门 页面内跳转到相应位置的3种方法
- 如果时间不够 ,无法进行充分的测试怎么办?
- 描绘新十年智慧生活蓝图,AWE2021圆满闭幕
- Intel E100 网卡驱动实例分析
- C语言函数中的px是什么,C语言学习知识程序设计试卷及其规范标准答案
- 格律诗的基本知识【一小时学会写格律诗】
- 新年贺卡用python_新年贺卡生成器
- php捕捉Warning、Notice错误
- Jenkins 添加Allure报告 并发送企业微信通知
- P14-前端基础-CSS属性选择器
- 41.Java HashMap有序集合
- Startup通过3D打印制造更便宜、更轻的火箭 | 广东省智能创新协会
热门文章
- 4 命名规则_赛普拉斯(Cypress)存储器芯片命名规则
- Executors源码解读——创建ExecutorService线程池
- python模块版本管理工具_【转】Python包管理工具
- docker内存阀值_kubernetes调度之资源耗尽处理配置
- Windows平台RTMP播放器/RTSP播放器如何在播放窗口添加OSD文字叠加
- spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚
- RPC(一)[概述]
- SXSSFWorkbook使用——使用excel模板
- 世外桃源六python_六年匠心 桃花源记6月1日全民狂欢
- android 手机wifi重启,路由器要不要每天重启?多亏宽带师傅透露,难怪网速一天比一天慢!...